Merge branch 'master' into make_paradise_great_again

This commit is contained in:
Crazy Lemon
2017-04-21 11:32:47 -07:00
committed by GitHub
1197 changed files with 35182 additions and 17486 deletions
+87
View File
@@ -0,0 +1,87 @@
/mob/living/carbon/human/virtual_reality
var/mob/living/carbon/human/real_me //The human controlling us, can be any human (including virtual ones... inception...)
var/datum/action/quit_vr/quit_action
var/datum/action/back_to_lobby/back_to_lobby
var/datum/action/detach_from_avatar/detach_from_avatar
/mob/living/carbon/human/virtual_reality/New()
quit_action = new()
quit_action.Grant(src)
back_to_lobby = new()
back_to_lobby.Grant(src)
detach_from_avatar = new()
detach_from_avatar.Grant(src)
..()
/mob/living/carbon/human/virtual_reality/death()
return_to_lobby()
return ..()
/mob/living/carbon/human/virtual_reality/Destroy()
return_to_lobby()
return ..()
/mob/living/carbon/human/virtual_reality/ghost()
set category = "OOC"
set name = "Ghost"
set desc = "Relinquish your life and enter the land of the dead."
var/mob/living/carbon/human/H = real_me
revert_to_reality(FALSE)
if(H)
H.ghost()
qdel(src)
/mob/living/carbon/human/virtual_reality/proc/revert_to_reality(remove = 0)
if(real_me && mind)
mind.transfer_to(real_me)
real_me.EyeBlind(2)
real_me.Confused(2)
if(remove)
qdel(src)
else
return src
/mob/living/carbon/human/virtual_reality/proc/return_to_lobby()
if(real_me && mind)
var/mob/living/carbon/human/virtual_reality/new_vr
new_vr = spawn_vr_avatar(src, "Lobby")
var/obj/item/clothing/glasses/vr_goggles/g = new_vr.real_me.glasses
g.vr_human = new_vr
qdel(src)
/datum/action/quit_vr
name = "Quit Virtual Reality"
/datum/action/quit_vr/Trigger()
if(..())
if(istype(owner, /mob/living/carbon/human/virtual_reality))
var/mob/living/carbon/human/virtual_reality/vr = owner
vr.revert_to_reality(1)
else
Remove(owner)
/datum/action/back_to_lobby
name = "Return To Lobby"
/datum/action/back_to_lobby/Trigger()
if(..())
if(istype(owner, /mob/living/carbon/human/virtual_reality))
var/mob/living/carbon/human/virtual_reality/vr = owner
vr.return_to_lobby()
else
Remove(owner)
/datum/action/detach_from_avatar
name = "Detach From Avatar"
/datum/action/detach_from_avatar/Trigger()
if(..())
if(istype(owner, /mob/living/carbon/human/virtual_reality))
var/mob/living/carbon/human/virtual_reality/vr = owner
var/obj/item/clothing/glasses/vr_goggles/g = vr.real_me.glasses
g.vr_human = vr
vr.revert_to_reality(0)
else
Remove(owner)
+41
View File
@@ -0,0 +1,41 @@
//Glorified teleporter that puts you in a new human body.
// it's """VR"""
/obj/item/clothing/glasses/vr_goggles
desc = "A long time ago, people used these glasses to makes images from screens threedimensional."
name = "3D glasses"
icon_state = "3d"
item_state = "3d"
prescription_upgradable = 0
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/eyes.dmi'
)
var/you_die_in_the_game_you_die_for_real = FALSE
var/mob/living/carbon/human/virtual_reality/vr_human
/obj/item/clothing/glasses/vr_goggles/Destroy()
..()
vr_human.revert_to_reality(1)
cleanup_vr_avatar()
/obj/item/clothing/glasses/vr_goggles/dropped()
..()
if(vr_human)
vr_human.revert_to_reality(0)
/obj/item/clothing/glasses/vr_goggles/proc/cleanup_vr_avatar()
if(vr_human)
vr_human = null
/obj/item/clothing/glasses/vr_goggles/equipped()
..()
var/mob/living/carbon/human/H = loc
spawn(1)
if(H.glasses == src)
if(vr_human == null)
vr_human = spawn_vr_avatar(H, "Lobby")
else
control_remote(H, vr_human)
+7 -7
View File
@@ -127,7 +127,7 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration =
var/sql = "INSERT INTO [format_table_name("ban")] (`id`,`bantime`,`serverip`,`bantype`,`reason`,`job`,`duration`,`rounds`,`expiration_time`,`ckey`,`computerid`,`ip`,`a_ckey`,`a_computerid`,`a_ip`,`who`,`adminwho`,`edits`,`unbanned`,`unbanned_datetime`,`unbanned_ckey`,`unbanned_computerid`,`unbanned_ip`) VALUES (null, Now(), '[serverip]', '[bantype_str]', '[reason]', '[job]', [(duration)?"[duration]":"0"], [(rounds)?"[rounds]":"0"], Now() + INTERVAL [(duration>0) ? duration : 0] MINUTE, '[ckey]', '[computerid]', '[ip]', '[a_ckey]', '[a_computerid]', '[a_ip]', '[who]', '[adminwho]', '', null, null, null, null, null)"
var/DBQuery/query_insert = dbcon.NewQuery(sql)
query_insert.Execute()
to_chat(usr, "\blue Ban saved to database.")
to_chat(usr, "<span class='notice'>Ban saved to database.</span>")
message_admins("[key_name_admin(usr)] has added a [bantype_str] for [ckey] [(job)?"([job])":""] [(duration > 0)?"([duration] minutes)":""] with the reason: \"[reason]\" to the ban database.",1)
if(announceinirc)
@@ -201,17 +201,17 @@ datum/admins/proc/DB_ban_unban(var/ckey, var/bantype, var/job = "")
ban_number++;
if(ban_number == 0)
to_chat(usr, "\red Database update failed due to no bans fitting the search criteria. If this is not a legacy ban you should contact the database admin.")
to_chat(usr, "<span class='warning'>Database update failed due to no bans fitting the search criteria. If this is not a legacy ban you should contact the database admin.</span>")
return
if(ban_number > 1)
to_chat(usr, "\red Database update failed due to multiple bans fitting the search criteria. Note down the ckey, job and current time and contact the database admin.")
to_chat(usr, "<span class='warning'>Database update failed due to multiple bans fitting the search criteria. Note down the ckey, job and current time and contact the database admin.</span>")
return
if(istext(ban_id))
ban_id = text2num(ban_id)
if(!isnum(ban_id))
to_chat(usr, "\red Database update failed due to a ban ID mismatch. Contact the database admin.")
to_chat(usr, "<span class='warning'>Database update failed due to a ban ID mismatch. Contact the database admin.</span>")
return
DB_ban_unban_by_id(ban_id)
@@ -302,11 +302,11 @@ datum/admins/proc/DB_ban_unban_by_id(var/id)
ban_number++;
if(ban_number == 0)
to_chat(usr, "\red Database update failed due to a ban id not being present in the database.")
to_chat(usr, "<span class='warning'>Database update failed due to a ban id not being present in the database.</span>")
return
if(ban_number > 1)
to_chat(usr, "\red Database update failed due to multiple bans having the same ID. Contact the database admin.")
to_chat(usr, "<span class='warning'>Database update failed due to multiple bans having the same ID. Contact the database admin.</span>")
return
if(!src.owner || !istype(src.owner, /client))
@@ -343,7 +343,7 @@ datum/admins/proc/DB_ban_unban_by_id(var/id)
establish_db_connection()
if(!dbcon.IsConnected())
to_chat(usr, "\red Failed to establish database connection")
to_chat(usr, "<span class='warning'>Failed to establish database connection</span>")
return
var/output = "<div align='center'><table width='90%'><tr>"
+1 -1
View File
@@ -15,7 +15,7 @@ world/IsBanned(key,address,computer_id)
//Guest Checking
if(!guests_allowed && IsGuestKey(key))
log_access("Failed Login: [key] [computer_id] [address] - Guests not allowed")
// message_admins("\blue Failed Login: [key] - Guests not allowed")
// message_admins("<span class='notice'>Failed Login: [key] - Guests not allowed</span>")
return list("reason"="guest", "desc"="\nReason: Guests not allowed. Please sign in with a BYOND account.")
//check if the IP address is a known Tor node
-1
View File
@@ -172,7 +172,6 @@ var/savefile/Banlist
/datum/admins/proc/unbanpanel()
var/count = 0
var/dat
//var/dat = "<HR><B>Unban Player:</B> \blue(U) = Unban , (E) = Edit Ban\green (Total<HR><table border=1 rules=all frame=void cellspacing=0 cellpadding=3 >"
Banlist.cd = "/base"
for(var/A in Banlist.dir)
count++
+2 -2
View File
@@ -844,8 +844,8 @@ var/global/nologevent = 0
to_chat(world, "<B>Guests may no longer enter the game.</B>")
else
to_chat(world, "<B>Guests may now enter the game.</B>")
log_admin("[key_name(usr)] toggled guests game entering [guests_allowed?"":"dis"]allowed.")
message_admins("\blue [key_name_admin(usr)] toggled guests game entering [guests_allowed?"":"dis"]allowed.", 1)
log_admin("[key_name(usr)] toggled guests game entering [guests_allowed ? "" : "dis"]allowed.")
message_admins("<span class='notice'>[key_name_admin(usr)] toggled guests game entering [guests_allowed ? "" : "dis"]allowed.</span>", 1)
feedback_add_details("admin_verb","TGU") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/datum/admins/proc/output_ai_laws()
+9 -7
View File
@@ -2,6 +2,7 @@
var/list/admin_verbs_default = list(
/client/proc/deadmin_self, /*destroys our own admin datum so we can play as a regular player*/
/client/proc/hide_verbs, /*hides all our adminverbs*/
/client/proc/toggleadminhelpsound, /*toggles whether we hear bwoinks*/
/client/proc/cmd_mentor_check_new_players,
/client/proc/cmd_mentor_check_player_exp /* shows players by playtime */
)
@@ -88,7 +89,8 @@ var/list/admin_verbs_sounds = list(
/client/proc/play_local_sound,
/client/proc/play_sound,
/client/proc/play_server_sound,
/client/proc/play_intercomm_sound
/client/proc/play_intercomm_sound,
/client/proc/stop_global_admin_sounds
)
var/list/admin_verbs_event = list(
/client/proc/object_talk,
@@ -155,7 +157,7 @@ var/list/admin_verbs_debug = list(
/client/proc/enable_debug_verbs,
/client/proc/toggledebuglogs,
/client/proc/qdel_toggle,
/client/proc/gc_dump_hdl,
/client/proc/cmd_display_del_log,
/client/proc/debugNatureMapGenerator,
/client/proc/check_bomb_impacts,
/client/proc/test_movable_UI,
@@ -552,7 +554,7 @@ var/list/admin_verbs_snpc = list(
var/turf/epicenter = mob.loc
var/list/choices = list("Small Bomb", "Medium Bomb", "Big Bomb", "Custom Bomb")
var/choice = input("What size explosion would you like to produce?") in choices
var/choice = input("What size explosion would you like to produce?") as null|anything in choices
switch(choice)
if(null)
return 0
@@ -631,7 +633,7 @@ var/list/admin_verbs_snpc = list(
for(var/mob/V in hearers(O))
V.show_message(message, 2)
log_admin("[key_name(usr)] made [O] at [O.x], [O.y], [O.z] make a sound")
message_admins("\blue [key_name_admin(usr)] made [O] at [O.x], [O.y], [O.z] make a sound")
message_admins("<span class='notice'>[key_name_admin(usr)] made [O] at [O.x], [O.y], [O.z] make a sound</span>")
feedback_add_details("admin_verb","MS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/togglebuildmodeself()
@@ -679,7 +681,7 @@ var/list/admin_verbs_snpc = list(
to_chat(usr, "<b>Disabled air processing.</b>")
feedback_add_details("admin_verb","KA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] used 'kill air'.")
message_admins("\blue [key_name_admin(usr)] used 'kill air'.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] used 'kill air'.</span>", 1)
/client/proc/deadmin_self()
set name = "De-admin self"
@@ -988,12 +990,12 @@ var/list/admin_verbs_snpc = list(
verbs -= admin_verbs_snpc
verbs += /client/proc/show_snpc_verbs
to_chat(src, "<span class='interface'>SNPC verbs have been toggled off.</span>")
/client/proc/toggle_advanced_interaction()
set name = "Toggle Advanced Admin Interaction"
set category = "Admin"
set desc = "Allows you to interact with atoms such as buttons and doors, on top of regular machinery interaction."
if(!check_rights(R_ADMIN))
return
@@ -63,7 +63,7 @@
establish_db_connection()
if(!dbcon.IsConnected())
to_chat(usr, "\red Failed to establish database connection")
to_chat(usr, "<span class='warning'>Failed to establish database connection</span>")
return
if(!adm_ckey || !new_rank)
@@ -91,14 +91,14 @@
insert_query.Execute()
var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.[format_table_name("admin_log")] (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added new admin [adm_ckey] to rank [new_rank]');")
log_query.Execute()
to_chat(usr, "\blue New admin added.")
to_chat(usr, "<span class='notice'>New admin added.</span>")
else
if(!isnull(admin_id) && isnum(admin_id))
var/DBQuery/insert_query = dbcon.NewQuery("UPDATE [format_table_name("admin")] SET rank = '[new_rank]' WHERE id = [admin_id]")
insert_query.Execute()
var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.[format_table_name("admin_log")] (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Edited the rank of [adm_ckey] to [new_rank]');")
log_query.Execute()
to_chat(usr, "\blue Admin rank changed.")
to_chat(usr, "<span class='notice'>Admin rank changed.</span>")
/datum/admins/proc/log_admin_permission_modification(var/adm_ckey, var/new_permission)
if(config.admin_legacy_system)
@@ -112,7 +112,7 @@
establish_db_connection()
if(!dbcon.IsConnected())
to_chat(usr, "\red Failed to establish database connection")
to_chat(usr, "<span class='warning'>Failed to establish database connection</span>")
return
if(!adm_ckey || !new_permission)
@@ -146,13 +146,13 @@
insert_query.Execute()
var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.[format_table_name("admin_log")] (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Removed permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]');")
log_query.Execute()
to_chat(usr, "\blue Permission removed.")
to_chat(usr, "<span class='notice'>Permission removed.</span>")
else //This admin doesn't have this permission, so we are adding it.
var/DBQuery/insert_query = dbcon.NewQuery("UPDATE [format_table_name("admin")] SET flags = '[admin_rights | new_permission]' WHERE id = [admin_id]")
insert_query.Execute()
var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.[format_table_name("admin_log")] (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]')")
log_query.Execute()
to_chat(usr, "\blue Permission added.")
to_chat(usr, "<span class='notice'>Permission added.</span>")
/datum/admins/proc/updateranktodb(ckey,newrank)
establish_db_connection()
+2 -1
View File
@@ -536,7 +536,8 @@
for(var/mob/living/simple_animal/hostile/poison/terror_spider/S in ts_spiderlist)
if(S.ckey)
spider_minds += S.mind
dat += check_role_table("Terror Spiders", spider_minds)
if(spider_minds.len)
dat += check_role_table("Terror Spiders", spider_minds)
if(ticker.mode.ert.len)
dat += check_role_table("ERT", ticker.mode.ert)
+7 -5
View File
@@ -8,7 +8,7 @@
var/new_ckey = ckey(input(usr,"Who would you like to add a note for?","Enter a ckey",null) as text|null)
if(!new_ckey)
return
new_ckey = sanitizeSQL(new_ckey)
new_ckey = ckey(new_ckey)
var/DBQuery/query_find_ckey = dbcon.NewQuery("SELECT ckey FROM [format_table_name("player")] WHERE ckey = '[new_ckey]'")
if(!query_find_ckey.Execute())
var/err = query_find_ckey.ErrorMsg()
@@ -19,7 +19,7 @@
return
else
target_ckey = new_ckey
var/target_sql_ckey = sanitizeSQL(target_ckey)
var/target_sql_ckey = ckey(target_ckey)
if(!notetext)
notetext = input(usr,"Write your note","Add Note") as message|null
if(!notetext)
@@ -31,6 +31,8 @@
adminckey = usr.ckey
if(!adminckey)
return
else if(usr && (usr.ckey == ckey(adminckey))) // Don't ckeyize special note sources
adminckey = ckey(adminckey)
var/admin_sql_ckey = sanitizeSQL(adminckey)
if(!server)
if(config && config.server_name)
@@ -86,7 +88,7 @@
return
note_id = text2num(note_id)
var/target_ckey
var/sql_ckey = sanitizeSQL(usr.ckey)
var/sql_ckey = usr.ckey
var/DBQuery/query_find_note_edit = dbcon.NewQuery("SELECT ckey, notetext, adminckey FROM [format_table_name("notes")] WHERE id = [note_id]")
if(!query_find_note_edit.Execute())
var/err = query_find_note_edit.ErrorMsg()
@@ -128,7 +130,7 @@
if(!linkless)
output = navbar
if(target_ckey)
var/target_sql_ckey = sanitizeSQL(target_ckey)
var/target_sql_ckey = ckey(target_ckey)
var/DBQuery/query_get_notes = dbcon.NewQuery("SELECT id, timestamp, notetext, adminckey, last_editor, server FROM [format_table_name("notes")] WHERE ckey = '[target_sql_ckey]' ORDER BY timestamp")
if(!query_get_notes.Execute())
var/err = query_get_notes.ErrorMsg()
@@ -179,7 +181,7 @@
usr << browse(output, "window=show_notes;size=900x500")
/proc/show_player_info_irc(var/key as text)
var/target_sql_ckey = sanitizeSQL(key)
var/target_sql_ckey = ckey(key)
var/DBQuery/query_get_notes = dbcon.NewQuery("SELECT timestamp, notetext, adminckey, server FROM [format_table_name("notes")] WHERE ckey = '[target_sql_ckey]' ORDER BY timestamp")
if(!query_get_notes.Execute())
var/err = query_get_notes.ErrorMsg()
+102 -81
View File
@@ -34,35 +34,35 @@
if("1")
log_admin("[key_name(usr)] has spawned a traitor.")
if(!src.makeTraitors())
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
to_chat(usr, "<span class='warning'>Unfortunately there weren't enough candidates available.</span>")
if("2")
log_admin("[key_name(usr)] has spawned a changeling.")
if(!src.makeChanglings())
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
to_chat(usr, "<span class='warning'>Unfortunately there weren't enough candidates available.</span>")
if("3")
log_admin("[key_name(usr)] has spawned revolutionaries.")
if(!src.makeRevs())
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
to_chat(usr, "<span class='warning'>Unfortunately there weren't enough candidates available.</span>")
if("4")
log_admin("[key_name(usr)] has spawned a cultists.")
if(!src.makeCult())
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
to_chat(usr, "<span class='warning'>Unfortunately there weren't enough candidates available.</span>")
if("5")
log_admin("[key_name(usr)] has spawned a wizard.")
if(!src.makeWizard())
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
to_chat(usr, "<span class='warning'>Unfortunately there weren't enough candidates available.</span>")
if("6")
log_admin("[key_name(usr)] has spawned vampires.")
if(!src.makeVampires())
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
to_chat(usr, "<span class='warning'>Unfortunately there weren't enough candidates available.</span>")
if("7")
log_admin("[key_name(usr)] has spawned vox raiders.")
if(!src.makeVoxRaiders())
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
to_chat(usr, "<span class='warning'>Unfortunately there weren't enough candidates available.</span>")
if("8")
log_admin("[key_name(usr)] has spawned an abductor team.")
if(!src.makeAbductorTeam())
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
to_chat(usr, "<span class='warning'>Unfortunately there weren't enough candidates available.</span>")
else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"] || href_list["dbsearchip"] || href_list["dbsearchcid"] || href_list["dbsearchbantype"])
var/adminckey = href_list["dbsearchadmin"]
@@ -298,7 +298,7 @@
ticker.delay_end = !ticker.delay_end
log_admin("[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].")
message_admins("\blue [key_name_admin(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].</span>", 1)
href_list["secretsadmin"] = "check_antagonist"
else if(href_list["simplemake"])
@@ -315,7 +315,7 @@
if("Yes") delmob = 1
log_admin("[key_name(usr)] has used rudimentary transformation on [key_name(M)]. Transforming to [href_list["simplemake"]]; deletemob=[delmob]")
message_admins("\blue [key_name_admin(usr)] has used rudimentary transformation on [key_name_admin(M)]. Transforming to [href_list["simplemake"]]; deletemob=[delmob]", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] has used rudimentary transformation on [key_name_admin(M)]. Transforming to [href_list["simplemake"]]; deletemob=[delmob]</span>", 1)
switch(href_list["simplemake"])
if("observer") M.change_mob_type( /mob/dead/observer , null, null, delmob, 1 )
@@ -398,7 +398,7 @@
log_admin("[key_name(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [duration]")
ban_unban_log_save("[key_name(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [duration]")
message_admins("\blue [key_name_admin(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [duration]", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [duration]</span>", 1)
Banlist.cd = "/base/[banfolder]"
to_chat(Banlist["reason"], reason)
to_chat(Banlist["temp"], temp)
@@ -434,8 +434,8 @@
feedback_inc("ban_appearance_unban", 1)
DB_ban_unban(M.ckey, BANTYPE_APPEARANCE)
appearance_unban(M)
message_admins("\blue [key_name_admin(usr)] removed [key_name_admin(M)]'s appearance ban", 1)
to_chat(M, "\red<BIG><B>[usr.client.ckey] has removed your appearance ban.</B></BIG>")
message_admins("<span class='notice'>[key_name_admin(usr)] removed [key_name_admin(M)]'s appearance ban</span>", 1)
to_chat(M, "<span class='warning'><BIG><B>[usr.client.ckey] has removed your appearance ban.</B></BIG></span>")
else switch(alert("Appearance ban [M.ckey]?",,"Yes","No", "Cancel"))
if("Yes")
@@ -448,14 +448,14 @@
DB_ban_record(BANTYPE_APPEARANCE, M, -1, reason)
appearance_fullban(M, "[reason]; By [usr.ckey] on [time2text(world.realtime)]")
add_note(M.ckey, "Appearance banned - [reason]", null, usr.ckey, 0)
message_admins("\blue [key_name_admin(usr)] appearance banned [key_name_admin(M)]", 1)
to_chat(M, "\red<BIG><B>You have been appearance banned by [usr.client.ckey].</B></BIG>")
message_admins("<span class='notice'>[key_name_admin(usr)] appearance banned [key_name_admin(M)]</span>", 1)
to_chat(M, "<span class='warning'><BIG><B>You have been appearance banned by [usr.client.ckey].</B></BIG></span>")
to_chat(M, "<span class='danger'>The reason is: [reason]</span>")
to_chat(M, "\red Appearance ban can be lifted only upon request.")
to_chat(M, "<span class='warning'>Appearance ban can be lifted only upon request.</span>")
if(config.banappeals)
to_chat(M, "\red To try to resolve this matter head to [config.banappeals]")
to_chat(M, "<span class='warning'>To try to resolve this matter head to [config.banappeals]</span>")
else
to_chat(M, "\red No ban appeals URL has been set.")
to_chat(M, "<span class='warning'>No ban appeals URL has been set.</span>")
if("No")
return
@@ -790,7 +790,7 @@
switch(alert("Temporary Ban?",,"Yes","No", "Cancel"))
if("Yes")
if(config.ban_legacy_system)
to_chat(usr, "\red Your server is using the legacy banning system, which does not support temporary job bans. Consider upgrading. Aborting ban.")
to_chat(usr, "<span class='warning'>Your server is using the legacy banning system, which does not support temporary job bans. Consider upgrading. Aborting ban.</span>")
return
var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null
if(!mins)
@@ -812,10 +812,10 @@
else
msg += ", [job]"
add_note(M.ckey, "Banned from [msg] - [reason]", null, usr.ckey, 0)
message_admins("\blue [key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes", 1)
to_chat(M, "\red<BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG>")
message_admins("<span class='notice'>[key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes</span>", 1)
to_chat(M, "<span class='warning'><BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG></span>")
to_chat(M, "<span class='danger'>The reason is: [reason]</span>")
to_chat(M, "\red This jobban will be lifted in [mins] minutes.")
to_chat(M, "<span class='warning'>This jobban will be lifted in [mins] minutes.</span>")
href_list["jobban2"] = 1 // lets it fall through and refresh
return 1
if("No")
@@ -832,10 +832,10 @@
if(!msg) msg = job
else msg += ", [job]"
add_note(M.ckey, "Banned from [msg] - [reason]", null, usr.ckey, 0)
message_admins("\blue [key_name_admin(usr)] banned [key_name_admin(M)] from [msg]", 1)
to_chat(M, "\red<BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG>")
message_admins("<span class='notice'>[key_name_admin(usr)] banned [key_name_admin(M)] from [msg]</span>", 1)
to_chat(M, "<span class='warning'><BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG></span>")
to_chat(M, "<span class='danger'>The reason is: [reason]</span>")
to_chat(M, "\red Jobban can be lifted only upon request.")
to_chat(M, "<span class='warning'>Jobban can be lifted only upon request.</span>")
href_list["jobban2"] = 1 // lets it fall through and refresh
return 1
if("Cancel")
@@ -865,8 +865,8 @@
else
continue
if(msg)
message_admins("\blue [key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg]", 1)
to_chat(M, "\red<BIG><B>You have been un-jobbanned by [usr.client.ckey] from [msg].</B></BIG>")
message_admins("<span class='notice'>[key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg]</span>", 1)
to_chat(M, "<span class='warning'><BIG><B>You have been un-jobbanned by [usr.client.ckey] from [msg].</B></BIG></span>")
href_list["jobban2"] = 1 // lets it fall through and refresh
return 1
return 0 //we didn't do anything!
@@ -876,9 +876,9 @@
if(ismob(M))
if(!check_if_greater_rights_than(M.client))
return
to_chat(M, "\red You have been kicked from the server")
to_chat(M, "<span class='warning'>You have been kicked from the server</span>")
log_admin("[key_name(usr)] booted [key_name(M)].")
message_admins("\blue [key_name_admin(usr)] booted [key_name_admin(M)].", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] booted [key_name_admin(M)].</span>", 1)
//M.client = null
del(M.client)
@@ -933,7 +933,7 @@
if(t)
if((alert("Do you want to unjobban [t]?","Unjobban confirmation", "Yes", "No") == "Yes") && t) //No more misclicks! Unless you do it twice.
log_admin("[key_name(usr)] removed [t]")
message_admins("\blue [key_name_admin(usr)] removed [t]", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] removed [t]</span>", 1)
jobban_remove(t)
href_list["ban"] = 1 // lets it fall through and refresh
var/t_split = splittext(t, " - ")
@@ -960,17 +960,17 @@
return
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 1, mins)
ban_unban_log_save("[usr.client.ckey] has banned [M.ckey]. - Reason: [reason] - This will be removed in [mins] minutes.")
to_chat(M, "\red<BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG>")
to_chat(M, "\red This is a temporary ban, it will be removed in [mins] minutes.")
to_chat(M, "<span class='warning'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></span>")
to_chat(M, "<span class='warning'>This is a temporary ban, it will be removed in [mins] minutes.</span>")
feedback_inc("ban_tmp",1)
DB_ban_record(BANTYPE_TEMP, M, mins, reason)
feedback_inc("ban_tmp_mins",mins)
if(config.banappeals)
to_chat(M, "\red To try to resolve this matter head to [config.banappeals]")
to_chat(M, "<span class='warning'>To try to resolve this matter head to [config.banappeals]</span>")
else
to_chat(M, "\red No ban appeals URL has been set.")
to_chat(M, "<span class='warning'>No ban appeals URL has been set.</span>")
log_admin("[key_name(usr)] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")
message_admins("\blue [key_name_admin(usr)] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")
message_admins("<span class='notice'>[key_name_admin(usr)] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.</span>")
del(M.client)
//qdel(M) // See no reason why to delete mob. Important stuff can be lost. And ban can be lifted before round ends.
@@ -984,15 +984,15 @@
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0, M.lastKnownIP)
if("No")
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0)
to_chat(M, "\red<BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG>")
to_chat(M, "\red This is a permanent ban.")
to_chat(M, "<span class='warning'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></span>")
to_chat(M, "<span class='warning'>This is a permanent ban.</span>")
if(config.banappeals)
to_chat(M, "\red To try to resolve this matter head to [config.banappeals]")
to_chat(M, "<span class='warning'>To try to resolve this matter head to [config.banappeals]</span>")
else
to_chat(M, "\red No ban appeals URL has been set.")
to_chat(M, "<span class='warning'>No ban appeals URL has been set.</span>")
ban_unban_log_save("[usr.client.ckey] has permabanned [M.ckey]. - Reason: [reason] - This is a permanent ban.")
log_admin("[key_name(usr)] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")
message_admins("\blue[key_name_admin(usr)] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")
message_admins("<span class='notice'>[key_name_admin(usr)] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.</span>")
feedback_inc("ban_perma",1)
DB_ban_record(BANTYPE_PERMA, M, -1, reason)
@@ -1094,7 +1094,7 @@
return alert(usr, "The game has already started.", null, null, null, null)
master_mode = href_list["c_mode2"]
log_admin("[key_name(usr)] set the mode as [master_mode].")
message_admins("\blue [key_name_admin(usr)] set the mode as [master_mode].", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] set the mode as [master_mode].</span>", 1)
to_chat(world, "<span class='boldnotice'>The mode is now: [master_mode]</span>")
Game() // updates the main game menu
world.save_mode(master_mode)
@@ -1109,7 +1109,7 @@
return alert(usr, "The game mode has to be secret!", null, null, null, null)
secret_force_mode = href_list["f_secret2"]
log_admin("[key_name(usr)] set the forced secret mode as [secret_force_mode].")
message_admins("\blue [key_name_admin(usr)] set the forced secret mode as [secret_force_mode].", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] set the forced secret mode as [secret_force_mode].</span>", 1)
Game() // updates the main game menu
.(href, list("f_secret"=1))
@@ -1124,7 +1124,7 @@
return
log_admin("[key_name(usr)] attempting to monkeyize [key_name(H)]")
message_admins("\blue [key_name_admin(usr)] attempting to monkeyize [key_name_admin(H)]", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] attempting to monkeyize [key_name_admin(H)]</span>", 1)
H.monkeyize()
@@ -1140,7 +1140,7 @@
return
log_admin("[key_name(usr)] attempting to corgize [key_name(H)]")
message_admins("\blue [key_name_admin(usr)] attempting to corgize [key_name_admin(H)]", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] attempting to corgize [key_name_admin(H)]</span>", 1)
H.corgize()
else if(href_list["makePAI"])
@@ -1164,7 +1164,7 @@
name = painame
log_admin("[key_name(usr)] attempting to pAIze [key_name(H)]")
message_admins("\blue [key_name_admin(usr)] attempting to pAIze [key_name_admin(H)]", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] attempting to pAIze [key_name_admin(H)]</span>", 1)
H.paize(name)
else if(href_list["forcespeech"])
@@ -1179,7 +1179,7 @@
M.say(speech)
speech = sanitize(speech) // Nah, we don't trust them
log_admin("[key_name(usr)] forced [key_name(M)] to say: [speech]")
message_admins("\blue [key_name_admin(usr)] forced [key_name_admin(M)] to say: [speech]")
message_admins("<span class='notice'>[key_name_admin(usr)] forced [key_name_admin(M)] to say: [speech]</span>")
else if(href_list["sendtoprison"])
if(!check_rights(R_ADMIN)) return
@@ -1223,9 +1223,9 @@
prisoner.equip_to_slot_or_del(new /obj/item/clothing/under/color/orange(prisoner), slot_w_uniform)
prisoner.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(prisoner), slot_shoes)
to_chat(M, "\red You have been sent to the prison station!")
to_chat(M, "<span class='warning'>You have been sent to the prison station!</span>")
log_admin("[key_name(usr)] sent [key_name(M)] to the prison station.")
message_admins("\blue [key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.</span>", 1)
else if(href_list["sendbacktolobby"])
if(!check_rights(R_ADMIN))
@@ -1278,7 +1278,7 @@
sleep(5)
M.loc = pick(tdome1)
spawn(50)
to_chat(M, "\blue You have been sent to the Thunderdome.")
to_chat(M, "<span class='notice'>You have been sent to the Thunderdome.</span>")
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Team 1)")
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Team 1)", 1)
@@ -1308,7 +1308,7 @@
sleep(5)
M.loc = pick(tdome2)
spawn(50)
to_chat(M, "\blue You have been sent to the Thunderdome.")
to_chat(M, "<span class='notice'>You have been sent to the Thunderdome.</span>")
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Team 2)")
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Team 2)", 1)
@@ -1330,7 +1330,7 @@
sleep(5)
M.loc = pick(tdomeadmin)
spawn(50)
to_chat(M, "\blue You have been sent to the Thunderdome.")
to_chat(M, "<span class='notice'>You have been sent to the Thunderdome.</span>")
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Admin.)")
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Admin.)", 1)
@@ -1364,7 +1364,7 @@
sleep(5)
M.loc = pick(tdomeobserve)
spawn(50)
to_chat(M, "\blue You have been sent to the Thunderdome.")
to_chat(M, "<span class='notice'>You have been sent to the Thunderdome.</span>")
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Observer.)")
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Observer.)", 1)
@@ -1386,7 +1386,7 @@
sleep(5)
M.loc = pick(aroomwarp)
spawn(50)
to_chat(M, "\blue You have been sent to the <b>Admin Room!</b>.")
to_chat(M, "<span class='notice'>You have been sent to the <b>Admin Room!</b>.</span>")
log_admin("[key_name(usr)] has sent [key_name(M)] to the Admin Room")
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the Admin Room", 1)
@@ -1400,7 +1400,7 @@
return
L.revive()
message_admins("\red Admin [key_name_admin(usr)] healed / revived [key_name_admin(L)]!", 1)
message_admins("<span class='warning'>Admin [key_name_admin(usr)] healed / revived [key_name_admin(L)]!</span>", 1)
log_admin("[key_name(usr)] healed / revived [key_name(L)]")
else if(href_list["makeai"])
@@ -1414,7 +1414,7 @@
if(alert(usr, "Confirm make ai?",, "Yes", "No") != "Yes")
return
message_admins("\red Admin [key_name_admin(usr)] AIized [key_name_admin(H)]!", 1)
message_admins("<span class='warning'>Admin [key_name_admin(usr)] AIized [key_name_admin(H)]!</span>", 1)
log_admin("[key_name(usr)] AIized [key_name(H)]")
var/mob/living/silicon/ai/ai_character = H.AIize()
ai_character.moveToAILandmark()
@@ -1619,7 +1619,7 @@
log_admin("[key_name(H)] got their cookie, spawned by [key_name(src.owner)]")
message_admins("[key_name_admin(H)] got their cookie, spawned by [key_name_admin(src.owner)]")
feedback_inc("admin_cookies_spawned",1)
to_chat(H, "\blue Your prayers have been answered!! You received the <b>best cookie</b>!")
to_chat(H, "<span class='notice'>Your prayers have been answered!! You received the <b>best cookie</b>!</span>")
else if(href_list["BlueSpaceArtillery"])
if(!check_rights(R_ADMIN|R_EVENT)) return
@@ -1741,33 +1741,42 @@
btypes += "Heal Over Time"
btypes += "Permanent Regeneration"
btypes += "Super Powers"
var/blessing = input(src.owner, "How would you like to bless [M]?", "Its good to be good...", "") as null|anything in btypes
var/blessing = input(owner, "How would you like to bless [M]?", "Its good to be good...", "") as null|anything in btypes
if(!(blessing in btypes))
return
var/logmsg = null
switch(blessing)
if("To Arrivals")
M.forceMove(pick(latejoin))
to_chat(M, "<span class='userdanger'>You are abruptly pulled through space!</span>")
logmsg = "a teleport to arrivals."
if("Moderate Heal")
M.adjustBruteLoss(-25)
M.adjustFireLoss(-25)
M.adjustToxLoss(-25)
M.adjustOxyLoss(-25)
to_chat(M,"<span class='userdanger'>You feel invigorated!</span>")
logmsg = "a moderate heal."
if("Heal Over Time")
H.reagents.add_reagent("salglu_solution", 30)
H.reagents.add_reagent("salbutamol", 20)
H.reagents.add_reagent("spaceacillin", 20)
logmsg = "a heal over time."
if("Permanent Regeneration")
H.dna.SetSEState(REGENERATEBLOCK, 1)
genemutcheck(H, REGENERATEBLOCK, null, MUTCHK_FORCED)
H.update_mutations()
logmsg = "permanent regeneration."
if("Super Powers")
var/list/default_genes = list(REGENERATEBLOCK, NOBREATHBLOCK, COLDBLOCK)
for(var/gene in default_genes)
H.dna.SetSEState(gene, 1)
genemutcheck(H, gene, null, MUTCHK_FORCED)
H.update_mutations()
logmsg = "superpowers."
if(logmsg)
log_admin("[key_name(owner)] answered [key_name(M)]'s prayer with a blessing: [logmsg]")
message_admins("[key_name_admin(owner)] answered [key_name_admin(M)]'s prayer with a blessing: [logmsg]")
else if(href_list["Smite"])
if(!check_rights(R_ADMIN))
return
@@ -1784,9 +1793,10 @@
ptypes += "Cluwne"
ptypes += "Mutagen Cookie"
ptypes += "Hellwater Cookie"
var/punishment = input(src.owner, "How would you like to smite [M]?", "Its good to be baaaad...", "") as null|anything in ptypes
var/punishment = input(owner, "How would you like to smite [M]?", "Its good to be baaaad...", "") as null|anything in ptypes
if(!(punishment in ptypes))
return
var/logmsg = null
switch(punishment)
if("Lightning bolt")
M.electrocute_act(5, "Lightning Bolt", safety=1)
@@ -1794,20 +1804,25 @@
M.adjustFireLoss(75)
M.Weaken(5)
to_chat(M, "<span class='userdanger'>The gods have punished you for your sins!</span>")
logmsg = "a lightning bolt."
if("Brain Damage")
H.adjustBrainLoss(75)
logmsg = "75 brain damage."
if("Fire Death")
to_chat(M,"<span class='userdanger'>You feel hotter than usual. Maybe you should lowe-wait, is that your hand melting?</span>")
var/turf/simulated/T = get_turf(M)
new /obj/effect/hotspot(T)
M.adjustFireLoss(150)
logmsg = "a firey death."
if("Honk Tumor")
if(!H.get_int_organ(/obj/item/organ/internal/honktumor))
var/obj/item/organ/internal/organ = new /obj/item/organ/internal/honktumor
to_chat(H, "<span class='userdanger'>Life seems funnier, somehow.</span>")
organ.insert(H)
logmsg = "a honk tumor."
if("Cluwne")
H.makeCluwne()
logmsg = "cluwned."
if("Mutagen Cookie")
var/obj/item/weapon/reagent_containers/food/snacks/cookie/evilcookie = new /obj/item/weapon/reagent_containers/food/snacks/cookie
evilcookie.reagents.add_reagent("mutagen", 10)
@@ -1815,6 +1830,7 @@
evilcookie.bitesize = 100
H.drop_l_hand()
H.equip_to_slot_or_del(evilcookie, slot_l_hand)
logmsg = "a mutagen cookie."
if("Hellwater Cookie")
var/obj/item/weapon/reagent_containers/food/snacks/cookie/evilcookie = new /obj/item/weapon/reagent_containers/food/snacks/cookie
evilcookie.reagents.add_reagent("hell_water", 25)
@@ -1822,8 +1838,13 @@
evilcookie.bitesize = 100
H.drop_l_hand()
H.equip_to_slot_or_del(evilcookie, slot_l_hand)
logmsg = "a hellwater cookie."
if("Gib")
logmsg = "gibbed."
M.gib(FALSE)
if(logmsg)
log_admin("[key_name(owner)] answered [key_name(M)]'s prayer with a smiting: [logmsg]")
message_admins("[key_name_admin(owner)] answered [key_name_admin(M)]'s prayer with a smiting: [logmsg]")
else if(href_list["FaxReplyTemplate"])
if(!check_rights(R_ADMIN))
return
@@ -1965,7 +1986,7 @@
usr << browse(data, "window=[B.name]")
else
to_chat(usr, "\red The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]")
to_chat(usr, "<span class='warning'>The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]</span>")
else if(href_list["AdminFaxViewPage"])
if(!check_rights(R_ADMIN))
@@ -2097,14 +2118,14 @@
if(destination != "All Departments")
if(!fax.receivefax(P))
to_chat(src.owner, "\red Message transmission failed.")
to_chat(src.owner, "<span class='warning'>Message transmission failed.</span>")
return
else
for(var/obj/machinery/photocopier/faxmachine/F in allfaxes)
if(is_station_level(F.z))
spawn(0)
if(!F.receivefax(P))
to_chat(src.owner, "\red Message transmission to [F.department] failed.")
to_chat(src.owner, "<span class='warning'>Message transmission to [F.department] failed.</span>")
var/datum/fax/admin/A = new /datum/fax/admin()
A.name = P.name
@@ -2119,7 +2140,7 @@
A.sent_by = usr
A.sent_at = world.time
to_chat(src.owner, "\blue Message transmitted successfully.")
to_chat(src.owner, "<span class='notice'>Message transmitted successfully.</span>")
if(notify == "Yes")
var/mob/living/carbon/human/H = sender
if(istype(H) && H.stat == CONSCIOUS && (istype(H.l_ear, /obj/item/device/radio/headset) || istype(H.r_ear, /obj/item/device/radio/headset)))
@@ -2419,30 +2440,30 @@
feedback_add_details("admin_secrets_fun_used","Grav")
if(gravity_is_on)
log_admin("[key_name(usr)] toggled gravity on.", 1)
message_admins("\blue [key_name_admin(usr)] toggled gravity on.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] toggled gravity on.</span>", 1)
event_announcement.Announce("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.")
else
log_admin("[key_name(usr)] toggled gravity off.", 1)
message_admins("\blue [key_name_admin(usr)] toggled gravity off.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] toggled gravity off.</span>", 1)
event_announcement.Announce("Feedback surge detected in mass-distributions systems. Artifical gravity has been disabled whilst the system reinitializes. Further failures may result in a gravitational collapse and formation of blackholes. Have a nice day.")
if("power")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","P")
log_admin("[key_name(usr)] made all areas powered", 1)
message_admins("\blue [key_name_admin(usr)] made all areas powered", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] made all areas powered</span>", 1)
power_restore()
if("unpower")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","UP")
log_admin("[key_name(usr)] made all areas unpowered", 1)
message_admins("\blue [key_name_admin(usr)] made all areas unpowered", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] made all areas unpowered</span>", 1)
power_failure()
if("quickpower")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","QP")
log_admin("[key_name(usr)] made all SMESs powered", 1)
message_admins("\blue [key_name_admin(usr)] made all SMESs powered", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] made all SMESs powered</span>", 1)
power_restore_quick()
if("prisonwarp")
if(!ticker)
@@ -2450,7 +2471,7 @@
return
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","PW")
message_admins("\blue [key_name_admin(usr)] teleported all players to the prison station.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] teleported all players to the prison station.</span>", 1)
for(var/mob/living/carbon/human/H in mob_list)
var/turf/loc = find_loc(H)
var/security = 0
@@ -2517,7 +2538,7 @@
A.mind.objectives += new_objective
ticker.mode.greet_traitor(A.mind)
ticker.mode.finalize_traitor(A.mind)
message_admins("\blue [key_name_admin(usr)] used everyone is a traitor secret. Objective is [objective]", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] used everyone is a traitor secret. Objective is [objective]</span>", 1)
log_admin("[key_name(usr)] used everyone is a traitor secret. Objective is [objective]")
if("togglebombcap")
@@ -2557,20 +2578,20 @@
var/Message = rand(1,4)
switch(Message)
if(1)
M.show_message(text("\blue You shudder as if cold..."), 1)
M.show_message(text("<span class='notice'>You shudder as if cold...</span>"), 1)
if(2)
M.show_message(text("\blue You feel something gliding across your back..."), 1)
M.show_message(text("<span class='notice'>You feel something gliding across your back...</span>"), 1)
if(3)
M.show_message(text("\blue Your eyes twitch, you feel like something you can't see is here..."), 1)
M.show_message(text("<span class='notice'>Your eyes twitch, you feel like something you can't see is here...</span>"), 1)
if(4)
M.show_message(text("\blue You notice something moving out of the corner of your eye, but nothing is there..."), 1)
M.show_message(text("<span class='notice'>You notice something moving out of the corner of your eye, but nothing is there...</span>"), 1)
for(var/obj/W in orange(5,M))
if(prob(25) && !W.anchored)
step_rand(W)
sleep(rand(100,1000))
for(var/mob/M in player_list)
if(M.stat != 2)
M.show_message(text("\blue The chilling wind suddenly stops..."), 1)
M.show_message(text("<span class='notice'>The chilling wind suddenly stops...</span>"), 1)
/* if("shockwave")
ok = 1
to_chat(world, "<span class='danger'><big>ALERT: STATION STRESS CRITICAL</big></span>")
@@ -2754,22 +2775,22 @@
message_admins("<span class='adminnotice'>[key_name_admin(usr)] tried starting a Thunderdome match, but no ghosts signed up.</span>")
if("securitylevel0")
set_security_level(0)
message_admins("\blue [key_name_admin(usr)] change security level to Green.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] change security level to Green.</span>", 1)
if("securitylevel1")
set_security_level(1)
message_admins("\blue [key_name_admin(usr)] change security level to Blue.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] change security level to Blue.</span>", 1)
if("securitylevel2")
set_security_level(2)
message_admins("\blue [key_name_admin(usr)] change security level to Red.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] change security level to Red.</span>", 1)
if("securitylevel3")
set_security_level(3)
message_admins("\blue [key_name_admin(usr)] change security level to Gamma.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] change security level to Gamma.</span>", 1)
if("securitylevel4")
set_security_level(4)
message_admins("\blue [key_name_admin(usr)] change security level to Epsilon.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] change security level to Epsilon.</span>", 1)
if("securitylevel5")
set_security_level(5)
message_admins("\blue [key_name_admin(usr)] change security level to Delta.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] change security level to Delta.</span>", 1)
if("moveminingshuttle")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","ShM")
@@ -3132,7 +3153,7 @@
error_viewer.showTo(usr, locate(href_list["viewruntime_backto"]), href_list["viewruntime_linear"])
else
error_viewer.showTo(usr, null, href_list["viewruntime_linear"])
else if(href_list["add_station_goal"])
if(!check_rights(R_EVENT))
return
+2 -2
View File
@@ -109,13 +109,13 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
switch(selected_type)
if("Mentorhelp")
msg = "<span class='mentorhelp'>[selected_type]: </span><span class='boldnotice'>[key_name(src, 1, 1, selected_type)] (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[mob.UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) ([admin_jump_link(mob)]) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) (<A HREF='?_src_=holder;rejectadminhelp=[ref_client]'>REJT</A>) [ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""] (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=holder;take_question=[mob.UID()];is_mhelp=1'>TAKE</A>) :</span> <span class='mentorhelp'>[msg]</span>"
msg = "<span class='mentorhelp'>[selected_type]: </span><span class='boldnotice'>[key_name(src, 1, 1, selected_type)] (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[mob.UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) ([admin_jump_link(mob)]) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) (<A HREF='?_src_=holder;rejectadminhelp=[ref_client]'>REJT</A>) [ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""] (<A HREF='?_src_=holder;take_question=[mob.UID()];is_mhelp=1'>TAKE</A>) :</span> <span class='mentorhelp'>[msg]</span>"
for(var/client/X in mentorholders + modholders + adminholders)
if(X.prefs.sound & SOUND_ADMINHELP)
X << 'sound/effects/adminhelp.ogg'
to_chat(X, msg)
if("Adminhelp")
msg = "<span class='adminhelp'>[selected_type]: </span><span class='boldnotice'>[key_name(src, 1, 1, selected_type)] (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[mob.UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) ([admin_jump_link(mob)]) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) (<A HREF='?_src_=holder;rejectadminhelp=[ref_client]'>REJT</A>) [ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""] (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=holder;take_question=[mob.UID()]'>TAKE</A>) :</span> <span class='adminhelp'>[msg]</span>"
msg = "<span class='adminhelp'>[selected_type]: </span><span class='boldnotice'>[key_name(src, 1, 1, selected_type)] (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[mob.UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) ([admin_jump_link(mob)]) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) (<A HREF='?_src_=holder;rejectadminhelp=[ref_client]'>REJT</A>) [ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""] (<A HREF='?_src_=holder;take_question=[mob.UID()]'>TAKE</A>) :</span> <span class='adminhelp'>[msg]</span>"
for(var/client/X in modholders + adminholders)
if(X.prefs.sound & SOUND_ADMINHELP)
X << 'sound/effects/adminhelp.ogg'
+5 -5
View File
@@ -162,8 +162,8 @@
C.ckey_last_pm = ckey*/
//play the recieving admin the adminhelp sound (if they have them enabled)
//non-admins shouldn't be able to disable this
if(C.prefs.sound & SOUND_ADMINHELP)
//non-admins always hear the sound, as they cannot toggle it
if((!C.holder) || (C.prefs.sound & SOUND_ADMINHELP))
C << 'sound/effects/adminhelp.ogg'
log_admin("PM: [key_name(src)]->[key_name(C)]: [msg]")
@@ -197,8 +197,8 @@
sanitize(msg)
if(length(msg) > 400) // TODO: if message length is over 400, divide it up into seperate messages, the message length restriction is based on IRC limitations. Probably easier to do this on the bots ends.
to_chat(src, "\red Your message was not sent because it was more then 400 characters find your message below for ease of copy/pasting")
to_chat(src, "\blue [msg]")
to_chat(src, "<span class='warning'>Your message was not sent because it was more then 400 characters find your message below for ease of copy/pasting</span>")
to_chat(src, "<span class='notice'>[msg]</span>")
return
send2adminirc("PlayerPM from [key_name(src)]: [html_decode(msg)]")
@@ -210,4 +210,4 @@
if(X == src)
continue
if(check_rights(R_ADMIN|R_MOD|R_MENTOR, 0, X.mob))
to_chat(X, "<B><font color='blue'>PM: [key_name(src, X, 0)]-&gt;IRC-Admins:</B> \blue [msg]</font>")
to_chat(X, "<B><font color='blue'>PM: [key_name(src, X, 0)]-&gt;IRC-Admins:</B> <span class='notice'>[msg]</span></font>")
+38 -729
View File
@@ -296,7 +296,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M:Alienize()
feedback_add_details("admin_verb","MKAL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] made [key_name(M)] into an alien.")
message_admins("\blue [key_name_admin(usr)] made [key_name(M)] into an alien.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] made [key_name(M)] into an alien.</span>", 1)
else
alert("Invalid mob")
@@ -316,7 +316,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M:slimeize()
feedback_add_details("admin_verb","MKMET") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] made [key_name(M)] into a slime.")
message_admins("\blue [key_name_admin(usr)] made [key_name(M)] into a slime.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] made [key_name(M)] into a slime.</span>", 1)
else
alert("Invalid mob")
@@ -336,7 +336,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(S)
S.create(M)
log_admin("[key_name(src)] has turned [M.key] into a Superhero.")
message_admins("\blue [key_name_admin(usr)] made [key_name(M)] into a Superhero.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] made [key_name(M)] into a Superhero.</span>", 1)
else
alert("Invalid mob")
@@ -424,7 +424,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
alert("Invalid mob")
feedback_add_details("admin_verb","GFA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(src)] has granted [M.key] full access.")
message_admins("\blue [key_name_admin(usr)] has granted [M.key] full access.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] has granted [M.key] full access.</span>", 1)
/client/proc/cmd_assume_direct_control(var/mob/M in mob_list)
set category = "Admin"
@@ -440,7 +440,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
else
var/mob/dead/observer/ghost = new/mob/dead/observer(M,1)
ghost.ckey = M.ckey
message_admins("\blue [key_name_admin(usr)] assumed direct control of [M].", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] assumed direct control of [M].</span>", 1)
log_admin("[key_name(usr)] assumed direct control of [M].")
var/mob/adminmob = src.mob
M.ckey = src.ckey
@@ -574,67 +574,35 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
alert("Invalid mob")
return
//log_admin("[key_name(src)] has alienized [M.key].")
var/list/dresspacks = list(
var/list/choices = list(
"strip",
"as job...",
"Engineer RIG",
"CE RIG",
"Mining RIG",
"Syndi RIG",
"Wizard RIG",
"Medical RIG",
"Atmos RIG",
"standard space gear",
"tournament standard red",
"tournament standard green",
"tournament gangster",
"tournament chef",
"tournament janitor",
"pirate",
"space pirate",
"soviet tourist",
"soviet soldier",
"soviet admiral",
"tunnel clown",
"mime assassin",
"survivor",
"greytide",
"greytide leader",
"greytide xeno",
"masked killer",
"singuloth knight",
"dark lord",
"assassin",
"spy",
"vox",
"death commando",
"syndicate agent",
"syndicate operative",
"syndicate bomber",
"syndicate strike team",
"syndicate officer",
"chrono legionnaire",
"blue wizard",
"red wizard",
"marisa wizard",
"emergency response team member",
"emergency response team leader",
"nt vip guest",
"nt navy officer", // now in jobs list
"nt navy captain",
"nt special ops officer", // now in jobs list
"nt special ops formal",
)
"emergency response team member",
"emergency response team leader"
)
var/admin_outfits = subtypesof(/datum/outfit/admin)
for(var/type in admin_outfits)
var/datum/outfit/O = type
var/name = initial(O.name)
if(name != "Naked")
choices[initial(O.name)] = type
var/dostrip = 0
switch(alert("Strip [M] before dressing?", "Strip?", "Yes", "No", "Cancel"))
if("Yes")
dostrip = 1
if("Cancel")
return
var/dresscode = input("Select dress for [M]", "Robust quick dress shop") as null|anything in dresspacks
var/dresscode = input("Select dress for [M]", "Robust quick dress shop") as null|anything in choices
if(isnull(dresscode))
return
var/datum/outfit/O
if(!(dresscode in list("strip", "as job...", "emergency response team member", "emergency response team leader")))
O = choices[dresscode]
var/datum/job/jobdatum
if(dresscode == "as job...")
var/jobname = input("Select job", "Robust quick dress shop") as null|anything in get_all_jobs()
@@ -648,6 +616,8 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(istype(I, /obj/item/organ))
continue
qdel(I)
switch(dresscode)
if("strip")
//do nothing
@@ -657,495 +627,6 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(jobdatum)
dresscode = "[jobdatum.title]"
jobdatum.equip(M)
equip_special_id(M,jobdatum.get_access(),jobdatum.title, jobdatum.idtype)
if("standard space gear")
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
var /obj/item/weapon/tank/jetpack/J = new /obj/item/weapon/tank/jetpack/oxygen(M)
M.equip_to_slot_or_del(J, slot_back)
J.turn_on()
M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask)
J.Topic(null, list("stat" = 1))
equip_special_id(M,get_all_accesses(), "Space Explorer", /obj/item/weapon/card/id)
if("Engineer RIG", "CE RIG", "Mining RIG", "Syndi RIG", "Wizard RIG", "Medical RIG", "Atmos RIG")
if(dresscode=="Engineer RIG")
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig(M), slot_head)
else if(dresscode=="CE RIG")
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/elite(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/elite(M), slot_head)
else if(dresscode=="Mining RIG")
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/mining(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/mining(M), slot_head)
else if(dresscode=="Syndi RIG")
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/syndi(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/syndi(M), slot_head)
else if(dresscode=="Wizard RIG")
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/wizard(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/wizard(M), slot_head)
else if(dresscode=="Medical RIG")
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/medical(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/medical(M), slot_head)
else if(dresscode=="Atmos RIG")
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/atmos(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/atmos(M), slot_head)
var /obj/item/weapon/tank/jetpack/J = new /obj/item/weapon/tank/jetpack/oxygen(M)
M.equip_to_slot_or_del(J, slot_back)
J.turn_on()
M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask)
equip_special_id(M,get_all_accesses(), "RIG Tester", /obj/item/weapon/card/id)
J.Topic(null, list("stat" = 1))
if("tournament standard red", "tournament standard green") //we think stunning weapon is too overpowered to use it on tournaments. --rastaf0
if(dresscode=="tournament standard red")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/red(M), slot_w_uniform)
else
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/green(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/thunderdome(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/destroyer(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/smokebomb(M), slot_r_store)
if("tournament gangster") //gangster are supposed to fight each other. --rastaf0
M.equip_to_slot_or_del(new /obj/item/clothing/under/det(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/det_suit(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/head/det_hat(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/proto(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_l_store)
if("tournament chef") //Steven Seagal FTW
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/rollingpin(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_s_store)
if("tournament janitor")
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
var/obj/item/weapon/storage/backpack/backpack = new(M)
for(var/obj/item/I in backpack)
qdel(I)
M.equip_to_slot_or_del(backpack, slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/mop(M), slot_r_hand)
var/obj/item/weapon/reagent_containers/glass/bucket/bucket = new(M)
bucket.reagents.add_reagent("water", 70)
M.equip_to_slot_or_del(bucket, slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
if("pirate")
M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/head/bandana(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand)
equip_special_id(M,list(access_maint_tunnels), "Pirate", /obj/item/weapon/card/id)
if("space pirate") // not spaceworthy, just has fancier coat.
M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/pirate(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/pirate(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand)
equip_special_id(M,list(access_maint_tunnels), "Space Pirate", /obj/item/weapon/card/id)
if("tunnel clown")
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/hooded/chaplain_hoodie(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(M), slot_r_store)
equip_special_id(M,list(access_clown, access_theatre, access_maint_tunnels), "Tunnel Clown", /obj/item/weapon/card/id)
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
var/obj/item/weapon/twohanded/fireaxe/fire_axe = new(M)
M.equip_to_slot_or_del(fire_axe, slot_r_hand)
if("mime assassin")
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/mime(M), slot_back)
if(M.gender == FEMALE)
M.equip_or_collect(new /obj/item/clothing/under/sexymime(M), slot_w_uniform)
M.equip_or_collect(new /obj/item/clothing/mask/gas/sexymime(M), slot_wear_mask)
else
M.equip_or_collect(new /obj/item/clothing/under/mime(M), slot_w_uniform)
M.equip_or_collect(new /obj/item/clothing/mask/gas/mime(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/white(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/head/beret(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/suspenders(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/syndie_kit/caneshotgun, slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/toy/crayon/mime, slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/pistol(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/suppressor(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/pen/sleepy(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket(M), slot_in_backpack)
var/obj/item/device/pda/mime/pda = new(M)
pda.owner = M.real_name
pda.ownjob = "Mime"
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
M.equip_to_slot_or_del(pda, slot_wear_pda)
equip_special_id(M,list(access_mime, access_theatre, access_maint_tunnels), "Mime", /obj/item/weapon/card/id/syndicate)
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
if("survivor")
M.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/latex(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
equip_special_id(M,list(access_maint_tunnels), "Survivor", /obj/item/weapon/card/id)
for(var/obj/item/carried_item in M.contents)
if(!istype(carried_item, /obj/item/weapon/implant))
carried_item.add_blood(M)
if("greytide")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/toolbox/mechanical(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/flag/grey(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
equip_special_id(M,list(access_maint_tunnels), "Greytide", /obj/item/weapon/card/id)
if("greytide leader")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/toolbox/mechanical(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/flag/grey(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/yellow(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/clothing/head/welding(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
equip_special_id(M,list(access_maint_tunnels), "Greytide Leader", /obj/item/weapon/card/id)
if("greytide xeno")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/xenos(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/xenos(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/toy/toy_xeno(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/yellow(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/clothing/head/welding(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
equip_special_id(M,list(access_maint_tunnels), "Legit Xenomorph", /obj/item/weapon/card/id)
if("masked killer")
M.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/latex(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/head/welding(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/scalpel(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
equip_special_id(M,list(access_maint_tunnels), "Masked Killer", /obj/item/weapon/card/id/syndicate, "syndie")
var/obj/item/weapon/twohanded/fireaxe/fire_axe = new(M)
M.equip_to_slot_or_del(fire_axe, slot_r_hand)
for(var/obj/item/carried_item in M.contents)
if(!istype(carried_item, /obj/item/weapon/implant))
carried_item.add_blood(M)//Oh yes, there will be blood...
if("dark lord")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/syndicate(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/dualsaber/red(M), slot_l_hand)
var/obj/item/clothing/suit/hooded/chaplain_hoodie/robe = new /obj/item/clothing/suit/hooded/chaplain_hoodie(M)
robe.name = "dark lord robes"
robe.hood.name = "dark lord hood"
M.equip_to_slot_or_del(robe, slot_wear_suit)
equip_special_id(M,get_all_accesses(), "Dark Lord", /obj/item/weapon/card/id/syndicate, "syndie")
if("assassin")
M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/syndicate(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wcoat(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/saber(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
var/obj/item/weapon/storage/secure/briefcase/sec_briefcase = new(M)
for(var/obj/item/briefcase_item in sec_briefcase)
qdel(briefcase_item)
for(var/i=3, i>0, i--)
sec_briefcase.handle_item_insertion(new /obj/item/weapon/spacecash/c1000, 1)
sec_briefcase.handle_item_insertion(new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow, 1)
sec_briefcase.handle_item_insertion(new /obj/item/weapon/gun/projectile/revolver/mateba, 1)
sec_briefcase.handle_item_insertion(new /obj/item/ammo_box/a357, 1)
sec_briefcase.handle_item_insertion(new /obj/item/weapon/grenade/plastic/c4, 1)
// briefcase must be unlocked by setting the code.
M.equip_to_slot_or_del(sec_briefcase, slot_l_hand)
var/obj/item/weapon/implant/dust/DUST = new /obj/item/weapon/implant/dust(M)
DUST.implant(M)
var/obj/item/device/pda/heads/pda = new(M)
pda.owner = M.real_name
pda.ownjob = "Reaper"
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
M.equip_to_slot_or_del(pda, slot_wear_pda)
equip_special_id(M,get_all_accesses(), "Reaper", /obj/item/weapon/card/id/syndicate, "syndie")
if("spy")
M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/really_black(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/pistol(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/suppressor(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/card/emag(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/security/chameleon(M), slot_glasses)
var/obj/item/clothing/gloves/combat/G = new /obj/item/clothing/gloves/combat(src)
G.name = "black gloves"
M.equip_to_slot_or_del(G, slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/syndicate(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/saber(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/pen/sleepy(M), slot_r_store)
var/obj/item/weapon/implant/dust/DUST = new /obj/item/weapon/implant/dust(M)
DUST.implant(M)
M.equip_to_slot_or_del(new /obj/item/weapon/implanter/storage(M), slot_in_backpack)
var/obj/item/device/pda/heads/pda = new(M)
pda.owner = M.real_name
pda.ownjob = "Spy"
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
M.equip_to_slot_or_del(pda, slot_belt)
equip_special_id(M,list(access_maint_tunnels), "Spy", /obj/item/weapon/card/id/syndicate, "syndie")
if("vox")
if(istype(M, /mob/living/carbon/human/voxarmalis)) // have to do this, they cannot wear normal vox gear!
M.equip_to_slot_or_del(new /obj/item/clothing/under/vox_grey(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/syndicate(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/carapace(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/vox/carapace(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/under/vox/vox_robes (M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/vox(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/weapon/card/id/syndicate/vox(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/syndicate, slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/yellow/vox, slot_gloves)
M.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic, slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/vox, slot_r_store)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle, slot_glasses)
M.equip_to_slot_or_del(new /obj/item/device/flashlight, slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs/cable/zipties, slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/device/flash, slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/noisecannon, slot_in_backpack)
equip_special_id(M,get_all_accesses(), "Vox Armalis", /obj/item/weapon/card/id/syndicate/vox, "syndie")
else
M.equip_vox_raider()
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_l_hand)
M.regenerate_icons()
if("death commando")
M.equip_death_commando()
if("syndicate agent")
M.equip_or_collect(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
M.equip_or_collect(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_or_collect(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_or_collect(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/device/flashlight(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/card/emag(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt)
M.equip_or_collect(new /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/device/radio/headset/syndicate(M), slot_l_ear)
equip_special_id(M,get_syndicate_access("Syndicate Operative"), "Syndicate Agent", /obj/item/weapon/card/id/syndicate, "syndie")
var/obj/item/device/radio/uplink/U = new /obj/item/device/radio/uplink(M)
U.hidden_uplink.uplink_owner="[M.key]"
U.hidden_uplink.uses = 20
M.equip_to_slot_or_del(U, slot_r_store)
if("syndicate bomber")
M.equip_or_collect(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
M.equip_or_collect(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_or_collect(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_or_collect(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/device/flashlight(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/card/emag(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/device/radio/beacon/syndicate/bomb(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/device/radio/beacon/syndicate/bomb(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/device/syndicatedetonator(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt)
M.equip_or_collect(new /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/device/radio/headset/syndicate(M), slot_l_ear)
equip_special_id(M,get_syndicate_access("Syndicate Operative"), "Syndicate Bomber", /obj/item/weapon/card/id/syndicate, "syndie")
if("syndicate operative")
M.equip_or_collect(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
M.equip_or_collect(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_or_collect(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_or_collect(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/weapon/reagent_containers/food/pill/initropidril(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/weapon/gun/projectile/automatic/pistol(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/ammo_box/magazine/m10mm(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/weapon/crowbar/red(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/clothing/glasses/night(M), slot_glasses)
M.equip_or_collect(new /obj/item/weapon/storage/belt/military(M), slot_belt)
M.equip_or_collect(new /obj/item/weapon/grenade/plastic/c4(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/weapon/pinpointer/advpinpointer(M), slot_l_store)
M.equip_or_collect(new /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/device/flashlight(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/clothing/mask/gas/syndicate(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/syndi(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/syndi(M), slot_head)
var/obj/item/device/radio/R = new /obj/item/device/radio/headset/syndicate/alt(M)
R.set_frequency(SYND_FREQ)
M.equip_to_slot_or_del(R, slot_l_ear)
var/obj/item/device/radio/uplink/U = new /obj/item/device/radio/uplink(M)
U.hidden_uplink.uplink_owner="[M.key]"
U.hidden_uplink.uses = 20
M.equip_to_slot_or_del(U, slot_r_store)
M.equip_or_collect(new /obj/item/weapon/tank/jetpack/oxygen/harness(M), slot_in_backpack)
equip_special_id(M,get_syndicate_access("Syndicate Operative"), "Syndicate Operative", /obj/item/weapon/card/id/syndicate, "syndie")
var/obj/item/weapon/implant/explosive/E = new/obj/item/weapon/implant/explosive(M)
E.implant(M)
if("syndicate strike team")
M.equip_syndicate_commando()
if("syndicate officer")
M.equip_or_collect(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
M.equip_or_collect(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_or_collect(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_or_collect(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/weapon/reagent_containers/food/pill/initropidril(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/clothing/glasses/thermal(M), slot_glasses)
M.equip_or_collect(new /obj/item/weapon/storage/belt/military(M), slot_belt)
M.equip_or_collect(new /obj/item/weapon/pinpointer/advpinpointer(M), slot_l_store)
M.equip_or_collect(new /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/clothing/mask/gas/syndicate(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/syndicate/black/red/strike(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/syndicate/black/red/strike(M), slot_head)
var/obj/item/device/radio/R = new /obj/item/device/radio/headset/syndicate/alt(M)
R.set_frequency(SYND_FREQ)
M.equip_to_slot_or_del(R, slot_l_ear)
var/obj/item/device/radio/uplink/U = new /obj/item/device/radio/uplink(M)
U.hidden_uplink.uplink_owner="[M.key]"
U.hidden_uplink.uses = 50
M.equip_to_slot_or_del(U, slot_r_store)
M.equip_or_collect(new /obj/item/weapon/tank/jetpack/oxygen/harness(M), slot_in_backpack)
equip_special_id(M,get_all_accesses() + get_syndicate_access("Syndicate Commando"), "Syndicate Officer", /obj/item/weapon/card/id/syndicate, "commander")
var/obj/item/weapon/implant/dust/DUST = new /obj/item/weapon/implant/dust(M)
DUST.implant(M)
if("nt vip guest")
M.equip_or_collect(new /obj/item/clothing/under/suit_jacket/really_black(M), slot_w_uniform)
M.equip_or_collect(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_or_collect(new /obj/item/clothing/gloves/color/black(M), slot_gloves)
M.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/clothing/head/that(M), slot_head)
M.equip_or_collect(new /obj/item/device/radio/headset/ert(M), slot_l_ear)
M.equip_or_collect(new /obj/item/device/pda/(M), slot_wear_pda)
equip_special_id(M,get_centcom_access("VIP Guest"), "VIP Guest", /obj/item/weapon/card/id/centcom)
if("nt navy officer")
M.equip_or_collect(new /obj/item/clothing/under/rank/centcom/officer(M), slot_w_uniform)
M.equip_or_collect(new /obj/item/clothing/shoes/centcom(M), slot_shoes)
M.equip_or_collect(new /obj/item/clothing/gloves/color/white(M), slot_gloves)
M.equip_or_collect(new /obj/item/device/radio/headset/centcom(M), slot_l_ear)
M.equip_or_collect(new /obj/item/clothing/head/beret/centcom/officer(M), slot_head)
M.equip_or_collect(new /obj/item/device/pda/centcom(M), slot_wear_pda)
M.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(M), slot_glasses)
M.equip_or_collect(new /obj/item/weapon/gun/energy/pulse/pistol(M), slot_belt)
M.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/weapon/implanter/dust(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/weapon/implanter/death_alarm(M), slot_in_backpack)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(M)
L.imp_in = M
L.implanted = 1
M.sec_hud_set_implants()
equip_special_id(M,get_centcom_access("Nanotrasen Navy Officer"), "Nanotrasen Navy Officer", /obj/item/weapon/card/id/centcom)
if("nt navy captain")
M.equip_or_collect(new /obj/item/clothing/under/rank/centcom/captain(M), slot_w_uniform)
M.equip_or_collect(new /obj/item/clothing/shoes/centcom(M), slot_shoes)
M.equip_or_collect(new /obj/item/clothing/gloves/color/white(M), slot_gloves)
M.equip_or_collect(new /obj/item/device/radio/headset/centcom(M), slot_l_ear)
M.equip_or_collect(new /obj/item/clothing/head/beret/centcom/captain(M), slot_head)
M.equip_or_collect(new /obj/item/device/pda/centcom(M), slot_wear_pda)
M.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(M), slot_glasses)
M.equip_or_collect(new /obj/item/weapon/gun/energy/pulse/pistol(M), slot_belt)
M.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/weapon/implanter/dust(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/weapon/implanter/death_alarm(M), slot_in_backpack)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(M)
L.imp_in = M
L.implanted = 1
M.sec_hud_set_implants()
equip_special_id(M,get_centcom_access("Nanotrasen Navy Captain"), "Nanotrasen Navy Captain", /obj/item/weapon/card/id/centcom)
if("emergency response team member", "emergency response team leader")
var/datum/response_team/equip_team = null
@@ -1173,189 +654,17 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
else
to_chat(src, "Invalid ERT Loadout selected")
if("nt special ops officer")
M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate/combat(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/centcom(src), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head) // job has /obj/item/clothing/head/beret/centcom/officer/navy
M.equip_to_slot_or_del(new /obj/item/device/pda/centcom(M), slot_wear_pda)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/cyber(M), slot_glasses) // job has /obj/item/clothing/glasses/hud/security/sunglasses
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol/m1911(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(M), slot_back)
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/deathsquad/officer(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/implanter/dust(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/implanter/death_alarm(M), slot_in_backpack)
equip_special_id(M,get_centcom_access("Special Operations Officer"), "Special Operations Officer", /obj/item/weapon/card/id/centcom)
// The following items are unique to this outfit - the special ops officer job does not spawn with them.
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sechailer/swat(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/dualsaber/red(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/pinpointer/advpinpointer(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/hypospray/combat/nanites(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/flashbangs(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/zipties(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/matches(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/advance(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/implanter/loyalty(M), slot_in_backpack)
if("nt special ops formal")
M.equip_or_collect(new /obj/item/clothing/under/rank/centcom/captain(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/centcom(src), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/cyber(M), slot_glasses) // special
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol/m1911(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/matches(M), slot_r_store)
M.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(M), slot_in_backpack)
var/obj/item/device/pda/centcom/pda = new(M)
pda.owner = M.real_name
pda.ownjob = "Special Operations Officer"
pda.icon_state = "pda-syndi"
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
pda.desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a special edition designed for military field work."
M.equip_or_collect(pda, slot_wear_pda)
M.equip_or_collect(new /obj/item/weapon/implanter/dust(M), slot_in_backpack)
M.equip_or_collect(new /obj/item/weapon/implanter/death_alarm(M), slot_in_backpack)
equip_special_id(M,get_centcom_access("Special Operations Officer"), "Special Operations Officer", /obj/item/weapon/card/id/centcom)
if("singuloth knight")
M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate/combat(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/singuloth(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(src), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/meson/cyber(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/singuloth(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/claymore/ceremonial(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/weapon/tank/oxygen(M), slot_s_store)
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/knighthammer(M), slot_back)
equip_special_id(M,get_all_accesses(), "Singuloth Knight", /obj/item/weapon/card/id)
if("blue wizard")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/staff(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
equip_special_id(M,get_all_accesses(), "Wizard", /obj/item/weapon/card/id)
if("red wizard")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/red(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/red(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/staff(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
equip_special_id(M,get_all_accesses(), "Wizard", /obj/item/weapon/card/id)
if("marisa wizard")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/marisa(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/marisa(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/marisa(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/staff(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
equip_special_id(M,get_all_accesses(), "Wizard", /obj/item/weapon/card/id)
if("soviet tourist")
M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
equip_special_id(M,list(access_maint_tunnels), "Soviet Tourist", /obj/item/weapon/card/id)
if("soviet soldier")
M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/syndicate(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/card/emag(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/plastic/c4(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/plastic/c4(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_in_backpack)
equip_special_id(M,list(access_maint_tunnels), "Soviet Soldier", /obj/item/weapon/card/id)
if("soviet admiral")
M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/head/hgpiratecap(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/syndicate(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/hgpirate(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_in_backpack)
equip_special_id(M,get_all_accesses() + get_all_centcom_access(), "Soviet Admiral", /obj/item/weapon/card/id, "commander")
//W.icon_state = "commander"
if("chrono legionnaire")
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/chronos(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/syndicate(src), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/night(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/chronos(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/chrono_eraser(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(src), slot_s_store)
equip_special_id(M,get_all_accesses() + get_all_centcom_access(), "Chrono Legionnaire", /obj/item/weapon/card/id/syndicate, "syndie")
else // outfit datum
if(O)
M.equipOutfit(O, FALSE)
M.regenerate_icons()
log_admin("[key_name(usr)] changed the equipment of [key_name(M)] to [dresscode].")
message_admins("\blue [key_name_admin(usr)] changed the equipment of [key_name_admin(M)] to [dresscode].", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] changed the equipment of [key_name_admin(M)] to [dresscode].</span>", 1)
return
/client/proc/equip_special_id(var/mob/living/carbon/human/H, var/list/theaccess = null, var/jobtext, var/obj/item/weapon/card/id/id_type = /obj/item/weapon/card/id, var/special_icon = null)
if(!check_rights(R_EVENT))
return
var/obj/item/weapon/card/id/W = new id_type(H)
if(special_icon)
W.icon_state = special_icon
W.name = "[H.real_name]'s ID Card ([jobtext])"
W.access = theaccess
W.assignment = "[jobtext]"
W.registered_name = H.real_name
H.equip_to_slot_or_del(W, slot_wear_id)
/client/proc/startSinglo()
set category = "Debug"
@@ -1474,15 +783,15 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
return
error_cache.showTo(usr)
/client/proc/jump_to_ruin()
set category = "Debug"
set name = "Jump to Ruin"
set desc = "Displays a list of all placed ruins to teleport to."
if(!check_rights(R_DEBUG))
return
var/list/names = list()
for(var/i in ruin_landmarks)
var/obj/effect/landmark/ruin/ruin_landmark = i
@@ -1505,21 +814,21 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(istype(landmark))
var/datum/map_template/ruin/template = landmark.ruin_template
admin_forcemove(usr, get_turf(landmark))
to_chat(usr, "<span class='name'>[template.name]</span>")
to_chat(usr, "<span class='italics'>[template.description]</span>")
log_admin("[key_name(usr)] jumped to ruin [ruinname]")
if(!isobserver(usr))
message_admins("[key_name_admin(usr)] jumped to ruin [ruinname]", 1)
feedback_add_details("admin_verb","JT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/toggle_medal_disable()
set category = "Debug"
set name = "Toggle Medal Disable"
set desc = "Toggles the safety lock on trying to contact the medal hub."
if(!check_rights(R_DEBUG))
return
+1 -1
View File
@@ -15,7 +15,7 @@
if(T.active_hotspot)
burning = 1
to_chat(usr, "\blue @[target.x],[target.y]: O:[GM.oxygen] T:[GM.toxins] N:[GM.nitrogen] C:[GM.carbon_dioxide] w [GM.temperature] Kelvin, [GM.return_pressure()] kPa [(burning)?("\red BURNING"):(null)]")
to_chat(usr, "<span class='notice'>@[target.x],[target.y]: O:[GM.oxygen] T:[GM.toxins] N:[GM.nitrogen] C:[GM.carbon_dioxide] w [GM.temperature] Kelvin, [GM.return_pressure()] kPa [(burning)?("<span class='warning'>BURNING</span>"):(null)]</span>")
for(var/datum/gas/trace_gas in GM.trace_gases)
to_chat(usr, "[trace_gas.type]: [trace_gas.moles]")
+5 -5
View File
@@ -45,7 +45,7 @@ var/global/list/frozen_mob_list = list()
/mob/living/proc/admin_unFreeze(var/client/admin)
if(istype(admin))
to_chat(src, "<b><font color= red>You have been unfrozen by [key_name(admin)]</b></font>")
message_admins("\blue [key_name_admin(admin)] unfroze [key_name_admin(src)]")
message_admins("<span class='notice'>[key_name_admin(admin)] unfroze [key_name_admin(src)]</span>")
log_admin("[key_name(admin)] unfroze [key_name(src)]")
anchored = 0
@@ -106,10 +106,10 @@ var/global/list/frozen_mob_list = list()
if(M.occupant)
M.removeVerb(/obj/mecha/verb/eject)
to_chat(M.occupant, "<b><font color= red>You have been frozen by <a href='?priv_msg=\ref[usr.client]'>[key]</a></b></font>")
message_admins("\blue [key_name_admin(usr)] froze [key_name(M.occupant)] in a [M.name]")
message_admins("<span class='notice'>[key_name_admin(usr)] froze [key_name(M.occupant)] in a [M.name]</span>")
log_admin("[key_name(usr)] froze [key_name(M.occupant)] in a [M.name]")
else
message_admins("\blue [key_name_admin(usr)] froze an empty [M.name]")
message_admins("<span class='notice'>[key_name_admin(usr)] froze an empty [M.name]</span>")
log_admin("[key_name(usr)] froze an empty [M.name]")
else if(M.can_move == 0)
M.can_move = 1
@@ -117,8 +117,8 @@ var/global/list/frozen_mob_list = list()
if(M.occupant)
M.addVerb(/obj/mecha/verb/eject)
to_chat(M.occupant, "<b><font color= red>You have been unfrozen by <a href='?priv_msg=\ref[usr.client]'>[key]</a></b></font>")
message_admins("\blue [key_name_admin(usr)] unfroze [key_name(M.occupant)] in a [M.name]")
message_admins("<span class='notice'>[key_name_admin(usr)] unfroze [key_name(M.occupant)] in a [M.name]</span>")
log_admin("[key_name(usr)] unfroze [M.occupant.name]/[M.occupant.ckey] in a [M.name]")
else
message_admins("\blue [key_name_admin(usr)] unfroze an empty [M.name]")
message_admins("<span class='notice'>[key_name_admin(usr)] unfroze an empty [M.name]</span>")
log_admin("[key_name(usr)] unfroze an empty [M.name]")
+3 -3
View File
@@ -62,14 +62,14 @@ var/global/sent_honksquad = 0
new_honksquad.update_internals_hud_icon(1)
//So they don't forget their code or mission.
new_honksquad.mind.store_memory("<B>Mission:</B> \red [input].")
new_honksquad.mind.store_memory("<B>Mission:</B> <span class='warning'>[input].</span>")
to_chat(new_honksquad, "\blue You are a HONKsquad. [!honk_leader_selected?"commando":"<B>LEADER</B>"] in the service of Clown Planet. You are called in cases of exteme low levels of HONK. You are NOT authorized to kill. \nYour current mission is: <span class='danger'>[input]</span>")
to_chat(new_honksquad, "<span class='notice'>You are a HONKsquad. [!honk_leader_selected ? "commando" : "<B>LEADER</B>"] in the service of Clown Planet. You are called in cases of exteme low levels of HONK. You are NOT authorized to kill.\nYour current mission is: <span class='danger'>[input]</span></span>")
honksquad_number--
message_admins("\blue [key_name_admin(usr)] has spawned a HONKsquad.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] has spawned a HONKsquad.</span>", 1)
log_admin("[key_name(usr)] used Spawn HONKsquad.")
return 1
@@ -122,8 +122,8 @@ var/global/sent_syndicate_infiltration_team = 0
syndimgmtmob.update_internals_hud_icon(1)
syndimgmtmob.faction += "syndicate"
syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(src), slot_glasses)
syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/syndi/elite, slot_wear_suit)
syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/syndi/elite, slot_head)
syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/suit/space/hardsuit/syndi/elite, slot_wear_suit)
syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite, slot_head)
syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/syndicate, slot_wear_mask)
var/datum/atom_hud/antag/opshud = huds[ANTAG_HUD_OPS]
opshud.join_hud(syndimgmtmob.mind.current)
+3 -3
View File
@@ -337,7 +337,7 @@ client/proc/one_click_antag()
//So they don't forget their code or mission.
to_chat(new_syndicate_commando, "\blue You are an Elite Syndicate. [!syndicate_leader_selected?"commando":"<B>LEADER</B>"] in the service of the Syndicate. \nYour current mission is: <span class='danger'> [input]</span>")
to_chat(new_syndicate_commando, "<span class='notice'>You are an Elite Syndicate. [!syndicate_leader_selected ? "commando" : "<B>LEADER</B>"] in the service of the Syndicate. \nYour current mission is: <span class='danger'>[input]</span></span>")
numagents--
if(numagents >= 6)
@@ -444,8 +444,8 @@ client/proc/one_click_antag()
new_vox.key = theghost.key
ticker.mode.traitors += new_vox.mind
to_chat(new_vox, "\blue You are a Vox Primalis, fresh out of the Shoal. Your ship has arrived at the Tau Ceti system hosting the NSV Exodus... or was it the Luna? NSS? Utopia? Nobody is really sure, but everyong is raring to start pillaging! Your current goal is: <span class='danger'> [input]</span>")
to_chat(new_vox, "\red Don't forget to turn on your nitrogen internals!")
to_chat(new_vox, "<span class='notice'>You are a Vox Primalis, fresh out of the Shoal. Your ship has arrived at the Tau Ceti system hosting the NSV Exodus... or was it the Luna? NSS? Utopia? Nobody is really sure, but everyong is raring to start pillaging! Your current goal is: <span class='danger'> [input]</span></span>")
to_chat(new_vox, "<span class='warning'>Don't forget to turn on your nitrogen internals!</span>")
raiders--
if(raiders > max_raiders)
+1 -1
View File
@@ -49,7 +49,7 @@
W.assignment = "Highlander"
W.registered_name = H.real_name
H.equip_to_slot_or_del(W, slot_wear_id)
H.species.equip(H)
H.species.after_equip_job(null, H)
H.regenerate_icons()
message_admins("[key_name_admin(usr)] used THERE CAN BE ONLY ONE! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
+1 -1
View File
@@ -55,7 +55,7 @@
H.equip_to_slot_or_del(W, slot_wear_id)
team_toggle = !team_toggle
H.species.equip(H)
H.species.after_equip_job(null, H)
H.regenerate_icons()
message_admins("[key_name_admin(usr)] used DODGEBAWWWWWWWL! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
+13
View File
@@ -1,5 +1,18 @@
var/list/sounds_cache = list()
/client/proc/stop_global_admin_sounds()
set category = "Event"
set name = "Stop Global Admin Sounds"
if(!check_rights(R_SOUNDS))
return
var/sound/awful_sound = sound(null, repeat = 0, wait = 0, channel = 777)
log_admin("[key_name(src)] stopped admin sounds.")
message_admins("[key_name_admin(src)] stopped admin sounds.", 1)
for(var/mob/M in player_list)
M << awful_sound
/client/proc/play_sound(S as sound)
set category = "Event"
set name = "Play Global Sound"
+2 -2
View File
@@ -7,13 +7,13 @@
if(usr.client)
if(usr.client.prefs.muted & MUTE_PRAY)
to_chat(usr, "\red You cannot pray (muted).")
to_chat(usr, "<span class='warning'>You cannot pray (muted).</span>")
return
if(client.handle_spam_prevention(msg, MUTE_PRAY, OOC_COOLDOWN))
return
var/image/cross = image('icons/obj/storage.dmi',"bible")
msg = "\blue [bicon(cross)] <b><font color=purple>PRAY: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[src]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=\ref[src]'>PP</A>) (<A HREF='?_src_=vars;Vars=[UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[src]'>SM</A>) ([admin_jump_link(src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;adminspawncookie=\ref[src]'>SC</a>) (<A HREF='?_src_=holder;Bless=[UID()]'>BLESS</A>) (<A HREF='?_src_=holder;Smite=[UID()]'>SMITE</A>):</b> [msg]"
msg = "<span class='notice'>[bicon(cross)] <b><font color=purple>PRAY: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[src]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=\ref[src]'>PP</A>) (<A HREF='?_src_=vars;Vars=[UID()]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[src]'>SM</A>) ([admin_jump_link(src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;adminspawncookie=\ref[src]'>SC</a>) (<A HREF='?_src_=holder;Bless=[UID()]'>BLESS</A>) (<A HREF='?_src_=holder;Smite=[UID()]'>SMITE</A>):</b> [msg]</span>"
for(var/client/X in admins)
if(check_rights(R_EVENT,0,X.mob))
+30 -22
View File
@@ -39,9 +39,9 @@
prisoner.equip_to_slot_or_del(new /obj/item/clothing/under/color/orange(prisoner), slot_w_uniform)
prisoner.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(prisoner), slot_shoes)
spawn(50)
to_chat(M, "\red You have been sent to the prison station!")
to_chat(M, "<span class='warning'>You have been sent to the prison station!</span>")
log_admin("[key_name(usr)] sent [key_name(M)] to the prison station.")
message_admins("\blue [key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.</span>", 1)
feedback_add_details("admin_verb","PRISON") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_subtle_message(mob/M as mob in mob_list)
@@ -61,10 +61,10 @@
if(usr)
if(usr.client)
if(usr.client.holder)
to_chat(M, "\bold You hear a voice in your head... \italic [msg]")
to_chat(M, "<b>old You hear a voice in your head... <i>[msg]</i></b>")
log_admin("SubtlePM: [key_name(usr)] -> [key_name(M)] : [msg]")
message_admins("\blue \bold SubtleMessage: [key_name_admin(usr)] -> [key_name_admin(M)] : [msg]", 1)
message_admins("<span class='boldnotice'>SubtleMessage: [key_name_admin(usr)] -> [key_name_admin(M)] : [msg]</span>", 1)
feedback_add_details("admin_verb","SMS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_mentor_check_new_players() //Allows mentors / admins to determine who the newer players are.
@@ -88,7 +88,7 @@
missing_ages = 1
continue
if(C.player_age < age)
if(check_rights(R_ADMIN))
if(check_rights(R_ADMIN, 0))
msg += "[key_name_admin(C.mob)]: [C.player_age] days old<br>"
else
msg += "[key_name_mentor(C.mob)]: [C.player_age] days old<br>"
@@ -115,7 +115,7 @@
return
to_chat(world, "[msg]")
log_admin("GlobalNarrate: [key_name(usr)] : [msg]")
message_admins("\blue \bold GlobalNarrate: [key_name_admin(usr)]: [msg]<BR>", 1)
message_admins("<span class='boldnotice'>GlobalNarrate: [key_name_admin(usr)]: [msg]<BR></span>", 1)
feedback_add_details("admin_verb","GLN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_direct_narrate(var/mob/M) // Targetted narrate -- TLE
@@ -138,7 +138,7 @@
to_chat(M, msg)
log_admin("DirectNarrate: [key_name(usr)] to ([key_name(M)]): [msg]")
message_admins("\blue \bold DirectNarrate: [key_name_admin(usr)] to ([key_name_admin(M)]): [msg]<BR>", 1)
message_admins("<span class='boldnotice'>DirectNarrate: [key_name_admin(usr)] to ([key_name_admin(M)]): [msg]<BR></span>", 1)
feedback_add_details("admin_verb","DIRN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_godmode(mob/M as mob in mob_list)
@@ -149,7 +149,7 @@
return
M.status_flags ^= GODMODE
to_chat(usr, "\blue Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]")
to_chat(usr, "<span class='notice'>Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]</span>")
log_admin("[key_name(usr)] has toggled [key_name(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]")
message_admins("[key_name_admin(usr)] has toggled [key_name_admin(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]", 1)
@@ -333,7 +333,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
G_found.mind.transfer_to(new_xeno) //be careful when doing stuff like this! I've already checked the mind isn't in use
new_xeno.key = G_found.key
to_chat(new_xeno, "You have been fully respawned. Enjoy the game.")
message_admins("\blue [key_name_admin(usr)] has respawned [new_xeno.key] as a filthy xeno.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] has respawned [new_xeno.key] as a filthy xeno.</span>", 1)
return //all done. The ghost is auto-deleted
var/mob/living/carbon/human/new_character = new(pick(latejoin))//The mob being spawned.
@@ -437,7 +437,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(alert(new_character,"Would you like an active AI to announce this character?",,"No","Yes")=="Yes")
call(/mob/new_player/proc/AnnounceArrival)(new_character, new_character.mind.assigned_role)
message_admins("\blue [key_name_admin(usr)] has respawned [key_name_admin(G_found)] as [new_character.real_name].", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] has respawned [key_name_admin(G_found)] as [new_character.real_name].</span>", 1)
to_chat(new_character, "You have been fully respawned. Enjoy the game.")
@@ -473,7 +473,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
else return 0
new_xeno.ckey = ckey
message_admins("\blue [key_name_admin(usr)] has spawned [ckey] as a filthy xeno [alien_caste].", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] has spawned [ckey] as a filthy xeno [alien_caste].</span>", 1)
return 1
@@ -537,7 +537,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
M.revive()
log_admin("[key_name(usr)] healed / revived [key_name(M)]")
message_admins("\red Admin [key_name_admin(usr)] healed / revived [key_name_admin(M)]!", 1)
message_admins("<span class='warning'>Admin [key_name_admin(usr)] healed / revived [key_name_admin(M)]!</span>", 1)
feedback_add_details("admin_verb","REJU") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_create_centcom_report()
@@ -549,9 +549,11 @@ Traitors and the like can also be revived with the previous role mostly intact.
var/type = input(usr, "Pick a type of report to send", "Report Type", "") as anything in MsgType
var/input = input(usr, "Please enter anything you want. Anything. Serious.", "What?", "") as message|null
var/customname = input(usr, "Pick a title for the report.", "Title") as text|null
if(!input)
return
var/customname = input(usr, "Pick a title for the report.", "Title") as text|null
if(!customname)
return
if(type == "Enemy Communications")
if(!customname)
@@ -560,11 +562,13 @@ Traitors and the like can also be revived with the previous role mostly intact.
var/from = input(usr, "What kind of report? Example: Syndicate Communique", "From") as text|null
if(!from)
from = "Syndicate Communique"
switch(alert("Should this be announced to the general population?",,"Yes","No"))
switch(alert("Should this be announced to the general population?",,"Yes","No", "Cancel"))
if("Yes")
communications_announcement.Announce(input, customname, , , , from);
if("No")
else if("No")
to_chat(world, "<span class='danger'>[from] available at all communications consoles.</span>")
else
return
print_command_report(input, from)
@@ -707,7 +711,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
mob.gib()
log_admin("[key_name(usr)] used gibself.")
message_admins("\blue [key_name_admin(usr)] used gibself.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] used gibself.</span>", 1)
feedback_add_details("admin_verb","GIBS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_check_contents(mob/living/M as mob in mob_list)
@@ -736,7 +740,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
view = world.view
log_admin("[key_name(usr)] changed their view range to [view].")
//message_admins("\blue [key_name_admin(usr)] changed their view range to [view].", 1) //why? removed by order of XSI
//message_admins("<span class='notice'>[key_name_admin(usr)] changed their view range to [view].</span>", 1) //why? removed by order of XSI
feedback_add_details("admin_verb","CVRA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -834,7 +838,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
message_admins("Admin [key_name_admin(usr)] has forced the players to have random appearances.", 1)
if(notifyplayers == "Yes")
to_chat(world, "\blue <b>Admin [usr.key] has forced the players to have completely random identities!")
to_chat(world, "<span class='notice'><b>Admin [usr.key] has forced the players to have completely random identities!</span>")
to_chat(usr, "<i>Remember: you can always disable the randomness by using the verb again, assuming the round hasn't started yet</i>.")
@@ -891,15 +895,15 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(ticker.mode.ert_disabled)
ticker.mode.ert_disabled = 0
to_chat(usr, "\blue ERT has been <b>Enabled</b>.")
to_chat(usr, "<span class='notice'>ERT has been <b>Enabled</b>.</span>")
log_admin("Admin [key_name(src)] has enabled ERT calling.")
message_admins("Admin [key_name_admin(usr)] has enabled ERT calling.", 1)
else
ticker.mode.ert_disabled = 1
to_chat(usr, "\red ERT has been <b>Disabled</b>.")
to_chat(usr, "<span class='warning'>ERT has been <b>Disabled</b>.</span>")
log_admin("Admin [key_name(src)] has disabled ERT calling.")
message_admins("Admin [key_name_admin(usr)] has disabled ERT calling.", 1)
/client/proc/modify_goals()
set category = "Event"
set name = "Modify Station Goals"
@@ -910,8 +914,12 @@ Traitors and the like can also be revived with the previous role mostly intact.
holder.modify_goals()
/datum/admins/proc/modify_goals()
if(!ticker || !ticker.mode)
to_chat(usr, "<span class='warning'>This verb can only be used if the round has started.</span>")
return
var/dat = ""
for(var/datum/station_goal/S in ticker.mode.station_goals)
dat += "[S.name] - <a href='?src=[S.UID()];announce=1'>Announce</a> | <a href='?src=[S.UID()];remove=1'>Remove</a><br>"
dat += "<br><a href='?src=[UID()];add_station_goal=1'>Add New Goal</a>"
usr << browse(dat, "window=goals;size=400x400")
usr << browse(dat, "window=goals;size=400x400")
+5 -5
View File
@@ -68,10 +68,10 @@ var/global/sent_strike_team = 0
//So they don't forget their code or mission.
if(nuke_code)
new_commando.mind.store_memory("<B>Nuke Code:</B> \red [nuke_code].")
new_commando.mind.store_memory("<B>Mission:</B> \red [input].")
new_commando.mind.store_memory("<B>Nuke Code:</B> <span class='warning'>[nuke_code].</span>")
new_commando.mind.store_memory("<B>Mission:</B> <span class='warning'>[input].</span>")
to_chat(new_commando, "\blue You are a Special Ops. [!leader_selected?"commando":"<B>LEADER</B>"] in the service of Central Command. Check the table ahead for detailed instructions.\nYour current mission is: <span class='danger'>[input]</span>")
to_chat(new_commando, "<span class='notice'>You are a Special Ops. [!leader_selected ? "commando" : "<B>LEADER</B>"] in the service of Central Command. Check the table ahead for detailed instructions.\nYour current mission is: <span class='danger'>[input]</span></span>")
commando_number--
@@ -92,7 +92,7 @@ var/global/sent_strike_team = 0
new /obj/effect/spawner/newbomb/timer/syndicate(L.loc)
qdel(L)
message_admins("\blue [key_name_admin(usr)] has spawned a CentComm strike squad.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] has spawned a CentComm strike squad.</span>", 1)
log_admin("[key_name(usr)] used Spawn Death Squad.")
return 1
@@ -157,7 +157,7 @@ var/global/sent_strike_team = 0
equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse(src), slot_r_hand)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(src)//Here you go Deuryn
var/obj/item/weapon/implant/mindshield/L = new/obj/item/weapon/implant/mindshield(src)
L.imp_in = src
L.implanted = 1
sec_hud_set_implants()
@@ -75,10 +75,10 @@ var/global/sent_syndicate_strike_team = 0
//So they don't forget their code or mission.
if(nuke_code)
new_syndicate_commando.mind.store_memory("<B>Nuke Code:</B> \red [nuke_code].")
new_syndicate_commando.mind.store_memory("<B>Mission:</B> \red [input].")
new_syndicate_commando.mind.store_memory("<B>Nuke Code:</B> <span class='warning'>[nuke_code]</span>.")
new_syndicate_commando.mind.store_memory("<B>Mission:</B> <span class='warning'>[input]</span>.")
to_chat(new_syndicate_commando, "\blue You are an Elite Syndicate. [!syndicate_leader_selected?"commando":"<B>LEADER</B>"] in the service of the Syndicate. \nYour current mission is: <span class='danger'>[input]</span>")
to_chat(new_syndicate_commando, "<span class='notice'>You are an Elite Syndicate. [!syndicate_leader_selected ? "commando" : "<B>LEADER</B>"] in the service of the Syndicate. \nYour current mission is: <span class='danger'>[input]</span></span>")
new_syndicate_commando.faction += "syndicate"
syndicate_commando_number--
@@ -87,7 +87,7 @@ var/global/sent_syndicate_strike_team = 0
new /obj/effect/spawner/newbomb/timer/syndicate(L.loc)
qdel(L)
message_admins("\blue [key_name_admin(usr)] has spawned a Syndicate strike squad.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] has spawned a Syndicate strike squad.</span>", 1)
log_admin("[key_name(usr)] used Spawn Syndicate Squad.")
feedback_add_details("admin_verb","SDTHS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+1 -1
View File
@@ -19,6 +19,6 @@
if("Yes") config.Tickcomp = 1
else config.Tickcomp = 0
else
to_chat(src, "\red Error: ticklag(): Invalid world.ticklag value. No changes made.")
to_chat(src, "<span class='warning'>Error: ticklag(): Invalid world.ticklag value. No changes made.</span>")
+2 -2
View File
@@ -14,9 +14,9 @@
if(ticker.triai)
ticker.triai = 0
to_chat(usr, "Only one AI will be spawned at round start.")
message_admins("\blue [key_name_admin(usr)] has toggled off triple AIs at round start.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] has toggled off triple AIs at round start.</span>", 1)
else
ticker.triai = 1
to_chat(usr, "There will be an AI Triumvirate at round start.")
message_admins("\blue [key_name_admin(usr)] has toggled on triple AIs at round start.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] has toggled on triple AIs at round start.</span>", 1)
return
+5
View File
@@ -47,6 +47,11 @@
existing.clear(source)
return check_alarm_cleared(existing)
/datum/alarm_handler/proc/has_major_alarms()
if(alarms && alarms.len)
return 1
return 0
/datum/alarm_handler/proc/major_alarms()
return alarms
+6 -10
View File
@@ -61,7 +61,7 @@
/obj/machinery/arcade/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if(istype(O, /obj/item/weapon/screwdriver) && anchored)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
playsound(src.loc, O.usesound, 50, 1)
panel_open = !panel_open
to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.")
update_icon()
@@ -72,8 +72,8 @@
if(pay_with_card(C))
tokens += 1
return
else if(istype(O, /obj/item/weapon/spacecash))
var/obj/item/weapon/spacecash/C = O
else if(istype(O, /obj/item/stack/spacecash))
var/obj/item/stack/spacecash/C = O
if(pay_with_cash(C, user))
tokens += 1
return
@@ -83,16 +83,12 @@
/obj/machinery/arcade/update_icon()
return
/obj/machinery/arcade/proc/pay_with_cash(var/obj/item/weapon/spacecash/cashmoney, var/mob/user)
if(cashmoney.get_total() < token_price)
/obj/machinery/arcade/proc/pay_with_cash(obj/item/stack/spacecash/cashmoney, mob/user)
if(cashmoney.amount < token_price)
to_chat(user, "[bicon(cashmoney)] <span class='warning'>That is not enough money.</span>")
return 0
visible_message("<span class='info'>[usr] inserts a credit chip into [src].</span>")
var/left = cashmoney.get_total() - token_price
user.unEquip(cashmoney)
qdel(cashmoney)
if(left)
dispense_cash(left, src.loc, user)
cashmoney.use(token_price)
return 1
/obj/machinery/arcade/proc/pay_with_card(var/obj/item/weapon/card/id/I, var/mob/user)
@@ -51,8 +51,7 @@
mob_hunt_server.red_terminal = null
if(mob_hunt_server.blue_terminal == src)
mob_hunt_server.blue_terminal = null
if(avatar)
qdel(avatar)
QDEL_NULL(avatar)
return ..()
/obj/machinery/computer/mob_battle_terminal/attackby(obj/item/O, mob/user)
+1 -1
View File
@@ -35,7 +35,7 @@
/obj/item/weapon/storage/box/nanomob_booster_pack
name = "Nano-Mob Hunter Trading Card Booster Pack"
desc = "Contains 6 random Nano-Mob Hunter Trading Cards. May contain a holographic card!"
can_hold = list("/obj/item/weapon/nanomob_card")
can_hold = list(/obj/item/weapon/nanomob_card)
/obj/item/weapon/storage/box/nanomob_booster_pack/New()
..()
+1 -1
View File
@@ -41,7 +41,7 @@
to_chat(user, "<span class='warning'>\The [T] seems stuck to your hand!</span>")
return
if(istype(O, /obj/item/weapon/screwdriver) && anchored)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
playsound(src.loc, O.usesound, 50, 1)
panel_open = !panel_open
to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.")
update_icon()
+5 -3
View File
@@ -10,6 +10,8 @@
throw_speed = 3
throw_range = 10
origin_tech = "magnets=1"
toolspeed = 1
usesound = 'sound/items/Deconstruct.ogg'
var/bomb_name = "bomb" // used for naming bombs / mines
@@ -114,7 +116,7 @@
attach_assembly(var/obj/item/device/assembly/A, var/mob/user)
holder = new/obj/item/device/assembly_holder(get_turf(src))
if(holder.attach(A,src,user))
to_chat(user, "\blue You attach \the [A] to \the [src]!")
to_chat(user, "<span class='notice'>You attach \the [A] to \the [src]!</span>")
return 1
return 0
@@ -127,9 +129,9 @@
return
if(istype(W, /obj/item/weapon/screwdriver))
if(toggle_secure())
to_chat(user, "\blue \The [src] is ready!")
to_chat(user, "<span class='notice'>\The [src] is ready!</span>")
else
to_chat(user, "\blue \The [src] can now be attached!")
to_chat(user, "<span class='notice'>\The [src] can now be attached!</span>")
return
..()
return
+4 -4
View File
@@ -140,15 +140,15 @@
attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/weapon/screwdriver))
if(!a_left || !a_right)
to_chat(user, "\red BUG:Assembly part missing, please report this!")
to_chat(user, "<span class='warning'>BUG:Assembly part missing, please report this!</span>")
return
a_left.toggle_secure()
a_right.toggle_secure()
secured = !secured
if(secured)
to_chat(user, "\blue \The [src] is ready!")
to_chat(user, "<span class='notice'>\The [src] is ready!</span>")
else
to_chat(user, "\blue \The [src] can now be taken apart!")
to_chat(user, "<span class='notice'>\The [src] can now be taken apart!</span>")
update_icon()
return
else
@@ -160,7 +160,7 @@
src.add_fingerprint(user)
if(src.secured)
if(!a_left || !a_right)
to_chat(user, "\red Assembly part missing!")
to_chat(user, "<span class='warning'>Assembly part missing!</span>")
return
if(istype(a_left,a_right.type))//If they are the same type it causes issues due to window code
switch(alert("Which side would you like to use?",,"Left","Right"))
+1 -2
View File
@@ -12,8 +12,7 @@
sparks.attach(src)
/obj/item/device/assembly/igniter/Destroy()
qdel(sparks)
sparks = null
QDEL_NULL(sparks)
return ..()
+1 -3
View File
@@ -255,9 +255,7 @@
/obj/effect/beam/i_beam/Destroy()
if(master.first == src)
master.first = null
if(next)
qdel(next)
next = null
QDEL_NULL(next)
if(previous)
previous.next = null
master.last = previous
+2 -2
View File
@@ -19,7 +19,7 @@
describe()
if(timing)
return "\blue The proximity sensor is arming."
return "<span class='notice'>The proximity sensor is arming.</span>"
return "The proximity sensor is [scanning?"armed":"disarmed"]."
activate()
@@ -109,7 +109,7 @@
interact(mob/user as mob)//TODO: Change this to the wires thingy
if(!secured)
user.show_message("\red The [name] is unsecured!")
user.show_message("<span class='warning'>The [name] is unsecured!</span>")
return 0
var/second = time % 60
var/minute = (time - second) / 60
+2 -4
View File
@@ -10,10 +10,8 @@
flags = CONDUCT
/obj/item/assembly/shock_kit/Destroy()
qdel(part1)
part1 = null
qdel(part2)
part2 = null
QDEL_NULL(part1)
QDEL_NULL(part2)
return ..()
/obj/item/assembly/shock_kit/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
+1 -1
View File
@@ -61,7 +61,7 @@
if(!flag1)
dat += {"
<A href='byond://?src=[UID()];send=1'>Send Signal</A><BR>
Reciever is <A href='byond://?src=[UID()];receive=1'>[receiving?"on":"off"]</A><BR>
Receiver is <A href='byond://?src=[UID()];receive=1'>[receiving?"on":"off"]</A><BR>
"}
dat += {"
<B>Frequency/Code</B> for signaler:<BR>
+1 -1
View File
@@ -74,7 +74,7 @@
interact(mob/user as mob)//TODO: Have this use the wires
if(!secured)
user.show_message("\red The [name] is unsecured!")
user.show_message("<span class='warning'>The [name] is unsecured!</span>")
return 0
var/second = time % 60
var/minute = (time - second) / 60
+1 -1
View File
@@ -35,7 +35,7 @@
if(findtext(msg, recorded) && type == recorded_type)
pulse(0)
var/turf/T = get_turf(src) //otherwise it won't work in hand
T.visible_message("[bicon(src)] \red beeps!")
T.visible_message("<span class='warning'>[bicon(src)] beeps!</span>")
activate()
return // previously this toggled listning when not in a holder, that's a little silly. It was only called in attack_self that way.
+8 -8
View File
@@ -116,12 +116,12 @@
/obj/effect/landmark/corpse/syndicatecommando
name = "Syndicate Commando"
corpseuniform = /obj/item/clothing/under/syndicate
corpsesuit = /obj/item/clothing/suit/space/rig/syndi
corpsesuit = /obj/item/clothing/suit/space/hardsuit/syndi
corpseshoes = /obj/item/clothing/shoes/combat
corpsegloves = /obj/item/clothing/gloves/combat
corpseradio = /obj/item/device/radio/headset
corpsemask = /obj/item/clothing/mask/gas/syndicate
corpsehelmet = /obj/item/clothing/head/helmet/space/rig/syndi
corpsehelmet = /obj/item/clothing/head/helmet/space/hardsuit/syndi
corpseback = /obj/item/weapon/tank/jetpack/oxygen
corpsepocket1 = /obj/item/weapon/tank/emergency_oxygen
corpseid = 1
@@ -170,10 +170,10 @@
corpseidjob = "Station Engineer"
corpseidaccess = "Station Engineer"
/obj/effect/landmark/corpse/engineer/rig
corpsesuit = /obj/item/clothing/suit/space/rig
/obj/effect/landmark/corpse/engineer/hardsuit
corpsesuit = /obj/item/clothing/suit/space/hardsuit
corpsemask = /obj/item/clothing/mask/breath
corpsehelmet = /obj/item/clothing/head/helmet/space/rig
corpsehelmet = /obj/item/clothing/head/helmet/space/hardsuit
/obj/effect/landmark/corpse/clown
@@ -255,10 +255,10 @@
corpseidjob = "Shaft Miner"
corpseidaccess = "Shaft Miner"
/obj/effect/landmark/corpse/miner/rig
corpsesuit = /obj/item/clothing/suit/space/rig/mining
/obj/effect/landmark/corpse/miner/hardsuit
corpsesuit = /obj/item/clothing/suit/space/hardsuit/mining
corpsemask = /obj/item/clothing/mask/breath
corpsehelmet = /obj/item/clothing/head/helmet/space/rig/mining
corpsehelmet = /obj/item/clothing/head/helmet/space/hardsuit/mining
/////////////////Officers//////////////////////
+5
View File
@@ -18,6 +18,11 @@
template_name = tname
if(template_name)
template = map_templates[template_name]
// Catches the interim-zone of worldstart and roundstart
// I want both the ticker to exist (so mapped-in maploaders don't trip this)
// but also not have started yet (since the zlevel system would handle this on its own otherwise)
if((ticker && ticker.current_state < GAME_STATE_PLAYING))
attempt_init()
/obj/effect/landmark/map_loader/initialize()
..()
@@ -0,0 +1,257 @@
/area/awaymission/UO71
name = "UO71"
icon_state = "away"
report_alerts = 0
tele_proof = 1
/area/awaymission/UO71/plaza
name = "UO71 Plaza"
icon_state = "awaycontent1"
fire = 1
/area/awaymission/UO71/centralhall
name = "UO71 Central"
icon_state = "awaycontent2"
fire = 1
/area/awaymission/UO71/eng
name = "UO71 Engineering"
icon_state = "awaycontent3"
fire = 1
/area/awaymission/UO71/mining
name = "UO71 Mining"
icon_state = "awaycontent4"
fire = 1
/area/awaymission/UO71/science
name = "UO71 Science"
icon_state = "awaycontent5"
fire = 1
/area/awaymission/UO71/medical
name = "UO71 Medical"
icon_state = "awaycontent6"
fire = 1
/area/awaymission/UO71/gateway
name = "UO71 Gateway"
icon_state = "awaycontent7"
fire = 1
/area/awaymission/UO71/outside
name = "UO71 Outside"
icon_state = "awaycontent8"
/area/awaymission/UO71/bridge
name = "UO71 Bridge"
icon_state = "awaycontent21"
fire = 1
requires_power = 0
tele_proof = 1
/area/awaymission/UO71/queen
name = "UO71 Queen Lair"
icon_state = "awaycontent9"
fire = 1
requires_power = 0
tele_proof = 1
/area/awaymission/UO71/prince
name = "UO71 Prince Containment"
icon_state = "awaycontent10"
fire = 1
requires_power = 0
tele_proof = 1
/area/awaymission/UO71/mother
name = "UO71 Mother Containment"
icon_state = "awaycontent10"
fire = 1
requires_power = 0
tele_proof = 1
/area/awaymission/UO71/loot
name = "UO71 Loot Vault"
icon_state = "awaycontent11"
requires_power = 0
tele_proof = 1
/obj/item/weapon/paper/terrorspiders1
name = "paper - 'Sealed Facility'"
info = {"<b>SEALED FACILITY</b><br>
<br>
This facility is sealed shut by order of Commander Marquez. Do not enter.<br>
Terror spiders live here. We believe they are a weapon developed by the syndicate.<br>
Any surviving personnel are to evacuate immediately via the gateway.<br>
"}
/obj/item/weapon/paper/terrorspiders2
name = "paper - 'The Trio of Terror'"
info = {"<b>Status Report on the 'Terrors'</b><br>
<br>
All the spiders are deadly. We know this much already. Within an hour of their appearance, they have killed several staff.<br>
Three, however, bear particular mention, as they appear to be leading the spider hivemind.<br>
<br>
The Mother is held in containment 1. Advise leaving her alone.<br>
It is likely that the hundreds of tiny spiders swarming over her back would come to her defense if she was threatened.<br>
<br>
The Prince is held in containment 2. He appears very aggressive, incredibly fast, strong, and durable. Extreme force and agility would be required to neutralize him.<br>
It is likely the appearance of the prince was related to our initial aggression against the Queen. These things can THINK.<br>
<br>
The Queen cannot be contained. She lives in the old bar, south of mining. She continues to breed dangerous spiders at an alarming rate.<br>
Many of her offspring are already roaming the compound, traveling through the vents. Contact with the team sent to subdue her has been lost.<br>
<br>
<br>
Based on the situation, Commander, I advise immediate evacuation through the gateway.<br>
-Research Director Simons<br>
"}
/obj/item/weapon/paper/terrorspiders3
name = "paper - 'Final Report'"
info = {"FROM: Field Agent 0738<br>
TO: Syndicate #873589<br>
SUBJECT: Mission Success<br>
<br>
I have seeded the Terror Queen egg in a dingy looking bar that bored engineers constructed near the mining tunnels.<br>
No doubt she will grow soon.<br>
<br>
I have also placed the Mother and Prince eggs nearby, injected with sedative. Hopefully the dimwitted NT scientists bring them back for study.<br>
With any luck, the Queen will sense them telepathically, think NT is holding her children hostage, and attack.<br>
<br>
I am going to extract out of the gateway before this all goes down.<br>
I don't imagine the staff have very long to live once the Queen declares war on this place.<br>
"}
/obj/item/weapon/paper/terrorspiders4
name = "paper - 'Prescription for Jones, David'"
info = {"PRESCRIPTION FOR: David Jones<br>
RANK: Miner<br>
FOR: Haloperidol<br>
REASON FOR TREATMENT: Hallucinations, Paranoia<br>
CAUSE: Hallucinations caused by encounter with toxic spit of spider in the caves. Paranoia caused by disappearing staff and suspicions of syndicate infiltration.<br>
TREATMENT PLAN: Take as needed. See Dr. Phloxi in one week if symptoms persist. <br>
"}
/obj/item/weapon/paper/terrorspiders5
name = "paper - 'A Study in Terror'"
info = {"<b>Findings Overview</b><br>
<br>
<p>Gray Spiders<br>Stealthy predators that ambush prey from vents. Otherwise weak.</p>
<p>Red Spiders<br>Can kill anyone in melee, but slow.</p>
<p>Green<br>Will lay eggs on dead bodies, breeding more spiders.</p>
<p>Black<br>Even a single bite is enough to kill a humanoid, given time.</p>
<p>White<br>Injects a parasitic agent. Deemed to pose too great an infection risk to study.</p>
<p>Purple<br>Only seen guarding the nest of the Queen to the south. Appear to be territorial, and very dangerous.</p>
<p>Prince<br>Held in containment 2. Appears to be a sort of super-warrior. Fast, strong, and thickly armored.</p>
<p>Mother<br>Carries hordes of spiderlings on its back. Held in containment 1. </p>
<p>Queen<br>Unable to contain. Present south of Cargo before contact was lost. Presumed ruler of the local hive.</p>
"}
/obj/item/weapon/paper/terrorspiders6
name = "paper - 'A Study in Venom'"
info = {"<b>Initial Report - Black Widow Venom</b><br>
<br>
Even a single bite kills within a few minutes. Immediate charcoal is necessary for the victim to survive.<br>
The fascinating thing is that multiple bites actually cause rapid symptom onset. The victim quickly loses the ability to walk.<br>
One test monkey went from perfect health to death in under 60 seconds - from 3 bites.<br>
I am so very glad I'm not responsible for keeping these things contained."}
/obj/item/weapon/paper/terrorspiders7
name = "paper - 'Security Orders'"
info = {"<b>Directives for Officer James</b><br>
<br>
1. Find a way to lift the bridge lockdown.<br>
2. Kill any spiders you encounter.<br>
3. Once on the bridge, open a path to the Queen in the south, and find a way to kill her, ending the infestation. <br>
Good luck, Officer.<br>
"}
/obj/item/weapon/paper/terrorspiders8
name = "paper - 'Last Words'"
info = {"<b>The Last Words of Nurse Barnes</b><br>
<br>
It is too much. First Phil, then those damn spiders bite Mary too. Heaven help us. <br>
I'll be evacuating as soon as I've grabbed my supplies. I had to pay for those myself. Stupid budget cuts. <br>
The new world they've found for us isn't that hospitable, but at least there are no deadly spid---<br>
(the writing trails off, as if the writer was interrupted)<br>
"}
/obj/item/weapon/gun/energy/laser/awaymission_aeg
name = "Wireless Energy Gun"
desc = "An energy gun that recharges wirelessly during away missions. Does not work on the main station."
force = 10
origin_tech = null
selfcharge = 1
can_charge = 0
var/inawaymission = 1
/obj/item/weapon/gun/energy/laser/awaymission_aeg/process()
var/turf/my_loc = get_turf(src)
if(is_away_level(my_loc.z))
if(inawaymission)
return ..()
if(ismob(loc))
to_chat(loc, "<span class='notice'>Your [src] activates, starting to draw power from a nearby wireless power source.</span>")
inawaymission = 1
else
if(inawaymission)
if(ismob(loc))
to_chat(loc, "<span class='danger'>Your [src] deactivates, as it is out of range from its power source.</span>")
power_supply.charge = 0
inawaymission = 0
update_icon()
/obj/item/weapon/reagent_containers/glass/beaker/terror_black_toxin
name = "beaker 'Black Terror Venom'"
/obj/item/weapon/reagent_containers/glass/beaker/terror_black_toxin/New()
..()
reagents.add_reagent("terror_black_toxin", 50)
update_icon()
/obj/machinery/computer/id_upgrader
name = "ID Upgrade Machine"
icon_state = "guest"
icon_screen = "pass"
var/list/access_to_give = list(access_away01)
var/beenused = 0
var/door_to_open = "UO71_Start"
/obj/machinery/computer/id_upgrader/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/D = I
if(!access_to_give.len)
to_chat(user, "<span class='notice'>This machine appears to be configured incorrectly.</span>")
return
var/did_upgrade = 0
var/list/id_access = D.GetAccess()
for(var/this_access in access_to_give)
if(!(this_access in id_access))
// don't have it - add it
D.access |= this_access
did_upgrade = 1
if(did_upgrade)
to_chat(user, "<span class='notice'>An access type was added to your ID card.</span>")
if(beenused)
return
spawn(1)
beenused = 1
var/unlocked_something = 0
for(var/obj/machinery/door/poddoor/P in airlocks)
if(P.density && P.id_tag == door_to_open && P.z == z)
P.open()
unlocked_something = 1
if(unlocked_something)
to_chat(user, "<span class='danger'>Activating the machine has unlocked a way forward!</span>")
else
to_chat(user, "<span class='notice'>Your ID card already has all the access this machine can give.</span>")
. = 1
@@ -18,6 +18,7 @@
if(water_timer)
deltimer(water_timer)
water_timer = null
return ..()
/obj/effect/waterfall/proc/drip()
var/obj/effect/effect/water/W = new(loc)
@@ -3,9 +3,8 @@
/area/awaymission/centcomAway
name = "XCC-P5831"
icon_state = "away"
requires_power = 0
report_alerts = 0
/area/awaymission/centcomAway/general
name = "XCC-P5831"
music = "music/ambigen3.ogg"
@@ -92,8 +92,8 @@
icon = 'icons/obj/doors/Doorsand.dmi'
icon_state = "door_closed"
autoclose = 1
var/doorOpen = 'sound/machines/airlock.ogg'
var/doorClose = 'sound/machines/airlock.ogg'
var/doorOpen = 'sound/machines/airlock_open.ogg'
var/doorClose = 'sound/machines/airlock_close.ogg'
var/doorDeni = 'sound/machines/DeniedBeep.ogg'
var/id // the room number, eg 101
var/obj/item/weapon/card/hotel_card/card// room's key card
@@ -116,8 +116,7 @@
if(roomtimer)
deltimer(roomtimer)
roomtimer = null
qdel(card)
card = null
QDEL_NULL(card)
return ..()
/obj/machinery/door/unpowered/hotel_door/examine(mob/user)
@@ -220,9 +219,7 @@
vacant_rooms.Cut()
guests.Cut()
if(radio)
qdel(radio)
radio = null
QDEL_NULL(radio)
return ..()
@@ -83,9 +83,9 @@
if(ishuman(user))
var/mob/living/carbon/human/human = user
if(human.species.name != "Shadow")
to_chat(user, "\red Your flesh rapidly mutates!")
to_chat(user, "<span class='warning'>Your flesh rapidly mutates!</span>")
to_chat(user, "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>")
to_chat(user, "\red Your body reacts violently to light. \green However, it naturally heals in darkness.")
to_chat(user, "<span class='warning'>Your body reacts violently to light.</span> <span class='notice'>However, it naturally heals in darkness.</span>")
to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
human.set_species("Shadow")
user.regenerate_icons()
@@ -96,9 +96,9 @@
if(ishuman(user))
var/mob/living/carbon/human/human = user
if(human.species.name != "Shadow")
to_chat(user, "\red Your flesh rapidly mutates!")
to_chat(user, "<span class='warning'>Your flesh rapidly mutates!</span>")
to_chat(user, "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>")
to_chat(user, "\red Your body reacts violently to light. \green However, it naturally heals in darkness.")
to_chat(user, "<span class='warning'>Your body reacts violently to light.</span> <span class='notice'>However, it naturally heals in darkness.</span>")
to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
human.set_species("Shadow")
user.regenerate_icons()
@@ -109,9 +109,9 @@
if(ishuman(user))
var/mob/living/carbon/human/human = user
if(human.species.name != "Shadow")
to_chat(user, "\red Your flesh rapidly mutates!")
to_chat(user, "<span class='warning'>Your flesh rapidly mutates!</span>")
to_chat(user, "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>")
to_chat(user, "\red Your body reacts violently to light. \green However, it naturally heals in darkness.")
to_chat(user, "<span class='warning'>Your body reacts violently to light.</span> <span class='notice'>However, it naturally heals in darkness.</span>")
to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
human.set_species("Shadow")
user.regenerate_icons()
@@ -131,9 +131,9 @@
if(ishuman(user))
var/mob/living/carbon/human/human = user
if(human.species.name != "Shadow")
to_chat(user, "\red Your flesh rapidly mutates!")
to_chat(user, "<span class='warning'>Your flesh rapidly mutates!</span>")
to_chat(user, "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>")
to_chat(user, "\red Your body reacts violently to light. \green However, it naturally heals in darkness.")
to_chat(user, "<span class='warning'>Your body reacts violently to light.</span> <span class='notice'>However, it naturally heals in darkness.</span>")
to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
human.set_species("Shadow")
user.regenerate_icons()
+1
View File
@@ -70,6 +70,7 @@ var/global/list/potentialRandomZlevels = generateMapList(filename = "config/away
log_startup_progress(" No away missions found.")
return
/proc/createALLZlevels()
if(awaydestinations.len) //crude, but it saves another var!
return
+1 -2
View File
@@ -111,8 +111,7 @@
init(R)
/turf/unsimulated/floor/upperlevel/Destroy()
qdel(sensor)
sensor = null
QDEL_NULL(sensor)
return ..()
/turf/unsimulated/floor/upperlevel/proc/init(var/obj/effect/levelref/R)
+23
View File
@@ -225,6 +225,29 @@ proc/getFilesSlow(var/client/client, var/list/files, var/register_asset = TRUE)
"boardui.js" = 'html/browser/boardui.js'
)
/datum/asset/simple/headers
assets = list(
"alarm_green.gif" = 'icons/program_icons/alarm_green.gif',
"alarm_red.gif" = 'icons/program_icons/alarm_red.gif',
"batt_5.gif" = 'icons/program_icons/batt_5.gif',
"batt_20.gif" = 'icons/program_icons/batt_20.gif',
"batt_40.gif" = 'icons/program_icons/batt_40.gif',
"batt_60.gif" = 'icons/program_icons/batt_60.gif',
"batt_80.gif" = 'icons/program_icons/batt_80.gif',
"batt_100.gif" = 'icons/program_icons/batt_100.gif',
"charging.gif" = 'icons/program_icons/charging.gif',
"downloader_finished.gif" = 'icons/program_icons/downloader_finished.gif',
"downloader_running.gif" = 'icons/program_icons/downloader_running.gif',
"ntnrc_idle.gif" = 'icons/program_icons/ntnrc_idle.gif',
"ntnrc_new.gif" = 'icons/program_icons/ntnrc_new.gif',
"power_norm.gif" = 'icons/program_icons/power_norm.gif',
"power_warn.gif" = 'icons/program_icons/power_warn.gif',
"sig_high.gif" = 'icons/program_icons/sig_high.gif',
"sig_low.gif" = 'icons/program_icons/sig_low.gif',
"sig_lan.gif" = 'icons/program_icons/sig_lan.gif',
"sig_none.gif" = 'icons/program_icons/sig_none.gif',
)
/datum/asset/nanoui
var/list/common = list()
+29 -1
View File
@@ -111,6 +111,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Barber?", "Confirmation", "No", "Yes") != "Yes")
return
DB_job_unlock("Barber",5)
return
if("2")
@@ -118,6 +120,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Brig Physician?", "Confirmation", "No", "Yes") != "Yes")
return
DB_job_unlock("Brig Physician",5)
return
if("3")
@@ -125,6 +129,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Nanotrasen Representative?", "Confirmation", "No", "Yes") != "Yes")
return
DB_job_unlock("Nanotrasen Representative",30)
return
if("5")
@@ -132,6 +138,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Blueshield?", "Confirmation", "No", "Yes") != "Yes")
return
DB_job_unlock("Blueshield",30)
return
if("6")
@@ -139,6 +147,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Mechanic?", "Confirmation", "No", "Yes") != "Yes")
return
DB_job_unlock("Mechanic",30)
return
if("7")
@@ -146,6 +156,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Magistrate?", "Confirmation", "No", "Yes") != "Yes")
return
DB_job_unlock("Magistrate",45)
return
if("9")
@@ -153,6 +165,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Security Pod Pilot?", "Confirmation", "No", "Yes") != "Yes")
return
DB_job_unlock("Security Pod Pilot",30)
return
if(href_list["KarmaBuy2"])
@@ -163,6 +177,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Machine People?", "Confirmation", "No", "Yes") != "Yes")
return
DB_species_unlock("Machine",15)
return
if("2")
@@ -170,6 +186,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Kidan?", "Confirmation", "No", "Yes") != "Yes")
return
DB_species_unlock("Kidan",30)
return
if("3")
@@ -177,6 +195,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Grey?", "Confirmation", "No", "Yes") != "Yes")
return
DB_species_unlock("Grey",30)
return
if("4")
@@ -184,6 +204,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Vox?", "Confirmation", "No", "Yes") != "Yes")
return
DB_species_unlock("Vox",45)
return
if("5")
@@ -191,6 +213,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Slime People?", "Confirmation", "No", "Yes") != "Yes")
return
DB_species_unlock("Slime People",45)
return
if("6")
@@ -198,6 +222,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Plasmaman?", "Confirmation", "No", "Yes") != "Yes")
return
DB_species_unlock("Plasmaman",100)
return
if("7")
@@ -205,6 +231,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Drask?", "Confirmation", "No", "Yes") != "Yes")
return
DB_species_unlock("Drask",30)
return
if(href_list["KarmaRefund"])
@@ -367,7 +395,7 @@
preload_rsc = pick(config.resource_urls)
else preload_rsc = 1 // If config.resource_urls is not set, preload like normal.
to_chat(src, "\red If the title screen is black, resources are still downloading. Please be patient until the title screen appears.")
to_chat(src, "<span class='warning'>If the title screen is black, resources are still downloading. Please be patient until the title screen appears.</span>")
clients += src
@@ -118,6 +118,11 @@
path = /obj/item/clothing/head/beret/sci
allowed_roles = list("Research Director", "Scientist")
/datum/gear/hat/med_beret
display_name = "medical beret"
path = /obj/item/clothing/head/beret/med
allowed_roles = list("Chief Medical Officer", "Medical Doctor" , "Virologist", "Brig Physician")
/datum/gear/hat/surgicalcap_purple
display_name = "surgical cap, purple"
path = /obj/item/clothing/head/surgery/purple
@@ -7,6 +7,14 @@
display_name = "sandals, wooden"
path = /obj/item/clothing/shoes/sandal
/datum/gear/shoes/winterboots
display_name = "winter boots"
path = /obj/item/clothing/shoes/winterboots
/datum/gear/shoes/workboots
display_name = "work boots"
path = /obj/item/clothing/shoes/workboots
/datum/gear/shoes/fancysandals
display_name = "sandals, fancy"
cost = 5
@@ -36,7 +36,7 @@
/datum/gear/uniform/skirt/job/atmos
display_name = "skirt, atmos"
path = /obj/item/clothing/under/rank/atmospheric_technician/skirt
allowed_roles = list("Chief Engineer","Atmospheric Technician")
allowed_roles = list("Chief Engineer","Life Support Specialist")
/datum/gear/uniform/skirt/job/eng
display_name = "skirt, engineer"
@@ -50,7 +50,7 @@
/datum/gear/uniform/skirt/job/cmo
display_name = "skirt, cmo"
path = /obj/item/clothing/under/rank/chief_medical_officer
path = /obj/item/clothing/under/rank/chief_medical_officer/skirt
allowed_roles = list("Chief Medical Officer")
/datum/gear/uniform/skirt/job/chem
+81 -77
View File
@@ -108,7 +108,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
var/underwear = "Nude" //underwear type
var/undershirt = "Nude" //undershirt type
var/socks = "Nude" //socks type
var/backbag = 2 //backpack type
var/backbag = GBACKPACK //backpack type
var/ha_style = "None" //Head accessory style
var/r_headacc = 0 //Head accessory colour
var/g_headacc = 0 //Head accessory colour
@@ -175,7 +175,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
var/job_karma_low = 0
//Keeps track of preferrence for not getting any wanted jobs
var/alternate_option = 0
var/alternate_option = 2
// maps each organ to either null(intact), "cyborg" or "amputated"
// will probably not be able to do this for head and torso ;)
@@ -268,9 +268,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
dat += "</td><td width='405px' height='25px' valign='left'>"
dat += "<center>"
dat += "Slot <b>[slot_name]</b> - "
dat += "<a href=\"byond://?src=[user.UID()];preference=open_load_dialog\">Load slot</a> - "
dat += "<a href=\"byond://?src=[user.UID()];preference=save\">Save slot</a> - "
dat += "<a href=\"byond://?src=[user.UID()];preference=reload\">Reload slot</a>"
dat += "<a href=\"byond://?_src_=prefs;preference=open_load_dialog\">Load slot</a> - "
dat += "<a href=\"byond://?_src_=prefs;preference=save\">Save slot</a> - "
dat += "<a href=\"byond://?_src_=prefs;preference=reload\">Reload slot</a>"
dat += "</center>"
dat += "</td></tr></table>"
dat += "<table width='100%'><tr><td width='405px' height='200px' valign='top'>"
@@ -279,7 +279,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
dat += "<b>You are banned from using custom names and appearances. \
You can continue to adjust your characters, but you will be randomised once you join the game.\
</b><br>"
dat += "<b>Gender:</b> <a href='?_src_=prefs;preference=gender'>[gender == MALE ? "Male" : "Female"]</a><br>"
dat += "<b>Gender:</b> <a href='?_src_=prefs;preference=gender'>[gender == MALE ? "Male" : (gender == FEMALE ? "Female" : "Genderless")]</a>"
dat += "<br>"
dat += "<b>Age:</b> <a href='?_src_=prefs;preference=age;task=input'>[age]</a><br>"
dat += "<b>Body:</b> <a href='?_src_=prefs;preference=all;task=random'>(&reg;)</a><br>"
dat += "<b>Species:</b> <a href='?_src_=prefs;preference=species;task=input'>[species]</a><br>"
@@ -293,7 +294,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
dat += "<b>Skin Tone:</b> <a href='?_src_=prefs;preference=s_tone;task=input'>[species == "Vox" ? "[s_tone]" : "[-s_tone + 35]/220"]</a><br>"
dat += "<b>Disabilities:</b> <a href='?_src_=prefs;preference=disabilities'>\[Set\]</a><br>"
dat += "<b>Nanotrasen Relation:</b> <a href ='?_src_=prefs;preference=nt_relation;task=input'>[nanotrasen_relation]</a><br>"
dat += "<a href='byond://?src=[user.UID()];preference=flavor_text;task=input'>Set Flavor Text</a><br>"
dat += "<a href='byond://?_src_=prefs;preference=flavor_text;task=input'>Set Flavor Text</a><br>"
if(lentext(flavor_text) <= 40)
if(!lentext(flavor_text)) dat += "\[...\]<br>"
else dat += "[flavor_text]<br>"
@@ -301,7 +302,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
dat += "<h2>Hair & Accessories</h2>"
if(species in list("Unathi", "Vulpkanin", "Tajaran", "Machine")) //Species that have head accessories.
if(species in list("Unathi", "Vulpkanin", "Tajaran", "Machine", "Kidan")) //Species that have head accessories.
var/headaccessoryname = "Head Accessory: "
if(species == "Unathi")
headaccessoryname = "Horns: "
@@ -357,7 +358,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
if(jobban_isbanned(user, "Records"))
dat += "<b>You are banned from using character records.</b><br>"
else
dat += "<a href=\"byond://?src=[user.UID()];preference=records;record=1\">Character Records</a><br>"
dat += "<a href=\"byond://?_src_=prefs;preference=records;record=1\">Character Records</a><br>"
dat += "<h2>Limbs</h2>"
if(species in list("Unathi")) //Species with alt heads.
@@ -414,7 +415,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
dat += "<b>Underwear:</b> <a href ='?_src_=prefs;preference=underwear;task=input'>[underwear]</a><BR>"
dat += "<b>Undershirt:</b> <a href ='?_src_=prefs;preference=undershirt;task=input'>[undershirt]</a><BR>"
dat += "<b>Socks:</b> <a href ='?_src_=prefs;preference=socks;task=input'>[socks]</a><BR>"
dat += "<b>Backpack Type:</b> <a href ='?_src_=prefs;preference=bag;task=input'>[backbaglist[backbag]]</a><br>"
dat += "<b>Backpack Type:</b> <a href ='?_src_=prefs;preference=bag;task=input'>[backbag]</a><br>"
dat += "</td></tr></table>"
@@ -657,7 +658,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
else
HTML += " <font color=red>\[No]</font></a>"
if(job.alt_titles)
HTML += "<br><b><a class='white' href=\"byond://?src=[user.UID()];preference=job;task=alt_title;job=\ref[job]\">\[[GetPlayerAltTitle(job)]\]</a></b></td></tr>"
HTML += "<br><b><a class='white' href=\"byond://?_src_=prefs;preference=job;task=alt_title;job=\ref[job]\">\[[GetPlayerAltTitle(job)]\]</a></b></td></tr>"
HTML += "</td></tr>"
continue
/*
@@ -673,7 +674,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
HTML += "<font color=[prefLevelColor]>[prefLevelLabel]</font></a>"
if(job.alt_titles)
HTML += "<br><b><a class='white' href=\"byond://?src=[user.UID()];preference=job;task=alt_title;job=\ref[job]\">\[[GetPlayerAltTitle(job)]\]</a></b></td></tr>"
HTML += "<br><b><a class='white' href=\"?_src_=prefs;preference=job;task=alt_title;job=\ref[job]\">\[[GetPlayerAltTitle(job)]\]</a></b></td></tr>"
HTML += "</td></tr>"
@@ -787,7 +788,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
return
if(!isnum(desiredLvl))
to_chat(user, "\red UpdateJobPreference - desired level was not a number. Please notify coders!")
to_chat(user, "<span class='warning'>UpdateJobPreference - desired level was not a number. Please notify coders!</span>")
ShowChoices(user)
return
@@ -811,12 +812,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
/datum/preferences/proc/SetDisabilities(mob/user)
var/HTML = "<body>"
HTML += "<tt><center>"
// AUTOFIXED BY fix_string_idiocy.py
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\client\preferences.dm:474: HTML += "<tt><center>"
HTML += {"<tt><center>
<b>Choose disabilities</b><ul>"}
// END AUTOFIX
HTML += ShowDisabilityState(user,DISABILITY_FLAG_NEARSIGHTED,"Needs Glasses")
HTML += ShowDisabilityState(user,DISABILITY_FLAG_FAT,"Obese")
HTML += ShowDisabilityState(user,DISABILITY_FLAG_EPILEPTIC,"Seizures")
@@ -826,50 +823,46 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
HTML += ShowDisabilityState(user,DISABILITY_FLAG_MUTE,"Mute")
// AUTOFIXED BY fix_string_idiocy.py
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\client\preferences.dm:481: HTML += "</ul>"
HTML += {"</ul>
<a href=\"?_src_=prefs;task=close;preference=disabilities\">\[Done\]</a>
<a href=\"?_src_=prefs;task=reset;preference=disabilities\">\[Reset\]</a>
</center></tt>"}
// END AUTOFIX
user << browse(null, "window=preferences")
user << browse(HTML, "window=disabil;size=350x300")
return
var/datum/browser/popup = new(user, "disabil", "<div align='center'>Choose Disabilities</div>", 350, 300)
popup.set_content(HTML)
popup.open(0)
/datum/preferences/proc/SetRecords(mob/user)
var/HTML = "<body>"
HTML += "<tt><center>"
HTML += "<b>Set Character Records</b><br>"
HTML += "<a href=\"byond://?src=[user.UID()];preference=records;task=med_record\">Medical Records</a><br>"
HTML += "<a href=\"byond://?_src_=prefs;preference=records;task=med_record\">Medical Records</a><br>"
if(lentext(med_record) <= 40)
HTML += "[med_record]"
else
HTML += "[copytext(med_record, 1, 37)]..."
HTML += "<br><br><a href=\"byond://?src=[user.UID()];preference=records;task=gen_record\">Employment Records</a><br>"
HTML += "<br><a href=\"byond://?_src_=prefs;preference=records;task=gen_record\">Employment Records</a><br>"
if(lentext(gen_record) <= 40)
HTML += "[gen_record]"
else
HTML += "[copytext(gen_record, 1, 37)]..."
HTML += "<br><br><a href=\"byond://?src=[user.UID()];preference=records;task=sec_record\">Security Records</a><br>"
HTML += "<br><a href=\"byond://?_src_=prefs;preference=records;task=sec_record\">Security Records</a><br>"
if(lentext(sec_record) <= 40)
HTML += "[sec_record]<br>"
else
HTML += "[copytext(sec_record, 1, 37)]...<br>"
HTML += "<br>"
HTML += "<a href=\"byond://?src=[user.UID()];preference=records;records=-1\">\[Done\]</a>"
HTML += "<a href=\"byond://?_src_=prefs;preference=records;records=-1\">\[Done\]</a>"
HTML += "</center></tt>"
user << browse(null, "window=preferences")
user << browse(HTML, "window=records;size=350x300")
return
var/datum/browser/popup = new(user, "records", "<div align='center'>Character Records</div>", 350, 300)
popup.set_content(HTML)
popup.open(0)
/datum/preferences/proc/GetPlayerAltTitle(datum/job/job)
return player_alt_titles.Find(job.title) > 0 \
@@ -1031,6 +1024,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
/datum/preferences/proc/process_link(mob/user, list/href_list)
if(!user) return
var/datum/species/S = all_species[species]
if(href_list["preference"] == "job")
switch(href_list["task"])
if("close")
@@ -1240,7 +1234,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
g_skin = rand(0,255)
b_skin = rand(0,255)
if("bag")
backbag = rand(1,4)
backbag = pick(backbaglist)
/*if("skin_style")
h_style = random_skin_style(gender)*/
if("all")
@@ -1266,9 +1260,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
// var/whitelisted = 0
if(config.usealienwhitelist) //If we're using the whitelist, make sure to check it!
for(var/S in whitelisted_species)
if(is_alien_whitelisted(user,S))
new_species += S
for(var/Spec in whitelisted_species)
if(is_alien_whitelisted(user,Spec))
new_species += Spec
// whitelisted = 1
// if(!whitelisted)
// alert(user, "You cannot change your species as you need to be whitelisted. If you wish to be whitelisted contact an admin in-game, on the forums, or on IRC.")
@@ -1276,8 +1270,10 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
new_species += whitelisted_species
species = input("Please select a species", "Character Generation", null) in new_species
var/datum/species/NS = all_species[species]
if(prev_species != species)
if(NS.has_gender && gender == PLURAL)
gender = pick(MALE,FEMALE)
var/datum/robolimb/robohead
if(species == "Machine")
var/head_model = "[!rlimb_data["head"] ? "Morpheus Cyberkinetics" : rlimb_data["head"]]"
@@ -1315,16 +1311,16 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
m_colours["tail"] = "#000000"
// Don't wear another species' underwear!
var/datum/sprite_accessory/S = underwear_list[underwear]
if(!S || !(species in S.species_allowed))
var/datum/sprite_accessory/SA = underwear_list[underwear]
if(!SA || !(species in SA.species_allowed))
underwear = random_underwear(gender, species)
S = undershirt_list[undershirt]
if(!S || !(species in S.species_allowed))
SA = undershirt_list[undershirt]
if(!SA || !(species in SA.species_allowed))
undershirt = random_undershirt(gender, species)
S = socks_list[socks]
if(!S || !(species in S.species_allowed))
SA = socks_list[socks]
if(!SA || !(species in SA.species_allowed))
socks = random_socks(gender, species)
//reset skin tone and colour
@@ -1402,7 +1398,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
if("h_style")
var/list/valid_hairstyles = list()
for(var/hairstyle in hair_styles_list)
var/datum/sprite_accessory/S = hair_styles_list[hairstyle]
var/datum/sprite_accessory/SA = hair_styles_list[hairstyle]
if(hairstyle == "Bald") //Just in case.
valid_hairstyles += hairstyle
@@ -1414,14 +1410,14 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
else
head_model = rlimb_data["head"]
var/datum/robolimb/robohead = all_robolimbs[head_model]
if((species in S.species_allowed) && robohead.is_monitor && ((S.models_allowed && (robohead.company in S.models_allowed)) || !S.models_allowed)) //If this is a hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
if((species in SA.species_allowed) && robohead.is_monitor && ((SA.models_allowed && (robohead.company in SA.models_allowed)) || !SA.models_allowed)) //If this is a hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
valid_hairstyles += hairstyle //Give them their hairstyles if they do.
else
if(!robohead.is_monitor && ("Human" in S.species_allowed)) /*If the hairstyle is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
if(!robohead.is_monitor && ("Human" in SA.species_allowed)) /*If the hairstyle is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
But if the user has a robotic humanoid head and the hairstyle can fit humans, let them use it as a wig. */
valid_hairstyles += hairstyle
else //If the user is not a species who can have robotic heads, use the default handling.
if(species in S.species_allowed) //If the user's head is of a species the hairstyle allows, add it to the list.
if(species in SA.species_allowed) //If the user's head is of a species the hairstyle allows, add it to the list.
valid_hairstyles += hairstyle
var/new_h_style = input(user, "Choose your character's hair style:", "Character Preference") as null|anything in valid_hairstyles
@@ -1429,7 +1425,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
h_style = new_h_style
if("headaccessory")
if(species in list("Unathi", "Vulpkanin", "Tajaran", "Machine")) //Species with head accessories.
if(species in list("Unathi", "Vulpkanin", "Tajaran", "Machine", "Kidan")) //Species with head accessories.
var/input = "Choose the colour of your your character's head accessory:"
var/new_head_accessory = input(user, input, "Character Preference", rgb(r_headacc, g_headacc, b_headacc)) as color|null
if(new_head_accessory)
@@ -1438,7 +1434,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
b_headacc = color2B(new_head_accessory)
if("ha_style")
if(species in list("Unathi", "Vulpkanin", "Tajaran", "Machine")) //Species with head accessories.
if(species in list("Unathi", "Vulpkanin", "Tajaran", "Machine", "Kidan")) //Species with head accessories.
var/list/valid_head_accessory_styles = list()
for(var/head_accessory_style in head_accessory_styles_list)
var/datum/sprite_accessory/H = head_accessory_styles_list[head_accessory_style]
@@ -1609,14 +1605,14 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
if("f_style")
var/list/valid_facial_hairstyles = list()
for(var/facialhairstyle in facial_hair_styles_list)
var/datum/sprite_accessory/S = facial_hair_styles_list[facialhairstyle]
var/datum/sprite_accessory/SA = facial_hair_styles_list[facialhairstyle]
if(facialhairstyle == "Shaved") //Just in case.
valid_facial_hairstyles += facialhairstyle
continue
if(gender == MALE && S.gender == FEMALE)
if(gender == MALE && SA.gender == FEMALE)
continue
if(gender == FEMALE && S.gender == MALE)
if(gender == FEMALE && SA.gender == MALE)
continue
if(species == "Machine") //Species that can use prosthetic heads.
var/head_model
@@ -1625,14 +1621,14 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
else
head_model = rlimb_data["head"]
var/datum/robolimb/robohead = all_robolimbs[head_model]
if((species in S.species_allowed) && robohead.is_monitor && ((S.models_allowed && (robohead.company in S.models_allowed)) || !S.models_allowed)) //If this is a facial hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
if((species in SA.species_allowed) && robohead.is_monitor && ((SA.models_allowed && (robohead.company in SA.models_allowed)) || !SA.models_allowed)) //If this is a facial hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
valid_facial_hairstyles += facialhairstyle //Give them their facial hairstyles if they do.
else
if(!robohead.is_monitor && ("Human" in S.species_allowed)) /*If the facial hairstyle is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
if(!robohead.is_monitor && ("Human" in SA.species_allowed)) /*If the facial hairstyle is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
But if the user has a robotic humanoid head and the facial hairstyle can fit humans, let them use it as a wig. */
valid_facial_hairstyles += facialhairstyle
else //If the user is not a species who can have robotic heads, use the default handling.
if(species in S.species_allowed) //If the user's head is of a species the facial hair style allows, add it to the list.
if(species in SA.species_allowed) //If the user's head is of a species the facial hair style allows, add it to the list.
valid_facial_hairstyles += facialhairstyle
var/new_f_style = input(user, "Choose your character's facial-hair style:", "Character Preference") as null|anything in valid_facial_hairstyles
@@ -1642,12 +1638,12 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
if("underwear")
var/list/valid_underwear = list()
for(var/underwear in underwear_list)
var/datum/sprite_accessory/S = underwear_list[underwear]
if(gender == MALE && S.gender == FEMALE)
var/datum/sprite_accessory/SA = underwear_list[underwear]
if(gender == MALE && SA.gender == FEMALE)
continue
if(gender == FEMALE && S.gender == MALE)
if(gender == FEMALE && SA.gender == MALE)
continue
if(!(species in S.species_allowed))
if(!(species in SA.species_allowed))
continue
valid_underwear[underwear] = underwear_list[underwear]
var/new_underwear = input(user, "Choose your character's underwear:", "Character Preference") as null|anything in valid_underwear
@@ -1657,12 +1653,12 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
if("undershirt")
var/list/valid_undershirts = list()
for(var/undershirt in undershirt_list)
var/datum/sprite_accessory/S = undershirt_list[undershirt]
if(gender == MALE && S.gender == FEMALE)
var/datum/sprite_accessory/SA = undershirt_list[undershirt]
if(gender == MALE && SA.gender == FEMALE)
continue
if(gender == FEMALE && S.gender == MALE)
if(gender == FEMALE && SA.gender == MALE)
continue
if(!(species in S.species_allowed))
if(!(species in SA.species_allowed))
continue
valid_undershirts[undershirt] = undershirt_list[undershirt]
var/new_undershirt = input(user, "Choose your character's undershirt:", "Character Preference") as null|anything in valid_undershirts
@@ -1673,12 +1669,12 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
if("socks")
var/list/valid_sockstyles = list()
for(var/sockstyle in socks_list)
var/datum/sprite_accessory/S = socks_list[sockstyle]
if(gender == MALE && S.gender == FEMALE)
var/datum/sprite_accessory/SA = socks_list[sockstyle]
if(gender == MALE && SA.gender == FEMALE)
continue
if(gender == FEMALE && S.gender == MALE)
if(gender == FEMALE && SA.gender == MALE)
continue
if(!(species in S.species_allowed))
if(!(species in SA.species_allowed))
continue
valid_sockstyles[sockstyle] = socks_list[sockstyle]
var/new_socks = input(user, "Choose your character's socks:", "Character Preference") as null|anything in valid_sockstyles
@@ -1718,9 +1714,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
ooccolor = new_ooccolor
if("bag")
var/new_backbag = input(user, "Choose your character's style of bag:", "Character Preference") as null|anything in backbaglist
var/new_backbag = input(user, "Choose your character's style of bag:", "Character Preference") as null|anything in backbaglist
if(new_backbag)
backbag = backbaglist.Find(new_backbag)
backbag = new_backbag
if("nt_relation")
var/new_relation = input(user, "Choose your relation to NT. Note that this represents what others can find out about your character by researching your background, not what your character actually thinks.", "Character Preference") as null|anything in list("Loyal", "Supportive", "Neutral", "Skeptical", "Opposed")
@@ -1909,10 +1905,20 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
toggles ^= DONATOR_PUBLIC
if("gender")
if(gender == MALE)
gender = FEMALE
if(!S.has_gender)
var/newgender = input(user, "Choose Gender:") as null|anything in list("Male", "Female", "Genderless")
switch(newgender)
if("Male")
gender = MALE
if("Female")
gender = FEMALE
if("Genderless")
gender = PLURAL
else
gender = MALE
if(gender == MALE)
gender = FEMALE
else
gender = MALE
underwear = random_underwear(gender)
if("hear_adminhelps")
@@ -2150,12 +2156,10 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
if(body_accessory)
character.body_accessory = body_accessory_by_name["[body_accessory]"]
if(backbag > 4 || backbag < 1)
backbag = 1 //Same as above
character.backbag = backbag
//Debugging report to track down a bug, which randomly assigned the plural gender to people.
if(character.gender in list(PLURAL, NEUTER))
if(S.has_gender && (character.gender in list(PLURAL, NEUTER)))
if(isliving(src)) //Ghosts get neuter by default
message_admins("[key_name_admin(character)] has spawned with their gender as plural or neuter. Please notify coders.")
character.change_gender(MALE)
@@ -2224,7 +2228,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
dat += "<a href='?_src_=prefs;preference=changeslot;num=[i];'>[name]</a><br>"
dat += "<hr>"
dat += "<a href='byond://?src=[user.UID()];preference=close_load_dialog'>Close</a><br>"
dat += "<a href='byond://?_src_=prefs;preference=close_load_dialog'>Close</a><br>"
dat += "</center></tt>"
// user << browse(dat, "window=saves;size=300x390")
var/datum/browser/popup = new(user, "saves", "<div align='center'>Character Saves</div>", 300, 390)
@@ -224,7 +224,7 @@
b_eyes = text2num(query.item[35])
underwear = query.item[36]
undershirt = query.item[37]
backbag = text2num(query.item[38])
backbag = query.item[38]
b_type = query.item[39]
@@ -270,6 +270,7 @@
gear = params2list(query.item[65])
//Sanitize
var/datum/species/SP = all_species[species]
metadata = sanitize_text(metadata, initial(metadata))
real_name = reject_bad_name(real_name, 1)
if(isnull(species)) species = "Human"
@@ -278,7 +279,7 @@
if(isnull(speciesprefs)) speciesprefs = initial(speciesprefs)
if(!real_name) real_name = random_name(gender,species)
be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name))
gender = sanitize_gender(gender)
gender = sanitize_gender(gender, FALSE, !SP.has_gender)
age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age))
r_hair = sanitize_integer(r_hair, 0, 255, initial(r_hair))
g_hair = sanitize_integer(g_hair, 0, 255, initial(g_hair))
@@ -312,7 +313,7 @@
b_eyes = sanitize_integer(b_eyes, 0, 255, initial(b_eyes))
underwear = sanitize_text(underwear, initial(underwear))
undershirt = sanitize_text(undershirt, initial(undershirt))
backbag = sanitize_integer(backbag, 1, backbaglist.len, initial(backbag))
backbag = sanitize_text(backbag, initial(backbag))
b_type = sanitize_text(b_type, initial(b_type))
alternate_option = sanitize_integer(alternate_option, 0, 2, initial(alternate_option))
@@ -36,8 +36,8 @@
to_chat(usr, "You will [(prefs.toggles & CHAT_RADIO) ? "now" : "no longer"] see radio chatter from radios or speakers")
feedback_add_details("admin_verb","THR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/toggleadminhelpsound()
set name = "Hear/Silence Adminhelps"
/client/proc/toggleadminhelpsound()
set name = "Hear/Silence Admin Bwoinks"
set category = "Preferences"
set desc = "Toggle hearing a notification when admin PMs are recieved"
if(!holder) return
+16 -13
View File
@@ -2,7 +2,7 @@
name = "clothing"
burn_state = FLAMMABLE
var/list/species_restricted = null //Only these species can wear this kit.
var/rig_restrict_helmet = 0 // Stops the user from equipping a rig helmet without attaching it to the suit first.
var/hardsuit_restrict_helmet = 0 // Stops the user from equipping a hardsuit helmet without attaching it to the suit first.
var/scan_reagents = 0 //Can the wearer see reagents while it's equipped?
/*
@@ -14,7 +14,7 @@
var/list/sprite_sheets_refit = null
lefthand_file = 'icons/mob/inhands/clothing_lefthand.dmi'
righthand_file = 'icons/mob/inhands/clothing_righthand.dmi'
var/alt_desc = null
var/flash_protect = 0 //What level of bright light protection item has. 1 = Flashers, Flashes, & Flashbangs | 2 = Welding | -1 = OH GOD WELDING BURNT OUT MY RETINAS
var/tint = 0 //Sets the item's level of visual impairment tint, normally set to the same as flash_protect
var/up = 0 //but seperated to allow items to protect but not impair vision, like space helmets
@@ -24,6 +24,7 @@
var/toggle_message = null
var/alt_toggle_message = null
var/active_sound = null
var/toggle_sound = null
var/toggle_cooldown = null
var/cooldown = 0
var/species_disguise = null
@@ -57,7 +58,7 @@
wearable = 1
if(!wearable)
to_chat(M, "\red Your species cannot wear [src].")
to_chat(M, "<span class='warning'>Your species cannot wear [src].</span>")
return 0
return 1
@@ -145,7 +146,7 @@
name = "glasses"
icon = 'icons/obj/clothing/glasses.dmi'
w_class = 2
flags = GLASSESCOVERSEYES
flags_cover = GLASSESCOVERSEYES
slot_flags = SLOT_EYES
materials = list(MAT_GLASS = 250)
var/vision_flags = 0
@@ -200,7 +201,7 @@ BLIND // can't see anything
/obj/item/clothing/gloves/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/wirecutters))
if(!clipped)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
playsound(src.loc, W.usesound, 100, 1)
user.visible_message("<span class='warning'>[user] snips the fingertips off [src].</span>","<span class='warning'>You snip the fingertips off [src].</span>")
clipped = 1
name = "mangled [name]"
@@ -249,7 +250,7 @@ BLIND // can't see anything
switch(sensor_mode)
if(0)
for(var/mob/V in viewers(user, 1))
V.show_message("\red [user] disables [src.loc]'s remote sensing equipment.", 1)
V.show_message("<span class='warning'>[user] disables [src.loc]'s remote sensing equipment.</span>", 1)
if(1)
for(var/mob/V in viewers(user, 1))
V.show_message("[user] turns [src.loc]'s remote sensors to binary.", 1)
@@ -311,10 +312,11 @@ BLIND // can't see anything
if(initial(flags_inv) & HIDEFACE) //If the mask is one that hides the face and can be adjusted yet lost that trait when it was adjusted, make it hide the face again.
flags_inv |= HIDEFACE
if(flags != initial(flags))
if(initial(flags) & MASKCOVERSMOUTH) //If the mask covers the mouth when it's down and can be adjusted yet lost that trait when it was adjusted, make it cover the mouth again.
flags |= MASKCOVERSMOUTH
if(initial(flags) & AIRTIGHT) //If the mask is airtight and thus, one that you'd be able to run internals from yet can't because it was adjusted, make it airtight again.
flags |= AIRTIGHT
if(flags_cover != initial(flags_cover))
if(initial(flags_cover) & MASKCOVERSMOUTH) //If the mask covers the mouth when it's down and can be adjusted yet lost that trait when it was adjusted, make it cover the mouth again.
flags_cover |= MASKCOVERSMOUTH
if(H.head == src && flags_inv == HIDEFACE) //Means that only things like bandanas and balaclavas will be affected since they obscure the identity of the wearer.
if(H.l_hand && H.r_hand) //If both hands are occupied, drop the object on the ground.
user.unEquip(src)
@@ -337,8 +339,8 @@ BLIND // can't see anything
if(flags_inv & HIDEFACE) //Means that only things like bandanas and balaclavas will be affected since they obscure the identity of the wearer.
flags_inv &= ~HIDEFACE /*Done after the above to avoid having to do a check for initial(src.flags_inv == HIDEFACE).
This reveals the user's face since the bandana will now be going on their head.*/
if(flags & MASKCOVERSMOUTH) //Mask won't cover the mouth any more since it's been pushed out of the way. Allows for CPRing with adjusted masks.
flags &= ~MASKCOVERSMOUTH
if(flags_cover & MASKCOVERSMOUTH) //Mask won't cover the mouth any more since it's been pushed out of the way. Allows for CPRing with adjusted masks.
flags_cover &= ~MASKCOVERSMOUTH
if(flags & AIRTIGHT) //If the mask was airtight, it won't be anymore since you just pushed it off your face.
flags &= ~AIRTIGHT
if(user.wear_mask == src && initial(flags_inv) == HIDEFACE) //Means that you won't have to take off and put back on simple things like breath masks which, realistically, can just be pulled down off your face.
@@ -398,7 +400,7 @@ BLIND // can't see anything
if(istype(I, /obj/item/weapon/wirecutters))
if(can_cut_open)
if(!cut_open)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
playsound(src.loc, I.usesound, 100, 1)
user.visible_message("<span class='warning'>[user] cuts open the toes of [src].</span>","<span class='warning'>You cut open the toes of [src].</span>")
cut_open = 1
icon_state = "[icon_state]_opentoe"
@@ -520,7 +522,8 @@ BLIND // can't see anything
name = "Space helmet"
icon_state = "space"
desc = "A special helmet designed for work in a hazardous, low-pressure environment."
flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL
flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
item_state = "s_helmet"
permeability_coefficient = 0.01
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 50)
@@ -566,7 +569,7 @@ BLIND // can't see anything
permeability_coefficient = 0.90
slot_flags = SLOT_ICLOTHING
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
species_fit = list("Vox")
species_fit = list("Vox", "Drask")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi',
"Drask" = 'icons/mob/species/drask/uniform.dmi'
+8 -5
View File
@@ -75,6 +75,7 @@
icon_state = "cybereye-green"
item_state = "eyepatch"
flags = NODROP
flags_cover = null
prescription_upgradable = 0
/obj/item/clothing/glasses/science
@@ -167,6 +168,7 @@
icon_state = "cybereye-blue"
item_state = "eyepatch"
flags = NODROP
flags_cover = null
/obj/item/clothing/glasses/regular
name = "prescription glasses"
@@ -284,7 +286,7 @@
/obj/item/clothing/glasses/sunglasses/lasers
desc = "A peculiar set of sunglasses; they have various chips and other panels attached to the sides of the frames."
name = "high-tech sunglasses"
flags = GLASSESCOVERSEYES | NODROP
flags = NODROP
/obj/item/clothing/glasses/sunglasses/lasers/equipped(mob/user, slot) //grant them laser eyes upon equipping it.
if(slot == slot_glasses)
@@ -312,7 +314,7 @@
/obj/item/clothing/glasses/welding/proc/toggle()
if(up)
up = !up
flags |= GLASSESCOVERSEYES
flags_cover |= GLASSESCOVERSEYES
flags_inv |= HIDEEYES
icon_state = initial(icon_state)
to_chat(usr, "You flip the [src] down to protect your eyes.")
@@ -320,7 +322,7 @@
tint = initial(tint) //better than istype
else
up = !up
flags &= ~GLASSESCOVERSEYES
flags_cover &= ~GLASSESCOVERSEYES
flags_inv &= ~HIDEEYES
icon_state = "[initial(icon_state)]up"
to_chat(usr, "You push the [src] up out of your face.")
@@ -376,7 +378,7 @@
emp_act(severity)
if(istype(src.loc, /mob/living/carbon/human))
var/mob/living/carbon/human/M = src.loc
to_chat(M, "\red The Optical Thermal Scanner overloads and blinds you!")
to_chat(M, "<span class='warning'>The Optical Thermal Scanner overloads and blinds you!</span>")
if(M.glasses == src)
M.EyeBlind(3)
M.EyeBlurry(5)
@@ -397,7 +399,7 @@
name = "Thermoncle"
desc = "A monocle thermal."
icon_state = "thermoncle"
flags = null //doesn't protect eyes because it's a monocle, duh
flags_cover = null //doesn't protect eyes because it's a monocle, duh
/obj/item/clothing/glasses/thermal/eyepatch
name = "Optical Thermal Eyepatch"
@@ -478,6 +480,7 @@
darkness_view = 8
scan_reagents = 1
flags = NODROP
flags_cover = null
invis_view = SEE_INVISIBLE_MINIMUM
/obj/item/clothing/glasses/godeye/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
+1 -1
View File
@@ -78,7 +78,7 @@
if(istype(W, /obj/item/weapon/wirecutters))
if(can_be_cut && icon_state == initial(icon_state))//only if not dyed
to_chat(user, "<span class='notice'>You snip the fingertips off of [src].</span>")
playsound(user.loc,'sound/items/Wirecutter.ogg', rand(10,50), 1)
playsound(user.loc, W.usesound, rand(10,50), 1)
var/obj/item/clothing/gloves/fingerless/F = new/obj/item/clothing/gloves/fingerless(user.loc)
if(pickpocket)
F.pickpocket = 1
@@ -63,16 +63,14 @@
desc = "Horrendous and awful. It smells like cancer. The fact it has wires attached to it is incidental."
var/obj/item/weapon/stock_parts/cell/cell = null
var/stun_strength = 5
var/stun_cost = 3750
var/stun_cost = 2000
/obj/item/clothing/gloves/color/yellow/stun/New()
..()
update_icon()
/obj/item/clothing/gloves/color/yellow/stun/Destroy()
if(cell)
qdel(cell)
cell = null
QDEL_NULL(cell)
return ..()
/obj/item/clothing/gloves/color/yellow/stun/Touch(atom/A, proximity)
+26 -23
View File
@@ -2,7 +2,8 @@
name = "helmet"
desc = "Standard Security gear. Protects the head from impacts."
icon_state = "helmetmaterials"
flags = HEADCOVERSEYES | HEADBANGPROTECT
flags = HEADBANGPROTECT
flags_cover = HEADCOVERSEYES
item_state = "helmetmaterials"
armor = list(melee = 30, bullet = 25, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0)
flags_inv = HIDEEARS|HIDEEYES
@@ -12,7 +13,7 @@
max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT
strip_delay = 60
burn_state = FIRE_PROOF
species_fit = list("Vox")
species_fit = list("Vox", "Drask")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/helmet.dmi',
"Drask" = 'icons/mob/species/drask/helmet.dmi'
@@ -34,6 +35,8 @@
while(up)
playsound(src.loc, "[active_sound]", 100, 0, 4)
sleep(15)
if(toggle_sound)
playsound(src.loc, "[toggle_sound]", 100, 0, 4)
/obj/item/clothing/head/helmet/visor
@@ -71,20 +74,15 @@
icon_state = "swat"
item_state = "swat-alt"
armor = list(melee = 15, bullet = 40, laser = 10, energy = 10, bomb = 40, bio = 0, rad = 0)
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/helmet.dmi',
"Drask" = 'icons/mob/species/drask/helmet.dmi'
)
/obj/item/clothing/head/helmet/riot
name = "riot helmet"
desc = "It's a helmet specifically designed to protect against close range attacks."
icon_state = "riot"
item_state = "helmet"
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | HEADBANGPROTECT
armor = list(melee = 41, bullet = 15, laser = 5, energy = 5, bomb = 5, bio = 2, rad = 0)
flags_inv = HIDEEARS
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
strip_delay = 80
/obj/item/clothing/head/helmet/riot/knight
@@ -92,7 +90,7 @@
desc = "A classic metal helmet."
icon_state = "knight_green"
item_state = "knight_green"
flags = BLOCKHAIR|HEADCOVERSEYES|HEADCOVERSMOUTH
flags = BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
/obj/item/clothing/head/helmet/justice
@@ -118,20 +116,15 @@
name = "\improper SWAT helmet"
desc = "They're often used by highly trained Swat Members."
icon_state = "swat"
flags = HEADCOVERSEYES
item_state = "swat"
armor = list(melee = 40, bullet = 30, laser = 30, energy = 30, bomb = 50, bio = 90, rad = 20)
flags = null
flags_inv = HIDEEARS|HIDEEYES
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
heat_protection = HEAD
max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT
strip_delay = 80
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/head.dmi',
"Drask" = 'icons/mob/species/drask/helmet.dmi'
)
/obj/item/clothing/head/helmet/swat/syndicate
name = "blood-red helmet"
@@ -143,7 +136,7 @@
name = "\improper Thunderdome helmet"
desc = "<i>'Let the battle commence!'</i>"
icon_state = "thunderdome"
flags = HEADCOVERSEYES
flags = null
item_state = "thunderdome"
armor = list(melee = 40, bullet = 30, laser = 25, energy = 10, bomb = 25, bio = 10, rad = 0)
cold_protection = HEAD
@@ -155,7 +148,7 @@
/obj/item/clothing/head/helmet/roman
name = "roman helmet"
desc = "An ancient helmet made of bronze and leather."
flags = HEADCOVERSEYES
flags = null
armor = list(melee = 25, bullet = 0, laser = 25, energy = 10, bomb = 10, bio = 0, rad = 0)
icon_state = "roman"
item_state = "roman"
@@ -171,15 +164,21 @@
name = "gladiator helmet"
desc = "Ave, Imperator, morituri te salutant."
icon_state = "gladiator"
flags = HEADCOVERSEYES | BLOCKHAIR
flags = BLOCKHAIR
item_state = "gladiator"
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
toggle_message = "You attach the face shield to the"
alt_toggle_message = "You remove the face shield from the"
actions_types = list(/datum/action/item_action/toggle_helmet_mode)
can_toggle = 1
toggle_cooldown = 20
toggle_sound = 'sound/items/ZippoClose.ogg'
obj/item/clothing/head/helmet/redtaghelm
name = "red laser tag helmet"
desc = "They have chosen their own end."
icon_state = "redtaghelm"
flags = HEADCOVERSEYES
flags = null
item_state = "redtaghelm"
armor = list(melee = 15, bullet = 10, laser = 20, energy = 10, bomb = 20, bio = 0, rad = 0)
// Offer about the same protection as a hardhat.
@@ -189,7 +188,7 @@ obj/item/clothing/head/helmet/bluetaghelm
name = "blue laser tag helmet"
desc = "They'll need more men."
icon_state = "bluetaghelm"
flags = HEADCOVERSEYES
flags = null
item_state = "bluetaghelm"
armor = list(melee = 15, bullet = 10, laser = 20, energy = 10, bomb = 20, bio = 0, rad = 0)
// Offer about the same protection as a hardhat.
@@ -200,8 +199,12 @@ obj/item/clothing/head/blob
desc = "A collectible hat handed out at the latest Blob Family Reunion."
icon_state = "blobhat"
item_state = "blobhat"
flags = HEADCOVERSEYES|HEADCOVERSMOUTH
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/helmet.dmi'
)
/obj/item/clothing/head/helmet/riot/knight/blue
icon_state = "knight_blue"
@@ -220,7 +223,7 @@ obj/item/clothing/head/blob
desc = "Deus Vult."
icon_state = "knight_templar"
item_state = "knight_templar"
armor = list(melee = 20, bullet = 7, laser = 2, energy = 2, bomb = 2, bio = 2, rad = 0)
//Commander
/obj/item/clothing/head/helmet/ert/command
@@ -246,7 +249,7 @@ obj/item/clothing/head/blob
desc = "A set of armor worn by medical members of the NanoTrasen Emergency Response Team. Has red and white highlights."
icon_state = "erthelmet_med"
//Medical
//Janitorial
/obj/item/clothing/head/helmet/ert/janitor
name = "emergency response team janitor helmet"
desc = "A set of armor worn by janitorial members of the NanoTrasen Emergency Response Team. Has red and white highlights."
+9 -2
View File
@@ -43,14 +43,16 @@
name = "chaplain's hood"
desc = "It's hood that covers the head. It keeps you warm during the space winters."
icon_state = "chaplain_hood"
flags = HEADCOVERSEYES | BLOCKHAIR
flags = BLOCKHAIR
flags_cover = HEADCOVERSEYES
//Chaplain
/obj/item/clothing/head/nun_hood
name = "nun hood"
desc = "Maximum piety in this star system."
icon_state = "nun_hood"
flags = HEADCOVERSEYES | BLOCKHAIR
flags = BLOCKHAIR
flags_cover = HEADCOVERSEYES
/obj/item/clothing/head/det_hat
name = "hat"
@@ -127,6 +129,11 @@
icon_state = "beret_sci"
//Medical
/obj/item/clothing/head/beret/med
name = "medical beret"
desc = "A white beret with a green cross finely threaded into it. It has that sterile smell about it."
icon_state = "beret_med"
/obj/item/clothing/head/surgery
name = "surgical cap"
desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs."
+8 -7
View File
@@ -60,7 +60,8 @@
name = "hastur's hood"
desc = "It's unspeakably stylish"
icon_state = "hasturhood"
flags = HEADCOVERSEYES | BLOCKHAIR
flags = BLOCKHAIR
flags_cover = HEADCOVERSEYES
/obj/item/clothing/head/nursehat
name = "nurse's hat"
@@ -80,16 +81,18 @@
desc = "A large, featureless white orb meant to be worn on your head. How do you even see out of this thing?"
icon_state = "cueball"
item_state = "cueball"
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
flags = BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
/obj/item/clothing/head/snowman
name = "snowman head"
desc = "A ball of white styrofoam. So festive."
icon_state = "snowman_h"
item_state = "snowman_h"
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
flags = BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
/obj/item/clothing/head/that
name = "sturdy top-hat"
@@ -111,7 +114,8 @@
desc = "Fight for what's righteous!"
icon_state = "justicered"
item_state = "justicered"
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
flags = BLOCKHAIR
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
/obj/item/clothing/head/justice/blue
icon_state = "justiceblue"
@@ -375,9 +379,6 @@
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
actions_types = list(/datum/action/item_action/caw)
/obj/item/clothing/head/griffin/super_hero
flags = BLOCKHAIR|NODROP
/obj/item/clothing/head/griffin/attack_self()
caw()
+7 -6
View File
@@ -15,7 +15,7 @@
name = "welding helmet"
desc = "A head-mounted face cover designed to protect the wearer completely from space-arc eye."
icon_state = "welding"
flags = HEADCOVERSEYES | HEADCOVERSMOUTH
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
item_state = "welding"
materials = list(MAT_METAL=1750, MAT_GLASS=400)
flash_protect = 2
@@ -53,7 +53,7 @@
/obj/item/clothing/head/welding/proc/toggle()
if(up)
up = !up
flags |= (HEADCOVERSEYES | HEADCOVERSMOUTH)
flags_cover |= (HEADCOVERSEYES | HEADCOVERSMOUTH)
flags_inv |= (HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE)
icon_state = initial(icon_state)
to_chat(usr, "You flip the [src] down to protect your eyes.")
@@ -61,7 +61,7 @@
tint = 2
else
up = !up
flags &= ~(HEADCOVERSEYES | HEADCOVERSMOUTH)
flags_cover &= ~(HEADCOVERSEYES | HEADCOVERSMOUTH)
flags_inv &= ~(HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE)
icon_state = "[initial(icon_state)]up"
to_chat(usr, "You push the [src] up out of your face.")
@@ -84,7 +84,7 @@
name = "cake-hat"
desc = "It's tasty looking!"
icon_state = "cake0"
flags = HEADCOVERSEYES
flags_cover = HEADCOVERSEYES
var/onfire = 0.0
var/status = 0
var/fire_resist = T0C+1300 //this is the max temp it can stand before you start to cook. although it might not burn away, you take damage
@@ -150,8 +150,9 @@
icon_state = "hardhat0_pumpkin"//Could stand to be renamed
item_state = "hardhat0_pumpkin"
item_color = "pumpkin"
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
flags = BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
brightness_on = 2 //luminosity when on
@@ -220,8 +221,8 @@
desc = "A helmet made out of a box."
icon_state = "cardborg_h"
item_state = "cardborg_h"
flags = HEADCOVERSEYES | HEADCOVERSMOUTH
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
species_disguise = "High-tech robot"
/obj/item/clothing/head/cardborg/equipped(mob/living/user, slot)
+16
View File
@@ -6,6 +6,10 @@
item_color = "cargo"
var/flipped = 0
actions_types = list(/datum/action/item_action/flip_cap)
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/head.dmi'
)
/obj/item/clothing/head/soft/dropped()
icon_state = "[item_color]soft"
@@ -102,3 +106,15 @@
desc = "It's baseball hat in corpotate colours."
icon_state = "corpsoft"
item_color = "corp"
/obj/item/clothing/head/soft/solgov
name = "Sol Federation marine cap"
desc = "A soft cap worn by marines of the Sol Federation."
icon_state = "solgovsoft"
item_color = "solgov"
/obj/item/clothing/head/soft/solgov/command
name = "Sol Federation Lieutenant's cap"
desc = "A soft cap worn by marines of the Sol Federation. The insignia signifies the wearer bears the rank of a Lieutenant."
icon_state = "solgovcsoft"
item_color = "solgovc"
+2 -1
View File
@@ -3,7 +3,8 @@
name = "breath mask"
icon_state = "breath"
item_state = "breath"
flags = MASKCOVERSMOUTH | AIRTIGHT
flags = AIRTIGHT
flags_cover = MASKCOVERSMOUTH
w_class = 2
gas_transfer_coefficient = 0.10
permeability_coefficient = 0.50
+15 -14
View File
@@ -2,8 +2,9 @@
name = "gas mask"
desc = "A face-covering mask that can be connected to an air supply."
icon_state = "gas_alt"
flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT
flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE
flags_cover = MASKCOVERSMOUTH | MASKCOVERSEYES
w_class = 3
item_state = "gas_alt"
gas_transfer_coefficient = 0.01
@@ -38,7 +39,7 @@
/obj/item/clothing/mask/gas/welding/proc/toggle()
if(up)
up = !src.up
flags |= (MASKCOVERSEYES)
flags_cover |= (MASKCOVERSEYES)
flags_inv |= (HIDEEYES)
icon_state = initial(icon_state)
to_chat(usr, "You flip the [src] down to protect your eyes.")
@@ -46,7 +47,7 @@
tint = 2
else
up = !up
flags &= ~(MASKCOVERSEYES)
flags_cover &= ~(MASKCOVERSEYES)
flags_inv &= ~(HIDEEYES)
icon_state = "[initial(icon_state)]up"
to_chat(usr, "You push the [src] up out of your face.")
@@ -65,8 +66,9 @@
name = "bane mask"
desc = "Only when the station is in flames, do you have my permission to robust."
icon_state = "bane_mask"
flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT
flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE
flags_cover = MASKCOVERSMOUTH | MASKCOVERSEYES
w_class = 3
item_state = "bane_mask"
gas_transfer_coefficient = 0.01
@@ -97,7 +99,7 @@
desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask."
icon_state = "clown"
item_state = "clown_hat"
flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | BLOCKHAIR
flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | BLOCKHAIR
burn_state = FLAMMABLE
/obj/item/clothing/mask/gas/clown_hat/attack_self(mob/user)
@@ -121,7 +123,7 @@
desc = "Some pranksters are truly magical."
icon_state = "wizzclown"
item_state = "wizzclown"
flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | BLOCKHAIR
flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | BLOCKHAIR
/obj/item/clothing/mask/gas/virusclown_hat
name = "clown wig and mask"
@@ -172,12 +174,11 @@
name = "owl mask"
desc = "Twoooo!"
icon_state = "owl"
flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT
burn_state = FLAMMABLE
actions_types = list(/datum/action/item_action/hoot)
/obj/item/clothing/mask/gas/owl_mask/super_hero
flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | NODROP
flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | NODROP
/obj/item/clothing/mask/gas/owl_mask/attack_self()
hoot()
@@ -381,26 +382,26 @@
if(istype(W, /obj/item/weapon/screwdriver))
switch(aggressiveness)
if(1)
to_chat(user, "\blue You set the aggressiveness restrictor to the second position.")
to_chat(user, "<span class='notice'>You set the aggressiveness restrictor to the second position.</span>")
aggressiveness = 2
phrase = 7
if(2)
to_chat(user, "\blue You set the aggressiveness restrictor to the third position.")
to_chat(user, "<span class='notice'>You set the aggressiveness restrictor to the third position.</span>")
aggressiveness = 3
phrase = 13
if(3)
to_chat(user, "\blue You set the aggressiveness restrictor to the fourth position.")
to_chat(user, "<span class='notice'>You set the aggressiveness restrictor to the fourth position.</span>")
aggressiveness = 4
phrase = 1
if(4)
to_chat(user, "\blue You set the aggressiveness restrictor to the first position.")
to_chat(user, "<span class='notice'>You set the aggressiveness restrictor to the first position.</span>")
aggressiveness = 1
phrase = 1
if(5)
to_chat(user, "\red You adjust the restrictor but nothing happens, probably because its broken.")
to_chat(user, "<span class='warning'>You adjust the restrictor but nothing happens, probably because its broken.</span>")
else if(istype(W, /obj/item/weapon/wirecutters))
if(aggressiveness != 5)
to_chat(user, "\red You broke it!")
to_chat(user, "<span class='warning'>You broke it!</span>")
aggressiveness = 5
else
..()
+11 -10
View File
@@ -3,7 +3,7 @@
desc = "To stop that awful noise."
icon_state = "muzzle"
item_state = "muzzle"
flags = MASKCOVERSMOUTH
flags_cover = MASKCOVERSMOUTH
w_class = 2
gas_transfer_coefficient = 0.90
put_on_delay = 20
@@ -60,7 +60,7 @@
icon_state = "sterile"
item_state = "sterile"
w_class = 1
flags = MASKCOVERSMOUTH
flags_cover = MASKCOVERSMOUTH
gas_transfer_coefficient = 0.90
permeability_coefficient = 0.01
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 25, rad = 0)
@@ -108,7 +108,7 @@
desc = "A blue neck scarf."
icon_state = "blueneckscarf"
item_state = "blueneckscarf"
flags = MASKCOVERSMOUTH
flags_cover = MASKCOVERSMOUTH
w_class = 2
gas_transfer_coefficient = 0.90
@@ -117,7 +117,7 @@
desc = "A red and white checkered neck scarf."
icon_state = "redwhite_scarf"
item_state = "redwhite_scarf"
flags = MASKCOVERSMOUTH
flags_cover = MASKCOVERSMOUTH
w_class = 2
gas_transfer_coefficient = 0.90
@@ -126,7 +126,7 @@
desc = "A green neck scarf."
icon_state = "green_scarf"
item_state = "green_scarf"
flags = MASKCOVERSMOUTH
flags_cover = MASKCOVERSMOUTH
w_class = 2
gas_transfer_coefficient = 0.90
@@ -135,7 +135,7 @@
desc = "A stealthy, dark scarf."
icon_state = "ninja_scarf"
item_state = "ninja_scarf"
flags = MASKCOVERSMOUTH
flags_cover = MASKCOVERSMOUTH
w_class = 2
gas_transfer_coefficient = 0.90
@@ -190,8 +190,8 @@
user.real_name = originalname
/obj/item/clothing/mask/face
flags = MASKCOVERSMOUTH
flags_inv = HIDEFACE
flags_cover = MASKCOVERSMOUTH
/obj/item/clothing/mask/face/rat
name = "rat mask"
@@ -255,14 +255,14 @@
icon_state = "pennywise_mask"
item_state = "pennywise_mask"
species_fit = list("Vox")
flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | BLOCKHAIR
flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | BLOCKHAIR
// Bandanas
/obj/item/clothing/mask/bandana
name = "bandana"
desc = "A colorful bandana."
flags = MASKCOVERSMOUTH
flags_inv = HIDEFACE
flags_cover = MASKCOVERSMOUTH
w_class = 1
slot_flags = SLOT_MASK
adjusted_flags = SLOT_HEAD
@@ -340,7 +340,8 @@
icon_override = 'icons/goonstation/mob/clothing/mask.dmi'
lefthand_file = 'icons/goonstation/mob/inhands/clothing_lefthand.dmi'
righthand_file = 'icons/goonstation/mob/inhands/clothing_righthand.dmi'
flags = NODROP | AIRTIGHT | MASKCOVERSMOUTH
flags = NODROP | AIRTIGHT
flags_cover = MASKCOVERSMOUTH
/obj/item/clothing/mask/cursedclown/equipped(mob/user, slot)
..()
+10 -2
View File
@@ -103,6 +103,16 @@
can_cut_open = 1
icon_state = "workboots"
/obj/item/clothing/shoes/winterboots
name = "winter boots"
desc = "Boots lined with 'synthetic' animal fur."
can_cut_open = 1
icon_state = "winterboots"
cold_protection = FEET|LEGS
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
heat_protection = FEET|LEGS
max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT
/obj/item/clothing/shoes/cult
name = "boots"
desc = "A pair of boots worn by the followers of Nar-Sie."
@@ -157,8 +167,6 @@
icon_state = "griffinboots"
item_state = "griffinboots"
/obj/item/clothing/shoes/griffin/super_hero
flags = NODROP
/obj/item/clothing/shoes/fluff/noble_boot
name = "noble boots"
+24 -26
View File
@@ -31,17 +31,25 @@
//Unathi space gear. Huge and restrictive.
/obj/item/clothing/head/helmet/space/unathi
icon = 'icons/obj/clothing/species/unathi/hats.dmi'
species_restricted = list("Unathi")
sprite_sheets = list(
"Unathi" = 'icons/mob/species/unathi/helmet.dmi'
)
/obj/item/clothing/head/helmet/space/unathi/helmet_cheap
name = "NT breacher helmet"
desc = "Hey! Watch it with that thing! It's a knock-off of a Unathi battle-helm, and that spike could put someone's eye out."
desc = "Hey! Watch it with that thing! It's a knock-off of an Unathi battle-helm, and that spike could put someone's eye out."
icon_state = "unathi_helm_cheap"
item_state = "unathi_helm_cheap"
item_color = "unathi_helm_cheap"
/obj/item/clothing/suit/space/unathi
icon = 'icons/obj/clothing/species/unathi/suits.dmi'
species_restricted = list("Unathi")
sprite_sheets = list(
"Unathi" = 'icons/mob/species/unathi/suit.dmi'
)
/obj/item/clothing/suit/space/unathi/rig_cheap
name = "NT breacher chassis"
@@ -71,6 +79,7 @@
armor = list(melee = 40, bullet = 40, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30)
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
icon = 'icons/obj/clothing/species/vox/suits.dmi'
species_restricted = list("Vox", "Vox Armalis")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/suit.dmi',
@@ -79,7 +88,9 @@
/obj/item/clothing/head/helmet/space/vox
armor = list(melee = 40, bullet = 40, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30)
flags = HEADCOVERSEYES|STOPSPRESSUREDMAGE
flags = STOPSPRESSUREDMAGE
flags_cover = HEADCOVERSEYES
icon = 'icons/obj/clothing/species/vox/hats.dmi'
species_restricted = list("Vox","Vox Armalis")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/head.dmi',
@@ -137,6 +148,7 @@
/obj/item/clothing/under/vox
has_sensor = 0
icon = 'icons/obj/clothing/species/vox/uniforms.dmi'
species_restricted = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
@@ -150,12 +162,17 @@
item_state = "vox-casual-1"
body_parts_covered = LEGS
/obj/item/clothing/under/vox/vox_robes
/obj/item/clothing/under/vox/vox_robes //This will be invisible on Armalis for lack of a proper sprite. They wear a carapace suit anyway, and this is more just to let them use IDs and such.
name = "alien robes"
desc = "Weird and flowing!"
icon_state = "vox-casual-2"
item_color = "vox-casual-2"
item_state = "vox-casual-2"
species_restricted = list("Vox","Vox Armalis")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi',
"Vox Armalis" = 'icons/mob/species/armalis/suit.dmi'
)
/obj/item/clothing/gloves/color/yellow/vox
desc = "These bizarre gauntlets seem to be fitted for... bird claws?"
@@ -165,20 +182,22 @@
siemens_coefficient = 0
permeability_coefficient = 0.05
item_color = "gloves-vox"
icon = 'icons/obj/clothing/species/vox/gloves.dmi'
species_restricted = list("Vox","Vox Armalis")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/gloves.dmi',
"Vox Armalis" = 'icons/mob/species/armalis/gloves.dmi',
)
/obj/item/clothing/shoes/magboots/vox
/obj/item/clothing/shoes/magboots/vox
desc = "A pair of heavy, jagged armoured foot pieces, seemingly suitable for a velociraptor."
name = "vox magclaws"
item_state = "boots-vox"
icon_state = "boots-vox"
icon = 'icons/obj/clothing/species/vox/shoes.dmi'
species_restricted = list("Vox","Vox Armalis")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/feet.dmi',
"Vox Armalis" = 'icons/mob/species/armalis/feet.dmi'
)
@@ -217,24 +236,3 @@
..(user)
if(magpulse)
to_chat(user, "It would be hard to take these off without relaxing your grip first.")//theoretically this message should only be seen by the wearer when the claws are equipped.
/obj/item/clothing/suit/space/eva/vox
name = "Vox EVA Suit"
icon_state = "voxspace"
item_state = "voxspace"
species_restricted = list("Vox", "Vox Armalis")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/suit.dmi',
"Vox Armalis" = 'icons/mob/species/armalis/suit.dmi',
)
/obj/item/clothing/head/helmet/space/eva/vox
name = "Vox EVA Suit"
icon_state = "voxspace"
item_state = "voxspace"
species_restricted = list("Vox","Vox Armalis")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/head.dmi',
"Vox Armalis" = 'icons/mob/species/armalis/head.dmi',
)
+6 -6
View File
@@ -175,10 +175,10 @@ var/global/list/breach_burn_descriptors = list(
//Handles repairs (and also upgrades).
/obj/item/clothing/suit/space/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W,/obj/item/stack/sheet/mineral/plastic) || istype(W,/obj/item/stack/sheet/metal))
if(istype(W,/obj/item/stack/sheet/plastic) || istype(W,/obj/item/stack/sheet/metal))
if(istype(src.loc,/mob/living))
to_chat(user, "\red How do you intend to patch a hardsuit while someone is wearing it?")
to_chat(user, "<span class='warning'>How do you intend to patch a hardsuit while someone is wearing it?</span>")
return
if(!damage || !burn_damage)
@@ -188,16 +188,16 @@ var/global/list/breach_burn_descriptors = list(
var/obj/item/stack/sheet/P = W
if(P.amount < 3)
P.use(P.amount)
repair_breaches(BURN, ( istype(P,/obj/item/stack/sheet/mineral/plastic) ? P.amount : (P.amount*2) ), user)
repair_breaches(BURN, ( istype(P,/obj/item/stack/sheet/plastic) ? P.amount : (P.amount*2) ), user)
else
P.use(3)
repair_breaches(BURN, ( istype(P,/obj/item/stack/sheet/mineral/plastic) ? 3 : 5), user)
repair_breaches(BURN, ( istype(P,/obj/item/stack/sheet/plastic) ? 3 : 5), user)
return
else if(istype(W, /obj/item/weapon/weldingtool))
if(istype(src.loc,/mob/living))
to_chat(user, "\red How do you intend to patch a hardsuit while someone is wearing it?")
to_chat(user, "<span class='warning'>How do you intend to patch a hardsuit while someone is wearing it?</span>")
return
if(!damage || ! brute_damage)
@@ -206,7 +206,7 @@ var/global/list/breach_burn_descriptors = list(
var/obj/item/weapon/weldingtool/WT = W
if(!WT.remove_fuel(5))
to_chat(user, "\red You need more welding fuel to repair this suit.")
to_chat(user, "<span class='warning'>You need more welding fuel to repair this suit.</span>")
return
repair_breaches(BRUTE, 3, user)
+40 -40
View File
@@ -1,16 +1,16 @@
/obj/item/clothing/head/helmet/space/rig/ert
/obj/item/clothing/head/helmet/space/hardsuit/ert
name = "emergency response team helmet"
desc = "A helmet worn by members of the Nanotrasen Emergency Response Team. Armoured and space ready."
icon_state = "rig0-ert_commander"
icon_state = "hardsuit0-ert_commander"
item_state = "helm-command"
armor = list(melee = 45, bullet = 25, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 50)
rig_restrict_helmet = 0 // ERT helmets can be taken on and off at will.
hardsuit_restrict_helmet = 0 // ERT helmets can be taken on and off at will.
var/obj/machinery/camera/camera
var/has_camera = TRUE
strip_delay = 130
/obj/item/clothing/head/helmet/space/rig/ert/attack_self(mob/user)
/obj/item/clothing/head/helmet/space/hardsuit/ert/attack_self(mob/user)
if(camera || !has_camera)
..(user)
else
@@ -20,11 +20,11 @@
camera.c_tag = user.name
to_chat(user, "<span class='notice'>User scanned as [camera.c_tag]. Camera activated.</span>")
/obj/item/clothing/head/helmet/space/rig/ert/examine(mob/user)
/obj/item/clothing/head/helmet/space/hardsuit/ert/examine(mob/user)
if(..(user, 1) && has_camera)
to_chat(user, "This helmet has a built-in camera. It's [camera ? "" : "in"]active.")
/obj/item/clothing/suit/space/rig/ert
/obj/item/clothing/suit/space/hardsuit/ert
name = "emergency response team suit"
desc = "A suit worn by members of the Nanotrasen Emergency Response Team. Armoured, space ready, and fire resistant."
icon_state = "ert_commander"
@@ -39,110 +39,110 @@
strip_delay = 130
//Commander
/obj/item/clothing/head/helmet/space/rig/ert/commander
/obj/item/clothing/head/helmet/space/hardsuit/ert/commander
name = "emergency response team commander helmet"
desc = "A helmet worn by the commander of a Nanotrasen Emergency Response Team. Has blue highlights. Armoured and space ready."
icon_state = "rig0-ert_commander"
icon_state = "hardsuit0-ert_commander"
item_state = "helm-command"
item_color = "ert_commander"
/obj/item/clothing/suit/space/rig/ert/commander
/obj/item/clothing/suit/space/hardsuit/ert/commander
name = "emergency response team commander suit"
desc = "A suit worn by the commander of a Nanotrasen Emergency Response Team. Has blue highlights. Armoured, space ready, and fire resistant."
icon_state = "ert_commander"
item_state = "suit-command"
//Security
/obj/item/clothing/head/helmet/space/rig/ert/security
/obj/item/clothing/head/helmet/space/hardsuit/ert/security
name = "emergency response team security helmet"
desc = "A helmet worn by security members of a Nanotrasen Emergency Response Team. Has red highlights. Armoured and space ready."
icon_state = "rig0-ert_security"
icon_state = "hardsuit0-ert_security"
item_state = "syndicate-helm-black-red"
item_color = "ert_security"
/obj/item/clothing/suit/space/rig/ert/security
/obj/item/clothing/suit/space/hardsuit/ert/security
name = "emergency response team security suit"
desc = "A suit worn by security members of a Nanotrasen Emergency Response Team. Has red highlights. Armoured, space ready, and fire resistant."
icon_state = "ert_security"
item_state = "syndicate-black-red"
//Engineer
/obj/item/clothing/head/helmet/space/rig/ert/engineer
/obj/item/clothing/head/helmet/space/hardsuit/ert/engineer
name = "emergency response team engineer helmet"
desc = "A helmet worn by engineers of a Nanotrasen Emergency Response Team. Has yellow highlights. Armoured and space ready."
icon_state = "rig0-ert_engineer"
icon_state = "hardsuit0-ert_engineer"
item_state = "helm-orange"
item_color = "ert_engineer"
/obj/item/clothing/suit/space/rig/ert/engineer
/obj/item/clothing/suit/space/hardsuit/ert/engineer
name = "emergency response team engineer suit"
desc = "A suit worn by the engineers of a Nanotrasen Emergency Response Team. Has yellow highlights. Armoured, space ready, and fire resistant."
icon_state = "ert_engineer"
item_state = "suit-orange"
//Medical
/obj/item/clothing/head/helmet/space/rig/ert/medical
/obj/item/clothing/head/helmet/space/hardsuit/ert/medical
name = "emergency response team medical helmet"
desc = "A helmet worn by medical members of a Nanotrasen Emergency Response Team. Has white highlights. Armoured and space ready."
icon_state = "rig0-ert_medical"
icon_state = "hardsuit0-ert_medical"
item_color = "ert_medical"
/obj/item/clothing/suit/space/rig/ert/medical
/obj/item/clothing/suit/space/hardsuit/ert/medical
name = "emergency response team medical suit"
desc = "A suit worn by medical members of a Nanotrasen Emergency Response Team. Has white highlights. Armoured and space ready."
icon_state = "ert_medical"
//Janitor
/obj/item/clothing/head/helmet/space/rig/ert/janitor
/obj/item/clothing/head/helmet/space/hardsuit/ert/janitor
name = "emergency response team janitor helmet"
desc = "A helmet worn by janitorial members of a Nanotrasen Emergency Response Team. Has purple highlights. Armoured and space ready."
icon_state = "rig0-ert_janitor"
icon_state = "hardsuit0-ert_janitor"
item_color = "ert_janitor"
/obj/item/clothing/suit/space/rig/ert/janitor
/obj/item/clothing/suit/space/hardsuit/ert/janitor
name = "emergency response team janitor suit"
desc = "A suit worn by the janitorial of a Nanotrasen Emergency Response Team. Has purple highlights. Armoured, space ready, and fire resistant."
icon_state = "ert_janitor"
//Paranormal
/obj/item/clothing/head/helmet/space/rig/ert/paranormal
/obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal
name = "paranormal response unit helmet"
desc = "A helmet worn by those who deal with paranormal threats for a living."
icon_state = "rig0-ert_paranormal"
icon_state = "hardsuit0-ert_paranormal"
item_color = "ert_paranormal"
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
sprite_sheets = null
icon_override = 'icons/mob/clothing/paranormal_hardsuit.dmi'
actions_types = list()
has_camera = 0
/obj/item/clothing/suit/space/rig/ert/paranormal
/obj/item/clothing/suit/space/hardsuit/ert/paranormal
name = "paranormal response team suit"
desc = "Powerful wards are built into this hardsuit, protecting the user from all manner of paranormal threats."
icon_state = "rig-paranormal"
icon_state = "hardsuit-paranormal"
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
sprite_sheets = null
icon_override = 'icons/mob/clothing/paranormal_hardsuit.dmi'
actions_types = list()
/obj/item/clothing/suit/space/rig/ert/paranormal/New()
/obj/item/clothing/suit/space/hardsuit/ert/paranormal/New()
..()
new /obj/item/weapon/nullrod(src)
/obj/item/clothing/head/helmet/space/rig/ert/paranormal/inquisitor
/obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/inquisitor
name = "inquisitor's helmet"
icon_state = "rig0-inquisitor"
icon_state = "hardsuit0-inquisitor"
item_color = "inquisitor"
/obj/item/clothing/suit/space/rig/ert/paranormal/inquisitor
name = "inquisitor's hardsuit"
icon_state = "rig-inquisitor"
/obj/item/clothing/head/helmet/space/rig/ert/paranormal/berserker
/obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor
name = "inquisitor's hardsuit"
icon_state = "hardsuit-inquisitor"
/obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/berserker
name = "champion's helmet"
desc = "Peering into the eyes of the helmet is enough to seal damnation."
icon_state = "rig0-berserker"
item_color = "berserker"
/obj/item/clothing/suit/space/rig/ert/paranormal/berserker
icon_state = "hardsuit0-berserker"
item_color = "berserker"
/obj/item/clothing/suit/space/hardsuit/ert/paranormal/berserker
name = "champion's hardsuit"
desc = "Voices echo from the hardsuit, driving the user insane."
icon_state = "rig-berserker"
icon_state = "hardsuit-berserker"
@@ -1,15 +1,15 @@
//Regular rig suits
/obj/item/clothing/head/helmet/space/rig
//Baseline hardsuits
/obj/item/clothing/head/helmet/space/hardsuit
name = "hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low-pressure environment."
icon_state = "rig0-engineering"
icon_state = "hardsuit0-engineering"
item_state = "eng_helm"
rig_restrict_helmet = 1
hardsuit_restrict_helmet = 1
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
allowed = list(/obj/item/device/flashlight)
var/brightness_on = 4 //luminosity when on
var/on = 0
item_color = "engineering" //Determines used sprites: rig[on]-[color] and rig[on]-[color]2 (lying down sprite)
item_color = "engineering" //Determines used sprites: hardsuit[on]-[color] and hardsuit[on]-[color]2 (lying down sprite)
actions_types = list(/datum/action/item_action/toggle_helmet_light)
//Species-specific stuff.
@@ -30,18 +30,18 @@
"Vulpkanin" = 'icons/obj/clothing/species/vulpkanin/hats.dmi',
)
/obj/item/clothing/head/helmet/space/rig/equip_to_best_slot(mob/M)
if(rig_restrict_helmet)
to_chat(M, "<span class='warning'>You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)</span>") // Stop RIG helmet equipping
/obj/item/clothing/head/helmet/space/hardsuit/equip_to_best_slot(mob/M)
if(hardsuit_restrict_helmet)
to_chat(M, "<span class='warning'>You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)</span>") // Stop hardsuit helmet equipping
return 0
..()
/obj/item/clothing/head/helmet/space/rig/attack_self(mob/user)
/obj/item/clothing/head/helmet/space/hardsuit/attack_self(mob/user)
toggle_light(user)
/obj/item/clothing/head/helmet/space/rig/proc/toggle_light(mob/user)
/obj/item/clothing/head/helmet/space/hardsuit/proc/toggle_light(mob/user)
on = !on
icon_state = "rig[on]-[item_color]"
icon_state = "hardsuit[on]-[item_color]"
if(on)
set_light(brightness_on)
@@ -56,14 +56,14 @@
var/datum/action/A = X
A.UpdateButtonIcon()
/obj/item/clothing/head/helmet/space/rig/item_action_slot_check(slot)
/obj/item/clothing/head/helmet/space/hardsuit/item_action_slot_check(slot)
if(slot == slot_head)
return 1
/obj/item/clothing/suit/space/rig
/obj/item/clothing/suit/space/hardsuit
name = "hardsuit"
desc = "A special space suit for environments that might pose hazards beyond just the vacuum of space. Provides more protection than a standard space suit."
icon_state = "rig-engineering"
icon_state = "hardsuit-engineering"
item_state = "eng_hardsuit"
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/t_scanner, /obj/item/weapon/rcd)
@@ -103,7 +103,7 @@
var/list/mounted_devices = null // Holder for the above device.
var/obj/item/active_device = null // Currently deployed device, if any.
/obj/item/clothing/suit/space/rig/equipped(mob/M)
/obj/item/clothing/suit/space/hardsuit/equipped(mob/M)
..()
var/mob/living/carbon/human/H = M
@@ -133,7 +133,7 @@
H.equip_to_slot(boots, slot_shoes)
boots.flags |= NODROP
/obj/item/clothing/suit/space/rig/dropped()
/obj/item/clothing/suit/space/hardsuit/dropped()
..()
var/mob/living/carbon/human/H
@@ -154,7 +154,7 @@
H.unEquip(boots)
boots.forceMove(src)
/obj/item/clothing/suit/space/rig/verb/toggle_helmet()
/obj/item/clothing/suit/space/hardsuit/verb/toggle_helmet()
set name = "Toggle Helmet"
set category = "Object"
set src in usr
@@ -189,7 +189,7 @@
to_chat(H, "<span class='notice'>You deploy your hardsuit helmet, sealing you off from the world.</span>")
H.update_inv_head()
/obj/item/clothing/suit/space/rig/attackby(obj/item/W, mob/user, params)
/obj/item/clothing/suit/space/hardsuit/attackby(obj/item/W, mob/user, params)
if(!isliving(user))
return
@@ -238,43 +238,43 @@
return ..()
..()
/obj/item/clothing/suit/space/rig/proc/can_modify(mob/living/user)
/obj/item/clothing/suit/space/hardsuit/proc/can_modify(mob/living/user)
if(isliving(loc))
to_chat(user, "<span class='info'>You can not modify the hardsuit while it is being worn.</span>")
return 0
return 1
//Engineering rig
/obj/item/clothing/head/helmet/space/rig/engineering
//Engineering hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/engineering
name = "engineering hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding."
icon_state = "rig0-engineering"
icon_state = "hardsuit0-engineering"
item_state = "eng_helm"
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
/obj/item/clothing/suit/space/rig/engineering
/obj/item/clothing/suit/space/hardsuit/engineering
name = "engineering hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding."
icon_state = "rig-engineering"
icon_state = "hardsuit-engineering"
item_state = "eng_hardsuit"
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/t_scanner, /obj/item/weapon/rcd)
//Chief Engineer's rig
/obj/item/clothing/head/helmet/space/rig/elite
//Chief Engineer's hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/elite
name = "advanced hardsuit helmet"
desc = "An advanced helmet designed for work in a hazardous, low pressure environment. Shines with a high polish."
icon_state = "rig0-white"
icon_state = "hardsuit0-white"
item_state = "ce_helm"
item_color = "white"
armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 90)
heat_protection = HEAD //Uncomment to enable firesuit protection
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
/obj/item/clothing/suit/space/rig/elite
icon_state = "rig-white"
/obj/item/clothing/suit/space/hardsuit/elite
icon_state = "hardsuit-white"
name = "advanced hardsuit"
desc = "An advanced suit that protects against hazardous, low pressure environments. Shines with a high polish."
item_state = "ce_hardsuit"
@@ -282,18 +282,17 @@
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
//Mining rig
/obj/item/clothing/head/helmet/space/rig/mining
//Mining hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/mining
name = "mining hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has reinforced plating."
icon_state = "rig0-mining"
icon_state = "hardsuit0-mining"
item_state = "mining_helm"
item_color = "mining"
flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50)
/obj/item/clothing/suit/space/rig/mining
icon_state = "rig-mining"
/obj/item/clothing/suit/space/hardsuit/mining
icon_state = "hardsuit-mining"
name = "mining hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating."
item_state = "mining_hardsuit"
@@ -301,39 +300,43 @@
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/pickaxe)
//Syndicate rig
/obj/item/clothing/head/helmet/space/rig/syndi
//Syndicate hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/syndi
name = "blood-red hardsuit helmet"
desc = "A dual-mode advanced helmet designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
icon_state = "rig1-syndi"
alt_desc = "A dual-mode advanced helmet designed for work in special operations. It is in combat mode. Property of Gorlex Marauders."
icon_state = "hardsuit1-syndi"
item_state = "syndie_helm"
item_color = "syndi"
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
on = 1
flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL
actions_types = list(/datum/action/item_action/toggle_helmet_mode)
flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL
visor_flags_inv = HIDEMASK|HIDEEYES|HIDEFACE
/obj/item/clothing/head/helmet/space/rig/syndi/update_icon()
icon_state = "rig[on]-[item_color]"
/obj/item/clothing/head/helmet/space/hardsuit/syndi/update_icon()
icon_state = "hardsuit[on]-[item_color]"
/obj/item/clothing/head/helmet/space/rig/syndi/attack_self(mob/user)
/obj/item/clothing/head/helmet/space/hardsuit/syndi/attack_self(mob/user)
on = !on
if(on)
to_chat(user, "<span class='notice'>You switch your helmet to travel mode. It will allow you to stand in zero pressure environments, at the cost of speed and armor.</span>")
name = "blood-red hardsuit helmet"
desc = "A dual-mode advanced helmet designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
cold_protection = HEAD
name = initial(name)
desc = initial(desc)
set_light(brightness_on)
flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
flags_cover |= HEADCOVERSEYES | HEADCOVERSMOUTH
flags_inv |= visor_flags_inv
cold_protection |= HEAD
else
to_chat(user, "<span class='notice'>You switch your helmet to combat mode. You will take damage in zero pressure environments, but you are more suited for a fight.</span>")
name = "blood-red hardsuit helmet (combat)"
desc = "A dual-mode advanced helmet designed for work in special operations. It is in combat mode. Property of Gorlex Marauders."
flags = BLOCKHAIR | THICKMATERIAL | NODROP
flags_inv = HIDEEARS
cold_protection = null
desc = alt_desc
set_light(0)
flags = BLOCKHAIR | THICKMATERIAL | NODROP
flags_cover &= ~(HEADCOVERSEYES | HEADCOVERSMOUTH)
flags_inv &= ~visor_flags_inv
cold_protection &= ~HEAD
update_icon()
playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1)
@@ -343,10 +346,10 @@
var/datum/action/A = X
A.UpdateButtonIcon()
/obj/item/clothing/suit/space/rig/syndi
/obj/item/clothing/suit/space/hardsuit/syndi
name = "blood-red hardsuit"
desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
icon_state = "rig1-syndi"
icon_state = "hardsuit1-syndi"
item_state = "syndie_hardsuit"
item_color = "syndi"
w_class = 3
@@ -355,10 +358,10 @@
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
/obj/item/clothing/suit/space/rig/syndi/update_icon()
icon_state = "rig[on]-[item_color]"
/obj/item/clothing/suit/space/hardsuit/syndi/update_icon()
icon_state = "hardsuit[on]-[item_color]"
/obj/item/clothing/suit/space/rig/syndi/attack_self(mob/user)
/obj/item/clothing/suit/space/hardsuit/syndi/attack_self(mob/user)
on = !on
if(on)
to_chat(user, "<span class='notice'>You switch your hardsuit to travel mode. It will allow you to stand in zero pressure environments, at the cost of speed and armor.</span>")
@@ -387,17 +390,17 @@
A.UpdateButtonIcon()
//Elite Syndie suit
/obj/item/clothing/head/helmet/space/rig/syndi/elite
/obj/item/clothing/head/helmet/space/hardsuit/syndi/elite
name = "elite syndicate hardsuit helmet"
desc = "An elite version of the syndicate helmet, with improved armour and fire shielding. It is in travel mode. Property of Gorlex Marauders."
icon_state = "rig0-syndielite"
icon_state = "hardsuit0-syndielite"
item_color = "syndielite"
armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70)
heat_protection = HEAD
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
sprite_sheets = null
/obj/item/clothing/head/helmet/space/rig/syndi/elite/attack_self(mob/user)
/obj/item/clothing/head/helmet/space/hardsuit/syndi/elite/attack_self(mob/user)
..()
if(on)
name = "elite syndicate hardsuit helmet"
@@ -406,17 +409,17 @@
name = "elite syndicate hardsuit helmet (combat)"
desc = "An elite version of the syndicate helmet, with improved armour and fire shielding. It is in combat mode. Property of Gorlex Marauders."
/obj/item/clothing/suit/space/rig/syndi/elite
/obj/item/clothing/suit/space/hardsuit/syndi/elite
name = "elite syndicate hardsuit"
desc = "An elite version of the syndicate hardsuit, with improved armour and fire shielding. It is in travel mode."
icon_state = "rig0-syndielite"
icon_state = "hardsuit0-syndielite"
item_color = "syndielite"
armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70)
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
sprite_sheets = null
/obj/item/clothing/suit/space/rig/syndi/elite/attack_self(mob/user)
/obj/item/clothing/suit/space/hardsuit/syndi/elite/attack_self(mob/user)
..()
if(on)
name = "elite syndicate hardsuit"
@@ -425,11 +428,11 @@
name = "elite syndicate hardsuit (combat)"
desc = "An elite version of the syndicate hardsuit, with improved armour and fire shielding. It is in combat mode. Property of Gorlex Marauders."
//Wizard Rig
/obj/item/clothing/head/helmet/space/rig/wizard
//Wizard hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/wizard
name = "gem-encrusted hardsuit helmet"
desc = "A bizarre gem-encrusted helmet that radiates magical energies."
icon_state = "rig0-wiz"
icon_state = "hardsuit0-wiz"
item_state = "wiz_helm"
item_color = "wiz"
unacidable = 1 //No longer shall our kind be foiled by lone chemists with spray bottles!
@@ -439,8 +442,8 @@
unacidable = 1
sprite_sheets = null
/obj/item/clothing/suit/space/rig/wizard
icon_state = "rig-wiz"
/obj/item/clothing/suit/space/hardsuit/wizard
icon_state = "hardsuit-wiz"
name = "gem-encrusted hardsuit"
desc = "A bizarre gem-encrusted suit that radiates magical energies."
item_state = "wiz_hardsuit"
@@ -453,11 +456,11 @@
unacidable = 1
sprite_sheets = null
//Medical Rig
/obj/item/clothing/head/helmet/space/rig/medical
//Medical hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/medical
name = "medical hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort, but does not protect the eyes from intense light."
icon_state = "rig0-medical"
icon_state = "hardsuit0-medical"
item_state = "medical_helm"
item_color = "medical"
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
@@ -465,8 +468,8 @@
flash_protect = 0
scan_reagents = 1 //Generally worn by the CMO, so they'd get utility off of seeing reagents
/obj/item/clothing/suit/space/rig/medical
icon_state = "rig-medical"
/obj/item/clothing/suit/space/hardsuit/medical
icon_state = "hardsuit-medical"
name = "medical hardsuit"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort."
item_state = "medical_hardsuit"
@@ -474,16 +477,16 @@
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50)
//Security
/obj/item/clothing/head/helmet/space/rig/security
/obj/item/clothing/head/helmet/space/hardsuit/security
name = "security hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
icon_state = "rig0-sec"
icon_state = "hardsuit0-sec"
item_state = "sec_helm"
item_color = "sec"
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50)
/obj/item/clothing/suit/space/rig/security
icon_state = "rig-sec"
/obj/item/clothing/suit/space/hardsuit/security
icon_state = "hardsuit-sec"
name = "security hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
item_state = "sec_hardsuit"
@@ -491,20 +494,20 @@
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/melee/baton,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/restraints/handcuffs)
//Atmospherics Rig (BS12)
/obj/item/clothing/head/helmet/space/rig/atmos
//Atmospherics hardsuit (BS12)
/obj/item/clothing/head/helmet/space/hardsuit/atmos
desc = "A special helmet designed for work in a hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding."
name = "atmospherics hardsuit helmet"
icon_state = "rig0-atmos"
icon_state = "hardsuit0-atmos"
item_state = "atmos_helm"
item_color = "atmos"
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 0)
heat_protection = HEAD //Uncomment to enable firesuit protection
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
/obj/item/clothing/suit/space/rig/atmos
/obj/item/clothing/suit/space/hardsuit/atmos
desc = "A special suit that protects against hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding."
icon_state = "rig-atmos"
icon_state = "hardsuit-atmos"
name = "atmos hardsuit"
item_state = "atmos_hardsuit"
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 0)
@@ -512,16 +515,16 @@
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
//Singuloth armor
/obj/item/clothing/head/helmet/space/rig/singuloth
/obj/item/clothing/head/helmet/space/hardsuit/singuloth
name = "singuloth knight's helmet"
desc = "This is an adamantium helmet from the chapter of the Singuloth Knights. It shines with a holy aura."
icon_state = "rig0-singuloth"
icon_state = "hardsuit0-singuloth"
item_state = "singuloth_helm"
item_color = "singuloth"
armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 25, bio = 100, rad = 100)
/obj/item/clothing/suit/space/rig/singuloth
icon_state = "rig-singuloth"
/obj/item/clothing/suit/space/hardsuit/singuloth
icon_state = "hardsuit-singuloth"
name = "singuloth knight's armor"
desc = "This is a ceremonial armor from the chapter of the Singuloth Knights. It's made of pure forged adamantium."
item_state = "singuloth_hardsuit"
@@ -529,17 +532,17 @@
armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 25, bio = 100, rad = 100)
/obj/item/clothing/head/helmet/space/rig/security/hos
/obj/item/clothing/head/helmet/space/hardsuit/security/hos
name = "head of security's hardsuit helmet"
desc = "a special bulky helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
icon_state = "rig0-hos"
icon_state = "hardsuit0-hos"
item_color = "hos"
armor = list(melee = 45, bullet = 25, laser = 30,energy = 10, bomb = 25, bio = 100, rad = 50)
sprite_sheets = null
/obj/item/clothing/suit/space/rig/security/hos
icon_state = "rig-hos"
/obj/item/clothing/suit/space/hardsuit/security/hos
icon_state = "hardsuit-hos"
name = "head of security's hardsuit"
desc = "A special bulky suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
armor = list(melee = 45, bullet = 25, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 50)
@@ -548,10 +551,10 @@
/////////////SHIELDED//////////////////////////////////
/obj/item/clothing/suit/space/rig/shielded
/obj/item/clothing/suit/space/hardsuit/shielded
name = "shielded hardsuit"
desc = "A hardsuit with built in energy shielding. Will rapidly recharge when not under fire."
icon_state = "rig-hos"
icon_state = "hardsuit-hos"
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank, /obj/item/weapon/gun,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs)
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50)
var/current_charges = 3
@@ -563,7 +566,7 @@
var/shield_on = "shield-old"
sprite_sheets = null
/obj/item/clothing/suit/space/rig/shielded/hit_reaction(mob/living/carbon/human/owner, attack_text)
/obj/item/clothing/suit/space/hardsuit/shielded/hit_reaction(mob/living/carbon/human/owner, attack_text)
if(current_charges > 0)
var/datum/effect/system/spark_spread/s = new
s.set_up(2, 1, src)
@@ -580,11 +583,11 @@
return 0
/obj/item/clothing/suit/space/rig/shielded/Destroy()
/obj/item/clothing/suit/space/hardsuit/shielded/Destroy()
processing_objects.Remove(src)
return ..()
/obj/item/clothing/suit/space/rig/shielded/process()
/obj/item/clothing/suit/space/hardsuit/shielded/process()
if(world.time > recharge_cooldown && current_charges < max_charges)
current_charges = Clamp((current_charges + recharge_rate), 0, max_charges)
playsound(loc, 'sound/magic/Charge.ogg', 50, 1)
@@ -598,10 +601,10 @@
//////Syndicate Version
/obj/item/clothing/suit/space/rig/shielded/syndi
/obj/item/clothing/suit/space/hardsuit/shielded/syndi
name = "blood-red hardsuit"
desc = "An advanced hardsuit with built in energy shielding."
icon_state = "rig1-syndi"
icon_state = "hardsuit1-syndi"
item_state = "syndie_hardsuit"
item_color = "syndi"
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
@@ -616,10 +619,10 @@
"Drask" = 'icons/mob/species/drask/suit.dmi'
)
/obj/item/clothing/head/helmet/space/rig/shielded/syndi
/obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi
name = "blood-red hardsuit helmet"
desc = "An advanced hardsuit helmet with built in energy shielding."
icon_state = "rig1-syndi"
icon_state = "hardsuit1-syndi"
item_state = "syndie_helm"
item_color = "syndi"
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
@@ -76,6 +76,7 @@
desc = "An armored beret commonly used by special operations officers."
icon_state = "beret_officer"
armor = list(melee = 65, bullet = 55, laser = 35, energy = 20, bomb = 30, bio = 30, rad = 30)
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL //idfk
/obj/item/clothing/suit/space/deathsquad/officer
name = "officer jacket"
@@ -92,7 +93,8 @@
name = "Santa's hat"
desc = "Ho ho ho. Merrry X-mas!"
icon_state = "santahat"
flags = HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE
flags = BLOCKHAIR | STOPSPRESSUREDMAGE
flags_cover = HEADCOVERSEYES
/obj/item/clothing/suit/space/santa
name = "Santa's suit"
@@ -111,7 +113,8 @@
icon_state = "pirate"
item_state = "pirate"
armor = list(melee = 30, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30)
flags = HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE
flags = BLOCKHAIR | STOPSPRESSUREDMAGE
flags_cover = HEADCOVERSEYES
strip_delay = 40
put_on_delay = 20
@@ -133,22 +136,26 @@
desc = "A paramedic EVA helmet. Used in the recovery of bodies from space."
icon_state = "paramedic-eva-helmet"
item_state = "paramedic-eva-helmet"
species_restricted = list("exclude","Diona","Wryn")
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/helmet.dmi'
)
sprite_sheets_obj = list(
"Vox" = 'icons/obj/clothing/species/vox/hats.dmi'
)
/obj/item/clothing/suit/space/eva/paramedic
name = "Paramedic EVA suit"
icon_state = "paramedic-eva"
item_state = "paramedic-eva"
desc = "A paramedic EVA suit. Used in the recovery of bodies from space."
species_restricted = list("exclude","Diona","Wryn")
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/suit.dmi'
)
sprite_sheets_obj = list(
"Vox" = 'icons/obj/clothing/species/vox/suits.dmi'
)
/obj/item/clothing/suit/space/eva
name = "EVA suit"
@@ -156,6 +163,20 @@
item_state = "s_suit"
desc = "A lightweight space suit with the basic ability to protect the wearer from the vacuum of space during emergencies."
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 20)
species_restricted = list("exclude", "Diona", "Wryn")
species_fit = list("Tajaran", "Unathi", "Vox", "Vulpkanin")
sprite_sheets = list(
"Tajaran" = 'icons/mob/species/tajaran/suit.dmi',
"Unathi" = 'icons/mob/species/unathi/suit.dmi',
"Vox" = 'icons/mob/species/vox/suit.dmi',
"Vulpkanin" = 'icons/mob/species/vulpkanin/suit.dmi',
)
sprite_sheets_obj = list(
"Tajaran" = 'icons/obj/clothing/species/tajaran/suits.dmi',
"Unathi" = 'icons/obj/clothing/species/unathi/suits.dmi',
"Vox" = 'icons/obj/clothing/species/vox/suits.dmi',
"Vulpkanin" = 'icons/obj/clothing/species/vulpkanin/suits.dmi'
)
/obj/item/clothing/head/helmet/space/eva
name = "EVA helmet"
@@ -165,21 +186,41 @@
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 20)
flash_protect = 0
species_restricted = list("exclude", "Diona", "Wryn")
species_fit = list("Tajaran", "Unathi", "Vox", "Vulpkanin")
sprite_sheets = list(
"Tajaran" = 'icons/mob/species/tajaran/helmet.dmi',
"Unathi" = 'icons/mob/species/unathi/helmet.dmi',
"Vox" = 'icons/mob/species/vox/helmet.dmi',
"Vulpkanin" = 'icons/mob/species/vulpkanin/helmet.dmi'
)
sprite_sheets_obj = list(
"Vox" = 'icons/obj/clothing/species/vox/hats.dmi',
"Vulpkanin" = 'icons/obj/clothing/species/vulpkanin/hats.dmi'
)
//Mime's Hardsuit
/obj/item/clothing/head/helmet/space/eva/mime
name = "mime eva helmet"
// icon = 'spaceciv.dmi'
desc = "An eva helmet specifically designed for the mime."
desc = ". . ."
icon_state = "spacemimehelmet"
item_state = "spacemimehelmet"
species_restricted = list("exclude","Diona","Vox","Wryn")
species_fit = null
sprite_sheets = null
sprite_sheets_obj = null
/obj/item/clothing/suit/space/eva/mime
name = "mime eva suit"
// icon = 'spaceciv.dmi'
desc = "An EVA suit specifically designed for the mime."
desc = ". . ."
icon_state = "spacemime_suit"
item_state = "spacemime_items"
species_restricted = list("exclude","Diona","Vox","Wryn")
species_fit = null
sprite_sheets = null
sprite_sheets_obj = null
/obj/item/clothing/head/helmet/space/eva/clown
name = "clown eva helmet"
@@ -187,6 +228,10 @@
desc = "An EVA helmet specifically designed for the clown. SPESSHONK!"
icon_state = "clownhelmet"
item_state = "clownhelmet"
species_restricted = list("exclude","Diona","Vox","Wryn")
species_fit = null
sprite_sheets = null
sprite_sheets_obj = null
/obj/item/clothing/suit/space/eva/clown
name = "clown eva suit"
@@ -194,6 +239,10 @@
desc = "An EVA suit specifically designed for the clown. SPESSHONK!"
icon_state = "spaceclown_suit"
item_state = "spaceclown_items"
species_restricted = list("exclude","Diona","Vox","Wryn")
species_fit = null
sprite_sheets = null
sprite_sheets_obj = null
/obj/item/clothing/head/helmet/space/freedom
name = "eagle helmet"
+42 -8
View File
@@ -10,19 +10,19 @@
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
flags_inv = HIDEGLOVES|HIDESHOES
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
icon = 'icons/obj/clothing/species/plasmaman/suits.dmi'
species_restricted = list("Plasmaman")
sprite_sheets = list(
"Plasmaman" = 'icons/mob/species/plasmaman/suit.dmi'
)
flags = STOPSPRESSUREDMAGE
icon_state = "plasmaman_suit"
item_state = "plasmaman_suit"
var/next_extinguish = 0
var/extinguish_cooldown = 10 SECONDS
var/extinguishes_left = 10 // Yeah yeah, reagents, blah blah blah. This should be simple.
/obj/item/clothing/suit/space/eva/plasmaman/examine(mob/user)
..(user)
to_chat(user, "<span class='info'>There are [extinguishes_left] extinguisher canisters left in this suit.</span>")
var/max_extinguishes = 5
var/extinguishes_left = 5 // Yeah yeah, reagents, blah blah blah. This should be simple.
/obj/item/clothing/suit/space/eva/plasmaman/proc/Extinguish(var/mob/user)
var/mob/living/carbon/human/H=user
@@ -32,15 +32,49 @@
next_extinguish = world.time + extinguish_cooldown
extinguishes_left--
to_chat(H, "<span class='warning'>Your suit automatically extinguishes the fire.</span>")
to_chat(user, "<span class='warning'>You hear a soft click and a hiss from your suit as it automatically extinguishes the fire.</span>")
if(!extinguishes_left)
to_chat(user, "<span class='warning'>Onboard auto-extinguisher depleted, refill with a cartridge.</span>")
playsound(src.loc, 'sound/effects/spray.ogg', 10, 1, -3)
H.ExtinguishMob()
/obj/item/clothing/suit/space/eva/plasmaman/attackby(var/obj/item/A as obj, mob/user as mob, params)
..()
if(istype(A, /obj/item/weapon/plasmensuit_cartridge)) //This suit can only be reloaded by the appropriate cartridges, and only if it's got no more extinguishes left.
if(!extinguishes_left)
extinguishes_left = max_extinguishes //Full replenishment from the cartridge.
to_chat(user, "<span class='notice'>You replenish \the [src] with the cartridge.</span>")
qdel(A)
else
to_chat(user, "<span class='notice'>The suit must be depleted before it can be refilled.</span>")
/obj/item/clothing/suit/space/eva/plasmaman/examine(mob/user)
..(user)
to_chat(user, "<span class='info'>There are [extinguishes_left] extinguisher canisters left in this suit.</span>")
/obj/item/weapon/plasmensuit_cartridge //Can be used to refill Plasmaman suits when they run out of autoextinguishes.
name = "auto-extinguisher cartridge"
desc = "A tiny and light fibreglass-framed auto-extinguisher cartridge."
icon = 'icons/obj/items.dmi'
icon_state = "miniFE0"
item_state = "miniFE"
hitsound = null //Ultralight and
flags = null //non-conductive
force = 0
throwforce = 0
w_class = 2 //Fits in boxes.
materials = list()
attack_verb = list("tapped")
/obj/item/clothing/head/helmet/space/eva/plasmaman
name = "plasmaman helmet"
desc = "A special containment helmet designed to protect a plasmaman's volatile body from outside exposure and quickly extinguish it in emergencies."
flags = STOPSPRESSUREDMAGE
icon = 'icons/obj/clothing/species/plasmaman/hats.dmi'
species_restricted = list("Plasmaman")
sprite_sheets = list(
"Plasmaman" = 'icons/mob/species/plasmaman/helmet.dmi'
)
icon_state = "plasmaman_helmet0"
item_state = "plasmaman_helmet0"
var/base_state = "plasmaman_helmet"
@@ -13,6 +13,8 @@
desc = "It looks pretty sciency."
icon = 'icons/obj/rig_modules.dmi'
icon_state = "module"
toolspeed = 1
var/damage = 0
var/obj/item/weapon/rig/holder
@@ -73,7 +75,7 @@
to_chat(user, "You start mending the damaged portions of \the [src]...")
if(!do_after(user,30, target = src) || !W || !src)
if(!do_after(user, 30 * W.toolspeed, target = src) || !W || !src)
return
var/obj/item/stack/nanopaste/paste = W
@@ -98,7 +100,7 @@
return
to_chat(user, "You start mending the damaged portions of \the [src]...")
if(!do_after(user, 30, target = src) || !W || !src)
if(!do_after(user, 30 * W.toolspeed, target = src) || !W || !src)
return
damage = 1
+10 -13
View File
@@ -165,10 +165,8 @@
M.unEquip(piece)
qdel(piece)
processing_objects -= src
qdel(wires)
wires = null
qdel(spark_system)
spark_system = null
QDEL_NULL(wires)
QDEL_NULL(spark_system)
return ..()
/obj/item/weapon/rig/proc/suit_is_deployed()
@@ -195,7 +193,7 @@
if(!piece) continue
piece.icon_state = "[initial(icon_state)]"
if(airtight)
piece.flags &= ~(STOPSPRESSUREDMAGE|AIRTIGHT)
piece.flags &= ~(STOPSPRESSUREDMAGE | AIRTIGHT)
update_icon(1)
/obj/item/weapon/rig/proc/seal(mob/living/user)
@@ -426,11 +424,9 @@
helmet.toggle_light(wearer)
for(var/obj/item/piece in list(helmet,boots,gloves,chest))
if(!(flags & NODROP))
piece.flags &= ~STOPSPRESSUREDMAGE
piece.flags &= ~AIRTIGHT
piece.flags &= ~(STOPSPRESSUREDMAGE | AIRTIGHT)
else
piece.flags |= STOPSPRESSUREDMAGE
piece.flags |= AIRTIGHT
piece.flags |= STOPSPRESSUREDMAGE | AIRTIGHT
/obj/item/weapon/rig/process()
// If we've lost any parts, grab them back.
@@ -442,7 +438,7 @@
M.unEquip(piece)
piece.forceMove(src)
if(!istype(wearer) || loc != wearer || wearer.back != src || (!(flags & NODROP)) || !cell || cell.charge <= 0)
if(!istype(wearer) || loc != wearer || wearer.back != src || !(flags & NODROP) || !cell || cell.charge <= 0)
if(!cell || cell.charge <= 0)
if(electrified > 0)
electrified = 0
@@ -777,8 +773,9 @@
to_chat(wearer, "<span class='notice'>Your [use_obj] [use_obj.gender == PLURAL ? "retract" : "retracts"] swiftly.")
else if(deploy_mode != ONLY_RETRACT)
if(check_slot && check_slot != use_obj)
to_chat(wearer, "<span class='danger'>You are unable to deploy \the [piece] as \the [check_slot] [check_slot.gender == PLURAL ? "are" : "is"] in the way.</span>")
if(check_slot)
if(check_slot != use_obj) //If use_obj is already in check_slot, silently bail. Otherwise, tell the user why the part didn't deploy.
to_chat(wearer, "<span class='danger'>You are unable to deploy \the [piece] as \the [check_slot] [check_slot.gender == PLURAL ? "are" : "is"] in the way.</span>")
return
use_obj.forceMove(wearer)
if(!wearer.equip_to_slot_if_possible(use_obj, equip_to, 0, 1))
@@ -1026,7 +1023,7 @@
if(!can_touch(user, wearer) || !has_emergency_release)
return can_touch(user,wearer)
usr.visible_message("<span class='warning'>[user] starts activating \the [src] emergency seals release!</span>")
if(!do_after(user,240, target = wearer))
if(!do_after(user, 240, target = wearer))
to_chat(user, "<span class='notice'>You need to focus on activating the emergency release.</span>")
return 0
usr.visible_message("<span class='warning'>[user] activated \the [src] emergency seals release!</span>")
@@ -80,7 +80,7 @@
var/obj/item/rig_module/mod = W
to_chat(user, "You begin installing \the [mod] into \the [src].")
if(!do_after(user,40, target = src))
if(!do_after(user, 40 * W.toolspeed, target = src))
return
if(!user || !W)
return
@@ -4,7 +4,7 @@
/obj/item/clothing/head/helmet/space/new_rig
name = "helmet"
flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | THICKMATERIAL | NODROP
flags = BLOCKHAIR | THICKMATERIAL | NODROP
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEMASK
body_parts_covered = HEAD
heat_protection = HEAD
@@ -115,7 +115,7 @@
/obj/item/weapon/rig/verb/deploy_suit()
set name = "Deploy Hardsuit"
set desc = "Deploys helmet, gloves and boots."
set desc = "Deploys helmet, gloves and boots all at once."
set category = "Hardsuit"
set src = usr.contents
@@ -136,8 +136,8 @@
deploy(wearer, usr)
/obj/item/weapon/rig/verb/toggle_seals_verb()
set name = "Toggle Hardsuit"
set desc = "Activates or deactivates your rig."
set name = "Toggle Hardsuit Seals"
set desc = "Seals or unseals your rig."
set category = "Hardsuit"
set src = usr.contents
@@ -10,8 +10,9 @@
vision_restriction = 1
offline_vision_restriction = 2
chest_type = /obj/item/clothing/suit/space/new_rig
chest_type = /obj/item/clothing/suit/space/new_rig/unathi
helm_type = /obj/item/clothing/head/helmet/space/new_rig/unathi
glove_type = /obj/item/clothing/gloves/rig/unathi
boot_type = /obj/item/clothing/shoes/magboots/rig/unathi
/obj/item/weapon/rig/unathi/fancy
@@ -23,10 +24,23 @@
vision_restriction = 0
/obj/item/clothing/head/helmet/space/new_rig/unathi
icon = 'icons/obj/clothing/species/unathi/hats.dmi'
species_restricted = list("Unathi")
/obj/item/clothing/suit/space/new_rig/unathi
icon = 'icons/obj/clothing/species/unathi/suits.dmi'
species_restricted = list("Unathi")
/obj/item/clothing/gloves/rig/unathi
icon = 'icons/obj/clothing/species/unathi/gloves.dmi'
species_restricted = list("Unathi")
sprite_sheets = list(
"Unathi" = 'icons/mob/species/unathi/gloves.dmi'
)
/obj/item/clothing/shoes/magboots/rig/unathi
species_restricted = list("Unathi")
icon = 'icons/obj/clothing/species/unathi/shoes.dmi'
species_restricted = list("Unathi")
sprite_sheets = list(
"Unathi" = 'icons/mob/species/unathi/feet.dmi'
)
+6 -5
View File
@@ -122,7 +122,7 @@
/obj/item/clothing/suit/armor/hos/alt
name = "armored trenchoat"
desc = "A trenchcoat enchanced with a special lightweight kevlar. The epitome of tactical plainclothes."
desc = "A trenchcoat enhanced with a special lightweight kevlar. The epitome of tactical plainclothes."
icon_state = "hostrench_open"
item_state = "hostrench_open"
flags_inv = 0
@@ -142,7 +142,7 @@
/obj/item/clothing/suit/armor/vest/warden
name = "Warden's armored jacket"
desc = "An armoured jacket with silver rank pips and livery."
desc = "An armored jacket with silver rank pips and livery."
icon_state = "warden_jacket"
item_state = "armor"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
@@ -166,7 +166,7 @@
/obj/item/clothing/suit/armor/vest/capcarapace/alt
name = "captain's parade jacket"
desc = "For when an armoured vest isn't fashionable enough."
desc = "For when an armored vest isn't fashionable enough."
icon_state = "capformal"
item_state = "capspacesuit"
@@ -209,6 +209,7 @@
icon_state = "knight_templar"
item_state = "knight_templar"
allowed = list(/obj/item/weapon/nullrod/claymore)
armor = list(melee = 25, bullet = 5, laser = 5, energy = 5, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/suit/armor/bulletproof
name = "Bulletproof Vest"
@@ -411,13 +412,13 @@
/obj/item/clothing/suit/armor/tdome/red
name = "Red Thunderdome Armor"
desc = "Armor worn by the red Thunderodome team"
desc = "Armor worn by the red Thunderdome team."
icon_state = "tdred"
item_state = "tdred"
/obj/item/clothing/suit/armor/tdome/green
name = "Green Thunderdome Armor"
desc = "Armor worn by the green Thunderodome team"
desc = "Armor worn by the green Thunderdome team."
icon_state = "tdgreen"
item_state = "tdgreen"
+2 -1
View File
@@ -4,7 +4,8 @@
icon_state = "bio"
desc = "A hood that protects the head and face from biological comtaminants."
permeability_coefficient = 0.01
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR | THICKMATERIAL
flags = BLOCKHAIR | THICKMATERIAL
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 20)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
burn_state = FIRE_PROOF
+1 -1
View File
@@ -10,7 +10,7 @@
..()
/obj/item/clothing/suit/hooded/Destroy()
qdel(hood)
QDEL_NULL(hood)
return ..()
/obj/item/clothing/suit/hooded/proc/MakeHood()
+5 -8
View File
@@ -106,7 +106,7 @@
icon_state = "judge"
item_state = "judge"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
allowed = list(/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/spacecash)
allowed = list(/obj/item/weapon/storage/fancy/cigarettes,/obj/item/stack/spacecash)
flags_inv = HIDEJUMPSUIT
@@ -457,6 +457,7 @@
icon_state = "black_hoodie"
item_state = "blueshieldcoat"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/emergency_oxygen)
hoodtype = /obj/item/clothing/head/hood
species_fit = list("Vox")
sprite_sheets = list(
@@ -727,7 +728,8 @@
icon_state = "mercy_hood"
item_state = "mercy_hood"
permeability_coefficient = 0.01
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
flags = BLOCKHAIR
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 20)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
@@ -816,8 +818,6 @@
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/device/flashlight/seclite)
actions_types = list(/datum/action/item_action/toggle_wings)
/obj/item/clothing/suit/toggle/owlwings/super_hero
flags = NODROP
/obj/item/clothing/suit/toggle/owlwings/griffinwings
name = "griffon cloak"
@@ -825,9 +825,6 @@
icon_state = "griffin_wings"
item_state = "griffin_wings"
/obj/item/clothing/suit/toggle/owlwings/griffinwings/super_hero
flags = NODROP
/obj/item/clothing/suit/toggle/attack_self()
if(icon_state == initial(icon_state))
icon_state = icon_state + "_t"
@@ -950,4 +947,4 @@
linked_staff.faith += 5
if(linked_staff.faith >= 100) //if this charge puts the staff at or above full, notify the wearer
to_chat(H, "<span class='notice'>Faith renewed; ready to convert new followers.</span>")
to_chat(H, "<span class='notice'>Faith renewed; ready to convert new followers.</span>")
+1 -2
View File
@@ -9,8 +9,7 @@
pockets.max_combined_w_class = 4
/obj/item/clothing/suit/storage/Destroy()
qdel(pockets)
pockets = null
QDEL_NULL(pockets)
return ..()
/obj/item/clothing/suit/storage/attack_hand(mob/user as mob)
+4 -2
View File
@@ -64,9 +64,10 @@
name = "bomb hood"
desc = "Use in case of bomb."
icon_state = "bombsuit"
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR | THICKMATERIAL
flags = BLOCKHAIR | THICKMATERIAL
armor = list(melee = 20, bullet = 0, laser = 20, energy = 10, bomb = 100, bio = 0, rad = 0)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
cold_protection = HEAD
min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT
heat_protection = HEAD
@@ -125,7 +126,8 @@
name = "Radiation Hood"
icon_state = "rad"
desc = "A hood with radiation protective properties. Label: Made with lead, do not eat insulation"
flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|THICKMATERIAL
flags = BLOCKHAIR|THICKMATERIAL
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 60, rad = 100)
strip_delay = 60
put_on_delay = 60
@@ -65,7 +65,7 @@
var/obj/item/clothing/under/U = H.w_uniform
if(istype(U))
user.visible_message("<span class='notice'>[user] is putting a [src.name] on [H]'s [U.name]!</span>", "<span class='notice'>You begin to put a [src.name] on [H]'s [U.name]...</span>")
if(do_after(user,40,target=H) && H.w_uniform == U)
if(do_after(user, 40, target=H) && H.w_uniform == U)
user.visible_message("<span class='notice'>[user] puts a [src.name] on [H]'s [U.name]!</span>", "<span class='notice'>You finish putting a [src.name] on [H]'s [U.name].</span>")
U.attackby(src, user)
else
@@ -243,7 +243,7 @@
to_chat(user, "Waving around a badge before swiping an ID would be pretty pointless.")
return
if(isliving(user))
user.visible_message("\red [user] displays their NanoTrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.","\red You display your NanoTrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.")
user.visible_message("<span class='warning'>[user] displays their Nanotrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.</span>","<span class='warning'>You display your Nanotrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.</span>")
/obj/item/clothing/accessory/holobadge/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if(istype(O, /obj/item/weapon/card/id) || istype(O, /obj/item/device/pda))
@@ -268,16 +268,16 @@
/obj/item/clothing/accessory/holobadge/emag_act(user as mob)
if(emagged)
to_chat(user, "\red [src] is already cracked.")
to_chat(user, "<span class='warning'>[src] is already cracked.</span>")
return
else
emagged = 1
to_chat(user, "\red You swipe the card and crack the holobadge security checks.")
to_chat(user, "<span class='warning'>You swipe the card and crack the holobadge security checks.</span>")
return
/obj/item/clothing/accessory/holobadge/attack(mob/living/carbon/human/M, mob/living/user)
if(isliving(user))
user.visible_message("\red [user] invades [M]'s personal space, thrusting [src] into their face insistently.","\red You invade [M]'s personal space, thrusting [src] into their face insistently. You are the law.")
user.visible_message("<span class='warning'>[user] invades [M]'s personal space, thrusting [src] into their face insistently.</span>","<span class='warning'>You invade [M]'s personal space, thrusting [src] into their face insistently. You are the law.</span>")
/obj/item/weapon/storage/box/holobadge
name = "holobadge box"
@@ -361,16 +361,19 @@
//However, these 3 don't have corgi versions of their sprites
/obj/item/clothing/accessory/stripedredscarf
name = "striped red scarf"
desc = "A stylish scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks."
icon_state = "stripedredscarf"
item_color = "stripedredscarf"
/obj/item/clothing/accessory/stripedgreenscarf
name = "striped green scarf"
desc = "A stylish scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks."
icon_state = "stripedgreenscarf"
item_color = "stripedgreenscarf"
/obj/item/clothing/accessory/stripedbluescarf
name = "striped blue scarf"
desc = "A stylish scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks."
icon_state = "stripedbluescarf"
item_color = "stripedbluescarf"
@@ -383,9 +386,7 @@
var/obj/item/weapon/card/id/access_id
/obj/item/clothing/accessory/petcollar/Destroy()
if(access_id)
qdel(access_id)
access_id = null
QDEL_NULL(access_id)
processing_objects -= src
return ..()
@@ -57,7 +57,7 @@
to_chat(user, "<span class='warning'>You need an empty hand to draw the [holstered]!</span>")
else
if(user.a_intent == I_HARM)
usr.visible_message("\red [user] draws the [holstered], ready to shoot!</span>", \
usr.visible_message("<span class='warning'>[user] draws the [holstered], ready to shoot!</span></span>", \
"<span class='warning'>You draw the [holstered], ready to shoot!</span>")
else
user.visible_message("<span class='notice'>[user] draws the [holstered], pointing it at the ground.</span>", \
@@ -103,8 +103,7 @@
/obj/item/clothing/accessory/storage/knifeharness/New()
..()
hold.max_combined_w_class = 4
hold.can_hold = list("/obj/item/weapon/hatchet/unathiknife",\
"/obj/item/weapon/kitchen/knife")
hold.can_hold = list(/obj/item/weapon/hatchet/unathiknife, /obj/item/weapon/kitchen/knife)
new /obj/item/weapon/hatchet/unathiknife(hold)
new /obj/item/weapon/hatchet/unathiknife(hold)
+4 -4
View File
@@ -25,14 +25,14 @@
attackby(obj/item/clothing/under/U as obj, mob/user as mob, params)
..()
if(istype(U, /obj/item/clothing/under/chameleon))
to_chat(user, "\red Nothing happens.")
to_chat(user, "<span class='warning'>Nothing happens.</span>")
return
if(istype(U, /obj/item/clothing/under))
if(src.clothing_choices.Find(U))
to_chat(user, "\red Pattern is already recognised by the suit.")
to_chat(user, "<span class='warning'>Pattern is already recognised by the suit.</span>")
return
src.clothing_choices += U
to_chat(user, "\red Pattern absorbed by the suit.")
to_chat(user, "<span class='warning'>Pattern absorbed by the suit.</span>")
emp_act(severity)
@@ -56,7 +56,7 @@
set src in usr
if(icon_state == "psyche")
to_chat(usr, "\red Your suit is malfunctioning")
to_chat(usr, "<span class='warning'>Your suit is malfunctioning</span>")
return
var/obj/item/clothing/under/A
+37 -14
View File
@@ -67,6 +67,27 @@
item_state = "gy_suit"
item_color = "vice"
/obj/item/clothing/under/solgov
name = "Sol Federation marine uniform"
desc = "A comfortable and durable combat uniform worn by Sol Federation Marine Forces."
icon_state = "solgov"
item_state = "ro_suit"
item_color = "solgov"
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
displays_id = 0
/obj/item/clothing/under/solgov/command
name = "Sol Federation Lieutenant's uniform"
desc = "A comfortable and durable combat uniform worn by Sol Federation Marine Forces. This one has additional insignia on its shoulders."
icon_state = "solgovc"
item_color = "solgovc"
/obj/item/clothing/under/solgov/rep
name = "Sol Federation representative's uniform"
desc = "A formal uniform worn by the diplomatic representatives of the Sol Federation."
icon_state = "solgovr"
item_color = "solgovr"
/obj/item/clothing/under/rank/centcom_officer
desc = "It's a jumpsuit worn by CentComm Officers."
name = "\improper CentComm officer's jumpsuit"
@@ -565,35 +586,43 @@
item_state = "bane"
item_color = "bane"
/obj/item/clothing/under/vox_grey
/obj/item/clothing/under/vox
name = "Ripped Jumpsuit"
desc = "A jumpsuit that looks like it's been shredded by some talons. Who could wear this now?"
icon = 'icons/obj/clothing/species/vox/uniforms.dmi'
icon_state = "vgrey"
item_state = "vgrey"
item_color = "vgrey"
/obj/item/clothing/under/vox/grey
name = "Grey Vox Jumpsuit"
desc = "An assistant's jumpsuit ripped to better fit a vox."
icon_state = "vgrey"
item_state = "vgrey"
item_color = "vgrey"
/obj/item/clothing/under/vox_robotics
/obj/item/clothing/under/vox/robotics
name = "Vox Robotics Jumpsuit"
desc = "A roboticist's jumpsuit ripped to better fit a vox."
icon_state = "vrobotics"
item_state = "vrobotics"
item_color = "vrobotics"
/obj/item/clothing/under/vox_toxins
/obj/item/clothing/under/vox/toxins
name = "Vox Toxins Jumpsuit"
desc = "A Toxin Researcher's jumpsuit ripped to better fit a vox."
icon_state = "vtoxinswhite"
item_state = "vtoxinswhite"
item_color = "vtoxinswhite"
/obj/item/clothing/under/vox_atmos
/obj/item/clothing/under/vox/atmos
name = "Vox Atmos Jumpsuit"
desc = "An Atmos Tech's jumpsuit ripped to better fit a vox."
icon_state = "vatmos"
item_state = "vatmos"
item_color = "vatmos"
/obj/item/clothing/under/vox_engi
/obj/item/clothing/under/vox/engi
name = "Vox Engineer Jumpsuit"
desc = "An Engineer's jumpsuit ripped to better fit a vox."
icon_state = "vengine"
@@ -601,7 +630,7 @@
item_color = "vengine"
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 10)
/obj/item/clothing/under/vox_sec
/obj/item/clothing/under/vox/sec
name = "Vox Security Jumpsuit"
desc = "A Security officer's jumpsuit ripped to better fit a vox."
icon_state = "vred"
@@ -609,7 +638,7 @@
item_color = "vred"
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/under/vox_chem
/obj/item/clothing/under/vox/chem
name = "Vox Chemist Jumpsuit"
desc = "A Chemist's jumpsuit ripped to better fit a vox."
icon_state = "vchem"
@@ -700,18 +729,12 @@
icon_state = "owl"
item_color = "owl"
/obj/item/clothing/under/owl/super_hero
flags = NODROP
/obj/item/clothing/under/griffin
name = "griffon uniform"
desc = "A soft brown jumpsuit with a white feather collar made of synthetic feathers and a lust for mayhem."
icon_state = "griffin"
item_color = "griffin"
/obj/item/clothing/under/griffin/super_hero
flags = NODROP
/obj/item/clothing/under/noble_clothes
name = "noble clothes"
desc = "They fall just short of majestic."
@@ -732,7 +755,7 @@
..()
/obj/item/clothing/under/contortionist/dropped(mob/living/carbon/human/user)
if(!user.get_int_organ(/obj/item/organ/internal/gland/ventcrawling))
if(!user.get_int_organ(/obj/item/organ/internal/heart/gland/ventcrawling))
user.ventcrawler = 0
..()
+6 -6
View File
@@ -24,22 +24,22 @@
if(istype(user,/mob/living/silicon))
if(!program.ai_allowed)
to_chat(user, "\blue You are forbidden from accessing this program.")
to_chat(user, "<span class='notice'>You are forbidden from accessing this program.</span>")
return 0
else
if(program.human_controls)
if(!ishuman(user))
to_chat(user, "\red Your body can't work the controls!")
to_chat(user, "<span class='warning'>Your body can't work the controls!</span>")
return 0
if(user.restrained())
to_chat(user, "\red You need a free hand!")
to_chat(user, "<span class='warning'>You need a free hand!</span>")
return 0
if(!in_range(src,user))
// telekinesis check
if(ishuman(user) && istype(user.get_active_hand(),/obj/item/tk_grab))
if(program.human_controls)
to_chat(user, "\red It's too complicated to work at a distance!")
to_chat(user, "<span class='warning'>It's too complicated to work at a distance!</span>")
return 0
add_fingerprint(user)
user.set_machine(src)
@@ -115,7 +115,7 @@
switch(errorcode)
if(PROG_CRASH)
if(usr)
to_chat(usr, "\red The program crashed!")
to_chat(usr, "<span class='warning'>The program crashed!</span>")
usr << browse(null,"\ref[src]")
Reset()
@@ -148,7 +148,7 @@
else
if(usr)
to_chat(usr, "\red The program crashed!")
to_chat(usr, "<span class='warning'>The program crashed!</span>")
usr << browse(null,"\ref[src]")
testing("computer/Crash() - unknown error code [errorcode]")
Reset()
+46 -42
View File
@@ -18,6 +18,8 @@
var/frame_desc = null
var/datum/file/program/OS = new/datum/file/program/ntos
toolspeed = 1
usesound = 'sound/items/Deconstruct.ogg'
/obj/machinery/computer3/proc/disassemble(mob/user as mob) // todo
return
@@ -30,6 +32,8 @@
icon = 'icons/obj/stock_parts.dmi'
icon_state = "0"
var/state = 0
var/remove_sound = 'sound/items/Crowbar.ogg'
var/obj/item/part/computer/circuitboard/circuit = null
var/completed = /obj/machinery/computer
@@ -80,9 +84,9 @@
switch(state)
if(0)
if(istype(P, /obj/item/weapon/wrench))
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
if(do_after(user, 20, target = src))
to_chat(user, "\blue You wrench the frame into place.")
playsound(src.loc, P.usesound, 50, 1)
if(do_after(user, 20 * P.toolspeed, target = src))
to_chat(user, "<span class='notice'>You wrench the frame into place.</span>")
src.anchored = 1
src.state = 1
if(istype(P, /obj/item/weapon/weldingtool))
@@ -90,78 +94,78 @@
if(!WT.remove_fuel(0, user))
to_chat(user, "The welding tool must be on to complete this task.")
return
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
if(do_after(user, 20, target = src))
playsound(src.loc, WT.usesound, 50, 1)
if(do_after(user, 20 * WT.toolspeed, target = src))
if(!src || !WT.isOn()) return
to_chat(user, "\blue You deconstruct the frame.")
to_chat(user, "<span class='notice'>You deconstruct the frame.</span>")
new /obj/item/stack/sheet/metal( src.loc, 5 )
qdel(src)
if(1)
if(istype(P, /obj/item/weapon/wrench))
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
if(do_after(user, 20, target = src))
to_chat(user, "\blue You unfasten the frame.")
playsound(src.loc, P.usesound, 50, 1)
if(do_after(user, 20 * P.toolspeed, target = src))
to_chat(user, "<span class='notice'>You unfasten the frame.</span>")
src.anchored = 0
src.state = 0
if(istype(P, /obj/item/weapon/circuitboard) && !circuit)
var/obj/item/weapon/circuitboard/B = P
if(B.board_type == "computer")
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
to_chat(user, "\blue You place the circuit board inside the frame.")
playsound(src.loc, B.usesound, 50, 1)
to_chat(user, "<span class='notice'>You place the circuit board inside the frame.</span>")
src.icon_state = "1"
src.circuit = P
user.drop_item()
P.loc = src
else
to_chat(user, "\red This frame does not accept circuit boards of this type!")
to_chat(user, "<span class='warning'>This frame does not accept circuit boards of this type!</span>")
if(istype(P, /obj/item/weapon/screwdriver) && circuit)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
to_chat(user, "\blue You screw the circuit board into place.")
playsound(src.loc, P.usesound, 50, 1)
to_chat(user, "<span class='notice'>You screw the circuit board into place.</span>")
src.state = 2
src.icon_state = "2"
if(istype(P, /obj/item/weapon/crowbar) && circuit)
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
to_chat(user, "\blue You remove the circuit board.")
playsound(src.loc, P.usesound, 50, 1)
to_chat(user, "<span class='notice'>You remove the circuit board.</span>")
src.state = 1
src.icon_state = "0"
circuit.loc = src.loc
src.circuit = null
if(2)
if(istype(P, /obj/item/weapon/screwdriver) && circuit)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
to_chat(user, "\blue You unfasten the circuit board.")
playsound(src.loc, P.usesound, 50, 1)
to_chat(user, "<span class='notice'>You unfasten the circuit board.</span>")
src.state = 1
src.icon_state = "1"
if(istype(P, /obj/item/weapon/crowbar))
if(battery)
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
if(do_after(10, target = src))
playsound(src.loc, P.usesound, 50, 1)
if(do_after(10 * P.toolspeed, target = src))
battery.loc = loc
to_chat(user, "\blue You remove [battery].")
to_chat(user, "<span class='notice'>You remove [battery].</span>")
battery = null
else
to_chat(user, "\red There's no battery to remove!")
to_chat(user, "<span class='warning'>There's no battery to remove!</span>")
if(istype(P, /obj/item/weapon/stock_parts/cell))
if(!battery)
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(5, target = src))
playsound(src.loc, P.usesound, 50, 1)
if(do_after(5 * P.toolspeed, target = src))
battery = P
P.loc = src
to_chat(user, "\blue You insert [battery].")
to_chat(user, "<span class='notice'>You insert [battery].</span>")
else
to_chat(user, "\red There's already \an [battery] in [src]!")
to_chat(user, "<span class='warning'>There's already \an [battery] in [src]!</span>")
if(istype(P, /obj/item/stack/cable_coil))
if(P:amount >= 5)
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, 20, target = src))
playsound(src.loc, P.usesound, 50, 1)
if(do_after(user, 20 * P.toolspeed, target = src))
if(P)
P:amount -= 5
if(!P:amount) qdel(P)
to_chat(user, "\blue You add cables to the frame.")
to_chat(user, "<span class='notice'>You add cables to the frame.</span>")
src.state = 3
src.icon_state = "3"
if(3)
@@ -169,8 +173,8 @@
if(components.len)
to_chat(user, "There are parts in the way!")
return
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
to_chat(user, "\blue You remove the cables.")
playsound(src.loc, P.usesound, 50, 1)
to_chat(user, "<span class='notice'>You remove the cables.</span>")
src.state = 2
src.icon_state = "2"
var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( src.loc )
@@ -181,23 +185,23 @@
if(istype(P, /obj/item/stack/sheet/glass))
if(P:amount >= 2)
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, 20, target = src))
playsound(src.loc, P.usesound, 50, 1)
if(do_after(user, 20 * P.toolspeed, target = src))
if(P)
P:use(2)
to_chat(user, "\blue You put in the glass panel.")
to_chat(user, "<span class='notice'>You put in the glass panel.</span>")
src.state = 4
src.icon_state = "4"
if(4)
if(istype(P, /obj/item/weapon/crowbar))
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
to_chat(user, "\blue You remove the glass panel.")
playsound(src.loc, P.usesound, 50, 1)
to_chat(user, "<span class='notice'>You remove the glass panel.</span>")
src.state = 3
src.icon_state = "3"
new /obj/item/stack/sheet/glass( src.loc, 2 )
if(istype(P, /obj/item/weapon/screwdriver))
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
to_chat(user, "\blue You connect the monitor.")
playsound(src.loc, P.usesound, 50, 1)
to_chat(user, "<span class='notice'>You connect the monitor.</span>")
var/obj/machinery/computer3/B = new src.circuit.build_path ( src.loc, built=1 )
/*if(circuit.powernet) B:powernet = circuit.powernet
if(circuit.id) B:id = circuit.id
@@ -220,14 +224,14 @@
*/
/obj/structure/computer3frame/proc/remove_peripheral(var/obj/item/I = null)
if(!components || !components.len)
to_chat(usr, "\red There are no components in [src] to take out!")
to_chat(usr, "<span class='warning'>There are no components in [src] to take out!</span>")
return 0
if(!I)
I = input(usr, "Remove which component?","Remove component", null) as null|obj in components
if(I)
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
if(do_after(usr,25, target = src))
playsound(src.loc, remove_sound, 50, 1)
if(do_after(usr, 25, target = src))
if(I==hdd)
components -= hdd
hdd.loc = loc
@@ -259,7 +263,7 @@
else
warning("Erronous component in computerframe/remove_peripheral: [I]")
I.loc = loc
to_chat(usr, "\blue You remove [I]")
to_chat(usr, "<span class='notice'>You remove [I]</span>")
return 1
return 0
/obj/structure/computer3frame/proc/insert_peripheral(var/obj/item/I)
+1 -1
View File
@@ -77,7 +77,7 @@
set src in view(1)
if(usr.stat || usr.restrained() || usr.lying || !istype(usr, /mob/living))
to_chat(usr, "\red You can't do that.")
to_chat(usr, "<span class='warning'>You can't do that.</span>")
return
if(!Adjacent(usr))
@@ -202,7 +202,7 @@
if(world.time < (last_change + 15))//To prevent super-spam clicking, reduced process size and annoyance -Sieve
return
for(var/mob/M in range(3,src))
M.show_message("\b ERROR. Recalibrating projetion apparatus.")
M.show_message("<b>ERROR. Recalibrating projetion apparatus.</b>")
last_change = world.time
return
@@ -97,14 +97,14 @@
var/removing_zone = href_list["priority_clear"]
for(var/zone in priority_alarms)
if(ckey(zone) == removing_zone)
to_chat(usr, "\green Priority Alert for area [zone] cleared.")
to_chat(usr, "<span class=notice'>Priority Alert for area [zone] cleared.</span>")
priority_alarms -= zone
if("minor_clear" in href_list)
var/removing_zone = href_list["minor_clear"]
for(var/zone in minor_alarms)
if(ckey(zone) == removing_zone)
to_chat(usr, "\green Minor Alert for area [zone] cleared.")
to_chat(usr, "<span class=notice'>Minor Alert for area [zone] cleared.</span>")
minor_alarms -= zone
computer.updateUsrDialog()

Some files were not shown because too many files have changed in this diff Show More