Revert "[SHOULD BE DONE BUT LETS TESTMERGE FIRST] TG SYNC"
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
#define MAX_ADMIN_BANS_PER_ADMIN 1
|
||||
#define MAX_ADMIN_BANS_PER_HEADMIN 3
|
||||
|
||||
//Either pass the mob you wish to ban in the 'banned_mob' attribute, or the banckey, banip and bancid variables. If both are passed, the mob takes priority! If a mob is not passed, banckey is the minimum that needs to be passed! banip and bancid are optional.
|
||||
/datum/admins/proc/DB_ban_record(bantype, mob/banned_mob, duration = -1, reason, job = "", banckey = null, banip = null, bancid = null)
|
||||
@@ -119,11 +118,8 @@
|
||||
return
|
||||
if(query_check_adminban_amt.NextRow())
|
||||
var/adm_bans = text2num(query_check_adminban_amt.item[1])
|
||||
var/max_bans = MAX_ADMIN_BANS_PER_ADMIN
|
||||
if (check_rights(R_PERMISSIONS, FALSE))
|
||||
max_bans = MAX_ADMIN_BANS_PER_HEADMIN
|
||||
if(adm_bans >= max_bans)
|
||||
to_chat(usr, "<span class='danger'>You already logged [max_bans] admin ban(s) or more. Do not abuse this function!</span>")
|
||||
if(adm_bans >= MAX_ADMIN_BANS_PER_ADMIN)
|
||||
to_chat(usr, "<span class='danger'>You already logged [MAX_ADMIN_BANS_PER_ADMIN] admin ban(s) or more. Do not abuse this function!</span>")
|
||||
return
|
||||
if(!computerid)
|
||||
computerid = "0"
|
||||
|
||||
+11
-12
@@ -508,7 +508,8 @@
|
||||
toggle_ooc()
|
||||
log_admin("[key_name(usr)] toggled OOC.")
|
||||
message_admins("[key_name_admin(usr)] toggled OOC.")
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle OOC", "[GLOB.ooc_allowed ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle OOC", "[GLOB.ooc_allowed]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle OOC", "[GLOB.ooc_allowed]"))
|
||||
|
||||
/datum/admins/proc/toggleoocdead()
|
||||
set category = "Server"
|
||||
@@ -518,7 +519,7 @@
|
||||
|
||||
log_admin("[key_name(usr)] toggled OOC.")
|
||||
message_admins("[key_name_admin(usr)] toggled Dead OOC.")
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Dead OOC", "[GLOB.dooc_allowed ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Dead OOC", "[GLOB.dooc_allowed]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/datum/admins/proc/startnow()
|
||||
set category = "Server"
|
||||
@@ -552,7 +553,7 @@
|
||||
log_admin("[key_name(usr)] toggled new player game entering.")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] toggled new player game entering.</span>")
|
||||
world.update_status()
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Entering", "[GLOB.enter_allowed ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Entering", "[GLOB.enter_allowed]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/datum/admins/proc/toggleAI()
|
||||
set category = "Server"
|
||||
@@ -566,7 +567,7 @@
|
||||
to_chat(world, "<B>The AI job is chooseable now.</B>")
|
||||
log_admin("[key_name(usr)] toggled AI allowed.")
|
||||
world.update_status()
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle AI", "[!alai ? "Disabled" : "Enabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle AI", "[!alai]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/datum/admins/proc/toggleaban()
|
||||
set category = "Server"
|
||||
@@ -581,7 +582,7 @@
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] toggled respawn to [!new_nores ? "On" : "Off"].</span>")
|
||||
log_admin("[key_name(usr)] toggled respawn to [!new_nores ? "On" : "Off"].")
|
||||
world.update_status()
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Respawn", "[!new_nores ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Respawn", "[!new_nores]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/datum/admins/proc/delay()
|
||||
set category = "Server"
|
||||
@@ -664,7 +665,7 @@
|
||||
to_chat(world, "<B>The tinted_weldhelh has been disabled!</B>")
|
||||
log_admin("[key_name(usr)] toggled tinted_weldhelh.")
|
||||
message_admins("[key_name_admin(usr)] toggled tinted_weldhelh.")
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Tinted Welding Helmets", "[GLOB.tinted_weldhelh ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Tinted Welding Helmets", "[GLOB.tinted_weldhelh]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/datum/admins/proc/toggleguests()
|
||||
set category = "Server"
|
||||
@@ -678,7 +679,7 @@
|
||||
to_chat(world, "<B>Guests may now enter the game.</B>")
|
||||
log_admin("[key_name(usr)] toggled guests game entering [!new_guest_ban ? "" : "dis"]allowed.")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] toggled guests game entering [!new_guest_ban ? "" : "dis"]allowed.</span>")
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Guests", "[!new_guest_ban ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Guests", "[!new_guest_ban]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/datum/admins/proc/output_ai_laws()
|
||||
var/ai_number = 0
|
||||
@@ -704,17 +705,15 @@
|
||||
|
||||
/datum/admins/proc/output_all_devil_info()
|
||||
var/devil_number = 0
|
||||
for(var/datum/mind/D in SSticker.mode.devils)
|
||||
for(var/D in SSticker.mode.devils)
|
||||
devil_number++
|
||||
var/datum/antagonist/devil/devil = D.has_antag_datum(/datum/antagonist/devil)
|
||||
to_chat(usr, "Devil #[devil_number]:<br><br>" + devil.printdevilinfo())
|
||||
to_chat(usr, "Devil #[devil_number]:<br><br>" + SSticker.mode.printdevilinfo(D))
|
||||
if(!devil_number)
|
||||
to_chat(usr, "<b>No Devils located</b>" )
|
||||
|
||||
/datum/admins/proc/output_devil_info(mob/living/M)
|
||||
if(is_devil(M))
|
||||
var/datum/antagonist/devil/devil = M.mind.has_antag_datum(/datum/antagonist/devil)
|
||||
to_chat(usr, devil.printdevilinfo())
|
||||
to_chat(usr, SSticker.mode.printdevilinfo(M))
|
||||
else
|
||||
to_chat(usr, "<b>[M] is not a devil.")
|
||||
|
||||
|
||||
@@ -11,8 +11,6 @@
|
||||
return
|
||||
switch(subject)
|
||||
if("notes, memos, watchlist")
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
browse_messages()
|
||||
else
|
||||
var/F = file("[GLOB.log_directory]/[subject].html")
|
||||
|
||||
@@ -18,6 +18,7 @@ GLOBAL_LIST_INIT(admin_verbs_default, world.AVerbsDefault())
|
||||
/client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/
|
||||
/client/proc/cmd_admin_pm_panel, /*admin-pm list*/
|
||||
/client/proc/cmd_admin_ticket_panel,
|
||||
/client/proc/panicbunker,
|
||||
/client/proc/stop_sounds
|
||||
)
|
||||
GLOBAL_PROTECT(admin_verbs_admin)
|
||||
@@ -117,7 +118,6 @@ GLOBAL_LIST_INIT(admin_verbs_server, world.AVerbsServer())
|
||||
/client/proc/toggle_random_events,
|
||||
/client/proc/forcerandomrotate,
|
||||
/client/proc/adminchangemap,
|
||||
/client/proc/panicbunker,
|
||||
/client/proc/toggle_hub
|
||||
)
|
||||
GLOBAL_PROTECT(admin_verbs_debug)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
/datum/admins/proc/create_mob(mob/user)
|
||||
var/static/create_mob_html
|
||||
if (!create_mob_html)
|
||||
@@ -24,4 +23,4 @@
|
||||
H.dna.blood_type = random_blood_type()
|
||||
H.update_body()
|
||||
H.update_hair()
|
||||
H.update_body_parts()
|
||||
H.update_body_parts()
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
var/obj/docking_port/stationary/SM = S
|
||||
if(SM.id == "emergency_home")
|
||||
var/new_dir = turn(SM.dir, 180)
|
||||
SM.forceMove(get_ranged_target_turf(SM, new_dir, rand(3,15)))
|
||||
SM.loc = get_ranged_target_turf(SM, new_dir, rand(3,15))
|
||||
break
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -173,4 +173,4 @@ you will have to do something like if(client.rights & R_ADMIN) yourself.
|
||||
return "admin_token=[RawHrefToken(forceGlobal)]"
|
||||
|
||||
/proc/HrefTokenFormField(forceGlobal = FALSE)
|
||||
return "<input type='hidden' name='admin_token' value='[RawHrefToken(forceGlobal)]'>"
|
||||
return "<input type='hidden' name='admin_token' value='[RawHrefToken(forceGlobal)]'>"
|
||||
|
||||
@@ -384,10 +384,9 @@
|
||||
dat += "<BR><span class='userdanger'>[other_players] players in invalid state or the statistics code is bugged!</span>"
|
||||
dat += "<BR>"
|
||||
|
||||
var/list/nukeops = get_antagonists(/datum/antagonist/nukeop)
|
||||
if(nukeops.len)
|
||||
if(SSticker.mode.syndicates.len)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Syndicates</B></td><td></td></tr>"
|
||||
for(var/datum/mind/N in nukeops)
|
||||
for(var/datum/mind/N in SSticker.mode.syndicates)
|
||||
var/mob/M = N.current
|
||||
if(M)
|
||||
dat += "<tr><td><a href='?_src_=holder;[HrefToken()];adminplayeropts=[REF(M)]'>[M.real_name]</a>[M.client ? "" : " <i>(No Client)</i>"][M.stat == DEAD ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
@@ -611,20 +610,6 @@
|
||||
dat += "<td><A href='?priv_msg=[blob.key]'>PM</A></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
|
||||
var/list/pirates = get_antagonists(/datum/antagonist/pirate)
|
||||
if(pirates.len > 0)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Pirates</B></td><td></td></tr>"
|
||||
for(var/datum/mind/N in pirates)
|
||||
var/mob/M = N.current
|
||||
if(!M)
|
||||
dat += "<tr><td><a href='?_src_=vars;[HrefToken()];Vars=\ref[N]'>[N.name]([N.key])</a><i>No body.</i></td>"
|
||||
dat += "<td><A href='?priv_msg=[N.key]'>PM</A></td></tr>"
|
||||
else
|
||||
dat += "<tr><td><a href='?_src_=holder;[HrefToken()];adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(No Client)</i>"][M.stat == DEAD ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
dat += "<td><A href='?priv_msg=[M.ckey]'>PM</A></td>"
|
||||
dat += "<td><A href='?_src_=holder;[HrefToken()];adminplayerobservefollow=\ref[M]'>FLW</a></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
if(istype(SSticker.mode, /datum/game_mode/monkey))
|
||||
var/datum/game_mode/monkey/mode = SSticker.mode
|
||||
|
||||
@@ -43,8 +43,6 @@
|
||||
|
||||
if(check_rights(R_FUN,0))
|
||||
dat += {"
|
||||
<B>Fun Secrets</B><BR>
|
||||
<BR>
|
||||
<A href='?src=[REF(src)];[HrefToken()];secrets=virus'>Trigger a Virus Outbreak</A><BR>
|
||||
<A href='?src=[REF(src)];[HrefToken()];secrets=monkey'>Turn all humans into monkeys</A><BR>
|
||||
<A href='?src=[REF(src)];[HrefToken()];secrets=anime'>Chinese Cartoons</A><BR>
|
||||
@@ -54,7 +52,6 @@
|
||||
<A href='?src=[REF(src)];[HrefToken()];secrets=quickpower'>Power all SMES</A><BR>
|
||||
<A href='?src=[REF(src)];[HrefToken()];secrets=tripleAI'>Triple AI mode (needs to be used in the lobby)</A><BR>
|
||||
<A href='?src=[REF(src)];[HrefToken()];secrets=traitor_all'>Everyone is the traitor</A><BR>
|
||||
<A href='?src=[REF(src)];[HrefToken()];secrets=ak47s'>AK47s for everyone!</A><BR>
|
||||
<A href='?src=[REF(src)];[HrefToken()];secrets=guns'>Summon Guns</A><BR>
|
||||
<A href='?src=[REF(src)];[HrefToken()];secrets=magic'>Summon Magic</A><BR>
|
||||
<A href='?src=[REF(src)];[HrefToken()];secrets=events'>Summon Events (Toggle)</A><BR>
|
||||
@@ -197,7 +194,7 @@
|
||||
if("moveminingshuttle")
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Send Mining Shuttle"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Send Mining Shuttle")
|
||||
if(!SSshuttle.toggleShuttle("mining","mining_home","mining_away"))
|
||||
message_admins("[key_name_admin(usr)] moved mining shuttle")
|
||||
log_admin("[key_name(usr)] moved the mining shuttle")
|
||||
@@ -205,7 +202,7 @@
|
||||
if("movelaborshuttle")
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Send Labor Shuttle"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Send Labor Shuttle")
|
||||
if(!SSshuttle.toggleShuttle("laborcamp","laborcamp_home","laborcamp_away"))
|
||||
message_admins("[key_name_admin(usr)] moved labor shuttle")
|
||||
log_admin("[key_name(usr)] moved the labor shuttle")
|
||||
@@ -213,7 +210,7 @@
|
||||
if("moveferry")
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Send CentCom Ferry"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Send CentCom Ferry")
|
||||
if(!SSshuttle.toggleShuttle("ferry","ferry_home","ferry_away"))
|
||||
message_admins("[key_name_admin(usr)] moved the CentCom ferry")
|
||||
log_admin("[key_name(usr)] moved the CentCom ferry")
|
||||
@@ -225,7 +222,7 @@
|
||||
if(A)
|
||||
var/new_perma = !A.perma_docked
|
||||
A.perma_docked = new_perma
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Permadock Arrivals Shuttle", "[new_perma ? "Enabled" : "Disabled"]"))
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Permadock Arrivals Shuttle", "[new_perma]"))
|
||||
message_admins("[key_name_admin(usr)] [new_perma ? "stopped" : "started"] the arrivals shuttle")
|
||||
log_admin("[key_name(usr)] [new_perma ? "stopped" : "started"] the arrivals shuttle")
|
||||
else
|
||||
@@ -275,7 +272,7 @@
|
||||
if("monkey")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Monkeyize All Humans"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Monkeyize All Humans")
|
||||
for(var/mob/living/carbon/human/H in GLOB.carbon_list)
|
||||
spawn(0)
|
||||
H.monkeyize()
|
||||
@@ -286,7 +283,7 @@
|
||||
return
|
||||
var/result = input(usr, "Please choose a new species","Species") as null|anything in GLOB.species_list
|
||||
if(result)
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Mass Species Change", "[result]"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Mass Species Change([result])")
|
||||
log_admin("[key_name(usr)] turned all humans into [result]", 1)
|
||||
message_admins("\blue [key_name_admin(usr)] turned all humans into [result]")
|
||||
var/newtype = GLOB.species_list[result]
|
||||
@@ -297,12 +294,12 @@
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
usr.client.triple_ai()
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Triple AI"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Triple AI")
|
||||
|
||||
if("power")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Power All APCs"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Power All APCs")
|
||||
log_admin("[key_name(usr)] made all areas powered", 1)
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] made all areas powered</span>")
|
||||
power_restore()
|
||||
@@ -310,7 +307,7 @@
|
||||
if("unpower")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Depower All APCs"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Depower All APCs")
|
||||
log_admin("[key_name(usr)] made all areas unpowered", 1)
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] made all areas unpowered</span>")
|
||||
power_failure()
|
||||
@@ -318,7 +315,7 @@
|
||||
if("quickpower")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Power All SMESs"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Power All SMESs")
|
||||
log_admin("[key_name(usr)] made all SMESs powered", 1)
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] made all SMESs powered</span>")
|
||||
power_restore_quick()
|
||||
@@ -332,7 +329,7 @@
|
||||
var/objective = copytext(sanitize(input("Enter an objective")),1,MAX_MESSAGE_LEN)
|
||||
if(!objective)
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Traitor All", "[objective]"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Traitor All ([objective])")
|
||||
for(var/mob/living/H in GLOB.player_list)
|
||||
if(!(ishuman(H)||istype(H, /mob/living/silicon/)))
|
||||
continue
|
||||
@@ -353,7 +350,7 @@
|
||||
if("changebombcap")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Bomb Cap"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Bomb Cap")
|
||||
|
||||
var/newBombCap = input(usr,"What would you like the new bomb cap to be. (entered as the light damage range (the 3rd number in common (1,2,3) notation)) Must be above 4)", "New Bomb Cap", GLOB.MAX_EX_LIGHT_RANGE) as num|null
|
||||
if (!CONFIG_SET(number/bombcap, newBombCap))
|
||||
@@ -365,7 +362,7 @@
|
||||
if("blackout")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Break All Lights"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Break All Lights")
|
||||
message_admins("[key_name_admin(usr)] broke all lights")
|
||||
for(var/obj/machinery/light/L in GLOB.machines)
|
||||
L.break_light_tube()
|
||||
@@ -381,7 +378,7 @@
|
||||
|
||||
if(animetype == "Cancel" || droptype == "Cancel")
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Chinese Cartoons"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Chinese Cartoons")
|
||||
message_admins("[key_name_admin(usr)] made everything kawaii.")
|
||||
for(var/mob/living/carbon/human/H in GLOB.carbon_list)
|
||||
SEND_SOUND(H, sound('sound/ai/animes.ogg'))
|
||||
@@ -411,7 +408,7 @@
|
||||
if("whiteout")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Fix All Lights"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Fix All Lights")
|
||||
message_admins("[key_name_admin(usr)] fixed all lights")
|
||||
for(var/obj/machinery/light/L in GLOB.machines)
|
||||
L.fix()
|
||||
@@ -422,7 +419,7 @@
|
||||
if("virus")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Virus Outbreak"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Virus Outbreak")
|
||||
switch(alert("Do you want this to be a random disease or do you have something in mind?",,"Make Your Own","Random","Choose"))
|
||||
if("Make Your Own")
|
||||
AdminCreateVirus(usr.client)
|
||||
@@ -437,7 +434,7 @@
|
||||
if("retardify")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Mass Braindamage"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Mass Braindamage")
|
||||
for(var/mob/living/carbon/human/H in GLOB.player_list)
|
||||
to_chat(H, "<span class='boldannounce'>You suddenly feel stupid.</span>")
|
||||
H.adjustBrainLoss(60, 80)
|
||||
@@ -446,7 +443,7 @@
|
||||
if("eagles")//SCRAW
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Egalitarian Station"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Egalitarian Station")
|
||||
for(var/obj/machinery/door/airlock/W in GLOB.machines)
|
||||
if((W.z in GLOB.station_z_levels) && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison))
|
||||
W.req_access = list()
|
||||
@@ -463,7 +460,7 @@
|
||||
if("guns")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Summon Guns"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Summon Guns")
|
||||
var/survivor_probability = 0
|
||||
switch(alert("Do you want this to create survivors antagonists?",,"No Antags","Some Antags","All Antags!"))
|
||||
if("Some Antags")
|
||||
@@ -476,7 +473,7 @@
|
||||
if("magic")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Summon Magic"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Summon Magic")
|
||||
var/survivor_probability = 0
|
||||
switch(alert("Do you want this to create survivors antagonists?",,"No Antags","Some Antags","All Antags!"))
|
||||
if("Some Antags")
|
||||
@@ -492,22 +489,22 @@
|
||||
if(!SSevents.wizardmode)
|
||||
if(alert("Do you want to toggle summon events on?",,"Yes","No") == "Yes")
|
||||
summonevents()
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Summon Events", "Activate"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Activate Summon Events")
|
||||
|
||||
else
|
||||
switch(alert("What would you like to do?",,"Intensify Summon Events","Turn Off Summon Events","Nothing"))
|
||||
if("Intensify Summon Events")
|
||||
summonevents()
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Summon Events", "Intensify"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Intensify Summon Events")
|
||||
if("Turn Off Summon Events")
|
||||
SSevents.toggleWizardmode()
|
||||
SSevents.resetFrequency()
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Summon Events", "Disable"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Disable Summon Events")
|
||||
|
||||
if("dorf")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Dwarf Beards"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Dwarf Beards")
|
||||
for(var/mob/living/carbon/human/B in GLOB.carbon_list)
|
||||
B.facial_hair_style = "Dward Beard"
|
||||
B.update_hair()
|
||||
@@ -516,14 +513,14 @@
|
||||
if("onlyone")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("There Can Be Only One"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "There Can Be Only One")
|
||||
usr.client.only_one()
|
||||
sound_to_playing_players('sound/misc/highlander.ogg')
|
||||
|
||||
if("delayed_onlyone")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("There Can Be Only One"))
|
||||
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "There Can Be Only One")
|
||||
usr.client.only_one_delayed()
|
||||
sound_to_playing_players('sound/misc/highlander_delayed.ogg')
|
||||
|
||||
|
||||
+10
-115
@@ -58,8 +58,6 @@
|
||||
toggle_exempt_status(C)
|
||||
|
||||
else if(href_list["makeAntag"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
if (!SSticker.mode)
|
||||
to_chat(usr, "<span class='danger'>Not until the round starts!</span>")
|
||||
return
|
||||
@@ -203,8 +201,7 @@
|
||||
return
|
||||
|
||||
else if(href_list["dbbanaddtype"])
|
||||
if(!check_rights(R_BAN))
|
||||
return
|
||||
|
||||
var/bantype = text2num(href_list["dbbanaddtype"])
|
||||
var/banckey = href_list["dbbanaddckey"]
|
||||
var/banip = href_list["dbbanaddip"]
|
||||
@@ -602,8 +599,6 @@
|
||||
return
|
||||
|
||||
else if(href_list["jobban2"])
|
||||
if(!check_rights(R_BAN))
|
||||
return
|
||||
var/mob/M = locate(href_list["jobban2"])
|
||||
if(!ismob(M))
|
||||
to_chat(usr, "This can only be used on instances of type /mob.")
|
||||
@@ -866,6 +861,12 @@
|
||||
else
|
||||
dat += "<td width='20%'><a href='?src=[REF(src)];[HrefToken()];jobban3=abductor;jobban4=[REF(M)]'>Abductor</a></td>"
|
||||
|
||||
//Borer
|
||||
if(jobban_isbanned(M, "borer") || isbanned_dept)
|
||||
dat += "<td width='20%'><a href='?src=\ref[src];jobban3=borer;jobban4=\ref[M]'><font color=red>Borer</font></a></td>"
|
||||
else
|
||||
dat += "<td width='20%'><a href='?src=\ref[src];jobban3=borer;jobban4=\ref[M]'>Borer</a></td>"
|
||||
|
||||
//Alien
|
||||
if(jobban_isbanned(M, "alien candidate") || isbanned_dept)
|
||||
dat += "<td width='20%'><a href='?src=[REF(src)];[HrefToken()];jobban3=alien candidate;jobban4=[REF(M)]'><font color=red>Alien</font></a></td>"
|
||||
@@ -1028,8 +1029,6 @@
|
||||
return 0 //we didn't do anything!
|
||||
|
||||
else if(href_list["boot2"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/mob/M = locate(href_list["boot2"])
|
||||
if (ismob(M))
|
||||
if(!check_if_greater_rights_than(M.client))
|
||||
@@ -1042,110 +1041,72 @@
|
||||
qdel(M.client)
|
||||
|
||||
else if(href_list["addmessage"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/target_ckey = href_list["addmessage"]
|
||||
create_message("message", target_ckey, secret = 0)
|
||||
|
||||
else if(href_list["addnote"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/target_ckey = href_list["addnote"]
|
||||
create_message("note", target_ckey)
|
||||
|
||||
else if(href_list["addwatch"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/target_ckey = href_list["addwatch"]
|
||||
create_message("watchlist entry", target_ckey, secret = 1)
|
||||
|
||||
else if(href_list["addmemo"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
create_message("memo", secret = 0, browse = 1)
|
||||
|
||||
else if(href_list["addmessageempty"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
create_message("message", secret = 0)
|
||||
|
||||
else if(href_list["addnoteempty"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
create_message("note")
|
||||
|
||||
else if(href_list["addwatchempty"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
create_message("watchlist entry", secret = 1)
|
||||
|
||||
else if(href_list["deletemessage"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/message_id = href_list["deletemessage"]
|
||||
delete_message(message_id)
|
||||
|
||||
else if(href_list["deletemessageempty"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/message_id = href_list["deletemessageempty"]
|
||||
delete_message(message_id, browse = 1)
|
||||
|
||||
else if(href_list["editmessage"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/message_id = href_list["editmessage"]
|
||||
edit_message(message_id)
|
||||
|
||||
else if(href_list["editmessageempty"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/message_id = href_list["editmessageempty"]
|
||||
edit_message(message_id, browse = 1)
|
||||
|
||||
else if(href_list["secretmessage"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/message_id = href_list["secretmessage"]
|
||||
toggle_message_secrecy(message_id)
|
||||
|
||||
else if(href_list["searchmessages"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/target = href_list["searchmessages"]
|
||||
browse_messages(index = target)
|
||||
|
||||
else if(href_list["nonalpha"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/target = href_list["nonalpha"]
|
||||
target = text2num(target)
|
||||
browse_messages(index = target)
|
||||
|
||||
else if(href_list["showmessages"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/target = href_list["showmessages"]
|
||||
browse_messages(index = target)
|
||||
|
||||
else if(href_list["showmemo"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
browse_messages("memo")
|
||||
|
||||
else if(href_list["showwatch"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
browse_messages("watchlist entry")
|
||||
|
||||
else if(href_list["showwatchfilter"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
browse_messages("watchlist entry", filter = 1)
|
||||
|
||||
else if(href_list["showmessageckey"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/target = href_list["showmessageckey"]
|
||||
var/agegate = TRUE
|
||||
if (href_list["showall"])
|
||||
@@ -1157,8 +1118,6 @@
|
||||
browse_messages(target_ckey = target, linkless = 1)
|
||||
|
||||
else if(href_list["messageedits"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/message_id = sanitizeSQL("[href_list["messageedits"]]")
|
||||
var/datum/DBQuery/query_get_message_edits = SSdbcore.NewQuery("SELECT edits FROM [format_table_name("messages")] WHERE id = '[message_id]'")
|
||||
if(!query_get_message_edits.warn_execute())
|
||||
@@ -1348,7 +1307,7 @@
|
||||
if(alert(usr, "Send [key_name(M)] to Prison?", "Message", "Yes", "No") != "Yes")
|
||||
return
|
||||
|
||||
M.forceMove(pick(GLOB.prisonwarp))
|
||||
M.loc = pick(GLOB.prisonwarp)
|
||||
to_chat(M, "<span class='adminnotice'>You have been sent to Prison!</span>")
|
||||
|
||||
log_admin("[key_name(usr)] has sent [key_name(M)] to Prison!")
|
||||
@@ -1584,7 +1543,7 @@
|
||||
C.admin_ghost()
|
||||
var/mob/dead/observer/A = C.mob
|
||||
A.ManualFollow(AM)
|
||||
|
||||
|
||||
else if(href_list["admingetmovable"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
@@ -1609,13 +1568,9 @@
|
||||
C.jumptocoord(x,y,z)
|
||||
|
||||
else if(href_list["adminchecklaws"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
output_ai_laws()
|
||||
|
||||
else if(href_list["admincheckdevilinfo"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/mob/M = locate(href_list["admincheckdevilinfo"])
|
||||
output_devil_info(M)
|
||||
|
||||
@@ -1649,7 +1604,7 @@
|
||||
var/mob/living/L = M
|
||||
var/status
|
||||
switch (M.stat)
|
||||
if(CONSCIOUS)
|
||||
if (CONSCIOUS)
|
||||
status = "Alive"
|
||||
if(SOFT_CRIT)
|
||||
status = "<font color='orange'><b>Dying</b></font>"
|
||||
@@ -2024,28 +1979,20 @@
|
||||
Secrets_topic(href_list["secrets"],href_list)
|
||||
|
||||
else if(href_list["ac_view_wanted"]) //Admin newscaster Topic() stuff be here
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
src.admincaster_screen = 18 //The ac_ prefix before the hrefs stands for AdminCaster.
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_set_channel_name"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
src.admincaster_feed_channel.channel_name = stripped_input(usr, "Provide a Feed Channel Name.", "Network Channel Handler", "")
|
||||
while (findtext(src.admincaster_feed_channel.channel_name," ") == 1)
|
||||
src.admincaster_feed_channel.channel_name = copytext(src.admincaster_feed_channel.channel_name,2,lentext(src.admincaster_feed_channel.channel_name)+1)
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_set_channel_lock"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
src.admincaster_feed_channel.locked = !src.admincaster_feed_channel.locked
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_submit_new_channel"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/check = 0
|
||||
for(var/datum/newscaster/feed_channel/FC in GLOB.news_network.network_channels)
|
||||
if(FC.channel_name == src.admincaster_feed_channel.channel_name)
|
||||
@@ -2063,8 +2010,6 @@
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_set_channel_receiving"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/list/available_channels = list()
|
||||
for(var/datum/newscaster/feed_channel/F in GLOB.news_network.network_channels)
|
||||
available_channels += F.channel_name
|
||||
@@ -2072,16 +2017,12 @@
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_set_new_message"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
src.admincaster_feed_message.body = adminscrub(input(usr, "Write your Feed story.", "Network Channel Handler", ""))
|
||||
while (findtext(src.admincaster_feed_message.returnBody(-1)," ") == 1)
|
||||
src.admincaster_feed_message.body = copytext(src.admincaster_feed_message.returnBody(-1),2,lentext(src.admincaster_feed_message.returnBody(-1))+1)
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_submit_new_message"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
if(src.admincaster_feed_message.returnBody(-1) =="" || src.admincaster_feed_message.returnBody(-1) =="\[REDACTED\]" || src.admincaster_feed_channel.channel_name == "" )
|
||||
src.admincaster_screen = 6
|
||||
else
|
||||
@@ -2096,32 +2037,22 @@
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_create_channel"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
src.admincaster_screen=2
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_create_feed_story"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
src.admincaster_screen=3
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_menu_censor_story"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
src.admincaster_screen=10
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_menu_censor_channel"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
src.admincaster_screen=11
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_menu_wanted"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/already_wanted = 0
|
||||
if(GLOB.news_network.wanted_issue.active)
|
||||
already_wanted = 1
|
||||
@@ -2133,24 +2064,18 @@
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_set_wanted_name"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
src.admincaster_wanted_message.criminal = adminscrub(input(usr, "Provide the name of the Wanted person.", "Network Security Handler", ""))
|
||||
while(findtext(src.admincaster_wanted_message.criminal," ") == 1)
|
||||
src.admincaster_wanted_message.criminal = copytext(admincaster_wanted_message.criminal,2,lentext(admincaster_wanted_message.criminal)+1)
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_set_wanted_desc"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
src.admincaster_wanted_message.body = adminscrub(input(usr, "Provide the a description of the Wanted person and any other details you deem important.", "Network Security Handler", ""))
|
||||
while (findtext(src.admincaster_wanted_message.body," ") == 1)
|
||||
src.admincaster_wanted_message.body = copytext(src.admincaster_wanted_message.body,2,lentext(src.admincaster_wanted_message.body)+1)
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_submit_wanted"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/input_param = text2num(href_list["ac_submit_wanted"])
|
||||
if(src.admincaster_wanted_message.criminal == "" || src.admincaster_wanted_message.body == "")
|
||||
src.admincaster_screen = 16
|
||||
@@ -2167,8 +2092,6 @@
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_cancel_wanted"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/choice = alert("Please confirm Wanted Issue removal.","Network Security Handler","Confirm","Cancel")
|
||||
if(choice=="Confirm")
|
||||
GLOB.news_network.deleteWanted()
|
||||
@@ -2176,50 +2099,36 @@
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_censor_channel_author"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_channel/FC = locate(href_list["ac_censor_channel_author"])
|
||||
FC.toggleCensorAuthor()
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_censor_channel_story_author"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_message/MSG = locate(href_list["ac_censor_channel_story_author"])
|
||||
MSG.toggleCensorAuthor()
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_censor_channel_story_body"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_message/MSG = locate(href_list["ac_censor_channel_story_body"])
|
||||
MSG.toggleCensorBody()
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_pick_d_notice"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_channel/FC = locate(href_list["ac_pick_d_notice"])
|
||||
src.admincaster_feed_channel = FC
|
||||
src.admincaster_screen=13
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_toggle_d_notice"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_channel/FC = locate(href_list["ac_toggle_d_notice"])
|
||||
FC.toggleCensorDclass()
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_view"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
src.admincaster_screen=1
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_setScreen"]) //Brings us to the main menu and resets all fields~
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
src.admincaster_screen = text2num(href_list["ac_setScreen"])
|
||||
if (src.admincaster_screen == 0)
|
||||
if(src.admincaster_feed_channel)
|
||||
@@ -2231,35 +2140,25 @@
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_show_channel"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_channel/FC = locate(href_list["ac_show_channel"])
|
||||
src.admincaster_feed_channel = FC
|
||||
src.admincaster_screen = 9
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_pick_censor_channel"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_channel/FC = locate(href_list["ac_pick_censor_channel"])
|
||||
src.admincaster_feed_channel = FC
|
||||
src.admincaster_screen = 12
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_refresh"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_set_signature"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
src.admin_signature = adminscrub(input(usr, "Provide your desired signature.", "Network Identity Handler", ""))
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_del_comment"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_comment/FC = locate(href_list["ac_del_comment"])
|
||||
var/datum/newscaster/feed_message/FM = locate(href_list["ac_del_comment_msg"])
|
||||
FM.comments -= FC
|
||||
@@ -2267,8 +2166,6 @@
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_lock_comment"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_message/FM = locate(href_list["ac_lock_comment"])
|
||||
FM.locked ^= 1
|
||||
src.access_news_network()
|
||||
@@ -2365,8 +2262,6 @@
|
||||
error_viewer.show_to(owner, null, href_list["viewruntime_linear"])
|
||||
|
||||
else if(href_list["showrelatedacc"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/client/C = locate(href_list["client"]) in GLOB.clients
|
||||
var/thing_to_check
|
||||
if(href_list["showrelatedacc"] == "cid")
|
||||
|
||||
@@ -31,5 +31,3 @@
|
||||
fdel(F)
|
||||
WRITE_FILE(F, text)
|
||||
to_chat(world, "Completely successfully and written to [F]")
|
||||
|
||||
|
||||
|
||||
@@ -114,8 +114,8 @@
|
||||
/proc/_range(Dist, Center = usr)
|
||||
return range(Dist, Center)
|
||||
|
||||
/proc/_regex(pattern, flags)
|
||||
return regex(pattern, flags)
|
||||
/proc/_regex(pattern, flags_1)
|
||||
return regex(pattern, flags_1)
|
||||
|
||||
/proc/_REGEX_QUOTE(text)
|
||||
return REGEX_QUOTE(text)
|
||||
|
||||
@@ -615,18 +615,15 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
|
||||
/proc/send2otherserver(source,msg,type = "Ahelp")
|
||||
var/comms_key = CONFIG_GET(string/comms_key)
|
||||
if(!comms_key)
|
||||
return
|
||||
var/list/message = list()
|
||||
message["message_sender"] = source
|
||||
message["message"] = msg
|
||||
message["source"] = "([CONFIG_GET(string/cross_comms_name)])"
|
||||
message["key"] = comms_key
|
||||
message["crossmessage"] = type
|
||||
if(comms_key)
|
||||
var/list/message = list()
|
||||
message["message_sender"] = source
|
||||
message["message"] = msg
|
||||
message["source"] = "([CONFIG_GET(string/cross_comms_name)])"
|
||||
message["key"] = comms_key
|
||||
message["crossmessage"] = type
|
||||
|
||||
var/list/servers = CONFIG_GET(keyed_string_list/cross_server)
|
||||
for(var/I in servers)
|
||||
world.Export("[servers[I]]?[list2params(message)]")
|
||||
world.Export("[CONFIG_GET(string/cross_server_address)]?[list2params(message)]")
|
||||
|
||||
|
||||
/proc/ircadminwho()
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
log_admin("[key_name(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]")
|
||||
message_admins("[key_name_admin(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]")
|
||||
usr.forceMove(T)
|
||||
usr.loc = T
|
||||
SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Turf") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
return
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
admin_ticket_log(M, msg)
|
||||
if(M)
|
||||
M.forceMove(get_turf(usr))
|
||||
usr.forceMove(M.loc)
|
||||
usr.loc = M.loc
|
||||
SSblackbox.record_feedback("tally", "admin_verb", 1, "Get Key") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/sendmob(mob/M in sortmobs())
|
||||
|
||||
@@ -8,4 +8,4 @@
|
||||
|
||||
var/datum/cinematic/choice = input(src,"Cinematic","Choose",null) as anything in subtypesof(/datum/cinematic)
|
||||
if(choice)
|
||||
Cinematic(initial(choice.id),world,null)
|
||||
Cinematic(initial(choice.id),world,null)
|
||||
|
||||
@@ -739,7 +739,7 @@ GLOBAL_PROTECT(LastAdminCalledProc)
|
||||
Plasma.air_contents.gases[/datum/gas/plasma][MOLES] = 70
|
||||
Rad.drainratio = 0
|
||||
Rad.loaded_tank = Plasma
|
||||
Plasma.forceMove(Rad)
|
||||
Plasma.loc = Rad
|
||||
|
||||
if(!Rad.active)
|
||||
Rad.toggle_power()
|
||||
@@ -802,7 +802,7 @@ GLOBAL_PROTECT(LastAdminCalledProc)
|
||||
set category = "Debug"
|
||||
set name = "Display overlay Log"
|
||||
set desc = "Display SSoverlays log of everything that's passed through it."
|
||||
|
||||
|
||||
render_stats(SSoverlays.stats, src)
|
||||
|
||||
/client/proc/cmd_display_init_log()
|
||||
|
||||
@@ -53,6 +53,17 @@
|
||||
set category = "Debug"
|
||||
set name = "Radio report"
|
||||
|
||||
var/filters = list(
|
||||
"1" = "GLOB.RADIO_TO_AIRALARM",
|
||||
"2" = "GLOB.RADIO_FROM_AIRALARM",
|
||||
"3" = "GLOB.RADIO_CHAT",
|
||||
"4" = "GLOB.RADIO_ATMOSIA",
|
||||
"5" = "GLOB.RADIO_NAVBEACONS",
|
||||
"6" = "GLOB.RADIO_AIRLOCK",
|
||||
"7" = "RADIO_SECBOT",
|
||||
"8" = "RADIO_MULEBOT",
|
||||
"_default" = "NO_FILTER"
|
||||
)
|
||||
var/output = "<b>Radio Report</b><hr>"
|
||||
for (var/fq in SSradio.frequencies)
|
||||
output += "<b>Freq: [fq]</b><br>"
|
||||
@@ -63,9 +74,9 @@
|
||||
for (var/filter in fqs.devices)
|
||||
var/list/f = fqs.devices[filter]
|
||||
if (!f)
|
||||
output += " [filter]: ERROR<br>"
|
||||
output += " [filters[filter]]: ERROR<br>"
|
||||
continue
|
||||
output += " [filter]: [f.len]<br>"
|
||||
output += " [filters[filter]]: [f.len]<br>"
|
||||
for (var/device in f)
|
||||
if (istype(device, /atom))
|
||||
var/atom/A = device
|
||||
|
||||
@@ -39,6 +39,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list(
|
||||
/client/proc/cmd_admin_rejuvenate,
|
||||
/datum/admins/proc/show_traitor_panel,
|
||||
/client/proc/disable_communication,
|
||||
/client/proc/print_pointers,
|
||||
/client/proc/cmd_show_at_list,
|
||||
/client/proc/cmd_show_at_markers,
|
||||
/client/proc/manipulate_organs,
|
||||
|
||||
@@ -64,14 +64,14 @@
|
||||
|
||||
if(default == VV_NUM)
|
||||
var/dir_text = ""
|
||||
if(var_value > 0 && var_value < 16)
|
||||
if(var_value & 1)
|
||||
if(dir < 0 && dir < 16)
|
||||
if(dir & 1)
|
||||
dir_text += "NORTH"
|
||||
if(var_value & 2)
|
||||
if(dir & 2)
|
||||
dir_text += "SOUTH"
|
||||
if(var_value & 4)
|
||||
if(dir & 4)
|
||||
dir_text += "EAST"
|
||||
if(var_value & 8)
|
||||
if(dir & 8)
|
||||
dir_text += "WEST"
|
||||
|
||||
if(dir_text)
|
||||
|
||||
@@ -441,11 +441,11 @@ GLOBAL_PROTECT(VVpixelmovement)
|
||||
if(tdir > 0 && tdir < 16)
|
||||
if(tdir & 1)
|
||||
dir_text += "NORTH"
|
||||
if(tdir & 2)
|
||||
if(dir & 2)
|
||||
dir_text += "SOUTH"
|
||||
if(tdir & 4)
|
||||
if(dir & 4)
|
||||
dir_text += "EAST"
|
||||
if(tdir & 8)
|
||||
if(dir & 8)
|
||||
dir_text += "WEST"
|
||||
|
||||
if(dir_text)
|
||||
@@ -560,14 +560,14 @@ GLOBAL_PROTECT(VVpixelmovement)
|
||||
|
||||
if(default == VV_NUM)
|
||||
var/dir_text = ""
|
||||
if(var_value > 0 && var_value < 16)
|
||||
if(var_value & 1)
|
||||
if(dir < 0 && dir < 16)
|
||||
if(dir & 1)
|
||||
dir_text += "NORTH"
|
||||
if(var_value & 2)
|
||||
if(dir & 2)
|
||||
dir_text += "SOUTH"
|
||||
if(var_value & 4)
|
||||
if(dir & 4)
|
||||
dir_text += "EAST"
|
||||
if(var_value & 8)
|
||||
if(dir & 8)
|
||||
dir_text += "WEST"
|
||||
|
||||
if(dir_text)
|
||||
|
||||
@@ -238,17 +238,26 @@
|
||||
if(agentcount < 3)
|
||||
return 0
|
||||
|
||||
var/nuke_code = random_nukecode()
|
||||
|
||||
var/obj/machinery/nuclearbomb/nuke = locate("syndienuke") in GLOB.nuke_list
|
||||
if(nuke)
|
||||
nuke.r_code = nuke_code
|
||||
|
||||
//Let's find the spawn locations
|
||||
var/leader_chosen = FALSE
|
||||
var/datum/objective_team/nuclear/nuke_team
|
||||
var/spawnpos = 1 //Decides where they'll spawn. 1=leader.
|
||||
|
||||
for(var/mob/c in chosen)
|
||||
if(spawnpos > GLOB.nukeop_start.len)
|
||||
spawnpos = 1 //Ran out of spawns. Let's loop back to the first non-leader position
|
||||
var/mob/living/carbon/human/new_character=makeBody(c)
|
||||
if(!leader_chosen)
|
||||
leader_chosen = TRUE
|
||||
var/datum/antagonist/nukeop/N = new_character.mind.add_antag_datum(/datum/antagonist/nukeop/leader)
|
||||
nuke_team = N.nuke_team
|
||||
new_character.mind.make_Nuke(pick(GLOB.nukeop_leader_start), nuke_code, TRUE)
|
||||
else
|
||||
new_character.mind.add_antag_datum(/datum/antagonist/nukeop,nuke_team)
|
||||
new_character.mind.make_Nuke(GLOB.nukeop_start[spawnpos], nuke_code)
|
||||
spawnpos++
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
@@ -308,14 +317,11 @@
|
||||
//Assign antag status and the mission
|
||||
SSticker.mode.traitors += Commando.mind
|
||||
Commando.mind.special_role = "deathsquad"
|
||||
|
||||
var/datum/objective/missionobj = new
|
||||
missionobj.owner = Commando.mind
|
||||
missionobj.explanation_text = mission
|
||||
missionobj.completed = 1
|
||||
Commando.mind.objectives += missionobj
|
||||
|
||||
Commando.mind.add_antag_datum(/datum/antagonist/auto_custom)
|
||||
|
||||
//Greet the commando
|
||||
to_chat(Commando, "<B><font size=3 color=red>You are the [numagents==1?"Deathsquad Officer":"Death Commando"].</font></B>")
|
||||
@@ -363,14 +369,11 @@
|
||||
//Assign antag status and the mission
|
||||
SSticker.mode.traitors += newmob.mind
|
||||
newmob.mind.special_role = "official"
|
||||
|
||||
var/datum/objective/missionobj = new
|
||||
missionobj.owner = newmob.mind
|
||||
missionobj.explanation_text = mission
|
||||
missionobj.completed = 1
|
||||
newmob.mind.objectives += missionobj
|
||||
|
||||
newmob.mind.add_antag_datum(/datum/antagonist/auto_custom)
|
||||
|
||||
if(CONFIG_GET(flag/enforce_human_authority))
|
||||
newmob.set_species(/datum/species/human)
|
||||
@@ -471,15 +474,12 @@
|
||||
//Assign antag status and the mission
|
||||
SSticker.mode.traitors += ERTOperative.mind
|
||||
ERTOperative.mind.special_role = "ERT"
|
||||
|
||||
var/datum/objective/missionobj = new
|
||||
missionobj.owner = ERTOperative.mind
|
||||
missionobj.explanation_text = mission
|
||||
missionobj.completed = 1
|
||||
ERTOperative.mind.objectives += missionobj
|
||||
|
||||
ERTOperative.mind.add_antag_datum(/datum/antagonist/auto_custom)
|
||||
|
||||
//Greet the commando
|
||||
to_chat(ERTOperative, "<B><font size=3 color=red>You are [numagents==1?"the Emergency Response Team Commander":"an Emergency Response Officer"].</font></B>")
|
||||
var/missiondesc = "Your squad is being sent on a Code [alert] mission to [station_name()] by Nanotrasen's Security Division."
|
||||
|
||||
@@ -28,7 +28,6 @@ GLOBAL_VAR_INIT(highlander, FALSE)
|
||||
/mob/living/carbon/human/proc/make_scottish()
|
||||
SSticker.mode.traitors += mind
|
||||
mind.special_role = "highlander"
|
||||
|
||||
dna.species.species_traits |= NOGUNS //nice try jackass
|
||||
|
||||
var/datum/objective/steal/steal_objective = new
|
||||
@@ -41,8 +40,6 @@ GLOBAL_VAR_INIT(highlander, FALSE)
|
||||
hijack_objective.owner = mind
|
||||
mind.objectives += hijack_objective
|
||||
|
||||
mind.add_antag_datum(/datum/antagonist/auto_custom)
|
||||
|
||||
mind.announce_objectives()
|
||||
|
||||
for(var/obj/item/I in get_equipped_items())
|
||||
|
||||
@@ -12,4 +12,5 @@
|
||||
message_admins("[key_name_admin(usr)] has toggled the Panic Bunker, it is now [new_pb ? "enabled" : "disabled"].")
|
||||
if (new_pb && !SSdbcore.Connect())
|
||||
message_admins("The Database is not connected! Panic bunker will not work until the connection is reestablished.")
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Panic Bunker", "[new_pb ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Panic Bunker", "[new_pb]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
@@ -92,7 +92,6 @@
|
||||
if(SSevents.holidays && SSevents.holidays[APRIL_FOOLS])
|
||||
pitch = pick(0.5, 0.7, 0.8, 0.85, 0.9, 0.95, 1.1, 1.2, 1.4, 1.6, 2.0, 2.5)
|
||||
to_chat(src, "You feel the Honkmother messing with your song...")
|
||||
|
||||
SSblackbox.record_feedback("nested tally", "played_url", 1, list("[ckey]", "[web_sound_input]"))
|
||||
log_admin("[key_name(src)] played web sound: [web_sound_input]")
|
||||
message_admins("[key_name(src)] played web sound: [web_sound_input]")
|
||||
|
||||
@@ -21,26 +21,25 @@
|
||||
usr.loc = O
|
||||
usr.real_name = O.name
|
||||
usr.name = O.name
|
||||
usr.reset_perspective(O)
|
||||
usr.client.eye = O
|
||||
usr.control_object = O
|
||||
SSblackbox.record_feedback("tally", "admin_verb", 1, "Possess Object") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/proc/release()
|
||||
/proc/release(obj/O in world)
|
||||
set name = "Release Obj"
|
||||
set category = "Object"
|
||||
//usr.loc = get_turf(usr)
|
||||
|
||||
if(usr.control_object && usr.name_archive) //if you have a name archived and if you are actually relassing an object
|
||||
usr.real_name = usr.name_archive
|
||||
usr.name_archive = ""
|
||||
usr.name = usr.real_name
|
||||
if(ishuman(usr))
|
||||
var/mob/living/carbon/human/H = usr
|
||||
H.name = H.get_visible_name()
|
||||
// usr.regenerate_icons() //So the name is updated properly
|
||||
|
||||
|
||||
usr.loc = get_turf(usr.control_object)
|
||||
usr.reset_perspective()
|
||||
usr.loc = O.loc
|
||||
usr.client.eye = usr
|
||||
usr.control_object = null
|
||||
SSblackbox.record_feedback("tally", "admin_verb", 1, "Release Object") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
var/msg = "[key_name_admin(usr)] has toggled [key_name_admin(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]"
|
||||
message_admins(msg)
|
||||
admin_ticket_log(M, msg)
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Godmode", "[M.status_flags & GODMODE ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Godmode", "[M.status_flags & GODMODE]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
/proc/cmd_admin_mute(whom, mute_type, automute = 0)
|
||||
@@ -386,8 +386,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
A.equip_wizard()
|
||||
if("Syndicate")
|
||||
new_character.forceMove(pick(GLOB.nukeop_start))
|
||||
var/datum/antagonist/nukeop/N = new_character.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE)
|
||||
N.equip_op()
|
||||
call(/datum/game_mode/proc/equip_syndicate)(new_character)
|
||||
if("Space Ninja")
|
||||
var/list/ninja_spawn = list()
|
||||
for(var/obj/effect/landmark/carpspawn/L in GLOB.landmarks_list)
|
||||
@@ -747,7 +746,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
else
|
||||
to_chat(usr, "Random events disabled")
|
||||
message_admins("Admin [key_name_admin(usr)] has disabled random events.")
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Random Events", "[new_are ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Random Events", "[new_are]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
/client/proc/admin_change_sec_level()
|
||||
@@ -980,7 +979,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
|
||||
to_chat(usr, "You toggled your admin antag HUD [adding_hud ? "ON" : "OFF"].")
|
||||
message_admins("[key_name_admin(usr)] toggled their admin antag HUD [adding_hud ? "ON" : "OFF"].")
|
||||
log_admin("[key_name(usr)] toggled their admin antag HUD [adding_hud ? "ON" : "OFF"].")
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Antag HUD", "[adding_hud ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Antag HUD", "[adding_hud]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/has_antag_hud()
|
||||
var/datum/atom_hud/A = GLOB.huds[ANTAG_HUD_TRAITOR]
|
||||
@@ -1199,7 +1198,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
|
||||
if (GLOB.hub_visibility && !world.reachable)
|
||||
message_admins("WARNING: The server will not show up on the hub because byond is detecting that a filewall is blocking incoming connections.")
|
||||
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggled Hub Visibility", "[GLOB.hub_visibility ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggled Hub Visibility", "[GLOB.hub_visibility]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/smite(mob/living/carbon/human/target as mob)
|
||||
set name = "Smite"
|
||||
|
||||
@@ -114,4 +114,3 @@
|
||||
|
||||
/obj/item/device/assembly/interact(mob/user)
|
||||
return //HTML MENU FOR WIRES GOES HERE
|
||||
|
||||
|
||||
@@ -68,10 +68,11 @@
|
||||
a_right.on_found(finder)
|
||||
|
||||
/obj/item/device/assembly_holder/Move()
|
||||
. = ..()
|
||||
..()
|
||||
if(a_left && a_right)
|
||||
a_left.holder_movement()
|
||||
a_right.holder_movement()
|
||||
return
|
||||
|
||||
/obj/item/device/assembly_holder/attack_hand()//Perhapse this should be a holder_pickup proc instead, can add if needbe I guess
|
||||
if(a_left && a_right)
|
||||
@@ -87,10 +88,10 @@
|
||||
return 0
|
||||
if(a_left)
|
||||
a_left.holder = null
|
||||
a_left.forceMove(T)
|
||||
a_left.loc = T
|
||||
if(a_right)
|
||||
a_right.holder = null
|
||||
a_right.forceMove(T)
|
||||
a_right.loc = T
|
||||
qdel(src)
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -83,9 +83,10 @@
|
||||
|
||||
/obj/item/device/assembly/infra/Move()
|
||||
var/t = dir
|
||||
. = ..()
|
||||
..()
|
||||
setDir(t)
|
||||
qdel(first)
|
||||
return
|
||||
|
||||
/obj/item/device/assembly/infra/holder_movement()
|
||||
if(!holder)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
if(!armed)
|
||||
if(ishuman(usr))
|
||||
var/mob/living/carbon/human/user = usr
|
||||
if((user.disabilities & (CLUMSY | DUMB)) && prob(50))
|
||||
if((user.getBrainLoss() >= 60) || user.disabilities & CLUMSY && prob(50))
|
||||
to_chat(user, "<span class='warning'>Your hand slips, setting off the trigger!</span>")
|
||||
pulse(0)
|
||||
update_icon()
|
||||
@@ -76,7 +76,7 @@
|
||||
if(!armed)
|
||||
to_chat(user, "<span class='notice'>You arm [src].</span>")
|
||||
else
|
||||
if((user.disabilities & (CLUMSY | DUMB)) && prob(50))
|
||||
if(((user.getBrainLoss() >= 60) || user.disabilities & CLUMSY) && prob(50))
|
||||
var/which_hand = "l_hand"
|
||||
if(!(user.active_hand_index % 2))
|
||||
which_hand = "r_hand"
|
||||
@@ -92,7 +92,7 @@
|
||||
|
||||
/obj/item/device/assembly/mousetrap/attack_hand(mob/living/carbon/human/user)
|
||||
if(armed)
|
||||
if((user.disabilities & (CLUMSY | DUMB)) && prob(50))
|
||||
if(((user.getBrainLoss() >= 60) || user.disabilities & CLUMSY) && prob(50))
|
||||
var/which_hand = "l_hand"
|
||||
if(!(user.active_hand_index % 2))
|
||||
which_hand = "r_hand"
|
||||
@@ -139,4 +139,4 @@
|
||||
|
||||
/obj/item/device/assembly/mousetrap/armed
|
||||
icon_state = "mousetraparmed"
|
||||
armed = 1
|
||||
armed = TRUE
|
||||
|
||||
@@ -1,39 +1,42 @@
|
||||
/obj/item/assembly/shock_kit
|
||||
name = "electrohelmet assembly"
|
||||
desc = "This appears to be made from both an electropack and a helmet."
|
||||
icon = 'icons/obj/assemblies.dmi'
|
||||
icon_state = "shock_kit"
|
||||
var/obj/item/clothing/head/helmet/part1 = null
|
||||
var/obj/item/device/electropack/part2 = null
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
/obj/item/assembly/shock_kit
|
||||
name = "electrohelmet assembly"
|
||||
desc = "This appears to be made from both an electropack and a helmet."
|
||||
icon = 'icons/obj/assemblies.dmi'
|
||||
icon_state = "shock_kit"
|
||||
var/obj/item/clothing/head/helmet/part1 = null
|
||||
var/obj/item/device/electropack/part2 = null
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
flags_1 = CONDUCT_1
|
||||
|
||||
/obj/item/assembly/shock_kit/Destroy()
|
||||
qdel(part1)
|
||||
qdel(part2)
|
||||
return ..()
|
||||
|
||||
/obj/item/assembly/shock_kit/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/wrench))
|
||||
part1.forceMove(drop_location())
|
||||
part2.forceMove(drop_location())
|
||||
part1.master = null
|
||||
part2.master = null
|
||||
part1 = null
|
||||
part2 = null
|
||||
qdel(src)
|
||||
return
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/shock_kit/attack_self(mob/user)
|
||||
part1.attack_self(user)
|
||||
part2.attack_self(user)
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/shock_kit/receive_signal()
|
||||
if(istype(loc, /obj/structure/chair/e_chair))
|
||||
var/obj/structure/chair/e_chair/C = loc
|
||||
C.shock()
|
||||
return
|
||||
|
||||
/obj/item/assembly/shock_kit/Destroy()
|
||||
qdel(part1)
|
||||
qdel(part2)
|
||||
return ..()
|
||||
|
||||
/obj/item/assembly/shock_kit/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/wrench))
|
||||
var/turf/T = loc
|
||||
if(ismob(T))
|
||||
T = T.loc
|
||||
part1.loc = T
|
||||
part2.loc = T
|
||||
part1.master = null
|
||||
part2.master = null
|
||||
part1 = null
|
||||
part2 = null
|
||||
qdel(src)
|
||||
return
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/shock_kit/attack_self(mob/user)
|
||||
part1.attack_self(user)
|
||||
part2.attack_self(user)
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/assembly/shock_kit/receive_signal()
|
||||
if(istype(loc, /obj/structure/chair/e_chair))
|
||||
var/obj/structure/chair/e_chair/C = loc
|
||||
C.shock()
|
||||
return
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
wires = WIRE_RECEIVE | WIRE_PULSE | WIRE_RADIO_PULSE | WIRE_RADIO_RECEIVE
|
||||
attachable = 1
|
||||
|
||||
var/code = DEFAULT_SIGNALER_CODE
|
||||
var/frequency = FREQ_SIGNALER
|
||||
var/code = 30
|
||||
var/frequency = 1457
|
||||
var/delay = 0
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
@@ -73,7 +73,7 @@ Code:
|
||||
|
||||
if (href_list["freq"])
|
||||
var/new_frequency = (frequency + text2num(href_list["freq"]))
|
||||
if(new_frequency < MIN_FREE_FREQ || new_frequency > MAX_FREE_FREQ)
|
||||
if(new_frequency < 1200 || new_frequency > 1600)
|
||||
new_frequency = sanitize_frequency(new_frequency)
|
||||
set_frequency(new_frequency)
|
||||
|
||||
@@ -105,7 +105,10 @@ Code:
|
||||
if(!radio_connection)
|
||||
return
|
||||
|
||||
var/datum/signal/signal = new(list("code" = code))
|
||||
var/datum/signal/signal = new
|
||||
signal.source = src
|
||||
signal.encryption = code
|
||||
signal.data["message"] = "ACTIVATE"
|
||||
radio_connection.post_signal(src, signal)
|
||||
|
||||
var/time = time2text(world.realtime,"hh:mm:ss")
|
||||
@@ -119,7 +122,7 @@ Code:
|
||||
/obj/item/device/assembly/signaler/receive_signal(datum/signal/signal)
|
||||
if(!signal)
|
||||
return 0
|
||||
if(signal.data["code"] != code)
|
||||
if(signal.encryption != code)
|
||||
return 0
|
||||
if(!(src.wires & WIRE_RADIO_RECEIVE))
|
||||
return 0
|
||||
@@ -129,9 +132,13 @@ Code:
|
||||
|
||||
|
||||
/obj/item/device/assembly/signaler/proc/set_frequency(new_frequency)
|
||||
if(!SSradio)
|
||||
sleep(20)
|
||||
if(!SSradio)
|
||||
return
|
||||
SSradio.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = SSradio.add_object(src, frequency, RADIO_SIGNALER)
|
||||
radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_CHAT)
|
||||
return
|
||||
|
||||
// Embedded signaller used in grenade construction.
|
||||
@@ -168,7 +175,7 @@ Code:
|
||||
/obj/item/device/assembly/signaler/anomaly/receive_signal(datum/signal/signal)
|
||||
if(!signal)
|
||||
return 0
|
||||
if(signal.data["code"] != code)
|
||||
if(signal.encryption != code)
|
||||
return 0
|
||||
for(var/obj/effect/anomaly/A in get_turf(src))
|
||||
A.anomalyNeutralize()
|
||||
|
||||
@@ -1,91 +1,91 @@
|
||||
/obj/item/device/assembly/voice
|
||||
name = "voice analyzer"
|
||||
desc = "A small electronic device able to record a voice sample, and send a signal when that sample is repeated."
|
||||
icon_state = "voice"
|
||||
materials = list(MAT_METAL=500, MAT_GLASS=50)
|
||||
/obj/item/device/assembly/voice
|
||||
name = "voice analyzer"
|
||||
desc = "A small electronic device able to record a voice sample, and send a signal when that sample is repeated."
|
||||
icon_state = "voice"
|
||||
materials = list(MAT_METAL=500, MAT_GLASS=50)
|
||||
flags_1 = HEAR_1
|
||||
attachable = 1
|
||||
verb_say = "beeps"
|
||||
verb_ask = "beeps"
|
||||
verb_exclaim = "beeps"
|
||||
var/listening = 0
|
||||
var/recorded = "" //the activation message
|
||||
var/mode = 1
|
||||
var/static/list/modes = list("inclusive",
|
||||
"exclusive",
|
||||
"recognizer",
|
||||
"voice sensor")
|
||||
|
||||
/obj/item/device/assembly/voice/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Use a multitool to swap between \"inclusive\", \"exclusive\", \"recognizer\", and \"voice sensor\" mode.</span>")
|
||||
|
||||
/obj/item/device/assembly/voice/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode)
|
||||
if(speaker == src)
|
||||
return
|
||||
|
||||
if(listening && !radio_freq)
|
||||
record_speech(speaker, raw_message, message_language)
|
||||
else
|
||||
if(check_activation(speaker, raw_message))
|
||||
addtimer(CALLBACK(src, .proc/pulse, 0), 10)
|
||||
|
||||
/obj/item/device/assembly/voice/proc/record_speech(atom/movable/speaker, raw_message, datum/language/message_language)
|
||||
switch(mode)
|
||||
if(1)
|
||||
recorded = raw_message
|
||||
listening = 0
|
||||
say("Activation message is '[recorded]'.", message_language)
|
||||
if(2)
|
||||
recorded = raw_message
|
||||
listening = 0
|
||||
say("Activation message is '[recorded]'.", message_language)
|
||||
if(3)
|
||||
recorded = speaker.GetVoice()
|
||||
listening = 0
|
||||
say("Your voice pattern is saved.", message_language)
|
||||
if(4)
|
||||
if(length(raw_message))
|
||||
addtimer(CALLBACK(src, .proc/pulse, 0), 10)
|
||||
|
||||
/obj/item/device/assembly/voice/proc/check_activation(atom/movable/speaker, raw_message)
|
||||
. = 0
|
||||
switch(mode)
|
||||
if(1)
|
||||
if(findtext(raw_message, recorded))
|
||||
. = 1
|
||||
if(2)
|
||||
if(raw_message == recorded)
|
||||
. = 1
|
||||
if(3)
|
||||
if(speaker.GetVoice() == recorded)
|
||||
. = 1
|
||||
if(4)
|
||||
if(length(raw_message))
|
||||
. = 1
|
||||
|
||||
/obj/item/device/assembly/voice/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/device/multitool))
|
||||
mode %= modes.len
|
||||
mode++
|
||||
to_chat(user, "You set [src] into a [modes[mode]] mode.")
|
||||
listening = 0
|
||||
recorded = ""
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/device/assembly/voice/activate()
|
||||
if(secured)
|
||||
if(!holder)
|
||||
listening = !listening
|
||||
say("[listening ? "Now" : "No longer"] recording input.")
|
||||
|
||||
/obj/item/device/assembly/voice/attack_self(mob/user)
|
||||
if(!user)
|
||||
return 0
|
||||
activate()
|
||||
return 1
|
||||
|
||||
/obj/item/device/assembly/voice/toggle_secure()
|
||||
. = ..()
|
||||
listening = 0
|
||||
attachable = 1
|
||||
verb_say = "beeps"
|
||||
verb_ask = "beeps"
|
||||
verb_exclaim = "beeps"
|
||||
var/listening = 0
|
||||
var/recorded = "" //the activation message
|
||||
var/mode = 1
|
||||
var/static/list/modes = list("inclusive",
|
||||
"exclusive",
|
||||
"recognizer",
|
||||
"voice sensor")
|
||||
|
||||
/obj/item/device/assembly/voice/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Use a multitool to swap between \"inclusive\", \"exclusive\", \"recognizer\", and \"voice sensor\" mode.</span>")
|
||||
|
||||
/obj/item/device/assembly/voice/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode)
|
||||
if(speaker == src)
|
||||
return
|
||||
|
||||
if(listening && !radio_freq)
|
||||
record_speech(speaker, raw_message, message_language)
|
||||
else
|
||||
if(check_activation(speaker, raw_message))
|
||||
addtimer(CALLBACK(src, .proc/pulse, 0), 10)
|
||||
|
||||
/obj/item/device/assembly/voice/proc/record_speech(atom/movable/speaker, raw_message, datum/language/message_language)
|
||||
switch(mode)
|
||||
if(1)
|
||||
recorded = raw_message
|
||||
listening = 0
|
||||
say("Activation message is '[recorded]'.", message_language)
|
||||
if(2)
|
||||
recorded = raw_message
|
||||
listening = 0
|
||||
say("Activation message is '[recorded]'.", message_language)
|
||||
if(3)
|
||||
recorded = speaker.GetVoice()
|
||||
listening = 0
|
||||
say("Your voice pattern is saved.", message_language)
|
||||
if(4)
|
||||
if(length(raw_message))
|
||||
addtimer(CALLBACK(src, .proc/pulse, 0), 10)
|
||||
|
||||
/obj/item/device/assembly/voice/proc/check_activation(atom/movable/speaker, raw_message)
|
||||
. = 0
|
||||
switch(mode)
|
||||
if(1)
|
||||
if(findtext(raw_message, recorded))
|
||||
. = 1
|
||||
if(2)
|
||||
if(raw_message == recorded)
|
||||
. = 1
|
||||
if(3)
|
||||
if(speaker.GetVoice() == recorded)
|
||||
. = 1
|
||||
if(4)
|
||||
if(length(raw_message))
|
||||
. = 1
|
||||
|
||||
/obj/item/device/assembly/voice/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/device/multitool))
|
||||
mode %= modes.len
|
||||
mode++
|
||||
to_chat(user, "You set [src] into a [modes[mode]] mode.")
|
||||
listening = 0
|
||||
recorded = ""
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/device/assembly/voice/activate()
|
||||
if(secured)
|
||||
if(!holder)
|
||||
listening = !listening
|
||||
say("[listening ? "Now" : "No longer"] recording input.")
|
||||
|
||||
/obj/item/device/assembly/voice/attack_self(mob/user)
|
||||
if(!user)
|
||||
return 0
|
||||
activate()
|
||||
return 1
|
||||
|
||||
/obj/item/device/assembly/voice/toggle_secure()
|
||||
. = ..()
|
||||
listening = 0
|
||||
|
||||
@@ -80,8 +80,8 @@
|
||||
var/shorted = 0
|
||||
var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone
|
||||
|
||||
var/frequency = FREQ_ATMOS_CONTROL
|
||||
var/alarm_frequency = FREQ_ATMOS_ALARMS
|
||||
var/frequency = 1439
|
||||
var/alarm_frequency = 1437
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
var/list/TLV = list( // Breathable air.
|
||||
@@ -427,16 +427,21 @@
|
||||
/obj/machinery/airalarm/proc/set_frequency(new_frequency)
|
||||
SSradio.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = SSradio.add_object(src, frequency, RADIO_TO_AIRALARM)
|
||||
radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_TO_AIRALARM)
|
||||
|
||||
/obj/machinery/airalarm/proc/send_signal(target, list/command)//sends signal 'command' to 'target'. Returns 0 if no radio connection, 1 otherwise
|
||||
if(!radio_connection)
|
||||
return 0
|
||||
|
||||
var/datum/signal/signal = new(command)
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 1 //radio signal
|
||||
signal.source = src
|
||||
|
||||
signal.data = command
|
||||
signal.data["tag"] = target
|
||||
signal.data["sigtype"] = "command"
|
||||
radio_connection.post_signal(src, signal, RADIO_FROM_AIRALARM)
|
||||
|
||||
radio_connection.post_signal(src, signal, GLOB.RADIO_FROM_AIRALARM)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -627,10 +632,12 @@
|
||||
|
||||
var/area/A = get_area(src)
|
||||
|
||||
var/datum/signal/alert_signal = new(list(
|
||||
"zone" = A.name,
|
||||
"type" = "Atmospheric"
|
||||
))
|
||||
var/datum/signal/alert_signal = new
|
||||
alert_signal.source = src
|
||||
alert_signal.transmission_method = 1
|
||||
alert_signal.data["zone"] = A.name
|
||||
alert_signal.data["type"] = "Atmospheric"
|
||||
|
||||
if(alert_level==2)
|
||||
alert_signal.data["alert"] = "severe"
|
||||
else if (alert_level==1)
|
||||
@@ -638,7 +645,7 @@
|
||||
else if (alert_level==0)
|
||||
alert_signal.data["alert"] = "clear"
|
||||
|
||||
frequency.post_signal(src, alert_signal, range = -1)
|
||||
frequency.post_signal(src, alert_signal,null,-1)
|
||||
|
||||
/obj/machinery/airalarm/proc/apply_danger_level()
|
||||
var/area/A = get_area(src)
|
||||
@@ -735,7 +742,7 @@
|
||||
return
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/airalarm/AltClick(mob/user)
|
||||
..()
|
||||
if(!issilicon(user) && (!user.canUseTopic(src, be_close=TRUE) || !isturf(loc)))
|
||||
@@ -743,7 +750,7 @@
|
||||
return
|
||||
else
|
||||
togglelock(user)
|
||||
|
||||
|
||||
/obj/machinery/airalarm/proc/togglelock(mob/living/user)
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
to_chat(user, "<span class='warning'>It does nothing!</span>")
|
||||
|
||||
@@ -346,7 +346,10 @@ Pipelines + Other Objects -> Pipe network
|
||||
return list()
|
||||
|
||||
/obj/machinery/atmospherics/update_remote_sight(mob/user)
|
||||
user.sight |= (SEE_TURFS|BLIND)
|
||||
if(isborer(user))
|
||||
user.sight |= (SEE_PIXELS)
|
||||
else
|
||||
user.sight |= (SEE_TURFS|BLIND)
|
||||
|
||||
//Used for certain children of obj/machinery/atmospherics to not show pipe vision when mob is inside it.
|
||||
/obj/machinery/atmospherics/proc/can_see_pipes()
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
|
||||
var/global/const/CIRC_LEFT = 1
|
||||
var/global/const/CIRC_RIGHT = 2
|
||||
|
||||
@@ -40,8 +39,6 @@
|
||||
var/transfer_moles = pressure_delta*air1.volume/(air2.temperature * R_IDEAL_GAS_EQUATION)
|
||||
|
||||
last_pressure_delta = pressure_delta
|
||||
|
||||
//Actually transfer the gas
|
||||
var/datum/gas_mixture/removed = air2.remove(transfer_moles)
|
||||
|
||||
update_parents()
|
||||
|
||||
@@ -131,13 +131,17 @@ Acts like a normal vent, but has an input AND output.
|
||||
SSradio.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
if(frequency)
|
||||
radio_connection = SSradio.add_object(src, frequency, filter = RADIO_ATMOSIA)
|
||||
radio_connection = SSradio.add_object(src, frequency, filter = GLOB.RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/proc/broadcast_status()
|
||||
if(!radio_connection)
|
||||
return
|
||||
|
||||
var/datum/signal/signal = new(list(
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 1 //radio signal
|
||||
signal.source = src
|
||||
|
||||
signal.data = list(
|
||||
"tag" = id,
|
||||
"device" = "ADVP",
|
||||
"power" = on,
|
||||
@@ -147,8 +151,8 @@ Acts like a normal vent, but has an input AND output.
|
||||
"output" = output_pressure_max,
|
||||
"external" = external_pressure_bound,
|
||||
"sigtype" = "status"
|
||||
))
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
)
|
||||
radio_connection.post_signal(src, signal, filter = GLOB.RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/dp_vent_pump/atmosinit()
|
||||
..()
|
||||
|
||||
@@ -72,20 +72,25 @@ Passive gate is similar to the regular pump except:
|
||||
SSradio.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
if(frequency)
|
||||
radio_connection = SSradio.add_object(src, frequency, filter = RADIO_ATMOSIA)
|
||||
radio_connection = SSradio.add_object(src, frequency, filter = GLOB.RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/passive_gate/proc/broadcast_status()
|
||||
if(!radio_connection)
|
||||
return
|
||||
|
||||
var/datum/signal/signal = new(list(
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 1 //radio signal
|
||||
signal.source = src
|
||||
|
||||
signal.data = list(
|
||||
"tag" = id,
|
||||
"device" = "AGP",
|
||||
"power" = on,
|
||||
"target_output" = target_pressure,
|
||||
"sigtype" = "status"
|
||||
))
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
)
|
||||
|
||||
radio_connection.post_signal(src, signal, filter = GLOB.RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/passive_gate/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
|
||||
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
|
||||
|
||||
@@ -75,20 +75,25 @@ Thus, the two variables affect pump operation are set in New():
|
||||
SSradio.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
if(frequency)
|
||||
radio_connection = SSradio.add_object(src, frequency, filter = RADIO_ATMOSIA)
|
||||
radio_connection = SSradio.add_object(src, frequency, filter = GLOB.RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/proc/broadcast_status()
|
||||
if(!radio_connection)
|
||||
return
|
||||
|
||||
var/datum/signal/signal = new(list(
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 1 //radio signal
|
||||
signal.source = src
|
||||
|
||||
signal.data = list(
|
||||
"tag" = id,
|
||||
"device" = "AGP",
|
||||
"power" = on,
|
||||
"target_output" = target_pressure,
|
||||
"sigtype" = "status"
|
||||
))
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
)
|
||||
|
||||
radio_connection.post_signal(src, signal, filter = GLOB.RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
|
||||
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
SSradio.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
if(frequency)
|
||||
radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA)
|
||||
radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/atmospherics/components/trinary/filter/New()
|
||||
..()
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
radio = new(src)
|
||||
radio.keyslot = new radio_key
|
||||
radio.subspace_transmission = TRUE
|
||||
radio.subspace_transmission = 1
|
||||
radio.canhear_range = 0
|
||||
radio.recalculateChannels()
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
mob_occupant.Unconscious((mob_occupant.bodytemperature * unconscious_factor) * 2000)
|
||||
if(beaker)
|
||||
if(reagent_transfer == 0) // Magically transfer reagents. Because cryo magic.
|
||||
beaker.reagents.trans_to(occupant, 1, efficiency * 0.25) // Transfer reagents.
|
||||
beaker.reagents.trans_to(occupant, 1, 10 * efficiency) // Transfer reagents, multiplied because cryo magic.
|
||||
beaker.reagents.reaction(occupant, VAPOR)
|
||||
air1.gases[/datum/gas/oxygen][MOLES] -= 2 / efficiency //Let's use gas for this
|
||||
if(++reagent_transfer >= 10 * efficiency) // Throttle reagent transfer (higher efficiency will transfer the same amount but consume less from the beaker).
|
||||
@@ -348,6 +348,7 @@
|
||||
else
|
||||
data["occupant"]["temperaturestatus"] = "bad"
|
||||
|
||||
|
||||
var/datum/gas_mixture/air1 = AIR1
|
||||
data["cellTemperature"] = round(air1.temperature, 1)
|
||||
|
||||
|
||||
@@ -93,14 +93,19 @@
|
||||
if(!radio_connection)
|
||||
return
|
||||
|
||||
var/datum/signal/signal = new(list(
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 1 //radio signal
|
||||
signal.source = src
|
||||
|
||||
signal.data = list(
|
||||
"tag" = id,
|
||||
"device" = "AO",
|
||||
"power" = on,
|
||||
"volume_rate" = volume_rate,
|
||||
//"timestamp" = world.time,
|
||||
"sigtype" = "status"
|
||||
))
|
||||
)
|
||||
|
||||
radio_connection.post_signal(src, signal)
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/outlet_injector/atmosinit()
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
// INT_BOUND: Do not pass internal_pressure_bound
|
||||
// NO_BOUND: Do not pass either
|
||||
|
||||
var/frequency = FREQ_ATMOS_CONTROL
|
||||
var/frequency = 1439
|
||||
var/datum/radio_frequency/radio_connection
|
||||
var/radio_filter_out
|
||||
var/radio_filter_in
|
||||
@@ -178,7 +178,11 @@
|
||||
if(!radio_connection)
|
||||
return
|
||||
|
||||
var/datum/signal/signal = new(list(
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 1 // radio signal
|
||||
signal.source = src
|
||||
|
||||
signal.data = list(
|
||||
"tag" = id_tag,
|
||||
"frequency" = frequency,
|
||||
"device" = "VP",
|
||||
@@ -189,7 +193,7 @@
|
||||
"internal" = internal_pressure_bound,
|
||||
"external" = external_pressure_bound,
|
||||
"sigtype" = "status"
|
||||
))
|
||||
)
|
||||
|
||||
var/area/A = get_area(src)
|
||||
if(!A.air_vent_names[id_tag])
|
||||
@@ -202,8 +206,8 @@
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/atmosinit()
|
||||
//some vents work his own spesial way
|
||||
radio_filter_in = frequency==FREQ_ATMOS_CONTROL?(RADIO_FROM_AIRALARM):null
|
||||
radio_filter_out = frequency==FREQ_ATMOS_CONTROL?(RADIO_TO_AIRALARM):null
|
||||
radio_filter_in = frequency==1439?(GLOB.RADIO_FROM_AIRALARM):null
|
||||
radio_filter_out = frequency==1439?(GLOB.RADIO_TO_AIRALARM):null
|
||||
if(frequency)
|
||||
set_frequency(frequency)
|
||||
broadcast_status()
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
var/widenet = 0 //is this scrubber acting on the 3x3 area around it.
|
||||
var/list/turf/adjacent_turfs = list()
|
||||
|
||||
var/frequency = FREQ_ATMOS_CONTROL
|
||||
var/frequency = 1439
|
||||
var/datum/radio_frequency/radio_connection
|
||||
var/radio_filter_out
|
||||
var/radio_filter_in
|
||||
@@ -81,7 +81,7 @@
|
||||
icon_state = "scrub_off"
|
||||
return
|
||||
|
||||
if(scrubbing & SCRUBBING)
|
||||
if(scrubbing & SCRUBBING)
|
||||
if(widenet)
|
||||
icon_state = "scrub_wide"
|
||||
else
|
||||
@@ -98,12 +98,16 @@
|
||||
if(!radio_connection)
|
||||
return FALSE
|
||||
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 1 //radio signal
|
||||
signal.source = src
|
||||
|
||||
var/list/f_types = list()
|
||||
for(var/path in GLOB.meta_gas_info)
|
||||
var/list/gas = GLOB.meta_gas_info[path]
|
||||
f_types += list(list("gas_id" = gas[META_GAS_ID], "gas_name" = gas[META_GAS_NAME], "enabled" = (path in filter_types)))
|
||||
|
||||
var/datum/signal/signal = new(list(
|
||||
signal.data = list(
|
||||
"tag" = id_tag,
|
||||
"frequency" = frequency,
|
||||
"device" = "VS",
|
||||
@@ -113,7 +117,7 @@
|
||||
"widenet" = widenet,
|
||||
"filter_types" = f_types,
|
||||
"sigtype" = "status"
|
||||
))
|
||||
)
|
||||
|
||||
var/area/A = get_area(src)
|
||||
if(!A.air_scrub_names[id_tag])
|
||||
@@ -126,8 +130,8 @@
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/atmosinit()
|
||||
radio_filter_in = frequency==initial(frequency)?(RADIO_FROM_AIRALARM):null
|
||||
radio_filter_out = frequency==initial(frequency)?(RADIO_TO_AIRALARM):null
|
||||
radio_filter_in = frequency==initial(frequency)?(GLOB.RADIO_FROM_AIRALARM):null
|
||||
radio_filter_out = frequency==initial(frequency)?(GLOB.RADIO_TO_AIRALARM):null
|
||||
if(frequency)
|
||||
set_frequency(frequency)
|
||||
broadcast_status()
|
||||
@@ -201,7 +205,7 @@
|
||||
return TRUE
|
||||
|
||||
|
||||
//There is no easy way for an object to be notified of changes to atmos can pass flags
|
||||
//There is no easy way for an object to be notified of changes to atmos can pass flags_1
|
||||
// So we check every machinery process (2 seconds)
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/process()
|
||||
if(widenet)
|
||||
|
||||
@@ -77,12 +77,15 @@
|
||||
if(!radio_connection)
|
||||
return
|
||||
|
||||
var/datum/signal/signal = new(list(
|
||||
var/datum/signal/signal = new
|
||||
signal.source = src
|
||||
signal.transmission_method = 1
|
||||
signal.data = list(
|
||||
"id_tag" = id_tag,
|
||||
"device" = "AM",
|
||||
"pressure" = round(env_pressure),
|
||||
"sigtype" = "status"
|
||||
))
|
||||
)
|
||||
radio_connection.post_signal(src, signal)
|
||||
|
||||
/obj/machinery/meter/proc/status()
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
investigate_log("was set to [pump.target_pressure] kPa by [key_name(usr)].", INVESTIGATE_ATMOS)
|
||||
if("eject")
|
||||
if(holding)
|
||||
holding.forceMove(drop_location())
|
||||
holding.loc = get_turf(src)
|
||||
holding = null
|
||||
. = TRUE
|
||||
update_icon()
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
. = TRUE
|
||||
if("eject")
|
||||
if(holding)
|
||||
holding.forceMove(drop_location())
|
||||
holding.loc = get_turf(src)
|
||||
holding = null
|
||||
. = TRUE
|
||||
if("toggle_filter")
|
||||
|
||||
@@ -509,7 +509,7 @@
|
||||
/datum/outfit/ctf/red/post_equip(mob/living/carbon/human/H)
|
||||
..()
|
||||
var/obj/item/device/radio/R = H.ears
|
||||
R.set_frequency(FREQ_CTF_RED)
|
||||
R.set_frequency(GLOB.REDTEAM_FREQ)
|
||||
R.freqlock = TRUE
|
||||
R.independent = TRUE
|
||||
H.dna.species.stunmod = 0
|
||||
@@ -517,7 +517,7 @@
|
||||
/datum/outfit/ctf/blue/post_equip(mob/living/carbon/human/H)
|
||||
..()
|
||||
var/obj/item/device/radio/R = H.ears
|
||||
R.set_frequency(FREQ_CTF_BLUE)
|
||||
R.set_frequency(GLOB.BLUETEAM_FREQ)
|
||||
R.freqlock = TRUE
|
||||
R.independent = TRUE
|
||||
H.dna.species.stunmod = 0
|
||||
@@ -532,6 +532,7 @@
|
||||
var/team = WHITE_TEAM
|
||||
time_between_triggers = 1
|
||||
anchored = TRUE
|
||||
flags_2 = SLOWS_WHILE_IN_HAND_2
|
||||
alpha = 255
|
||||
|
||||
/obj/structure/trap/examine(mob/user)
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
var/brute_damage = 0
|
||||
var/oxy_damage = 0
|
||||
var/burn_damage = 0
|
||||
var/datum/disease/disease = null //Do they start with a pre-spawned disease?
|
||||
var/mob_color //Change the mob's color
|
||||
var/assignedrole
|
||||
var/show_flavour = TRUE
|
||||
@@ -71,8 +70,6 @@
|
||||
M.gender = mob_gender
|
||||
if(faction)
|
||||
M.faction = list(faction)
|
||||
if(disease)
|
||||
M.ForceContractDisease(new disease)
|
||||
if(death)
|
||||
M.death(1) //Kills the new mob
|
||||
|
||||
@@ -262,19 +259,6 @@
|
||||
|
||||
///////////Civilians//////////////////////
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/assistant
|
||||
name = "Assistant"
|
||||
outfit = /datum/outfit/job/assistant
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/assistant/beesease_infection
|
||||
disease = /datum/disease/beesease
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/assistant/brainrot_infection
|
||||
disease = /datum/disease/brainrot
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/assistant/spanishflu_infection
|
||||
disease = /datum/disease/fluspanish
|
||||
|
||||
/obj/effect/mob_spawn/human/cook
|
||||
name = "Cook"
|
||||
outfit = /datum/outfit/job/cook
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
|
||||
/obj/structure/closet/secure_closet/exile
|
||||
name = "exile implants"
|
||||
|
||||
/obj/structure/closet/secure_closet/exile
|
||||
name = "exile implants"
|
||||
req_access = list(ACCESS_HOS)
|
||||
|
||||
/obj/structure/closet/secure_closet/exile/New()
|
||||
..()
|
||||
new /obj/item/implanter/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/exile/New()
|
||||
..()
|
||||
new /obj/item/implanter/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
new /obj/item/implantcase/exile(src)
|
||||
@@ -139,7 +139,7 @@
|
||||
/obj/structure/academy_wizard_spawner/proc/summon_wizard()
|
||||
var/turf/T = src.loc
|
||||
var/mob/living/carbon/human/wizbody = new(T)
|
||||
wizbody.fully_replace_character_name(wizbody.real_name, "Academy Teacher")
|
||||
wizbody.fully_replace_character_name("Academy Teacher")
|
||||
wizbody.mind_initialize()
|
||||
var/datum/mind/wizmind = wizbody.mind
|
||||
wizmind.special_role = "Academy Defender"
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
/obj/item/paper/fluff/awaymissions/caves/work_notice
|
||||
name = "work notice"
|
||||
info = "<center><b>Survival Info For Miners</b></center><br><br><center>The caves are an unforgiving place, the only thing you'll have to traverse is the supplies in your locker and your own wit. Travel in packs when mining and try to shut down the monster dens before they overwhelm you. The job is dangerous but the haul is good, so remember this information and hopefully we'll all go home alive.</center>"
|
||||
info = "<center><b>Survival Info For Miners</b></center><br><br><center>The caves are an unforgiving place, the only thing you'll have to traverse is the supplies in your locker and your own wit. Travel in packs when mining and try to shut down the monster dens before they overwhelm you. The job is dangerous but the haul is good, so remember this infomation and hopefully we'll all go home alive.</center>"
|
||||
|
||||
/obj/item/paper/fluff/awaymissions/caves/shipment_notice
|
||||
name = "shipment notice"
|
||||
|
||||
@@ -60,4 +60,4 @@
|
||||
teams never did figure out what happened that last time... and I can't wrap my head \
|
||||
around it myself. Why would a shuttle full of evacuees all snap and beat each other \
|
||||
to death the moment they reached safety?<br>\
|
||||
- D. Cereza"
|
||||
- D. Cereza"
|
||||
|
||||
@@ -136,18 +136,41 @@ GLOBAL_VAR_INIT(sc_safecode5, "[rand(0,9)]")
|
||||
/*
|
||||
* Modified Nar-Sie
|
||||
*/
|
||||
/obj/singularity/narsie/mini
|
||||
/obj/singularity/narsie/sc_Narsie
|
||||
desc = "Your body becomes weak and your feel your mind slipping away as you try to comprehend what you know can't be possible."
|
||||
move_self = 0 //Contianed narsie does not move!
|
||||
grav_pull = 0 //Contained narsie does not pull stuff in!
|
||||
var/uneatable = list(/turf/open/space, /obj/effect/overlay, /mob/living/simple_animal/hostile/construct)
|
||||
//Override this to prevent no adminlog runtimes and admin warnings about a singularity without containment
|
||||
/obj/singularity/narsie/mini/admin_investigate_setup()
|
||||
/obj/singularity/narsie/sc_Narsie/admin_investigate_setup()
|
||||
return
|
||||
|
||||
/obj/singularity/narsie/mini/process()
|
||||
/obj/singularity/narsie/sc_Narsie/process()
|
||||
eat()
|
||||
if(prob(25))
|
||||
mezzer()
|
||||
|
||||
/obj/singularity/narsie/mini/ex_act()
|
||||
/obj/singularity/narsie/sc_Narsie/consume(atom/A)
|
||||
if(is_type_in_list(A, uneatable))
|
||||
return 0
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
L.gib()
|
||||
else if(istype(A, /obj/))
|
||||
var/obj/O = A
|
||||
O.ex_act(EXPLODE_DEVASTATE)
|
||||
if(O)
|
||||
qdel(O)
|
||||
else if(isturf(A))
|
||||
var/turf/T = A
|
||||
if(T.intact)
|
||||
for(var/obj/O in T.contents)
|
||||
if(O.level != 1)
|
||||
continue
|
||||
if(O.invisibility == INVISIBILITY_MAXIMUM)
|
||||
src.consume(O)
|
||||
T.ChangeTurf(/turf/open/space)
|
||||
return
|
||||
|
||||
/obj/singularity/narsie/sc_Narsie/ex_act()
|
||||
return
|
||||
@@ -115,11 +115,9 @@
|
||||
to_chat(user, "The Wish Granter punishes you for your wickedness, claiming your soul and warping your body to match the darkness in your heart.")
|
||||
SSticker.mode.traitors += user.mind
|
||||
user.mind.special_role = "traitor"
|
||||
|
||||
var/datum/objective/hijack/hijack = new
|
||||
hijack.owner = user.mind
|
||||
user.mind.objectives += hijack
|
||||
user.mind.add_antag_datum(/datum/antagonist/auto_custom)
|
||||
to_chat(user, "<B>Your inhibitions are swept away, the bonds of loyalty broken, you are free to murder as you please!</B>")
|
||||
user.mind.announce_objectives()
|
||||
user.set_species(/datum/species/shadow)
|
||||
|
||||
@@ -1,39 +1,39 @@
|
||||
/obj/item/paper/pamphlet
|
||||
name = "pamphlet"
|
||||
icon_state = "pamphlet"
|
||||
/obj/item/paper/pamphlet
|
||||
name = "pamphlet"
|
||||
icon_state = "pamphlet"
|
||||
|
||||
/obj/item/paper/pamphlet/gateway
|
||||
info = "<b>Welcome to the Nanotrasen Gateway project...</b><br>\
|
||||
Congratulations! If you're reading this, you and your superiors have decided that you're \
|
||||
ready to commit to a life spent colonising the rolling hills of far away worlds. You \
|
||||
must be ready for a lifetime of adventure, a little bit of hard work, and an award \
|
||||
winning dental plan- but that's not all the Nanotrasen Gateway project has to offer.<br>\
|
||||
<br>Because we care about you, we feel it is only fair to make sure you know the risks \
|
||||
before you commit to joining the Nanotrasen Gateway project. All away destinations have \
|
||||
been fully scanned by a Nanotrasen expeditionary team, and are certified to be 100% safe. \
|
||||
We've even left a case of space beer along with the basic materials you'll need to expand \
|
||||
Nanotrasen's operational area and start your new life.<br><br>\
|
||||
<b>Gateway Operation Basics</b><br>\
|
||||
All Nanotrasen approved Gateways operate on the same basic principals. They operate off \
|
||||
area equipment power as you would expect, and without this supply, it cannot safely function, \
|
||||
causinng it to reject all attempts at operation.<br><br>\
|
||||
Once it is correctly setup, and once it has enough power to operate, the Gateway will begin \
|
||||
searching for an output location. The amount of time this takes is variable, but the Gateway \
|
||||
interface will give you an estimate accurate to the minute. Power loss will not interrupt the \
|
||||
searching process. Influenza will not interrupt the searching process. Temporal anomalies \
|
||||
may cause the estimate to be inaccurate, but will not interrupt the searching process.<br><br> \
|
||||
<b>Life On The Other Side</b><br>\
|
||||
Once you have traversed the Gateway, you may experience some disorientation. Do not panic. \
|
||||
This is a normal side effect of travelling vast distances in a short period of time. You should \
|
||||
survey the immediate area, and attempt to locate your complimentary case of space beer. Our \
|
||||
expeditionary teams have ensured the complete safety of all away locations, but in a small \
|
||||
number of cases, the Gateway they have established may not be immediately obvious. \
|
||||
Do not panic if you cannot locate the return Gateway. Begin colonisation of the destination. \
|
||||
<br><br><b>A New World</b><br>\
|
||||
As a participant in the Nanotrasen Gateway Project, you will be on the frontiers of space. \
|
||||
Though complete safety is assured, participants are advised to prepare for inhospitable \
|
||||
environs."
|
||||
|
||||
//we don't want the silly text overlay!
|
||||
/obj/item/paper/pamphlet/update_icon()
|
||||
return
|
||||
info = "<b>Welcome to the Nanotrasen Gateway project...</b><br>\
|
||||
Congratulations! If you're reading this, you and your superiors have decided that you're \
|
||||
ready to commit to a life spent colonising the rolling hills of far away worlds. You \
|
||||
must be ready for a lifetime of adventure, a little bit of hard work, and an award \
|
||||
winning dental plan- but that's not all the Nanotrasen Gateway project has to offer.<br>\
|
||||
<br>Because we care about you, we feel it is only fair to make sure you know the risks \
|
||||
before you commit to joining the Nanotrasen Gateway project. All away destinations have \
|
||||
been fully scanned by a Nanotrasen expeditionary team, and are certified to be 100% safe. \
|
||||
We've even left a case of space beer along with the basic materials you'll need to expand \
|
||||
Nanotrasen's operational area and start your new life.<br><br>\
|
||||
<b>Gateway Operation Basics</b><br>\
|
||||
All Nanotrasen approved Gateways operate on the same basic principals. They operate off \
|
||||
area equipment power as you would expect, and without this supply, it cannot safely function, \
|
||||
causinng it to reject all attempts at operation.<br><br>\
|
||||
Once it is correctly setup, and once it has enough power to operate, the Gateway will begin \
|
||||
searching for an output location. The amount of time this takes is variable, but the Gateway \
|
||||
interface will give you an estimate accurate to the minute. Power loss will not interrupt the \
|
||||
searching process. Influenza will not interrupt the searching process. Temporal anomalies \
|
||||
may cause the estimate to be inaccurate, but will not interrupt the searching process.<br><br> \
|
||||
<b>Life On The Other Side</b><br>\
|
||||
Once you have traversed the Gateway, you may experience some disorientation. Do not panic. \
|
||||
This is a normal side effect of travelling vast distances in a short period of time. You should \
|
||||
survey the immediate area, and attempt to locate your complimentary case of space beer. Our \
|
||||
expeditionary teams have ensured the complete safety of all away locations, but in a small \
|
||||
number of cases, the Gateway they have established may not be immediately obvious. \
|
||||
Do not panic if you cannot locate the return Gateway. Begin colonisation of the destination. \
|
||||
<br><br><b>A New World</b><br>\
|
||||
As a participant in the Nanotrasen Gateway Project, you will be on the frontiers of space. \
|
||||
Though complete safety is assured, participants are advised to prepare for inhospitable \
|
||||
environs."
|
||||
|
||||
//we don't want the silly text overlay!
|
||||
/obj/item/paper/pamphlet/update_icon()
|
||||
return
|
||||
|
||||
@@ -124,4 +124,4 @@
|
||||
..()
|
||||
|
||||
/obj/effect/landmark/error
|
||||
name = "error"
|
||||
name = "error"
|
||||
@@ -201,10 +201,14 @@
|
||||
|
||||
/obj/machinery/computer/cargo/proc/post_signal(command)
|
||||
|
||||
var/datum/radio_frequency/frequency = SSradio.return_frequency(FREQ_STATUS_DISPLAYS)
|
||||
var/datum/radio_frequency/frequency = SSradio.return_frequency(1435)
|
||||
|
||||
if(!frequency)
|
||||
return
|
||||
|
||||
var/datum/signal/status_signal = new(list("command" = command))
|
||||
var/datum/signal/status_signal = new
|
||||
status_signal.source = src
|
||||
status_signal.transmission_method = 1
|
||||
status_signal.data["command"] = command
|
||||
|
||||
frequency.post_signal(src, status_signal)
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
if(sold_nodes[V]) //Already sold before, don't want it.
|
||||
continue
|
||||
var/datum/techweb_node/TWN = D.stored_research.researched_nodes[V]
|
||||
cost += TWN.export_price
|
||||
return cost
|
||||
cost += TWN
|
||||
return ..() * cost
|
||||
|
||||
/datum/export/tech/sell_object(obj/O)
|
||||
..()
|
||||
|
||||
@@ -324,9 +324,6 @@ GLOBAL_LIST_EMPTY(asset_datums)
|
||||
"chevron.png" = 'html/chevron.png',
|
||||
"chevron-expand.png" = 'html/chevron-expand.png',
|
||||
"scales.png" = 'html/scales.png',
|
||||
"coding.png" = 'html/coding.png',
|
||||
"ban.png" = 'html/ban.png',
|
||||
"chrome-wrench.png" = 'html/chrome-wrench.png',
|
||||
"changelog.css" = 'html/changelog.css'
|
||||
)
|
||||
|
||||
|
||||
@@ -68,6 +68,3 @@
|
||||
|
||||
var/datum/chatOutput/chatOutput
|
||||
|
||||
var/list/credits //lazy list of all credit object bound to this client
|
||||
|
||||
var/datum/player_details/player_details //these persist between logins/logouts during the same round.
|
||||
@@ -76,7 +76,6 @@
|
||||
//Logs all hrefs, except chat pings
|
||||
if(!(href_list["_src_"] == "chat" && href_list["proc"] == "ping" && LAZYLEN(href_list) == 2))
|
||||
WRITE_FILE(GLOB.world_href_log, "<small>[time_stamp(show_ds = TRUE)] [src] (usr:[usr])</small> || [hsrc ? "[hsrc] " : ""][href]<br>")
|
||||
|
||||
// Admin PM
|
||||
if(href_list["priv_msg"])
|
||||
cmd_admin_pm(href_list["priv_msg"],null)
|
||||
@@ -196,10 +195,13 @@ GLOBAL_LIST(external_rsc_urls)
|
||||
if(!prefs)
|
||||
prefs = new /datum/preferences(src)
|
||||
GLOB.preferences_datums[ckey] = prefs
|
||||
else
|
||||
prefs.parent = src
|
||||
prefs.last_ip = address //these are gonna be used for banning
|
||||
prefs.last_id = computer_id //these are gonna be used for banning
|
||||
if(world.byond_version >= 511 && byond_version >= 511 && prefs.clientfps)
|
||||
vars["fps"] = prefs.clientfps
|
||||
sethotkeys(1) //set hoykeys from preferences (from_pref = 1)
|
||||
|
||||
log_access("Login: [key_name(src)] from [address ? address : "localhost"]-[computer_id] || BYOND v[byond_version]")
|
||||
var/alert_mob_dupe_login = FALSE
|
||||
@@ -225,17 +227,8 @@ GLOBAL_LIST(external_rsc_urls)
|
||||
message_admins("<font color='red'><B>Notice: </B><font color='blue'>[key_name_admin(src)] has the same [matches] as [key_name_admin(C)] (no longer logged in). </font>")
|
||||
log_access("Notice: [key_name(src)] has the same [matches] as [key_name(C)] (no longer logged in).")
|
||||
|
||||
if(GLOB.player_details[ckey])
|
||||
player_details = GLOB.player_details[ckey]
|
||||
else
|
||||
player_details = new
|
||||
GLOB.player_details[ckey] = player_details
|
||||
|
||||
|
||||
. = ..() //calls mob.Login()
|
||||
|
||||
set_macros()
|
||||
|
||||
chatOutput.start() // Starts the chat
|
||||
|
||||
if(alert_mob_dupe_login)
|
||||
@@ -371,8 +364,6 @@ GLOBAL_LIST(external_rsc_urls)
|
||||
//////////////
|
||||
|
||||
/client/Del()
|
||||
if(credits)
|
||||
QDEL_LIST(credits)
|
||||
log_access("Logout: [key_name(src)]")
|
||||
if(holder)
|
||||
adminGreet(1)
|
||||
@@ -381,18 +372,30 @@ GLOBAL_LIST(external_rsc_urls)
|
||||
if (!GLOB.admins.len && SSticker.IsRoundInProgress()) //Only report this stuff if we are currently playing.
|
||||
var/cheesy_message = pick(
|
||||
"I have no admins online!",\
|
||||
"I'm all alone :(",\
|
||||
"I'm feeling lonely :(",\
|
||||
"I'm so lonely :(",\
|
||||
"I'm all alone... :(",\
|
||||
"I'm feeling lonely. :(",\
|
||||
"I'm so lonely. :(",\
|
||||
"Why does nobody love me? :(",\
|
||||
"I want a man :(",\
|
||||
"I want a man. :(",\
|
||||
"Where has everyone gone?",\
|
||||
"I need a hug :(",\
|
||||
"Someone come hold me :(",\
|
||||
"I need a hug. :(",\
|
||||
"Someone come hold me. :(",\
|
||||
"I need someone on me :(",\
|
||||
"What happened? Where has everyone gone?",\
|
||||
"Forever alone :("\
|
||||
)
|
||||
"My nipples are so stiff, but Zelda ain't here. :(",\
|
||||
"Leon senpai, play more Spessmans. :(",\
|
||||
"If only Serdy were here...",\
|
||||
"Panic bunker can't keep my love for you out.",\
|
||||
"Cebu needs to Awoo herself back into my heart.",\
|
||||
"I don't even have a Turry to snuggle viciously here.",\
|
||||
"MOM, WHERE ARE YOU??? D:",\
|
||||
"It's a beautiful day outside. Birds are singing, flowers are blooming. On days like this...kids like you...SHOULD BE BURNING IN HELL.",\
|
||||
"Sometimes when I have sex, I think about putting an entire peanut butter and jelly sandwich in the VCR.",\
|
||||
"Oh good, no-one around to watch me lick Goofball's nipples. :D",\
|
||||
"I've replaced Beepsky with a fidget spinner, glory be autism abuse.",\
|
||||
"i shure hop dere are no PRED arund!!!!",\
|
||||
"NO PRED CAN eVER CATCH MI"\
|
||||
)
|
||||
|
||||
send2irc("Server", "[cheesy_message] (No admins online)")
|
||||
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
/datum/player_details
|
||||
var/list/player_actions = list()
|
||||
@@ -30,7 +30,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox, toggle_ghost_ears)(
|
||||
usr.client.prefs.chat_toggles ^= CHAT_GHOSTEARS
|
||||
to_chat(usr, "As a ghost, you will now [(usr.client.prefs.chat_toggles & CHAT_GHOSTEARS) ? "see all speech in the world" : "only see speech from nearby mobs"].")
|
||||
usr.client.prefs.save_preferences()
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Ears", "[usr.client.prefs.chat_toggles & CHAT_GHOSTEARS ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Ears", "[usr.client.prefs.chat_toggles & CHAT_GHOSTEARS]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
/datum/verbs/menu/Settings/Ghost/chatterbox/toggle_ghost_ears/Get_checked(client/C)
|
||||
return C.prefs.chat_toggles & CHAT_GHOSTEARS
|
||||
|
||||
@@ -41,7 +41,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox, toggle_ghost_sight)
|
||||
usr.client.prefs.chat_toggles ^= CHAT_GHOSTSIGHT
|
||||
to_chat(usr, "As a ghost, you will now [(usr.client.prefs.chat_toggles & CHAT_GHOSTSIGHT) ? "see all emotes in the world" : "only see emotes from nearby mobs"].")
|
||||
usr.client.prefs.save_preferences()
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Sight", "[usr.client.prefs.chat_toggles & CHAT_GHOSTSIGHT ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Sight", "[usr.client.prefs.chat_toggles & CHAT_GHOSTSIGHT]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
/datum/verbs/menu/Settings/Ghost/chatterbox/toggle_ghost_sight/Get_checked(client/C)
|
||||
return C.prefs.chat_toggles & CHAT_GHOSTSIGHT
|
||||
|
||||
@@ -52,7 +52,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox, toggle_ghost_whispe
|
||||
usr.client.prefs.chat_toggles ^= CHAT_GHOSTWHISPER
|
||||
to_chat(usr, "As a ghost, you will now [(usr.client.prefs.chat_toggles & CHAT_GHOSTWHISPER) ? "see all whispers in the world" : "only see whispers from nearby mobs"].")
|
||||
usr.client.prefs.save_preferences()
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Whispers", "[usr.client.prefs.chat_toggles & CHAT_GHOSTWHISPER ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Whispers", "[usr.client.prefs.chat_toggles & CHAT_GHOSTWHISPER]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
/datum/verbs/menu/Settings/Ghost/chatterbox/toggle_ghost_whispers/Get_checked(client/C)
|
||||
return C.prefs.chat_toggles & CHAT_GHOSTWHISPER
|
||||
|
||||
@@ -63,7 +63,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox, toggle_ghost_radio)
|
||||
usr.client.prefs.chat_toggles ^= CHAT_GHOSTRADIO
|
||||
to_chat(usr, "As a ghost, you will now [(usr.client.prefs.chat_toggles & CHAT_GHOSTRADIO) ? "see radio chatter" : "not see radio chatter"].")
|
||||
usr.client.prefs.save_preferences()
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Radio", "[usr.client.prefs.chat_toggles & CHAT_GHOSTRADIO ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! //social experiment, increase the generation whenever you copypaste this shamelessly GENERATION 1
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Radio", "[usr.client.prefs.chat_toggles & CHAT_GHOSTRADIO]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! //social experiment, increase the generation whenever you copypaste this shamelessly GENERATION 1
|
||||
/datum/verbs/menu/Settings/Ghost/chatterbox/toggle_ghost_radio/Get_checked(client/C)
|
||||
return C.prefs.chat_toggles & CHAT_GHOSTRADIO
|
||||
|
||||
@@ -74,7 +74,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox, toggle_ghost_pda)()
|
||||
usr.client.prefs.chat_toggles ^= CHAT_GHOSTPDA
|
||||
to_chat(usr, "As a ghost, you will now [(usr.client.prefs.chat_toggles & CHAT_GHOSTPDA) ? "see all pda messages in the world" : "only see pda messages from nearby mobs"].")
|
||||
usr.client.prefs.save_preferences()
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost PDA", "[usr.client.prefs.chat_toggles & CHAT_GHOSTPDA ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost PDA", "[usr.client.prefs.chat_toggles & CHAT_GHOSTPDA]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
/datum/verbs/menu/Settings/Ghost/chatterbox/toggle_ghost_pda/Get_checked(client/C)
|
||||
return C.prefs.chat_toggles & CHAT_GHOSTPDA
|
||||
|
||||
@@ -89,7 +89,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox/Events, toggle_death
|
||||
usr.client.prefs.toggles ^= DISABLE_DEATHRATTLE
|
||||
usr.client.prefs.save_preferences()
|
||||
to_chat(usr, "You will [(usr.client.prefs.toggles & DISABLE_DEATHRATTLE) ? "no longer" : "now"] get messages when a sentient mob dies.")
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Deathrattle", "[!(usr.client.prefs.toggles & DISABLE_DEATHRATTLE) ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, maybe you should spend some time reading the comments.
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Deathrattle", "[!(usr.client.prefs.toggles & DISABLE_DEATHRATTLE)]")) //If you are copy-pasting this, maybe you should spend some time reading the comments.
|
||||
/datum/verbs/menu/Settings/Ghost/chatterbox/Events/toggle_deathrattle/Get_checked(client/C)
|
||||
return !(C.prefs.toggles & DISABLE_DEATHRATTLE)
|
||||
|
||||
@@ -100,7 +100,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost/chatterbox/Events, toggle_arriv
|
||||
usr.client.prefs.toggles ^= DISABLE_ARRIVALRATTLE
|
||||
to_chat(usr, "You will [(usr.client.prefs.toggles & DISABLE_ARRIVALRATTLE) ? "no longer" : "now"] get messages when someone joins the station.")
|
||||
usr.client.prefs.save_preferences()
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Arrivalrattle", "[!(usr.client.prefs.toggles & DISABLE_ARRIVALRATTLE) ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, maybe you should rethink where your life went so wrong.
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Arrivalrattle", "[!(usr.client.prefs.toggles & DISABLE_ARRIVALRATTLE)]")) //If you are copy-pasting this, maybe you should rethink where your life went so wrong.
|
||||
/datum/verbs/menu/Settings/Ghost/chatterbox/Events/toggle_arrivalrattle/Get_checked(client/C)
|
||||
return !(C.prefs.toggles & DISABLE_ARRIVALRATTLE)
|
||||
|
||||
@@ -111,7 +111,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Ghost, togglemidroundantag)()
|
||||
usr.client.prefs.toggles ^= MIDROUND_ANTAG
|
||||
usr.client.prefs.save_preferences()
|
||||
to_chat(usr, "You will [(usr.client.prefs.toggles & MIDROUND_ANTAG) ? "now" : "no longer"] be considered for midround antagonist positions.")
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Midround Antag", "[usr.client.prefs.toggles & MIDROUND_ANTAG ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Midround Antag", "[usr.client.prefs.toggles & MIDROUND_ANTAG]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
/datum/verbs/menu/Settings/Ghost/togglemidroundantag/Get_checked(client/C)
|
||||
return C.prefs.toggles & MIDROUND_ANTAG
|
||||
|
||||
@@ -128,7 +128,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggletitlemusic)()
|
||||
else
|
||||
to_chat(usr, "You will no longer hear music in the game lobby.")
|
||||
usr.stop_sound_channel(CHANNEL_LOBBYMUSIC)
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Lobby Music", "[usr.client.prefs.toggles & SOUND_LOBBY ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Lobby Music", "[usr.client.prefs.toggles & SOUND_LOBBY]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
/datum/verbs/menu/Settings/Sound/toggletitlemusic/Get_checked(client/C)
|
||||
return C.prefs.toggles & SOUND_LOBBY
|
||||
|
||||
@@ -147,7 +147,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, togglemidis)()
|
||||
var/client/C = usr.client
|
||||
if(C && C.chatOutput && !C.chatOutput.broken && C.chatOutput.loaded)
|
||||
C.chatOutput.sendMusic(" ")
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Hearing Midis", "[usr.client.prefs.toggles & SOUND_MIDI ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Hearing Midis", "[usr.client.prefs.toggles & SOUND_MIDI]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
/datum/verbs/menu/Settings/Sound/togglemidis/Get_checked(client/C)
|
||||
return C.prefs.toggles & SOUND_MIDI
|
||||
|
||||
@@ -162,7 +162,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggle_instruments)()
|
||||
to_chat(usr, "You will now hear people playing musical instruments.")
|
||||
else
|
||||
to_chat(usr, "You will no longer hear musical instruments.")
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Instruments", "[usr.client.prefs.toggles & SOUND_INSTRUMENTS ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Instruments", "[usr.client.prefs.toggles & SOUND_INSTRUMENTS]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
/datum/verbs/menu/Settings/Sound/toggle_instruments/Get_checked(client/C)
|
||||
return C.prefs.toggles & SOUND_INSTRUMENTS
|
||||
|
||||
@@ -179,7 +179,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, Toggle_Soundscape)()
|
||||
to_chat(usr, "You will no longer hear ambient sounds.")
|
||||
usr.stop_sound_channel(CHANNEL_AMBIENCE)
|
||||
usr.stop_sound_channel(CHANNEL_BUZZ)
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ambience", "[usr.client.prefs.toggles & SOUND_AMBIENCE ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ambience", "[usr.client.prefs.toggles & SOUND_AMBIENCE]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
/datum/verbs/menu/Settings/Sound/Toggle_Soundscape/Get_checked(client/C)
|
||||
return C.prefs.toggles & SOUND_AMBIENCE
|
||||
|
||||
@@ -196,7 +196,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggle_ship_ambience)()
|
||||
to_chat(usr, "You will no longer hear ship ambience.")
|
||||
usr.stop_sound_channel(CHANNEL_BUZZ)
|
||||
usr.client.ambience_playing = 0
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ship Ambience", "[usr.client.prefs.toggles & SOUND_SHIP_AMBIENCE ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, I bet you read this comment expecting to see the same thing :^)
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ship Ambience", "[usr.client.prefs.toggles & SOUND_SHIP_AMBIENCE]")) //If you are copy-pasting this, I bet you read this comment expecting to see the same thing :^)
|
||||
/datum/verbs/menu/Settings/Sound/toggle_ship_ambience/Get_checked(client/C)
|
||||
return C.prefs.toggles & SOUND_SHIP_AMBIENCE
|
||||
|
||||
@@ -208,7 +208,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggle_announcement_sound)()
|
||||
usr.client.prefs.toggles ^= SOUND_ANNOUNCEMENTS
|
||||
to_chat(usr, "You will now [(usr.client.prefs.toggles & SOUND_ANNOUNCEMENTS) ? "hear announcement sounds" : "no longer hear announcements"].")
|
||||
usr.client.prefs.save_preferences()
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Announcement Sound", "[usr.client.prefs.toggles & SOUND_ANNOUNCEMENTS ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Announcement Sound", "[usr.client.prefs.toggles & SOUND_ANNOUNCEMENTS]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
/datum/verbs/menu/Settings/Sound/toggle_announcement_sound/Get_checked(client/C)
|
||||
return C.prefs.toggles & SOUND_ANNOUNCEMENTS
|
||||
|
||||
@@ -223,7 +223,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggleprayersounds)()
|
||||
to_chat(usr, "You will now hear prayer sounds.")
|
||||
else
|
||||
to_chat(usr, "You will no longer prayer sounds.")
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Prayer Sounds", "[usr.client.prefs.toggles & SOUND_PRAYERS ? "Enabled" : "Disabled"]"))
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Prayer Sounds", "[usr.client.prefs.toggles & SOUND_PRAYERS]"))
|
||||
/datum/verbs/menu/Settings/Sound/toggleprayersounds/Get_checked(client/C)
|
||||
return C.prefs.toggles & SOUND_PRAYERS
|
||||
|
||||
@@ -246,7 +246,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings, listen_ooc)()
|
||||
usr.client.prefs.chat_toggles ^= CHAT_OOC
|
||||
usr.client.prefs.save_preferences()
|
||||
to_chat(usr, "You will [(usr.client.prefs.chat_toggles & CHAT_OOC) ? "now" : "no longer"] see messages on the OOC channel.")
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Seeing OOC", "[usr.client.prefs.chat_toggles & CHAT_OOC ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Seeing OOC", "[usr.client.prefs.chat_toggles & CHAT_OOC]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
/datum/verbs/menu/Settings/listen_ooc/Get_checked(client/C)
|
||||
return C.prefs.chat_toggles & CHAT_OOC
|
||||
|
||||
@@ -337,7 +337,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS
|
||||
prefs.toggles ^= INTENT_STYLE
|
||||
to_chat(src, "[(prefs.toggles & INTENT_STYLE) ? "Clicking directly on intents selects them." : "Clicking on intents rotates selection clockwise."]")
|
||||
prefs.save_preferences()
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Intent Selection", "[prefs.toggles & INTENT_STYLE ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Intent Selection", "[prefs.toggles & INTENT_STYLE]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/verb/toggle_ghost_hud_pref()
|
||||
set name = "Toggle Ghost HUD"
|
||||
@@ -349,7 +349,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS
|
||||
prefs.save_preferences()
|
||||
if(isobserver(mob))
|
||||
mob.hud_used.show_hud()
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost HUD", "[prefs.ghost_hud ? "Enabled" : "Disabled"]"))
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost HUD", "[prefs.ghost_hud]"))
|
||||
|
||||
/client/verb/toggle_inquisition() // warning: unexpected inquisition
|
||||
set name = "Toggle Inquisitiveness"
|
||||
@@ -362,7 +362,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS
|
||||
to_chat(src, "<span class='notice'>You will now examine everything you click on.</span>")
|
||||
else
|
||||
to_chat(src, "<span class='notice'>You will no longer examine things you click on.</span>")
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Inquisitiveness", "[prefs.inquisitive_ghost ? "Enabled" : "Disabled"]"))
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Ghost Inquisitiveness", "[prefs.inquisitive_ghost]"))
|
||||
|
||||
//Admin Preferences
|
||||
/client/proc/toggleadminhelpsound()
|
||||
@@ -374,7 +374,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS
|
||||
prefs.toggles ^= SOUND_ADMINHELP
|
||||
prefs.save_preferences()
|
||||
to_chat(usr, "You will [(prefs.toggles & SOUND_ADMINHELP) ? "now" : "no longer"] hear a sound when adminhelps arrive.")
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Adminhelp Sound", "[prefs.toggles & SOUND_ADMINHELP ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Adminhelp Sound", "[prefs.toggles & SOUND_ADMINHELP]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/toggleannouncelogin()
|
||||
set name = "Do/Don't Announce Login"
|
||||
@@ -385,7 +385,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS
|
||||
prefs.toggles ^= ANNOUNCE_LOGIN
|
||||
prefs.save_preferences()
|
||||
to_chat(usr, "You will [(prefs.toggles & ANNOUNCE_LOGIN) ? "now" : "no longer"] have an announcement to other admins when you login.")
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Login Announcement", "[prefs.toggles & ANNOUNCE_LOGIN ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Login Announcement", "[prefs.toggles & ANNOUNCE_LOGIN]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/toggle_hear_radio()
|
||||
set name = "Show/Hide Radio Chatter"
|
||||
@@ -396,7 +396,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS
|
||||
prefs.chat_toggles ^= CHAT_RADIO
|
||||
prefs.save_preferences()
|
||||
to_chat(usr, "You will [(prefs.chat_toggles & CHAT_RADIO) ? "now" : "no longer"] see radio chatter from nearby radios or speakers")
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Radio Chatter", "[prefs.chat_toggles & CHAT_RADIO ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Radio Chatter", "[prefs.chat_toggles & CHAT_RADIO]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/deadchat()
|
||||
set name = "Show/Hide Deadchat"
|
||||
@@ -405,7 +405,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS
|
||||
prefs.chat_toggles ^= CHAT_DEAD
|
||||
prefs.save_preferences()
|
||||
to_chat(src, "You will [(prefs.chat_toggles & CHAT_DEAD) ? "now" : "no longer"] see deadchat.")
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Deadchat Visibility", "[prefs.chat_toggles & CHAT_DEAD ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Deadchat Visibility", "[prefs.chat_toggles & CHAT_DEAD]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/toggleprayers()
|
||||
set name = "Show/Hide Prayers"
|
||||
@@ -414,4 +414,4 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS
|
||||
prefs.chat_toggles ^= CHAT_PRAYER
|
||||
prefs.save_preferences()
|
||||
to_chat(src, "You will [(prefs.chat_toggles & CHAT_PRAYER) ? "now" : "no longer"] see prayerchat.")
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Prayer Visibility", "[prefs.chat_toggles & CHAT_PRAYER ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Prayer Visibility", "[prefs.chat_toggles & CHAT_PRAYER]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -170,30 +170,30 @@
|
||||
var/obj/item/I = target
|
||||
var/mob/living/M = owner
|
||||
|
||||
var/flags = I.slot_flags
|
||||
if(flags & SLOT_OCLOTHING)
|
||||
var/flags_1 = I.slot_flags
|
||||
if(flags_1 & SLOT_OCLOTHING)
|
||||
M.update_inv_wear_suit()
|
||||
if(flags & SLOT_ICLOTHING)
|
||||
if(flags_1 & SLOT_ICLOTHING)
|
||||
M.update_inv_w_uniform()
|
||||
if(flags & SLOT_GLOVES)
|
||||
if(flags_1 & SLOT_GLOVES)
|
||||
M.update_inv_gloves()
|
||||
if(flags & SLOT_EYES)
|
||||
if(flags_1 & SLOT_EYES)
|
||||
M.update_inv_glasses()
|
||||
if(flags & SLOT_EARS)
|
||||
if(flags_1 & SLOT_EARS)
|
||||
M.update_inv_ears()
|
||||
if(flags & SLOT_MASK)
|
||||
if(flags_1 & SLOT_MASK)
|
||||
M.update_inv_wear_mask()
|
||||
if(flags & SLOT_HEAD)
|
||||
if(flags_1 & SLOT_HEAD)
|
||||
M.update_inv_head()
|
||||
if(flags & SLOT_FEET)
|
||||
if(flags_1 & SLOT_FEET)
|
||||
M.update_inv_shoes()
|
||||
if(flags & SLOT_ID)
|
||||
if(flags_1 & SLOT_ID)
|
||||
M.update_inv_wear_id()
|
||||
if(flags & SLOT_BELT)
|
||||
if(flags_1 & SLOT_BELT)
|
||||
M.update_inv_belt()
|
||||
if(flags & SLOT_BACK)
|
||||
if(flags_1 & SLOT_BACK)
|
||||
M.update_inv_back()
|
||||
if(flags & SLOT_NECK)
|
||||
if(flags_1 & SLOT_NECK)
|
||||
M.update_inv_neck()
|
||||
|
||||
/obj/item/clothing/under/chameleon
|
||||
|
||||
@@ -1,46 +1,45 @@
|
||||
|
||||
//Ears: currently only used for headsets and earmuffs
|
||||
/obj/item/clothing/ears
|
||||
name = "ears"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
throwforce = 0
|
||||
slot_flags = SLOT_EARS
|
||||
resistance_flags = NONE
|
||||
|
||||
/obj/item/clothing/ears/earmuffs
|
||||
name = "earmuffs"
|
||||
desc = "Protects your hearing from loud noises, and quiet ones as well."
|
||||
icon_state = "earmuffs"
|
||||
item_state = "earmuffs"
|
||||
strip_delay = 15
|
||||
equip_delay_other = 25
|
||||
resistance_flags = FLAMMABLE
|
||||
flags_2 = BANG_PROTECT_2|HEALS_EARS_2
|
||||
|
||||
/obj/item/clothing/ears/headphones
|
||||
name = "headphones"
|
||||
desc = "Unce unce unce unce. Boop!"
|
||||
icon = 'icons/obj/clothing/accessories.dmi'
|
||||
icon_state = "headphones"
|
||||
item_state = "headphones"
|
||||
slot_flags = SLOT_EARS | SLOT_HEAD | SLOT_NECK //Fluff item, put it whereever you want!
|
||||
actions_types = list(/datum/action/item_action/toggle_headphones)
|
||||
var/headphones_on = FALSE
|
||||
|
||||
/obj/item/clothing/ears/headphones/Initialize()
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/clothing/ears/headphones/update_icon()
|
||||
icon_state = "[initial(icon_state)]_[headphones_on? "on" : "off"]"
|
||||
item_state = "[initial(item_state)]_[headphones_on? "on" : "off"]"
|
||||
|
||||
/obj/item/clothing/ears/headphones/proc/toggle(owner)
|
||||
headphones_on = !headphones_on
|
||||
update_icon()
|
||||
var/mob/living/carbon/human/H = owner
|
||||
if(istype(H))
|
||||
H.update_inv_ears()
|
||||
H.update_inv_neck()
|
||||
H.update_inv_head()
|
||||
to_chat(owner, "<span class='notice'>You turn the music [headphones_on? "on. Untz Untz Untz!" : "off."]</span>")
|
||||
//Ears: currently only used for headsets and earmuffs
|
||||
/obj/item/clothing/ears
|
||||
name = "ears"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
throwforce = 0
|
||||
slot_flags = SLOT_EARS
|
||||
resistance_flags = NONE
|
||||
|
||||
/obj/item/clothing/ears/earmuffs
|
||||
name = "earmuffs"
|
||||
desc = "Protects your hearing from loud noises, and quiet ones as well."
|
||||
icon_state = "earmuffs"
|
||||
item_state = "earmuffs"
|
||||
strip_delay = 15
|
||||
equip_delay_other = 25
|
||||
resistance_flags = FLAMMABLE
|
||||
flags_2 = BANG_PROTECT_2|HEALS_EARS_2
|
||||
|
||||
/obj/item/clothing/ears/headphones
|
||||
name = "headphones"
|
||||
desc = "Unce unce unce unce. Boop!"
|
||||
icon = 'icons/obj/clothing/accessories.dmi'
|
||||
icon_state = "headphones"
|
||||
item_state = "headphones"
|
||||
slot_flags = SLOT_EARS | SLOT_HEAD | SLOT_NECK //Fluff item, put it whereever you want!
|
||||
actions_types = list(/datum/action/item_action/toggle_headphones)
|
||||
var/headphones_on = FALSE
|
||||
|
||||
/obj/item/clothing/ears/headphones/Initialize()
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/clothing/ears/headphones/update_icon()
|
||||
icon_state = "[initial(icon_state)]_[headphones_on? "on" : "off"]"
|
||||
item_state = "[initial(item_state)]_[headphones_on? "on" : "off"]"
|
||||
|
||||
/obj/item/clothing/ears/headphones/proc/toggle(owner)
|
||||
headphones_on = !headphones_on
|
||||
update_icon()
|
||||
var/mob/living/carbon/human/H = owner
|
||||
if(istype(H))
|
||||
H.update_inv_ears()
|
||||
H.update_inv_neck()
|
||||
H.update_inv_head()
|
||||
to_chat(owner, "<span class='notice'>You turn the music [headphones_on? "on. Untz Untz Untz!" : "off."]</span>")
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "yellow"
|
||||
item_state = "ygloves"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
permeability_coefficient = 0.5
|
||||
item_color="yellow"
|
||||
resistance_flags = NONE
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
icon_state = "yellow"
|
||||
item_state = "ygloves"
|
||||
siemens_coefficient = 1 //Set to a default of 1, gets overridden in New()
|
||||
permeability_coefficient = 0.05
|
||||
permeability_coefficient = 0.5
|
||||
item_color="yellow"
|
||||
resistance_flags = NONE
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
name = "insulated gloves"
|
||||
desc = "These gloves will protect the wearer from electric shock."
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
permeability_coefficient = 0.5
|
||||
resistance_flags = NONE
|
||||
|
||||
/obj/item/clothing/gloves/color/rainbow
|
||||
@@ -148,7 +148,7 @@
|
||||
item_state = "egloves"
|
||||
item_color = "captain"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
permeability_coefficient = 0.5
|
||||
cold_protection = HANDS
|
||||
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
|
||||
heat_protection = HANDS
|
||||
@@ -162,7 +162,7 @@
|
||||
icon_state = "latex"
|
||||
item_state = "lgloves"
|
||||
siemens_coefficient = 0.3
|
||||
permeability_coefficient = 0.01
|
||||
permeability_coefficient = 0.1
|
||||
item_color="white"
|
||||
transfer_prints = TRUE
|
||||
resistance_flags = NONE
|
||||
|
||||
@@ -1,84 +1,84 @@
|
||||
/obj/item/clothing/head/hardhat
|
||||
name = "hard hat"
|
||||
desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight."
|
||||
icon_state = "hardhat0_yellow"
|
||||
item_state = "hardhat0_yellow"
|
||||
var/brightness_on = 4 //luminosity when on
|
||||
/obj/item/clothing/head/hardhat
|
||||
name = "hard hat"
|
||||
desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight."
|
||||
icon_state = "hardhat0_yellow"
|
||||
item_state = "hardhat0_yellow"
|
||||
var/brightness_on = 4 //luminosity when on
|
||||
var/on = FALSE
|
||||
item_color = "yellow" //Determines used sprites: hardhat[on]_[item_color] and hardhat[on]_[item_color]2 (lying down sprite)
|
||||
armor = list(melee = 15, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20, fire = 100, acid = 50)
|
||||
flags_inv = 0
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet_light)
|
||||
resistance_flags = FIRE_PROOF
|
||||
item_color = "yellow" //Determines used sprites: hardhat[on]_[item_color] and hardhat[on]_[item_color]2 (lying down sprite)
|
||||
armor = list(melee = 15, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20, fire = 100, acid = 50)
|
||||
flags_inv = 0
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet_light)
|
||||
resistance_flags = FIRE_PROOF
|
||||
dynamic_hair_suffix = "+generic"
|
||||
|
||||
dog_fashion = /datum/dog_fashion/head
|
||||
|
||||
/obj/item/clothing/head/hardhat/attack_self(mob/user)
|
||||
on = !on
|
||||
icon_state = "hardhat[on]_[item_color]"
|
||||
item_state = "hardhat[on]_[item_color]"
|
||||
user.update_inv_head() //so our mob-overlays update
|
||||
|
||||
if(on)
|
||||
turn_on(user)
|
||||
else
|
||||
turn_off(user)
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
/obj/item/clothing/head/hardhat/proc/turn_on(mob/user)
|
||||
set_light(brightness_on)
|
||||
|
||||
/obj/item/clothing/head/hardhat/proc/turn_off(mob/user)
|
||||
set_light(0)
|
||||
|
||||
/obj/item/clothing/head/hardhat/orange
|
||||
icon_state = "hardhat0_orange"
|
||||
item_state = "hardhat0_orange"
|
||||
item_color = "orange"
|
||||
dog_fashion = null
|
||||
|
||||
/obj/item/clothing/head/hardhat/red
|
||||
icon_state = "hardhat0_red"
|
||||
item_state = "hardhat0_red"
|
||||
item_color = "red"
|
||||
dog_fashion = null
|
||||
name = "firefighter helmet"
|
||||
|
||||
dog_fashion = /datum/dog_fashion/head
|
||||
|
||||
/obj/item/clothing/head/hardhat/attack_self(mob/user)
|
||||
on = !on
|
||||
icon_state = "hardhat[on]_[item_color]"
|
||||
item_state = "hardhat[on]_[item_color]"
|
||||
user.update_inv_head() //so our mob-overlays update
|
||||
|
||||
if(on)
|
||||
turn_on(user)
|
||||
else
|
||||
turn_off(user)
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
/obj/item/clothing/head/hardhat/proc/turn_on(mob/user)
|
||||
set_light(brightness_on)
|
||||
|
||||
/obj/item/clothing/head/hardhat/proc/turn_off(mob/user)
|
||||
set_light(0)
|
||||
|
||||
/obj/item/clothing/head/hardhat/orange
|
||||
icon_state = "hardhat0_orange"
|
||||
item_state = "hardhat0_orange"
|
||||
item_color = "orange"
|
||||
dog_fashion = null
|
||||
|
||||
/obj/item/clothing/head/hardhat/red
|
||||
icon_state = "hardhat0_red"
|
||||
item_state = "hardhat0_red"
|
||||
item_color = "red"
|
||||
dog_fashion = null
|
||||
name = "firefighter helmet"
|
||||
flags_1 = STOPSPRESSUREDMAGE_1
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
|
||||
|
||||
/obj/item/clothing/head/hardhat/white
|
||||
icon_state = "hardhat0_white"
|
||||
item_state = "hardhat0_white"
|
||||
item_color = "white"
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
|
||||
|
||||
/obj/item/clothing/head/hardhat/white
|
||||
icon_state = "hardhat0_white"
|
||||
item_state = "hardhat0_white"
|
||||
item_color = "white"
|
||||
flags_1 = STOPSPRESSUREDMAGE_1
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
|
||||
dog_fashion = /datum/dog_fashion/head
|
||||
|
||||
/obj/item/clothing/head/hardhat/dblue
|
||||
icon_state = "hardhat0_dblue"
|
||||
item_state = "hardhat0_dblue"
|
||||
item_color = "dblue"
|
||||
dog_fashion = null
|
||||
|
||||
/obj/item/clothing/head/hardhat/atmos
|
||||
icon_state = "hardhat0_atmos"
|
||||
item_state = "hardhat0_atmos"
|
||||
item_color = "atmos"
|
||||
dog_fashion = null
|
||||
name = "atmospheric technician's firefighting helmet"
|
||||
desc = "A firefighter's helmet, able to keep the user cool in any situation."
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
|
||||
dog_fashion = /datum/dog_fashion/head
|
||||
|
||||
/obj/item/clothing/head/hardhat/dblue
|
||||
icon_state = "hardhat0_dblue"
|
||||
item_state = "hardhat0_dblue"
|
||||
item_color = "dblue"
|
||||
dog_fashion = null
|
||||
|
||||
/obj/item/clothing/head/hardhat/atmos
|
||||
icon_state = "hardhat0_atmos"
|
||||
item_state = "hardhat0_atmos"
|
||||
item_color = "atmos"
|
||||
dog_fashion = null
|
||||
name = "atmospheric technician's firefighting helmet"
|
||||
desc = "A firefighter's helmet, able to keep the user cool in any situation."
|
||||
flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
|
||||
|
||||
@@ -283,7 +283,7 @@
|
||||
for(var/obj/item/device/flashlight/seclite/S in src)
|
||||
to_chat(user, "<span class='notice'>You unscrew the seclite from [src].</span>")
|
||||
F = null
|
||||
S.forceMove(user.drop_location())
|
||||
S.loc = get_turf(user)
|
||||
update_helmlight(user)
|
||||
S.update_brightness(user)
|
||||
update_icon()
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
|
||||
|
||||
/obj/item/clothing/head/centhat
|
||||
name = "\improper CentCom hat"
|
||||
name = "\improper Centcom hat"
|
||||
icon_state = "centcom"
|
||||
desc = "It's good to be emperor."
|
||||
item_state = "that"
|
||||
@@ -293,18 +291,6 @@
|
||||
desc = "A simple straw hat."
|
||||
icon_state = "scarecrow_hat"
|
||||
|
||||
/obj/item/clothing/head/lobsterhat
|
||||
name = "foam lobster head"
|
||||
desc = "When everything's going to crab, protecting your head is the best choice."
|
||||
icon_state = "lobster_hat"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
|
||||
/obj/item/clothing/head/drfreezehat
|
||||
name = "doctor freeze's wig"
|
||||
desc = "A cool wig for cool people."
|
||||
icon_state = "drfreeze_hat"
|
||||
flags_inv = HIDEHAIR
|
||||
|
||||
/obj/item/clothing/head/pharoah
|
||||
name = "pharoah hat"
|
||||
desc = "Walk like an Egyptian."
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
L.implant(H, null, 1)
|
||||
|
||||
var/obj/item/device/radio/R = H.ears
|
||||
R.set_frequency(FREQ_CENTCOM)
|
||||
R.freqlock = TRUE
|
||||
R.set_frequency(GLOB.CENTCOM_FREQ)
|
||||
R.freqlock = 1
|
||||
|
||||
var/obj/item/card/id/W = H.wear_id
|
||||
W.registered_name = H.real_name
|
||||
|
||||
@@ -102,8 +102,8 @@
|
||||
|
||||
var/obj/item/device/radio/R = H.ears
|
||||
if(R)
|
||||
R.set_frequency(FREQ_SYNDICATE)
|
||||
R.freqlock = TRUE
|
||||
R.set_frequency(GLOB.SYND_FREQ)
|
||||
R.freqlock = 1
|
||||
|
||||
var/obj/item/card/id/W = H.wear_id
|
||||
if(W)
|
||||
@@ -257,8 +257,8 @@
|
||||
W.update_label()
|
||||
|
||||
var/obj/item/device/radio/headset/R = H.ears
|
||||
R.set_frequency(FREQ_CENTCOM)
|
||||
R.freqlock = TRUE
|
||||
R.set_frequency(GLOB.CENTCOM_FREQ)
|
||||
R.freqlock = 1
|
||||
|
||||
/datum/outfit/ghost_cultist
|
||||
name = "Cultist Ghost"
|
||||
@@ -396,8 +396,8 @@
|
||||
return
|
||||
|
||||
var/obj/item/device/radio/R = H.ears
|
||||
R.set_frequency(FREQ_CENTCOM)
|
||||
R.freqlock = TRUE
|
||||
R.set_frequency(GLOB.CENTCOM_FREQ)
|
||||
R.freqlock = 1
|
||||
|
||||
var/obj/item/implant/mindshield/L = new/obj/item/implant/mindshield(H)//Here you go Deuryn
|
||||
L.implant(H, null, 1)
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
I.flags_1 &= ~NODROP_1
|
||||
if(camera)
|
||||
camera.remove_target_ui()
|
||||
camera.forceMove(user)
|
||||
camera.loc = user
|
||||
teleport_now.UpdateButtonIcon()
|
||||
|
||||
/obj/item/clothing/suit/space/chronos/proc/chronowalk(atom/location)
|
||||
@@ -278,19 +278,19 @@
|
||||
if(loc == user)
|
||||
forceMove(get_turf(user))
|
||||
if(user.client && user.client.eye != src)
|
||||
src.forceMove(user.drop_location())
|
||||
src.loc = get_turf(user)
|
||||
user.reset_perspective(src)
|
||||
user.set_machine(src)
|
||||
var/atom/step = get_step(src, direction)
|
||||
if(step)
|
||||
if((step.x <= TRANSITIONEDGE) || (step.x >= (world.maxx - TRANSITIONEDGE - 1)) || (step.y <= TRANSITIONEDGE) || (step.y >= (world.maxy - TRANSITIONEDGE - 1)))
|
||||
if(!src.Move(step))
|
||||
src.forceMove(step)
|
||||
src.loc = step
|
||||
else
|
||||
src.forceMove(step)
|
||||
src.loc = step
|
||||
if((x == holder.x) && (y == holder.y) && (z == holder.z))
|
||||
remove_target_ui()
|
||||
forceMove(user)
|
||||
loc = user
|
||||
else if(!target_ui)
|
||||
create_target_ui()
|
||||
phase_time = world.time + phase_time_length
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
return
|
||||
|
||||
jetpack.turn_off()
|
||||
jetpack.forceMove(drop_location())
|
||||
jetpack.loc = get_turf(src)
|
||||
jetpack = null
|
||||
to_chat(user, "<span class='notice'>You successfully remove the jetpack from [src].</span>")
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
icon = 'icons/obj/clothing/suits.dmi'
|
||||
name = "suit"
|
||||
var/fire_resist = T0C+100
|
||||
allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
allowed = list(/obj/item/tank/internals/emergency_oxygen)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
slot_flags = SLOT_OCLOTHING
|
||||
var/blood_overlay_type = "suit"
|
||||
|
||||
@@ -354,7 +354,7 @@
|
||||
item_state = "centcom"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/gun/energy, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
allowed = list(/obj/item/gun/energy, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals/emergency_oxygen)
|
||||
flags_1 = THICKMATERIAL_1
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
flags_1 = THICKMATERIAL_1
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
slowdown = 1
|
||||
allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/pen, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray)
|
||||
allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/pen, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 80, fire = 30, acid = 100)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
strip_delay = 70
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
item_state = "bio_suit"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
allowed = list(/obj/item/disk, /obj/item/stamp, /obj/item/reagent_containers/food/drinks/flask, /obj/item/melee, /obj/item/storage/lockbox/medal, /obj/item/device/assembly/flash/handheld, /obj/item/storage/box/matches, /obj/item/lighter, /obj/item/clothing/mask/cigarette, /obj/item/storage/fancy/cigarettes, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
allowed = list(/obj/item/disk, /obj/item/stamp, /obj/item/reagent_containers/food/drinks/flask, /obj/item/melee, /obj/item/storage/lockbox/medal, /obj/item/device/assembly/flash/handheld, /obj/item/storage/box/matches, /obj/item/lighter, /obj/item/clothing/mask/cigarette, /obj/item/storage/fancy/cigarettes, /obj/item/tank/internals/emergency_oxygen)
|
||||
|
||||
//Chaplain
|
||||
/obj/item/clothing/suit/hooded/chaplain_hoodie
|
||||
@@ -29,7 +29,7 @@
|
||||
icon_state = "chaplain_hoodie"
|
||||
item_state = "chaplain_hoodie"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen)
|
||||
hoodtype = /obj/item/clothing/head/hooded/chaplain_hood
|
||||
|
||||
/obj/item/clothing/head/hooded/chaplain_hood
|
||||
@@ -46,7 +46,7 @@
|
||||
item_state = "nun"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
||||
allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen)
|
||||
|
||||
/obj/item/clothing/suit/studentuni
|
||||
name = "student robe"
|
||||
@@ -54,7 +54,7 @@
|
||||
icon_state = "studentuni"
|
||||
item_state = "studentuni"
|
||||
body_parts_covered = ARMS|CHEST
|
||||
allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen)
|
||||
|
||||
/obj/item/clothing/suit/witchhunter
|
||||
name = "witchunter garb"
|
||||
@@ -62,7 +62,7 @@
|
||||
icon_state = "witchhunter"
|
||||
item_state = "witchhunter"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen)
|
||||
|
||||
//Chef
|
||||
/obj/item/clothing/suit/toggle/chef
|
||||
|
||||
@@ -1,48 +1,48 @@
|
||||
/obj/item/clothing/suit/toggle/labcoat
|
||||
name = "labcoat"
|
||||
desc = "A suit that protects against minor chemical spills."
|
||||
icon_state = "labcoat"
|
||||
item_state = "labcoat"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = CHEST|ARMS
|
||||
allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/device/sensor_device, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0, fire = 50, acid = 50)
|
||||
togglename = "buttons"
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/cmo
|
||||
name = "chief medical officer's labcoat"
|
||||
desc = "Bluer than the standard model."
|
||||
icon_state = "labcoat_cmo"
|
||||
item_state = "labcoat_cmo"
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/emt
|
||||
name = "EMT's jacket"
|
||||
desc = "A dark blue jacket with reflective strips for emergency medical technicians."
|
||||
icon_state = "labcoat_emt"
|
||||
item_state = "labcoat_cmo"
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/mad
|
||||
name = "\improper The Mad's labcoat"
|
||||
desc = "It makes you look capable of konking someone on the noggin and shooting them into space."
|
||||
icon_state = "labgreen"
|
||||
item_state = "labgreen"
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/genetics
|
||||
name = "geneticist labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Has a blue stripe on the shoulder."
|
||||
icon_state = "labcoat_gen"
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/chemist
|
||||
name = "chemist labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Has an orange stripe on the shoulder."
|
||||
icon_state = "labcoat_chem"
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/virologist
|
||||
name = "virologist labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Offers slightly more protection against biohazards than the standard model. Has a green stripe on the shoulder."
|
||||
icon_state = "labcoat_vir"
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/science
|
||||
name = "scientist labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Has a purple stripe on the shoulder."
|
||||
/obj/item/clothing/suit/toggle/labcoat
|
||||
name = "labcoat"
|
||||
desc = "A suit that protects against minor chemical spills."
|
||||
icon_state = "labcoat"
|
||||
item_state = "labcoat"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = CHEST|ARMS
|
||||
allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/device/sensor_device, /obj/item/tank/internals/emergency_oxygen)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0, fire = 50, acid = 50)
|
||||
togglename = "buttons"
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/cmo
|
||||
name = "chief medical officer's labcoat"
|
||||
desc = "Bluer than the standard model."
|
||||
icon_state = "labcoat_cmo"
|
||||
item_state = "labcoat_cmo"
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/emt
|
||||
name = "EMT's jacket"
|
||||
desc = "A dark blue jacket with reflective strips for emergency medical technicians."
|
||||
icon_state = "labcoat_emt"
|
||||
item_state = "labcoat_cmo"
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/mad
|
||||
name = "\improper The Mad's labcoat"
|
||||
desc = "It makes you look capable of konking someone on the noggin and shooting them into space."
|
||||
icon_state = "labgreen"
|
||||
item_state = "labgreen"
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/genetics
|
||||
name = "geneticist labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Has a blue stripe on the shoulder."
|
||||
icon_state = "labcoat_gen"
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/chemist
|
||||
name = "chemist labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Has an orange stripe on the shoulder."
|
||||
icon_state = "labcoat_chem"
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/virologist
|
||||
name = "virologist labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Offers slightly more protection against biohazards than the standard model. Has a green stripe on the shoulder."
|
||||
icon_state = "labcoat_vir"
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/science
|
||||
name = "scientist labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Has a purple stripe on the shoulder."
|
||||
icon_state = "labcoat_tox"
|
||||
@@ -93,7 +93,7 @@
|
||||
item_state = "syndicate-black-red"
|
||||
desc = "A plastic replica of the Syndicate space suit. You'll look just like a real murderous Syndicate agent in this! This is a toy, it is not made for use in space!"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy)
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/toy)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
resistance_flags = NONE
|
||||
|
||||
@@ -160,7 +160,7 @@
|
||||
item_state = "w_suit"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen)
|
||||
|
||||
/obj/item/clothing/suit/cardborg
|
||||
name = "cardborg suit"
|
||||
@@ -240,7 +240,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
cold_protection = CHEST|GROIN|ARMS
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT //Space carp like space, so you should too
|
||||
allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/gun/ballistic/automatic/speargun)
|
||||
allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/gun/ballistic/automatic/speargun)
|
||||
hoodtype = /obj/item/clothing/head/hooded/carp_hood
|
||||
|
||||
/obj/item/clothing/head/hooded/carp_hood
|
||||
@@ -355,7 +355,7 @@
|
||||
desc = "Aviators not included."
|
||||
icon_state = "bomberjacket"
|
||||
item_state = "brownjsuit"
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/device/radio)
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/device/radio)
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
cold_protection = CHEST|GROIN|ARMS
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
@@ -367,7 +367,7 @@
|
||||
item_state = "hostrench"
|
||||
resistance_flags = NONE
|
||||
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/gun/ballistic/revolver/detective, /obj/item/device/radio)
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/gun/ballistic/revolver/detective, /obj/item/device/radio)
|
||||
|
||||
/obj/item/clothing/suit/jacket/leather/overcoat
|
||||
name = "leather overcoat"
|
||||
@@ -397,7 +397,7 @@
|
||||
desc = "A canvas jacket styled after classical American military garb. Feels sturdy, yet comfortable."
|
||||
icon_state = "militaryjacket"
|
||||
item_state = "militaryjacket"
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/gun/ballistic/revolver/detective, /obj/item/device/radio)
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/gun/ballistic/revolver/detective, /obj/item/device/radio)
|
||||
|
||||
/obj/item/clothing/suit/jacket/letterman
|
||||
name = "letterman jacket"
|
||||
@@ -470,7 +470,7 @@
|
||||
cold_protection = CHEST|GROIN|ARMS
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0)
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood
|
||||
name = "winter hood"
|
||||
@@ -513,7 +513,7 @@
|
||||
name = "medical winter coat"
|
||||
icon_state = "coatmedical"
|
||||
item_state = "coatmedical"
|
||||
allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0, fire = 0, acid = 45)
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/medical
|
||||
|
||||
@@ -524,7 +524,7 @@
|
||||
name = "science winter coat"
|
||||
icon_state = "coatscience"
|
||||
item_state = "coatscience"
|
||||
allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/science
|
||||
|
||||
@@ -536,7 +536,7 @@
|
||||
icon_state = "coatengineer"
|
||||
item_state = "coatengineer"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 20, fire = 30, acid = 45)
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/device/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/device/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/engineering
|
||||
@@ -555,7 +555,7 @@
|
||||
name = "hydroponics winter coat"
|
||||
icon_state = "coathydro"
|
||||
item_state = "coathydro"
|
||||
allowed = list(/obj/item/reagent_containers/spray/plantbgone, /obj/item/device/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/cultivator, /obj/item/reagent_containers/spray/pestspray, /obj/item/hatchet, /obj/item/storage/bag/plants, /obj/item/toy, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
|
||||
allowed = list(/obj/item/reagent_containers/spray/plantbgone, /obj/item/device/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/cultivator, /obj/item/reagent_containers/spray/pestspray, /obj/item/hatchet, /obj/item/storage/bag/plants, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/hydro
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/hydro
|
||||
@@ -574,7 +574,7 @@
|
||||
name = "mining winter coat"
|
||||
icon_state = "coatminer"
|
||||
item_state = "coatminer"
|
||||
allowed = list(/obj/item/pickaxe, /obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
|
||||
allowed = list(/obj/item/pickaxe, /obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
|
||||
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/miner
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
gas_transfer_coefficient = 0.9
|
||||
permeability_coefficient = 0.5
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/extinguisher, /obj/item/crowbar)
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/extinguisher, /obj/item/crowbar)
|
||||
slowdown = 1
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1
|
||||
@@ -141,7 +141,7 @@
|
||||
permeability_coefficient = 0.5
|
||||
flags_1 = THICKMATERIAL_1
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/device/geiger_counter)
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/device/geiger_counter)
|
||||
slowdown = 1.5
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100, fire = 30, acid = 30)
|
||||
strip_delay = 60
|
||||
@@ -151,6 +151,6 @@
|
||||
|
||||
/obj/item/clothing/suit/radiation/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/rad_insulation, RAD_NO_INSULATION, TRUE, FALSE)
|
||||
AddComponent(/datum/component/rad_insulation, RAD_NO_INSULATION, TRUE, FALSE)
|
||||
// Just don't want things to be irradiated inside this
|
||||
// Except things on the mob aren't even inside the suit so ehhhhhh
|
||||
@@ -15,11 +15,11 @@
|
||||
if(U.pockets) // storage items conflict
|
||||
return FALSE
|
||||
|
||||
pockets.forceMove(U)
|
||||
pockets.loc = U
|
||||
U.pockets = pockets
|
||||
|
||||
U.attached_accessory = src
|
||||
forceMove(U)
|
||||
loc = U
|
||||
layer = FLOAT_LAYER
|
||||
plane = FLOAT_PLANE
|
||||
if(minimize_when_attached)
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
/obj/item/clothing/accessory/proc/detach(obj/item/clothing/under/U, user)
|
||||
if(pockets && pockets == U.pockets)
|
||||
pockets.forceMove(src)
|
||||
pockets.loc = src
|
||||
U.pockets = null
|
||||
|
||||
for(var/armor_type in armor)
|
||||
@@ -135,7 +135,7 @@
|
||||
"<span class='notice'>You pin \the [src] on [M]'s chest.</span>")
|
||||
if(input)
|
||||
SSblackbox.record_feedback("associative", "commendation", 1, list("commender" = "[user.real_name]", "commendee" = "[M.real_name]", "medal" = "[src]", "reason" = input))
|
||||
GLOB.commendations += "[user.real_name] awarded <b>[M.real_name]</b> the <span class='medaltext'>[name]</span>! \n- [input]"
|
||||
GLOB.commendations += "[user.real_name] awarded <b>[M.real_name]</b> the <font color='blue'>[name]</font>! \n- [input]"
|
||||
commended = TRUE
|
||||
log_game("<b>[key_name(M)]</b> was given the following commendation by <b>[key_name(user)]</b>: [input]")
|
||||
message_admins("<b>[key_name(M)]</b> was given the following commendation by <b>[key_name(user)]</b>: [input]")
|
||||
|
||||
@@ -40,7 +40,6 @@
|
||||
item_color = "cargo"
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
alt_covers_chest = TRUE
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/chaplain
|
||||
|
||||
@@ -31,4 +31,4 @@
|
||||
icon_state = "robotics"
|
||||
item_state = "robotics"
|
||||
item_color = "robotics"
|
||||
resistance_flags = NONE
|
||||
resistance_flags = NONE
|
||||
|
||||
@@ -646,7 +646,6 @@
|
||||
return 0
|
||||
|
||||
/obj/item/clothing/under/plasmaman/attackby(obj/item/E, mob/user, params)
|
||||
..()
|
||||
if (istype(E, /obj/item/device/extinguisher_refill))
|
||||
if (extinguishes_left == 5)
|
||||
to_chat(user, "<span class='notice'>The inbuilt extinguisher is full.</span>")
|
||||
@@ -729,4 +728,4 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS|LEGS
|
||||
fitted = NO_FEMALE_UNIFORM
|
||||
can_adjust = FALSE
|
||||
resistance_flags = NONE
|
||||
resistance_flags = NONE
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
// 50% chance of being incremented by one
|
||||
var/spawncount = 1
|
||||
var/successSpawn = 0 //So we don't make a command report if nothing gets spawned.
|
||||
fakeable = TRUE
|
||||
|
||||
|
||||
/datum/round_event/ghost_role/alien_infestation/setup()
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
/datum/round_event/ghost_role/blob
|
||||
announceWhen = -1
|
||||
role_name = "blob overmind"
|
||||
fakeable = TRUE
|
||||
|
||||
/datum/round_event/ghost_role/blob/announce(fake)
|
||||
priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak5.ogg')
|
||||
|
||||
@@ -23,5 +23,3 @@
|
||||
new /mob/living/simple_animal/hostile/carp(C.loc)
|
||||
else
|
||||
new /mob/living/simple_animal/hostile/carp/megacarp(C.loc)
|
||||
|
||||
|
||||
|
||||
@@ -10,8 +10,6 @@
|
||||
|
||||
var/virus_type
|
||||
|
||||
var/max_severity = 3
|
||||
|
||||
|
||||
/datum/round_event/disease_outbreak/announce(fake)
|
||||
priority_announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak7.ogg')
|
||||
@@ -19,14 +17,8 @@
|
||||
/datum/round_event/disease_outbreak/setup()
|
||||
announceWhen = rand(15, 30)
|
||||
|
||||
|
||||
/datum/round_event/disease_outbreak/start()
|
||||
var/advanced_virus = FALSE
|
||||
max_severity = 3 + max(Floor((world.time - control.earliest_start)/6000),0) //3 symptoms at 20 minutes, plus 1 per 10 minutes
|
||||
if(prob(20 + (10 * max_severity)))
|
||||
advanced_virus = TRUE
|
||||
|
||||
if(!virus_type && !advanced_virus)
|
||||
if(!virus_type)
|
||||
virus_type = pick(/datum/disease/dnaspread, /datum/disease/advance/flu, /datum/disease/advance/cold, /datum/disease/brainrot, /datum/disease/magnitis)
|
||||
|
||||
for(var/mob/living/carbon/human/H in shuffle(GLOB.alive_mob_list))
|
||||
@@ -49,48 +41,16 @@
|
||||
continue
|
||||
|
||||
var/datum/disease/D
|
||||
if(!advanced_virus)
|
||||
if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work.
|
||||
if(!H.dna || (H.disabilities & BLIND)) //A blindness disease would be the worst.
|
||||
continue
|
||||
D = new virus_type()
|
||||
var/datum/disease/dnaspread/DS = D
|
||||
DS.strain_data["name"] = H.real_name
|
||||
DS.strain_data["UI"] = H.dna.uni_identity
|
||||
DS.strain_data["SE"] = H.dna.struc_enzymes
|
||||
else
|
||||
D = new virus_type()
|
||||
if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work.
|
||||
if(!H.dna || (H.disabilities & BLIND)) //A blindness disease would be the worst.
|
||||
continue
|
||||
D = new virus_type()
|
||||
var/datum/disease/dnaspread/DS = D
|
||||
DS.strain_data["name"] = H.real_name
|
||||
DS.strain_data["UI"] = H.dna.uni_identity
|
||||
DS.strain_data["SE"] = H.dna.struc_enzymes
|
||||
else
|
||||
D = make_virus(max_severity, max_severity)
|
||||
D = new virus_type()
|
||||
D.carrier = TRUE
|
||||
H.AddDisease(D)
|
||||
|
||||
if(advanced_virus)
|
||||
var/datum/disease/advance/A = D
|
||||
var/list/name_symptoms = list() //for feedback
|
||||
for(var/datum/symptom/S in A.symptoms)
|
||||
name_symptoms += S.name
|
||||
message_admins("An event has triggered a random advanced virus outbreak on [key_name_admin(H)]! It has these symptoms: [english_list(name_symptoms)]")
|
||||
log_game("An event has triggered a random advanced virus outbreak on [key_name(H)]! It has these symptoms: [english_list(name_symptoms)]")
|
||||
break
|
||||
|
||||
/datum/round_event/disease_outbreak/proc/make_virus(max_symptoms, max_level)
|
||||
if(max_symptoms > SYMPTOM_LIMIT)
|
||||
max_symptoms = SYMPTOM_LIMIT
|
||||
var/datum/disease/advance/A = new(FALSE, null)
|
||||
A.symptoms = list()
|
||||
var/list/datum/symptom/possible_symptoms = list()
|
||||
for(var/symptom in subtypesof(/datum/symptom))
|
||||
var/datum/symptom/S = symptom
|
||||
if(initial(S.level) > max_level)
|
||||
continue
|
||||
if(initial(S.level) <= 0) //unobtainable symptoms
|
||||
continue
|
||||
possible_symptoms += S
|
||||
for(var/i in 1 to max_symptoms)
|
||||
var/datum/symptom/chosen_symptom = pick_n_take(possible_symptoms)
|
||||
if(chosen_symptom)
|
||||
var/datum/symptom/S = new chosen_symptom
|
||||
A.symptoms += S
|
||||
A.Refresh() //just in case someone already made and named the same disease
|
||||
return A
|
||||
break
|
||||
@@ -28,4 +28,4 @@
|
||||
fakeable = FALSE
|
||||
|
||||
/datum/round_event/sandstorm/tick()
|
||||
spawn_meteors(10, GLOB.meteorsC)
|
||||
spawn_meteors(10, GLOB.meteorsC)
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
var/minimum_required = 1
|
||||
var/role_name = "debug rat with cancer" // Q U A L I T Y M E M E S
|
||||
var/list/spawned_mobs = list()
|
||||
fakeable = FALSE
|
||||
|
||||
/datum/round_event/ghost_role/start()
|
||||
try_spawning()
|
||||
|
||||
@@ -15,4 +15,4 @@
|
||||
|
||||
/datum/round_event/fridaythethirteen/announce(fake)
|
||||
for(var/mob/living/L in player_list)
|
||||
to_chat(L, "<span class='warning'>You are feeling unlucky today.</span>")
|
||||
to_chat(L, "<span class='warning'>You are feeling unlucky today.</span>")
|
||||
|
||||
@@ -45,26 +45,19 @@
|
||||
to_chat(L, "<span class='warning'><B>You didn't get a date! They're all having fun without you! you'll show them though...</B></span>")
|
||||
var/datum/objective/martyr/normiesgetout = new
|
||||
normiesgetout.owner = L.mind
|
||||
L.mind.special_role = "heartbreaker"
|
||||
SSticker.mode.traitors |= L.mind
|
||||
L.mind.objectives += normiesgetout
|
||||
|
||||
L.mind.add_antag_datum(/datum/antagonist/auto_custom)
|
||||
|
||||
/proc/forge_valentines_objective(mob/living/lover,mob/living/date)
|
||||
|
||||
SSticker.mode.traitors |= lover.mind
|
||||
lover.mind.special_role = "valentine"
|
||||
|
||||
|
||||
var/datum/objective/protect/protect_objective = new /datum/objective/protect
|
||||
protect_objective.owner = lover.mind
|
||||
protect_objective.target = date.mind
|
||||
protect_objective.explanation_text = "Protect [date.real_name], your date."
|
||||
lover.mind.objectives += protect_objective
|
||||
|
||||
lover.mind.add_antag_datum(/datum/antagonist/auto_custom)
|
||||
|
||||
to_chat(lover, "<span class='warning'><B>You're on a date with [date]! Protect them at all costs. This takes priority over all other loyalties.</B></span>")
|
||||
|
||||
|
||||
|
||||
@@ -10,4 +10,4 @@
|
||||
|
||||
/datum/round_event/mass_hallucination/start()
|
||||
for(var/mob/living/carbon/C in GLOB.alive_mob_list)
|
||||
C.hallucination += rand(20, 50)
|
||||
C.hallucination += rand(20, 50)
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
player_mind.assigned_role = "Nightmare"
|
||||
player_mind.special_role = "Nightmare"
|
||||
SSticker.mode.traitors += player_mind
|
||||
player_mind.add_antag_datum(/datum/antagonist/auto_custom)
|
||||
S.set_species(/datum/species/shadow/nightmare)
|
||||
playsound(S, 'sound/magic/ethereal_exit.ogg', 50, 1, -1)
|
||||
message_admins("[key_name_admin(S)] has been made into a Nightmare by an event.")
|
||||
|
||||
@@ -26,12 +26,32 @@
|
||||
var/datum/preferences/A = new
|
||||
A.copy_to(operative)
|
||||
operative.dna.update_dna_identity()
|
||||
|
||||
operative.equipOutfit(/datum/outfit/syndicate/full)
|
||||
|
||||
var/datum/mind/Mind = new /datum/mind(selected.key)
|
||||
Mind.assigned_role = "Lone Operative"
|
||||
Mind.special_role = "Lone Operative"
|
||||
SSticker.mode.traitors |= Mind
|
||||
Mind.active = 1
|
||||
|
||||
var/obj/machinery/nuclearbomb/selfdestruct/nuke = locate() in GLOB.machines
|
||||
if(nuke)
|
||||
var/nuke_code
|
||||
if(!nuke.r_code || nuke.r_code == "ADMIN")
|
||||
nuke_code = random_nukecode()
|
||||
nuke.r_code = nuke_code
|
||||
else
|
||||
nuke_code = nuke.r_code
|
||||
|
||||
Mind.store_memory("<B>Station Self-Destruct Device Code</B>: [nuke_code]", 0, 0)
|
||||
to_chat(Mind.current, "The nuclear authorization code is: <B>[nuke_code]</B>")
|
||||
|
||||
var/datum/objective/nuclear/O = new()
|
||||
O.owner = Mind
|
||||
Mind.objectives += O
|
||||
|
||||
Mind.transfer_to(operative)
|
||||
Mind.add_antag_datum(/datum/antagonist/nukeop/lone)
|
||||
|
||||
message_admins("[key_name_admin(operative)] has been made into lone operative by an event.")
|
||||
log_game("[key_name(operative)] was spawned as a lone operative by an event.")
|
||||
|
||||
@@ -56,4 +56,4 @@
|
||||
temp.prison_open()
|
||||
else if(istype(O, /obj/machinery/door_timer))
|
||||
var/obj/machinery/door_timer/temp = O
|
||||
temp.timer_end(forced = TRUE)
|
||||
temp.timer_end(forced = TRUE)
|
||||
|
||||
@@ -16,4 +16,5 @@
|
||||
//sound not longer matches the text, but an audible warning is probably good
|
||||
|
||||
/datum/round_event/radiation_storm/start()
|
||||
SSweather.run_weather("radiation storm",ZLEVEL_STATION_PRIMARY)
|
||||
SSweather.run_weather("radiation storm",ZLEVEL_STATION_PRIMARY)
|
||||
make_maint_all_access()
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
role_name = "random animal"
|
||||
var/animals = 1
|
||||
var/one = "one"
|
||||
fakeable = TRUE
|
||||
|
||||
/datum/round_event/ghost_role/sentience/announce(fake)
|
||||
var/sentience_report = ""
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
new /obj/structure/spider/stickyweb(T)
|
||||
|
||||
if(ANTIDOTE_NEEDED)
|
||||
var/obj/effect/mob_spawn/human/corpse/assistant/infected_assistant = pick(/obj/effect/mob_spawn/human/corpse/assistant/beesease_infection, /obj/effect/mob_spawn/human/corpse/assistant/brainrot_infection, /obj/effect/mob_spawn/human/corpse/assistant/spanishflu_infection)
|
||||
var/obj/item/reagent_containers/glass/bottle/virus_type = pick(/obj/item/reagent_containers/glass/bottle/beesease, /obj/item/reagent_containers/glass/bottle/brainrot, /obj/item/reagent_containers/glass/bottle/fluspanish)
|
||||
var/turf/T
|
||||
for(var/i=0, i<10, i++)
|
||||
if(prob(15))
|
||||
@@ -145,7 +145,7 @@
|
||||
else if(prob(25))
|
||||
shuttle_spawns.Add(/obj/item/shard)
|
||||
T = pick_n_take(empty_shuttle_turfs)
|
||||
new infected_assistant(T)
|
||||
new virus_type(T)
|
||||
shuttle_spawns.Add(/obj/structure/closet/crate)
|
||||
shuttle_spawns.Add(/obj/item/reagent_containers/glass/bottle/pierrot_throat)
|
||||
shuttle_spawns.Add(/obj/item/reagent_containers/glass/bottle/magnitis)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user