mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 03:27:05 +01:00
Merge remote-tracking branch 'upstream/master' into changeling
This commit is contained in:
@@ -25,7 +25,7 @@
|
||||
possible_transfer_amounts = list(5)
|
||||
volume = 5
|
||||
can_be_placed_into = null
|
||||
flags = FPRINT | TABLEPASS | OPENCONTAINER | NOBLUDGEON
|
||||
flags = OPENCONTAINER | NOBLUDGEON
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/rag/attack(atom/target as obj|turf|area, mob/user as mob , flag)
|
||||
if(ismob(target) && target.reagents && reagents.total_volume)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
icon_state = "forensic1"
|
||||
w_class = 3.0
|
||||
item_state = "electronic"
|
||||
flags = FPRINT | TABLEPASS | CONDUCT | NOBLUDGEON
|
||||
flags = CONDUCT | NOBLUDGEON
|
||||
slot_flags = SLOT_BELT
|
||||
var/scanning = 0
|
||||
var/list/log = list()
|
||||
|
||||
@@ -781,7 +781,7 @@ var/global/nologevent = 0
|
||||
/datum/admins/proc/unprison(var/mob/M in mob_list)
|
||||
set category = "Admin"
|
||||
set name = "Unprison"
|
||||
if (M.z == 2)
|
||||
if ((M.z in config.admin_levels))
|
||||
M.loc = pick(latejoin)
|
||||
message_admins("[key_name_admin(usr)] has unprisoned [key_name_admin(M)]", 1)
|
||||
log_admin("[key_name(usr)] has unprisoned [key_name(M)]")
|
||||
|
||||
@@ -41,6 +41,7 @@ var/list/admin_ranks = list() //list of all ranks with associated rights
|
||||
if("sound","sounds") rights |= R_SOUNDS
|
||||
if("spawn","create") rights |= R_SPAWN
|
||||
if("mod") rights |= R_MOD
|
||||
if("mentor") rights |= R_MENTOR
|
||||
|
||||
admin_ranks[rank] = rights
|
||||
previous_rights = rights
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
//admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless
|
||||
var/list/admin_verbs_default = list(
|
||||
// /datum/admins/proc/show_player_panel, /*shows an interface for individual players, with various links (links require additional flags*/
|
||||
/client/proc/deadmin_self, /*destroys our own admin datum so we can play as a regular player*/
|
||||
/client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify*/
|
||||
/client/proc/deadmin_self /*destroys our own admin datum so we can play as a regular player*/
|
||||
// /client/proc/check_antagonists, /*shows all antags*/
|
||||
/client/proc/cmd_mentor_check_new_players
|
||||
// /client/proc/deadchat /*toggles deadchat on/off*/
|
||||
)
|
||||
var/list/admin_verbs_admin = list(
|
||||
@@ -46,7 +44,6 @@ var/list/admin_verbs_admin = list(
|
||||
/client/proc/toggleprayers, /*toggles prayers on/off*/
|
||||
// /client/proc/toggle_hear_radio, /*toggles whether we hear the radio*/
|
||||
/client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/
|
||||
/client/proc/secrets,
|
||||
/datum/admins/proc/toggleooc, /*toggles ooc on/off for everyone*/
|
||||
/datum/admins/proc/toggleoocdead, /*toggles ooc on/off for everyone who is dead*/
|
||||
/datum/admins/proc/toggledsay, /*toggles dsay on/off for everyone*/
|
||||
@@ -56,7 +53,6 @@ var/list/admin_verbs_admin = list(
|
||||
/client/proc/cmd_mod_say,
|
||||
/datum/admins/proc/show_player_info,
|
||||
/client/proc/free_slot, /*frees slot for chosen job*/
|
||||
/client/proc/cmd_admin_rejuvenate,
|
||||
/client/proc/toggleattacklogs,
|
||||
/client/proc/toggledebuglogs,
|
||||
/client/proc/update_mob_sprite,
|
||||
@@ -64,7 +60,6 @@ var/list/admin_verbs_admin = list(
|
||||
/client/proc/man_up,
|
||||
/client/proc/global_man_up,
|
||||
/client/proc/delbook,
|
||||
/client/proc/event_manager_panel,
|
||||
/client/proc/empty_ai_core_toggle_latejoin
|
||||
)
|
||||
var/list/admin_verbs_ban = list(
|
||||
@@ -98,6 +93,9 @@ var/list/admin_verbs_event = list(
|
||||
/client/proc/cmd_admin_world_narrate, /*sends text to all players with no padding*/
|
||||
/client/proc/response_team, // Response Teams admin verb
|
||||
/client/proc/cmd_admin_create_centcom_report,
|
||||
/client/proc/fax_panel,
|
||||
/client/proc/secrets,
|
||||
/client/proc/event_manager_panel
|
||||
)
|
||||
|
||||
var/list/admin_verbs_spawn = list(
|
||||
@@ -122,21 +120,7 @@ var/list/admin_verbs_server = list(
|
||||
/client/proc/delbook,
|
||||
/client/proc/toggle_antagHUD_use,
|
||||
/client/proc/toggle_antagHUD_restrictions,
|
||||
/client/proc/set_ooc,
|
||||
|
||||
//Doubling of certain event verbs for senior admins
|
||||
/datum/admins/proc/access_news_network, /*allows access of newscasters*/
|
||||
/client/proc/cmd_admin_direct_narrate, /*send text directly to a player with no padding. Useful for narratives and fluff-text*/
|
||||
/client/proc/cmd_admin_world_narrate, /*sends text to all players with no padding*/
|
||||
/client/proc/toggle_random_events,
|
||||
/client/proc/toggle_ert_calling,
|
||||
/client/proc/one_click_antag,
|
||||
/client/proc/cmd_admin_change_custom_event,
|
||||
/client/proc/cmd_admin_create_centcom_report,
|
||||
/client/proc/cmd_admin_dress,
|
||||
/client/proc/editappear,
|
||||
/client/proc/response_team, // Response Teams admin verb
|
||||
/client/proc/nanomapgen_DumpImage
|
||||
/client/proc/set_ooc
|
||||
)
|
||||
var/list/admin_verbs_debug = list(
|
||||
/client/proc/cmd_admin_list_open_jobs,
|
||||
@@ -166,7 +150,8 @@ var/list/admin_verbs_permissions = list(
|
||||
/client/proc/edit_admin_permissions
|
||||
)
|
||||
var/list/admin_verbs_rejuv = list(
|
||||
/client/proc/respawn_character
|
||||
/client/proc/respawn_character,
|
||||
/client/proc/cmd_admin_rejuvenate
|
||||
)
|
||||
var/list/admin_verbs_mod = list(
|
||||
/client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/
|
||||
@@ -181,9 +166,16 @@ var/list/admin_verbs_mod = list(
|
||||
/client/proc/dsay,
|
||||
/datum/admins/proc/show_player_panel,
|
||||
/client/proc/jobbans,
|
||||
/client/proc/debug_variables /*allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify*/
|
||||
// /client/proc/cmd_admin_subtle_message /*send an message to somebody as a 'voice in their head'*/
|
||||
)
|
||||
|
||||
var/list/admin_verbs_mentor = list(
|
||||
/client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/
|
||||
/client/proc/cmd_admin_pm_panel, /*admin-pm list*/
|
||||
/client/proc/cmd_admin_pm_by_key_panel, /*admin-pm list by key*/
|
||||
/client/proc/cmd_mentor_check_new_players
|
||||
)
|
||||
|
||||
/client/proc/add_admin_verbs()
|
||||
if(holder)
|
||||
@@ -201,6 +193,7 @@ var/list/admin_verbs_mod = list(
|
||||
if(holder.rights & R_SOUNDS) verbs += admin_verbs_sounds
|
||||
if(holder.rights & R_SPAWN) verbs += admin_verbs_spawn
|
||||
if(holder.rights & R_MOD) verbs += admin_verbs_mod
|
||||
if(holder.rights & R_MENTOR) verbs += admin_verbs_mentor
|
||||
|
||||
/client/proc/admin_ghost()
|
||||
set category = "Admin"
|
||||
@@ -637,6 +630,7 @@ var/list/admin_verbs_mod = list(
|
||||
set category = "Preferences"
|
||||
|
||||
prefs.toggles ^= CHAT_ATTACKLOGS
|
||||
prefs.save_preferences(src)
|
||||
if (prefs.toggles & CHAT_ATTACKLOGS)
|
||||
usr << "You now will get attack log messages"
|
||||
else
|
||||
|
||||
@@ -455,6 +455,16 @@
|
||||
dat += "<td>[mob_loc.loc]</td></tr>"
|
||||
else
|
||||
dat += "<tr><td><i>Head not found!</i></td></tr>"
|
||||
if(ticker.mode.num_players_started() >= 30)
|
||||
for(var/datum/mind/N in ticker.mode.get_extra_living_heads())
|
||||
var/mob/M = N.current
|
||||
if(M)
|
||||
dat += "<tr><td><a href='?src=\ref[src];adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(logged out)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
dat += "<td><A href='?src=\ref[usr];priv_msg=\ref[M]'>PM</A></td>"
|
||||
var/turf/mob_loc = get_turf_loc(M)
|
||||
dat += "<td>[mob_loc.loc]</td></tr>"
|
||||
else
|
||||
dat += "<tr><td><i>Head not found!</i></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
if(ticker.mode.name == "nations")
|
||||
|
||||
+187
-77
@@ -37,18 +37,10 @@
|
||||
if(!src.makeWizard())
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
if("7")
|
||||
log_admin("[key_name(usr)] has spawned a nuke team.")
|
||||
if(!src.makeNukeTeam())
|
||||
log_admin("[key_name(usr)] has spawned vampires.")
|
||||
if(!src.makeVampires())
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
if("8")
|
||||
log_admin("[key_name(usr)] has spawned a ninja.")
|
||||
src.makeSpaceNinja()
|
||||
if("9")
|
||||
log_admin("[key_name(usr)] has spawned aliens.")
|
||||
src.makeAliens()
|
||||
if("10")
|
||||
log_admin("[key_name(usr)] has spawned a death squad.")
|
||||
if("11")
|
||||
log_admin("[key_name(usr)] has spawned vox raiders.")
|
||||
if(!src.makeVoxRaiders())
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
@@ -294,7 +286,7 @@
|
||||
if("sentinel") M.change_mob_type( /mob/living/carbon/alien/humanoid/sentinel , null, null, delmob )
|
||||
if("larva") M.change_mob_type( /mob/living/carbon/alien/larva , null, null, delmob )
|
||||
if("human") M.change_mob_type( /mob/living/carbon/human/human , null, null, delmob )
|
||||
if("slime") M.change_mob_type( /mob/living/carbon/slime , null, null, delmob )
|
||||
if("slime") M.change_mob_type( /mob/living/carbon/slime , null, null, delmob )
|
||||
if("monkey") M.change_mob_type( /mob/living/carbon/monkey , null, null, delmob )
|
||||
if("robot") M.change_mob_type( /mob/living/silicon/robot , null, null, delmob )
|
||||
if("cat") M.change_mob_type( /mob/living/simple_animal/cat , null, null, delmob )
|
||||
@@ -599,13 +591,13 @@
|
||||
if(counter >= 5) //So things dont get squiiiiished!
|
||||
jobs += "</tr><tr align='center'>"
|
||||
counter = 0
|
||||
|
||||
|
||||
//Drone
|
||||
if(jobban_isbanned(M, "Drone"))
|
||||
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=Drone;jobban4=\ref[M]'><font color=red>Drone</font></a></td>"
|
||||
else
|
||||
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=Drone;jobban4=\ref[M]'>Drone</a></td>"
|
||||
|
||||
|
||||
//pAI
|
||||
if(jobban_isbanned(M, "pAI"))
|
||||
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=pAI;jobban4=\ref[M]'><font color=red>pAI</font></a></td>"
|
||||
@@ -675,19 +667,19 @@
|
||||
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=ninja;jobban4=\ref[M]'><font color=red>[replacetext("Ninja", " ", " ")]</font></a></td>"
|
||||
else
|
||||
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=ninja;jobban4=\ref[M]'>[replacetext("Ninja", " ", " ")]</a></td>"
|
||||
|
||||
|
||||
//Raider
|
||||
if(jobban_isbanned(M, "raider") || isbanned_dept)
|
||||
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=raider;jobban4=\ref[M]'><font color=red>[replacetext("Raider", " ", " ")]</font></a></td>"
|
||||
else
|
||||
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=raider;jobban4=\ref[M]'>[replacetext("Raider", " ", " ")]</a></td>"
|
||||
|
||||
|
||||
//Mutineer
|
||||
if(jobban_isbanned(M, "mutineer") || isbanned_dept)
|
||||
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=mutineer;jobban4=\ref[M]'><font color=red>[replacetext("Mutineer", " ", " ")]</font></a></td>"
|
||||
else
|
||||
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=mutineer;jobban4=\ref[M]'>[replacetext("Mutineer", " ", " ")]</a></td>"
|
||||
|
||||
|
||||
//Blob
|
||||
if(jobban_isbanned(M, "blob") || isbanned_dept)
|
||||
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=blob;jobban4=\ref[M]'><font color=red>[replacetext("Blob", " ", " ")]</font></a></td>"
|
||||
@@ -706,12 +698,12 @@
|
||||
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=Dionaea;jobban4=\ref[M]'><font color=red>Dionaea Nymph</font></a></td>"
|
||||
else
|
||||
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=Dionaea;jobban4=\ref[M]'>Dionaea Nymph</a></td>"
|
||||
|
||||
|
||||
//NPC
|
||||
if(jobban_isbanned(M, "NPC"))
|
||||
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=NPC;jobban4=\ref[M]'><font color=red>NPC</font></a></td>"
|
||||
else
|
||||
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=NPC;jobban4=\ref[M]'>NPC</a></td>"
|
||||
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=NPC;jobban4=\ref[M]'>NPC</a></td>"
|
||||
|
||||
//ANTAG HUD
|
||||
if(jobban_isbanned(M, "AntagHUD"))
|
||||
@@ -1100,6 +1092,7 @@
|
||||
message_admins("\blue [key_name_admin(usr)] attempting to monkeyize [key_name_admin(H)]", 1)
|
||||
H.monkeyize()
|
||||
|
||||
|
||||
else if(href_list["corgione"])
|
||||
if(!check_rights(R_SPAWN)) return
|
||||
|
||||
@@ -1149,7 +1142,7 @@
|
||||
|
||||
//strip their stuff and stick it in the crate
|
||||
for(var/obj/item/I in M)
|
||||
M.u_equip(I)
|
||||
M.unEquip(I)
|
||||
if(I)
|
||||
I.loc = locker
|
||||
I.layer = initial(I.layer)
|
||||
@@ -1170,7 +1163,7 @@
|
||||
M << "\red You have been sent to the prison station!"
|
||||
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)
|
||||
|
||||
|
||||
else if(href_list["sendbacktolobby"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
@@ -1193,7 +1186,7 @@
|
||||
|
||||
var/mob/new_player/NP = new()
|
||||
NP.ckey = M.ckey
|
||||
qdel(M)
|
||||
qdel(M)
|
||||
|
||||
else if(href_list["tdome1"])
|
||||
if(!check_rights(R_SERVER|R_EVENT)) return
|
||||
@@ -1210,7 +1203,7 @@
|
||||
return
|
||||
|
||||
for(var/obj/item/I in M)
|
||||
M.u_equip(I)
|
||||
M.unEquip(I)
|
||||
if(I)
|
||||
I.loc = M.loc
|
||||
I.layer = initial(I.layer)
|
||||
@@ -1239,7 +1232,7 @@
|
||||
return
|
||||
|
||||
for(var/obj/item/I in M)
|
||||
M.u_equip(I)
|
||||
M.unEquip(I)
|
||||
if(I)
|
||||
I.loc = M.loc
|
||||
I.layer = initial(I.layer)
|
||||
@@ -1290,7 +1283,7 @@
|
||||
return
|
||||
|
||||
for(var/obj/item/I in M)
|
||||
M.u_equip(I)
|
||||
M.unEquip(I)
|
||||
if(I)
|
||||
I.loc = M.loc
|
||||
I.layer = initial(I.layer)
|
||||
@@ -1437,7 +1430,7 @@
|
||||
foo += text("<B>Is an AI</B> | ")
|
||||
else
|
||||
foo += text("<A HREF='?src=\ref[];makeai=\ref[]'>Make AI</A> | ", src, M)
|
||||
if(M.z != 2)
|
||||
if(!(M.z in config.admin_levels))
|
||||
foo += text("<A HREF='?src=\ref[];sendtoprison=\ref[]'>Prison</A> | ", src, M)
|
||||
foo += text("<A HREF='?src=\ref[];sendtomaze=\ref[]'>Maze</A> | ", src, M)
|
||||
else
|
||||
@@ -1569,11 +1562,11 @@
|
||||
usr << "This can only be used on instances of type /mob/living"
|
||||
return
|
||||
|
||||
if(alert(src.owner, "Are you sure you wish to hit [key_name(M)] with Blue Space Artillery?", "Confirm Firing?" , "Yes" , "No") != "Yes")
|
||||
if(alert(src.owner, "Are you sure you wish to hit [key_name(M)] with Bluespace Artillery?", "Confirm Firing?" , "Yes" , "No") != "Yes")
|
||||
return
|
||||
|
||||
if(BSACooldown)
|
||||
src.owner << "Standby! Reload cycle in progress! Gunnary crews ready in five seconds!"
|
||||
src.owner << "Standby. Reload cycle in progress. Gunnery crews ready in five seconds!"
|
||||
return
|
||||
|
||||
BSACooldown = 1
|
||||
@@ -1605,6 +1598,9 @@
|
||||
M.stuttering = 20
|
||||
|
||||
else if(href_list["CentcommReply"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = locate(href_list["CentcommReply"])
|
||||
if(!istype(H))
|
||||
usr << "This can only be used on instances of type /mob/living/carbon/human"
|
||||
@@ -1622,10 +1618,16 @@
|
||||
H << "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from Central Command. Message as follows. [input]. Message ends.\""
|
||||
|
||||
else if(href_list["SyndicateReply"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = locate(href_list["SyndicateReply"])
|
||||
if(!istype(H))
|
||||
usr << "This can only be used on instances of type /mob/living/carbon/human"
|
||||
return
|
||||
if(H.stat != 0)
|
||||
usr << "The person you are trying to contact is not conscious."
|
||||
return
|
||||
if(!istype(H.l_ear, /obj/item/device/radio/headset) && !istype(H.r_ear, /obj/item/device/radio/headset))
|
||||
usr << "The person you are trying to contact is not wearing a headset"
|
||||
return
|
||||
@@ -1654,6 +1656,9 @@
|
||||
H << "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from your HONKbrothers. Message as follows, HONK. [input]. Message ends, HONK.\""
|
||||
|
||||
else if(href_list["AdminFaxView"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
var/obj/item/fax = locate(href_list["AdminFaxView"])
|
||||
if (istype(fax, /obj/item/weapon/paper))
|
||||
var/obj/item/weapon/paper/P = fax
|
||||
@@ -1666,21 +1671,24 @@
|
||||
//open a browse window listing the contents instead
|
||||
var/data = ""
|
||||
var/obj/item/weapon/paper_bundle/B = fax
|
||||
|
||||
|
||||
for (var/page = 1, page <= B.amount + 1, page++)
|
||||
var/obj/pageobj = B.contents[page]
|
||||
data += "<A href='?src=\ref[src];AdminFaxViewPage=[page];paper_bundle=\ref[B]'>Page [page] - [pageobj.name]</A><BR>"
|
||||
|
||||
|
||||
usr << browse(data, "window=[B.name]")
|
||||
else
|
||||
usr << "\red The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]"
|
||||
|
||||
else if (href_list["AdminFaxViewPage"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
var/page = text2num(href_list["AdminFaxViewPage"])
|
||||
var/obj/item/weapon/paper_bundle/bundle = locate(href_list["paper_bundle"])
|
||||
|
||||
|
||||
if (!bundle) return
|
||||
|
||||
|
||||
if (istype(bundle.contents[page], /obj/item/weapon/paper))
|
||||
var/obj/item/weapon/paper/P = bundle.contents[page]
|
||||
P.show_content(src.owner, 1)
|
||||
@@ -1688,52 +1696,156 @@
|
||||
var/obj/item/weapon/photo/H = bundle.contents[page]
|
||||
H.show(src.owner)
|
||||
return
|
||||
|
||||
else if(href_list["CentcommFaxReply"])
|
||||
var/mob/sender = locate(href_list["CentcommFaxReply"])
|
||||
|
||||
else if(href_list["AdminFaxCreate"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
var/mob/sender = locate(href_list["AdminFaxCreate"])
|
||||
var/obj/machinery/photocopier/faxmachine/fax = locate(href_list["originfax"])
|
||||
var/faxtype = href_list["faxtype"]
|
||||
var/reply_to = locate(href_list["replyto"])
|
||||
var/destination
|
||||
var/notify
|
||||
|
||||
var/input = input(src.owner, "Please enter a message to reply to [key_name(sender)] via secure connection. NOTE: BBCode does not work, but HTML tags do! Use <br> for line breaks.", "Outgoing message from Centcomm", "") as message|null
|
||||
if(!input) return
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(null) //hopefully the null loc won't cause trouble for us
|
||||
|
||||
if(!fax)
|
||||
var/list/departmentoptions = alldepartments + "All Departments"
|
||||
destination = input(usr, "To which department?", "Choose a department", "") as null|anything in departmentoptions
|
||||
if(!destination)
|
||||
del(P)
|
||||
return
|
||||
|
||||
for(var/obj/machinery/photocopier/faxmachine/F in allfaxes)
|
||||
if(destination != "All Departments" && F.department == destination)
|
||||
fax = F
|
||||
|
||||
|
||||
var/input = input(src.owner, "Please enter a message to send a fax via secure connection. Use <br> for line breaks. Both pencode and HTML work.", "Outgoing message from Centcomm", "") as message|null
|
||||
if(!input)
|
||||
del(P)
|
||||
return
|
||||
input = P.parsepencode(input) // Encode everything from pencode to html
|
||||
|
||||
var/customname = input(src.owner, "Pick a title for the fax.", "Fax Title") as text|null
|
||||
if(!customname)
|
||||
customname = "paper"
|
||||
|
||||
var/stampname
|
||||
var/stamptype
|
||||
var/stampvalue
|
||||
var/sendername
|
||||
switch(faxtype)
|
||||
if("Central Command")
|
||||
stamptype = "icon"
|
||||
stampvalue = "cent"
|
||||
sendername = command_name()
|
||||
if("Syndicate")
|
||||
sendername = "UNKNOWN"
|
||||
if("Administrator")
|
||||
stamptype = input(src.owner, "Pick a stamp type.", "Stamp Type") as null|anything in list("icon","text","none")
|
||||
if(stamptype == "icon")
|
||||
stampname = input(src.owner, "Pick a stamp icon.", "Stamp Icon") as null|anything in list("centcom","granted","denied","clown")
|
||||
switch(stampname)
|
||||
if("centcom")
|
||||
stampvalue = "cent"
|
||||
if("granted")
|
||||
stampvalue = "ok"
|
||||
if("denied")
|
||||
stampvalue = "deny"
|
||||
if("clown")
|
||||
stampvalue = "clown"
|
||||
else if(stamptype == "text")
|
||||
stampvalue = input(src.owner, "What should the stamp say?", "Stamp Text") as text|null
|
||||
else if(stamptype == "none")
|
||||
stamptype = ""
|
||||
else
|
||||
del(P)
|
||||
return
|
||||
|
||||
sendername = input(src.owner, "What organization does the fax come from? This determines the prefix of the paper (i.e. Central Command- Title). This is optional.", "Organization") as text|null
|
||||
|
||||
if(sender)
|
||||
notify = alert(src.owner, "Would you like to inform the original sender that a fax has arrived?","Notify Sender","Yes","No")
|
||||
|
||||
var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null
|
||||
|
||||
// Create the reply message
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( null ) //hopefully the null loc won't cause trouble for us
|
||||
P.name = "[command_name()]- [customname]"
|
||||
if(sendername)
|
||||
P.name = "[sendername]- [customname]"
|
||||
else
|
||||
P.name = "[customname]"
|
||||
P.info = input
|
||||
P.update_icon()
|
||||
P.stamps += "<HR><img src=large_stamp-cent.png>"
|
||||
var/image/stampoverlay = image('icons/obj/bureaucracy.dmi')
|
||||
P.x = rand(-2, 0)
|
||||
P.y = rand(-1, 2)
|
||||
P.y = rand(-1, 2)
|
||||
P.offset_x += P.x
|
||||
P.offset_y += P.y
|
||||
stampoverlay.pixel_x = P.x
|
||||
stampoverlay.pixel_y = P.y
|
||||
|
||||
if(!P.ico)
|
||||
P.ico = new
|
||||
P.ico += "paper_stamp-cent"
|
||||
stampoverlay.icon_state = "paper_stamp-cent"
|
||||
|
||||
// Stamps
|
||||
if(!P.stamped)
|
||||
P.stamped = new
|
||||
P.stamped += /obj/item/weapon/stamp/centcom
|
||||
P.overlays += stampoverlay
|
||||
if(stamptype)
|
||||
var/image/stampoverlay = image('icons/obj/bureaucracy.dmi')
|
||||
stampoverlay.pixel_x = P.x
|
||||
stampoverlay.pixel_y = P.y
|
||||
|
||||
if(fax.recievefax(P))
|
||||
src.owner << "\blue Message reply to transmitted successfully."
|
||||
log_admin("[key_name(src.owner)] replied to a fax message from [key_name(sender)]: [input]")
|
||||
message_admins("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(sender)]", 1)
|
||||
if(!P.ico)
|
||||
P.ico = new
|
||||
P.ico += "paper_stamp-[stampvalue]"
|
||||
stampoverlay.icon_state = "paper_stamp-[stampvalue]"
|
||||
|
||||
if(stamptype == "icon")
|
||||
if(!P.stamped)
|
||||
P.stamped = new
|
||||
P.stamped += /obj/item/weapon/stamp/centcom
|
||||
P.overlays += stampoverlay
|
||||
P.stamps += "<HR><img src=large_stamp-[stampvalue].png>"
|
||||
|
||||
else if(stamptype == "text")
|
||||
if(!P.stamped)
|
||||
P.stamped = new
|
||||
P.stamped += /obj/item/weapon/stamp
|
||||
P.overlays += stampoverlay
|
||||
P.stamps += "<HR><i>[stampvalue]</i>"
|
||||
|
||||
if(destination != "All Departments")
|
||||
if(!fax.receivefax(P))
|
||||
src.owner << "\red Message transmission failed."
|
||||
return
|
||||
else
|
||||
src.owner << "\red Message reply failed."
|
||||
|
||||
spawn(100)
|
||||
del(P)
|
||||
for(var/obj/machinery/photocopier/faxmachine/F in allfaxes)
|
||||
if((F.z in config.station_levels))
|
||||
if(!F.receivefax(P))
|
||||
src.owner << "\red Message transmission to [F.department] failed."
|
||||
|
||||
var/datum/fax/admin/A = new /datum/fax/admin()
|
||||
A.name = P.name
|
||||
A.from_department = faxtype
|
||||
if(destination != "All Departments")
|
||||
A.to_department = fax.department
|
||||
else
|
||||
A.to_department = "All Departments"
|
||||
A.origin = "Administrator"
|
||||
A.message = P
|
||||
A.reply_to = reply_to
|
||||
A.sent_by = usr
|
||||
A.sent_at = world.time
|
||||
|
||||
src.owner << "\blue Message transmitted successfully."
|
||||
if(notify == "Yes")
|
||||
var/mob/living/carbon/human/H = sender
|
||||
if(istype(H) && H.stat == 1 && (istype(H.l_ear, /obj/item/device/radio/headset) || istype(H.r_ear, /obj/item/device/radio/headset)))
|
||||
sender << "Your headset pings, notifying you that a reply to your fax has arrived."
|
||||
if(sender)
|
||||
log_admin("[key_name(src.owner)] replied to a fax message from [key_name(sender)]: [input]")
|
||||
message_admins("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(sender)] (<a href='?_src_=holder;AdminFaxView=\ref[P]'>VIEW</a>).", 1)
|
||||
else
|
||||
log_admin("[key_name(src.owner)] sent a fax message to [destination]: [input]")
|
||||
message_admins("[key_name_admin(src.owner)] sent a fax message to [destination] (<a href='?_src_=holder;AdminFaxView=\ref[P]'>VIEW</a>).", 1)
|
||||
return
|
||||
|
||||
else if(href_list["refreshfaxpanel"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
fax_panel(usr)
|
||||
|
||||
else if(href_list["jumpto"])
|
||||
if(!check_rights(R_ADMIN)) return
|
||||
|
||||
@@ -1992,11 +2104,11 @@
|
||||
if(gravity_is_on)
|
||||
log_admin("[key_name(usr)] toggled gravity on.", 1)
|
||||
message_admins("\blue [key_name_admin(usr)] toggled gravity on.", 1)
|
||||
command_alert("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.")
|
||||
command_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)
|
||||
command_alert("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.")
|
||||
command_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("wave")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","Meteor")
|
||||
@@ -2033,12 +2145,12 @@
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","BLOB")
|
||||
message_admins("[key_name_admin(usr)] has triggered a blob.")
|
||||
new /datum/game_mode/blob()
|
||||
new /datum/game_mode/blob()
|
||||
if("aliens")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","ALIEN")
|
||||
message_admins("[key_name_admin(usr)] has triggered an alien infestation.")
|
||||
new /datum/event/alien_infestation()
|
||||
new /datum/event/alien_infestation()
|
||||
if("power")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","P")
|
||||
@@ -2095,7 +2207,7 @@
|
||||
for(var/mob/living/carbon/human/H in mob_list)
|
||||
var/turf/loc = find_loc(H)
|
||||
var/security = 0
|
||||
if(loc.z > 1 || prisonwarped.Find(H))
|
||||
if(!(loc.z in config.station_levels) || prisonwarped.Find(H))
|
||||
|
||||
//don't warp them if they aren't ready or are already there
|
||||
continue
|
||||
@@ -2111,7 +2223,7 @@
|
||||
if(istype(W, /datum/organ/external))
|
||||
continue
|
||||
//don't strip organs
|
||||
H.u_equip(W)
|
||||
H.unEquip(W)
|
||||
if (H.client)
|
||||
H.client.screen -= W
|
||||
if (W)
|
||||
@@ -2408,7 +2520,7 @@
|
||||
message_admins("[key_name_admin(usr)] made the floor LAVA! It'll last [length] seconds and it will deal [damage] damage to everyone.", 1)
|
||||
|
||||
for(var/turf/simulated/floor/F in world)
|
||||
if(F.z == 1)
|
||||
if((F.z in config.station_levels))
|
||||
F.name = "lava"
|
||||
F.desc = "The floor is LAVA!"
|
||||
F.overlays += "lava"
|
||||
@@ -2433,7 +2545,7 @@
|
||||
sleep(10)
|
||||
|
||||
for(var/turf/simulated/floor/F in world) // Reset everything.
|
||||
if(F.z == 1)
|
||||
if((F.z in config.station_levels))
|
||||
F.name = initial(F.name)
|
||||
F.desc = initial(F.desc)
|
||||
F.overlays.Cut()
|
||||
@@ -2481,11 +2593,10 @@
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","EgL")
|
||||
for(var/obj/machinery/door/airlock/W in world)
|
||||
if(W.z == 1 && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison))
|
||||
if((W.z in config.station_levels) && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison))
|
||||
W.req_access = list()
|
||||
message_admins("[key_name_admin(usr)] activated Egalitarian Station mode")
|
||||
command_alert("Centcomm airlock control override activated. Please take this time to get acquainted with your coworkers.")
|
||||
world << sound('sound/AI/commandreport.ogg')
|
||||
command_announcement.Announce("Centcomm airlock control override activated. Please take this time to get acquainted with your coworkers.", new_sound = 'sound/AI/commandreport.ogg')
|
||||
if("dorf")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","DF")
|
||||
@@ -2500,8 +2611,7 @@
|
||||
message_admins("[key_name_admin(usr)] triggered an ion storm")
|
||||
var/show_log = alert(usr, "Show ion message?", "Message", "Yes", "No")
|
||||
if(show_log == "Yes")
|
||||
command_alert("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert")
|
||||
world << sound('sound/AI/ionstorm.ogg')
|
||||
command_announcement.Announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", new_sound = 'sound/AI/ionstorm.ogg')
|
||||
if("carp")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","Crp")
|
||||
|
||||
@@ -21,7 +21,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
src.verbs += /client/verb/adminhelp // 2 minute cool-down for adminhelps//Go to hell
|
||||
**/
|
||||
var/msg
|
||||
var/list/type = list("Player Complaint","Question","Bug Report","Event")
|
||||
var/list/type = list("Question","Player Complaint")
|
||||
var/selected_type = input("Pick a category.", "Admin Help", null, null) as null|anything in type
|
||||
if(selected_type)
|
||||
msg = input("Please enter your message.", "Admin Help", null, null) as text
|
||||
@@ -100,11 +100,9 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
var/admin_number_afk = 0
|
||||
var/list/modholders = list()
|
||||
var/list/banholders = list()
|
||||
var/list/debugholders = list()
|
||||
var/list/adminholders = list()
|
||||
var/list/eventholders = list()
|
||||
for(var/client/X in admins)
|
||||
if(R_MOD & X.holder.rights)
|
||||
if((R_MOD | R_MENTOR) & X.holder.rights)
|
||||
if(X.is_afk())
|
||||
admin_number_afk++
|
||||
modholders += X
|
||||
@@ -114,10 +112,6 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
adminholders += X
|
||||
if(R_BAN & X.holder.rights)
|
||||
banholders += X
|
||||
if(R_DEBUG & X.holder.rights)
|
||||
debugholders += X
|
||||
if(R_EVENT & X.holder.rights)
|
||||
eventholders += X
|
||||
|
||||
switch(selected_type)
|
||||
if("Question")
|
||||
@@ -132,30 +126,6 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
X << msg
|
||||
else if("Bug Report")
|
||||
if(debugholders.len)
|
||||
for(var/client/X in debugholders)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
X << msg
|
||||
else
|
||||
if(adminholders.len)
|
||||
for(var/client/X in adminholders)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
X << msg
|
||||
else if("Event")
|
||||
if(eventholders.len)
|
||||
for(var/client/X in eventholders)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
X << msg
|
||||
else
|
||||
if(banholders.len)
|
||||
for(var/client/X in banholders)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
X << msg
|
||||
else if("Player Complaint")
|
||||
if(banholders.len)
|
||||
for(var/client/X in banholders)
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
//mod PMs are maroon
|
||||
//PMs sent from admins and mods display their rank
|
||||
if(holder)
|
||||
if( holder.rights & R_MOD && !holder.rights & R_ADMIN )
|
||||
if( holder.rights & (R_MOD | R_MENTOR) && !holder.rights & R_ADMIN )
|
||||
recieve_color = "maroon"
|
||||
else
|
||||
recieve_color = "red"
|
||||
@@ -204,20 +204,14 @@
|
||||
|
||||
var/list/modholders = list()
|
||||
var/list/banholders = list()
|
||||
var/list/debugholders = list()
|
||||
var/list/adminholders = list()
|
||||
var/list/eventholders = list()
|
||||
for(var/client/X in admins)
|
||||
if(R_MOD & X.holder.rights)
|
||||
if((R_MOD | R_MENTOR) & X.holder.rights)
|
||||
modholders += X
|
||||
if(R_ADMIN & X.holder.rights)
|
||||
adminholders += X
|
||||
if(R_DEBUG & X.holder.rights)
|
||||
debugholders += X
|
||||
if(R_BAN & X.holder.rights)
|
||||
banholders += X
|
||||
if(R_EVENT & X.holder.rights)
|
||||
eventholders += X
|
||||
|
||||
//we don't use message_admins here because the sender/receiver might get it too
|
||||
for(var/client/X in admins)
|
||||
@@ -227,20 +221,10 @@
|
||||
if(X.key!=key && X.key!=C.key)
|
||||
switch(type)
|
||||
if("Question")
|
||||
if(X.holder.rights & R_MOD)
|
||||
if(X.holder.rights & (R_MOD | R_MENTOR))
|
||||
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //inform X
|
||||
else if(!modholders.len && X.holder.rights & R_ADMIN)
|
||||
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //Any admins in backup of mod question
|
||||
if("Bug Report")
|
||||
if(X.holder.rights & R_DEBUG)
|
||||
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //inform X
|
||||
else if(!debugholders.len && X.holder.rights & R_ADMIN)
|
||||
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //Any admins in backup of bug reports
|
||||
if("Event")
|
||||
if(X.holder.rights & R_EVENT)
|
||||
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //inform X
|
||||
else if(!eventholders.len && X.holder.rights & R_BAN)
|
||||
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //Quality in backup of Event
|
||||
if("Player Complaint")
|
||||
if(X.holder.rights & R_BAN)
|
||||
X << "<B><font color='blue'>[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]:</B> \blue [msg]</font>" //There should always be at least 1 person with +BAN on
|
||||
@@ -273,6 +257,6 @@
|
||||
for(var/client/X in admins)
|
||||
if(X == src)
|
||||
continue
|
||||
if((X.holder.rights & R_ADMIN) || (X.holder.rights & R_MOD))
|
||||
if((X.holder.rights & R_ADMIN) || (X.holder.rights & (R_MOD | R_MENTOR)))
|
||||
X << "<B><font color='blue'>PM: [key_name(src, X, 0)]->IRC-Admins:</B> \blue [msg]</font>"
|
||||
|
||||
|
||||
@@ -1025,7 +1025,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
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(M), slot_belt)
|
||||
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)
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ var/intercom_range_display_status = 0
|
||||
del(C)
|
||||
|
||||
if(camera_range_display_status)
|
||||
for(var/obj/machinery/camera/C in cameranet.viewpoints)
|
||||
for(var/obj/machinery/camera/C in cameranet.cameras)
|
||||
new/obj/effect/debugging/camera_range(C.loc)
|
||||
feedback_add_details("admin_verb","mCRD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -68,7 +68,7 @@ var/intercom_range_display_status = 0
|
||||
|
||||
var/list/obj/machinery/camera/CL = list()
|
||||
|
||||
for(var/obj/machinery/camera/C in cameranet.viewpoints)
|
||||
for(var/obj/machinery/camera/C in cameranet.cameras)
|
||||
CL += C
|
||||
|
||||
var/output = {"<B>CAMERA ANOMALIES REPORT</B><HR>
|
||||
|
||||
@@ -14,23 +14,14 @@ client/proc/one_click_antag()
|
||||
|
||||
var/dat = {"<B>One-click Antagonist</B><br>
|
||||
<a href='?src=\ref[src];makeAntag=1'>Make Traitors</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=2'>Make Changlings</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=3'>Make Revs</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=2'>Make Changelings</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=3'>Make Revolutionaries</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=4'>Make Cult</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=5'>Make Malf AI</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=6'>Make Wizard (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=11'>Make Vox Raiders (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=7'>Make Vampires</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=8'>Make Vox Raiders (Requires Ghosts)</a><br>
|
||||
"}
|
||||
/* These dont work just yet
|
||||
Ninja, aliens and deathsquad I have not looked into yet
|
||||
Nuke team is getting a null mob returned from makebody() (runtime error: null.mind. Line 272)
|
||||
|
||||
<a href='?src=\ref[src];makeAntag=7'>Make Nuke Team (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=8'>Make Space Ninja (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=9'>Make Aliens (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=10'>Make Deathsquad (Syndicate) (Requires Ghosts)</a><br>
|
||||
"}
|
||||
*/
|
||||
usr << browse(dat, "window=oneclickantag;size=400x400")
|
||||
return
|
||||
|
||||
@@ -42,7 +33,7 @@ client/proc/one_click_antag()
|
||||
var/datum/mind/themind = null
|
||||
|
||||
for(var/mob/living/silicon/ai/ai in player_list)
|
||||
if(ai.client)
|
||||
if(ai.client && ai.client.prefs.be_special & BE_MALF)
|
||||
AIs += ai
|
||||
|
||||
if(AIs.len)
|
||||
@@ -67,12 +58,14 @@ client/proc/one_click_antag()
|
||||
|
||||
for(var/mob/living/carbon/human/applicant in player_list)
|
||||
if(applicant.client.prefs.be_special & BE_TRAITOR)
|
||||
if(!applicant.stat)
|
||||
if(applicant.mind)
|
||||
if (!applicant.mind.special_role)
|
||||
if(!jobban_isbanned(applicant, "traitor") && !jobban_isbanned(applicant, "Syndicate"))
|
||||
if(!(applicant.job in temp.restricted_jobs))
|
||||
candidates += applicant
|
||||
if(player_old_enough_antag(applicant.client,BE_TRAITOR))
|
||||
if(!applicant.stat)
|
||||
if(applicant.mind)
|
||||
if (!applicant.mind.special_role)
|
||||
if(!jobban_isbanned(applicant, "traitor") && !jobban_isbanned(applicant, "Syndicate"))
|
||||
if(!(applicant.mind.assigned_role in temp.restricted_jobs))
|
||||
if(!(applicant.client.prefs.species in temp.protected_species))
|
||||
candidates += applicant
|
||||
|
||||
if(candidates.len)
|
||||
var/numTratiors = min(candidates.len, 3)
|
||||
@@ -99,12 +92,14 @@ client/proc/one_click_antag()
|
||||
|
||||
for(var/mob/living/carbon/human/applicant in player_list)
|
||||
if(applicant.client.prefs.be_special & BE_CHANGELING)
|
||||
if(!applicant.stat)
|
||||
if(applicant.mind)
|
||||
if (!applicant.mind.special_role)
|
||||
if(!jobban_isbanned(applicant, "changeling") && !jobban_isbanned(applicant, "Syndicate"))
|
||||
if(!(applicant.job in temp.restricted_jobs))
|
||||
candidates += applicant
|
||||
if(player_old_enough_antag(applicant.client,BE_CHANGELING))
|
||||
if(!applicant.stat)
|
||||
if(applicant.mind)
|
||||
if (!applicant.mind.special_role)
|
||||
if(!jobban_isbanned(applicant, "changeling") && !jobban_isbanned(applicant, "Syndicate"))
|
||||
if(!(applicant.mind.assigned_role in temp.restricted_jobs))
|
||||
if(!(applicant.client.prefs.species in temp.protected_species))
|
||||
candidates += applicant
|
||||
|
||||
if(candidates.len)
|
||||
var/numChanglings = min(candidates.len, 3)
|
||||
@@ -129,12 +124,14 @@ client/proc/one_click_antag()
|
||||
|
||||
for(var/mob/living/carbon/human/applicant in player_list)
|
||||
if(applicant.client.prefs.be_special & BE_REV)
|
||||
if(applicant.stat == CONSCIOUS)
|
||||
if(applicant.mind)
|
||||
if(!applicant.mind.special_role)
|
||||
if(!jobban_isbanned(applicant, "revolutionary") && !jobban_isbanned(applicant, "Syndicate"))
|
||||
if(!(applicant.job in temp.restricted_jobs))
|
||||
candidates += applicant
|
||||
if(player_old_enough_antag(applicant.client,BE_REV))
|
||||
if(applicant.stat == CONSCIOUS)
|
||||
if(applicant.mind)
|
||||
if(!applicant.mind.special_role)
|
||||
if(!jobban_isbanned(applicant, "revolutionary") && !jobban_isbanned(applicant, "Syndicate"))
|
||||
if(!(applicant.mind.assigned_role in temp.restricted_jobs))
|
||||
if(!(applicant.client.prefs.species in temp.protected_species))
|
||||
candidates += applicant
|
||||
|
||||
if(candidates.len)
|
||||
var/numRevs = min(candidates.len, 3)
|
||||
@@ -153,17 +150,19 @@ client/proc/one_click_antag()
|
||||
var/time_passed = world.time
|
||||
|
||||
for(var/mob/G in respawnable_list)
|
||||
if(!jobban_isbanned(G, "wizard") && !jobban_isbanned(G, "Syndicate"))
|
||||
spawn(0)
|
||||
switch(G.timed_alert("Do you wish to be considered for the position of Space Wizard Foundation 'diplomat'?","Please answer in 30 seconds!","No",300,"Yes","No"))//alert(G, "Do you wish to be considered for the position of Space Wizard Foundation 'diplomat'?","Please answer in 30 seconds!","Yes","No"))
|
||||
if("Yes")
|
||||
if((world.time-time_passed)>300)//If more than 30 game seconds passed.
|
||||
return
|
||||
candidates += G
|
||||
if("No")
|
||||
return
|
||||
else
|
||||
return
|
||||
if(G.client.prefs.be_special & BE_WIZARD)
|
||||
if(!jobban_isbanned(G, "wizard") && !jobban_isbanned(G, "Syndicate"))
|
||||
if(player_old_enough_antag(G.client,BE_WIZARD))
|
||||
spawn(0)
|
||||
switch(G.timed_alert("Do you wish to be considered for the position of Space Wizard Foundation 'diplomat'?","Please answer in 30 seconds!","No",300,"Yes","No"))//alert(G, "Do you wish to be considered for the position of Space Wizard Foundation 'diplomat'?","Please answer in 30 seconds!","Yes","No"))
|
||||
if("Yes")
|
||||
if((world.time-time_passed)>300)//If more than 30 game seconds passed.
|
||||
return
|
||||
candidates += G
|
||||
if("No")
|
||||
return
|
||||
else
|
||||
return
|
||||
|
||||
sleep(300)
|
||||
|
||||
@@ -194,12 +193,14 @@ client/proc/one_click_antag()
|
||||
|
||||
for(var/mob/living/carbon/human/applicant in player_list)
|
||||
if(applicant.client.prefs.be_special & BE_CULTIST)
|
||||
if(applicant.stat == CONSCIOUS)
|
||||
if(applicant.mind)
|
||||
if(!applicant.mind.special_role)
|
||||
if(!jobban_isbanned(applicant, "cultist") && !jobban_isbanned(applicant, "Syndicate"))
|
||||
if(!(applicant.job in temp.restricted_jobs))
|
||||
candidates += applicant
|
||||
if(player_old_enough_antag(applicant.client,BE_CULTIST))
|
||||
if(applicant.stat == CONSCIOUS)
|
||||
if(applicant.mind)
|
||||
if(!applicant.mind.special_role)
|
||||
if(!jobban_isbanned(applicant, "cultist") && !jobban_isbanned(applicant, "Syndicate"))
|
||||
if(!(applicant.mind.assigned_role in temp.restricted_jobs))
|
||||
if(!(applicant.client.prefs.species in temp.protected_species))
|
||||
candidates += applicant
|
||||
|
||||
if(candidates.len)
|
||||
var/numCultists = min(candidates.len, 4)
|
||||
@@ -223,17 +224,19 @@ client/proc/one_click_antag()
|
||||
var/time_passed = world.time
|
||||
|
||||
for(var/mob/G in respawnable_list)
|
||||
if(!jobban_isbanned(G, "operative") && !jobban_isbanned(G, "Syndicate"))
|
||||
spawn(0)
|
||||
switch(alert(G,"Do you wish to be considered for a nuke team being sent in?","Please answer in 30 seconds!","Yes","No"))
|
||||
if("Yes")
|
||||
if((world.time-time_passed)>300)//If more than 30 game seconds passed.
|
||||
return
|
||||
candidates += G
|
||||
if("No")
|
||||
return
|
||||
else
|
||||
return
|
||||
if(G.client.prefs.be_special & BE_OPERATIVE)
|
||||
if(!jobban_isbanned(G, "operative") && !jobban_isbanned(G, "Syndicate"))
|
||||
if(player_old_enough_antag(G.client,BE_OPERATIVE))
|
||||
spawn(0)
|
||||
switch(alert(G,"Do you wish to be considered for a nuke team being sent in?","Please answer in 30 seconds!","Yes","No"))
|
||||
if("Yes")
|
||||
if((world.time-time_passed)>300)//If more than 30 game seconds passed.
|
||||
return
|
||||
candidates += G
|
||||
if("No")
|
||||
return
|
||||
else
|
||||
return
|
||||
|
||||
sleep(300)
|
||||
|
||||
@@ -328,16 +331,17 @@ client/proc/one_click_antag()
|
||||
|
||||
//Generates a list of commandos from active ghosts. Then the user picks which characters to respawn as the commandos.
|
||||
for(var/mob/G in respawnable_list)
|
||||
spawn(0)
|
||||
switch(alert(G,"Do you wish to be considered for an elite syndicate strike team being sent in?","Please answer in 30 seconds!","Yes","No"))
|
||||
if("Yes")
|
||||
if((world.time-time_passed)>300)//If more than 30 game seconds passed.
|
||||
if(!jobban_isbanned(G, "Syndicate"))
|
||||
spawn(0)
|
||||
switch(alert(G,"Do you wish to be considered for an elite syndicate strike team being sent in?","Please answer in 30 seconds!","Yes","No"))
|
||||
if("Yes")
|
||||
if((world.time-time_passed)>300)//If more than 30 game seconds passed.
|
||||
return
|
||||
candidates += G
|
||||
if("No")
|
||||
return
|
||||
else
|
||||
return
|
||||
candidates += G
|
||||
if("No")
|
||||
return
|
||||
else
|
||||
return
|
||||
sleep(300)
|
||||
|
||||
for(var/mob/dead/observer/G in candidates)
|
||||
@@ -445,16 +449,19 @@ client/proc/one_click_antag()
|
||||
|
||||
//Generates a list of candidates from active ghosts.
|
||||
for(var/mob/G in respawnable_list)
|
||||
spawn(0)
|
||||
switch(alert(G,"Do you wish to be considered for a vox raiding party arriving on the station?","Please answer in 30 seconds!","Yes","No"))
|
||||
if("Yes")
|
||||
if((world.time-time_passed)>300)//If more than 30 game seconds passed.
|
||||
return
|
||||
candidates += G
|
||||
if("No")
|
||||
return
|
||||
else
|
||||
return
|
||||
if(G.client.prefs.be_special & BE_RAIDER)
|
||||
if(player_old_enough_antag(G.client,BE_RAIDER))
|
||||
if(!jobban_isbanned(G, "raider") && !jobban_isbanned(G, "Syndicate"))
|
||||
spawn(0)
|
||||
switch(alert(G,"Do you wish to be considered for a vox raiding party arriving on the station?","Please answer in 30 seconds!","Yes","No"))
|
||||
if("Yes")
|
||||
if((world.time-time_passed)>300)//If more than 30 game seconds passed.
|
||||
return
|
||||
candidates += G
|
||||
if("No")
|
||||
return
|
||||
else
|
||||
return
|
||||
|
||||
sleep(300) //Debug.
|
||||
|
||||
@@ -532,4 +539,36 @@ client/proc/one_click_antag()
|
||||
ticker.mode.traitors += new_vox.mind
|
||||
new_vox.equip_vox_raider()
|
||||
|
||||
return new_vox
|
||||
return new_vox
|
||||
|
||||
/datum/admins/proc/makeVampires()
|
||||
|
||||
var/datum/game_mode/vampire/temp = new
|
||||
if(config.protect_roles_from_antagonist)
|
||||
temp.restricted_jobs += temp.protected_jobs
|
||||
|
||||
var/list/mob/living/carbon/human/candidates = list()
|
||||
var/mob/living/carbon/human/H = null
|
||||
|
||||
for(var/mob/living/carbon/human/applicant in player_list)
|
||||
if(applicant.client.prefs.be_special & BE_VAMPIRE)
|
||||
if(player_old_enough_antag(applicant.client,BE_VAMPIRE))
|
||||
if(!applicant.stat)
|
||||
if(applicant.mind)
|
||||
if (!applicant.mind.special_role)
|
||||
if(!jobban_isbanned(applicant, "vampire") && !jobban_isbanned(applicant, "Syndicate"))
|
||||
if(!(applicant.job in temp.restricted_jobs))
|
||||
if(!(applicant.client.prefs.species in temp.protected_species))
|
||||
candidates += applicant
|
||||
|
||||
if(candidates.len)
|
||||
var/numVampires = min(candidates.len, 3)
|
||||
|
||||
for(var/i = 0, i<numVampires, i++)
|
||||
H = pick(candidates)
|
||||
H.make_vampire()
|
||||
candidates.Remove(H)
|
||||
|
||||
return 1
|
||||
|
||||
return 0
|
||||
@@ -51,5 +51,4 @@
|
||||
|
||||
message_admins("\blue [key_name_admin(usr)] used THERE CAN BE ONLY ONE! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
|
||||
nologevent = 1
|
||||
log_admin("[key_name(usr)] used there can be only one.")
|
||||
world << sound('sound/music/highlander.ogg')
|
||||
log_admin("[key_name(usr)] used there can be only one.")
|
||||
@@ -58,7 +58,6 @@
|
||||
message_admins("\blue [key_name_admin(usr)] used DODGEBAWWWWWWWL! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
|
||||
nologevent = 1
|
||||
log_admin("[key_name(usr)] used dodgeball.")
|
||||
world << sound('sound/music/nowyouman.ogg')
|
||||
|
||||
/obj/item/weapon/beach_ball/dodgeball
|
||||
name = "dodgeball"
|
||||
@@ -71,8 +70,8 @@
|
||||
..()
|
||||
if((ishuman(hit_atom)))
|
||||
var/mob/living/carbon/human/H = hit_atom
|
||||
if(src in H.r_hand) return
|
||||
if(src in H.l_hand) return
|
||||
if(H.r_hand == src) return
|
||||
if(H.l_hand == src) return
|
||||
var/mob/A = H.LAssailant
|
||||
if((H in team_alpha) && (A in team_alpha))
|
||||
A << "\red He's on your team!"
|
||||
@@ -85,6 +84,6 @@
|
||||
return
|
||||
else
|
||||
playsound(src, 'sound/items/dodgeball.ogg', 50, 1)
|
||||
visible_message("\red [H] HAS BEEN ELIMINATED!!", 3)
|
||||
visible_message("\red [H] HAS BEEN ELIMINATED!", 3)
|
||||
H.melt()
|
||||
return
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
/proc/Syndicate_announce(var/text , var/mob/Sender)
|
||||
var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
|
||||
msg = "\blue <b><font color=crimson>SYNDICATE:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;SyndicateReply=\ref[Sender]'>RPLY</A>):</b> [msg]"
|
||||
msg = "\blue <b><font color='#DC143C'>SYNDICATE:</font> [key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;SyndicateReply=\ref[Sender]'>REPLY</A>):</b> [msg]"
|
||||
|
||||
var/list/eventholders = list()
|
||||
var/list/banholders = list()
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
return
|
||||
|
||||
for(var/obj/item/W in M)
|
||||
M.drop_from_inventory(W)
|
||||
M.unEquip(W)
|
||||
|
||||
log_admin("[key_name(usr)] made [key_name(M)] drop everything!")
|
||||
message_admins("[key_name_admin(usr)] made [key_name_admin(M)] drop everything!", 1)
|
||||
@@ -28,7 +28,7 @@
|
||||
return
|
||||
//strip their stuff before they teleport into a cell :downs:
|
||||
for(var/obj/item/W in M)
|
||||
M.drop_from_inventory(W)
|
||||
M.unEquip(W)
|
||||
//teleport person to cell
|
||||
M.Paralyse(5)
|
||||
sleep(5) //so they black out before warping
|
||||
@@ -209,8 +209,7 @@ proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
|
||||
|
||||
var/show_log = alert(src, "Show ion message?", "Message", "Yes", "No")
|
||||
if(show_log == "Yes")
|
||||
command_alert("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert")
|
||||
world << sound('sound/AI/ionstorm.ogg')
|
||||
command_announcement.Announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", new_sound = 'sound/AI/ionstorm.ogg')
|
||||
|
||||
IonStorm(0)
|
||||
feedback_add_details("admin_verb","ION") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -642,8 +641,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
|
||||
var/show_log = alert(src, "Show ion message?", "Message", "Yes", "No")
|
||||
if(show_log == "Yes")
|
||||
command_alert("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert")
|
||||
world << sound('sound/AI/ionstorm.ogg')
|
||||
command_announcement.Announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", new_sound = 'sound/AI/ionstorm.ogg')
|
||||
feedback_add_details("admin_verb","IONC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_rejuvenate(mob/living/M as mob in mob_list)
|
||||
@@ -686,7 +684,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
|
||||
switch(alert("Should this be announced to the general population?",,"Yes","No"))
|
||||
if("Yes")
|
||||
command_alert(input, customname);
|
||||
command_announcement.Announce(input, customname);
|
||||
if("No")
|
||||
world << "\red New Nanotrasen Update available at all communication consoles."
|
||||
|
||||
@@ -914,7 +912,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
set desc = "switches between 1x and custom views"
|
||||
|
||||
if(view == world.view)
|
||||
view = input("Select view range:", "FUCK YE", 7) in list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,128)
|
||||
view = input("Select view range:", "View Range", 9) in list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,128)
|
||||
else
|
||||
view = world.view
|
||||
|
||||
@@ -941,7 +939,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
choice = input("The shuttle will just return if you call it. Call anyway?") in list("Confirm", "Cancel")
|
||||
if(choice != "Confirm")
|
||||
return
|
||||
|
||||
|
||||
if(emergency_shuttle.no_escape)
|
||||
choice = input("The shuttle will not be able to leave if you call it. Call anyway?") in list("Confirm", "Cancel")
|
||||
if(choice != "Confirm")
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "A small electronic device that should never exist."
|
||||
icon = 'icons/obj/assemblies/new_assemblies.dmi'
|
||||
icon_state = ""
|
||||
flags = FPRINT | CONDUCT
|
||||
flags = CONDUCT
|
||||
w_class = 2.0
|
||||
m_amt = 100
|
||||
g_amt = 0
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
w_class = 3.0
|
||||
throw_speed = 2
|
||||
throw_range = 4
|
||||
flags = FPRINT | CONDUCT //Copied this from old code, so this may or may not be necessary
|
||||
flags = CONDUCT //Copied this from old code, so this may or may not be necessary
|
||||
var/status = 0 //0 - not readied //1 - bomb finished with welder
|
||||
var/obj/item/device/assembly_holder/bombassembly = null //The first part of the bomb is an assembly holder, holding an igniter+some device
|
||||
var/obj/item/weapon/tank/bombtank = null //the second part of the bomb is a plasma tank
|
||||
@@ -45,7 +45,7 @@
|
||||
if(!status)
|
||||
status = 1
|
||||
bombers += "[key_name(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]"
|
||||
message_admins("[key_name_admin(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]")
|
||||
msg_admin_attack("[key_name_admin(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]")
|
||||
user << "<span class='notice'>A pressure hole has been bored to [bombtank] valve. \The [bombtank] can now be ignited.</span>"
|
||||
else
|
||||
status = 0
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
icon = 'icons/obj/assemblies/new_assemblies.dmi'
|
||||
icon_state = "holder"
|
||||
item_state = "assembly"
|
||||
flags = FPRINT | CONDUCT
|
||||
flags = CONDUCT
|
||||
throwforce = 5
|
||||
w_class = 2.0
|
||||
throw_speed = 3
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
var/obj/item/device/radio/electropack/part2 = null
|
||||
var/status = 0
|
||||
w_class = 5.0
|
||||
flags = FPRINT | CONDUCT
|
||||
flags = CONDUCT
|
||||
|
||||
/obj/item/assembly/shock_kit/Destroy()
|
||||
del(part1)
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
desc = "Used to remotely activate devices."
|
||||
icon_state = "signaller"
|
||||
item_state = "signaler"
|
||||
m_amt = 1000
|
||||
g_amt = 200
|
||||
m_amt = 400
|
||||
g_amt = 120
|
||||
origin_tech = "magnets=1"
|
||||
wires = WIRE_RECEIVE | WIRE_PULSE | WIRE_RADIO_PULSE | WIRE_RADIO_RECEIVE
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
if (usr.stat || usr.restrained()) return
|
||||
if(src.reload < 180) return
|
||||
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||
command_alert("Bluespace artillery fire detected. Brace for impact.")
|
||||
command_announcement.Announce("Bluespace artillery fire detected. Brace for impact.")
|
||||
message_admins("[key_name_admin(usr)] has launched an artillery strike.", 1)
|
||||
var/list/L = list()
|
||||
for(var/turf/T in get_area_turfs(thearea.type))
|
||||
@@ -55,7 +55,7 @@
|
||||
var/A
|
||||
A = input("Area to jump bombard", "Open Fire", A) in teleportlocs
|
||||
var/area/thearea = teleportlocs[A]
|
||||
command_alert("Bluespace artillery fire detected. Brace for impact.")
|
||||
command_announcement.Announce("Bluespace artillery fire detected. Brace for impact.")
|
||||
spawn(30)
|
||||
var/list/L = list()
|
||||
|
||||
|
||||
@@ -2,38 +2,38 @@
|
||||
|
||||
var/list/preferences_datums = list()
|
||||
|
||||
var/global/list/special_roles = list( //keep synced with the defines BE_* in setup.dm
|
||||
var/global/list/special_roles = list( //keep synced with the defines BE_* in setup.dm. THE ORDER MATTERS
|
||||
//some autodetection here.
|
||||
"pAI" = 1, // 0
|
||||
"traitor" = IS_MODE_COMPILED("traitor"), // 1
|
||||
"changeling" = IS_MODE_COMPILED("changeling"), // 2
|
||||
"vampire" = IS_MODE_COMPILED("vampire"), // 3
|
||||
"revolutionary" = IS_MODE_COMPILED("revolution"), // 4
|
||||
"blob" = IS_MODE_COMPILED("blob"), // 5
|
||||
"operative" = IS_MODE_COMPILED("nuclear"), // 6
|
||||
"cultist" = IS_MODE_COMPILED("cult"), // 7
|
||||
"wizard" = IS_MODE_COMPILED("wizard"), // 8
|
||||
"raider" = IS_MODE_COMPILED("heist"), // 9
|
||||
"alien" = 1, // 10
|
||||
"ninja" = 1, // 11
|
||||
"mutineer" = IS_MODE_COMPILED("mutiny"), // 12
|
||||
"malf AI" = IS_MODE_COMPILED("malfunction") // 13
|
||||
"traitor" = IS_MODE_COMPILED("traitor"), // 1 / 1
|
||||
"operative" = IS_MODE_COMPILED("nuclear"), // 2 / 2
|
||||
"changeling" = IS_MODE_COMPILED("changeling"), // 4 / 3
|
||||
"wizard" = IS_MODE_COMPILED("wizard"), // 8 / 4
|
||||
"malf AI" = IS_MODE_COMPILED("malfunction"), // 16 / 5
|
||||
"revolutionary" = IS_MODE_COMPILED("revolution"), // 32 / 6
|
||||
"alien" = 1, // 62 / 7
|
||||
"pAI" = 1, // 128 / 8
|
||||
"cultist" = IS_MODE_COMPILED("cult"), // 256 / 9
|
||||
"ninja" = 1, // 512 / 10
|
||||
"raider" = IS_MODE_COMPILED("heist"), // 1024 / 11
|
||||
"vampire" = IS_MODE_COMPILED("vampire"), // 2048 / 12
|
||||
"mutineer" = IS_MODE_COMPILED("mutiny"), // 4096 / 13
|
||||
"blob" = IS_MODE_COMPILED("blob") // 8192 / 14
|
||||
)
|
||||
var/global/list/special_role_times = list( //minimum age (in days) for accounts to play these roles
|
||||
num2text(BE_TRAITOR) = 14,
|
||||
num2text(BE_OPERATIVE) = 21,
|
||||
num2text(BE_PAI) = 0,
|
||||
num2text(BE_TRAITOR) = 7,
|
||||
num2text(BE_CHANGELING) = 14,
|
||||
num2text(BE_WIZARD) = 21,
|
||||
num2text(BE_MALF) = 30,
|
||||
num2text(BE_WIZARD) = 14,
|
||||
num2text(BE_REV) = 14,
|
||||
num2text(BE_ALIEN) = 21,
|
||||
num2text(BE_PAI) = 0,
|
||||
num2text(BE_CULTIST) = 21,
|
||||
num2text(BE_NINJA) = 21,
|
||||
num2text(BE_RAIDER) = 21,
|
||||
num2text(BE_VAMPIRE) = 14,
|
||||
num2text(BE_BLOB) = 14,
|
||||
num2text(BE_OPERATIVE) = 21,
|
||||
num2text(BE_CULTIST) = 21,
|
||||
num2text(BE_RAIDER) = 21,
|
||||
num2text(BE_ALIEN) = 21,
|
||||
num2text(BE_NINJA) = 21,
|
||||
num2text(BE_MUTINEER) = 21,
|
||||
num2text(BE_BLOB) = 14
|
||||
num2text(BE_MALF) = 30
|
||||
)
|
||||
|
||||
/proc/player_old_enough_antag(client/C, role)
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
be_special = sanitize_integer(be_special, 0, 65535, initial(be_special))
|
||||
default_slot = sanitize_integer(default_slot, 1, MAX_SAVE_SLOTS, initial(default_slot))
|
||||
toggles = sanitize_integer(toggles, 0, 65535, initial(toggles))
|
||||
sound = sanitize_integer(sound, 0, 65535, initial(toggles))
|
||||
sound = sanitize_integer(sound, 0, 65535, initial(sound))
|
||||
UI_style_color = sanitize_hexcolor(UI_style_color, initial(UI_style_color))
|
||||
UI_style_alpha = sanitize_integer(UI_style_alpha, 0, 255, initial(UI_style_alpha))
|
||||
randomslot = sanitize_integer(randomslot, 0, 1, initial(randomslot))
|
||||
@@ -186,7 +186,7 @@
|
||||
firstquery.Execute()
|
||||
while(firstquery.NextRow())
|
||||
if(text2num(firstquery.item[1]) == default_slot)
|
||||
var/DBQuery/query = dbcon.NewQuery("UPDATE characters SET OOC_Notes='[sql_sanitize_text(metadata)]',real_name='[sql_sanitize_text(real_name)]',name_is_always_random='[be_random_name]',gender='[gender]',age='[age]',species='[sql_sanitize_text(species)]',language='[sql_sanitize_text(language)]',hair_red='[r_hair]',hair_green='[g_hair]',hair_blue='[b_hair]',facial_red='[r_facial]',facial_green='[g_facial]',facial_blue='[b_facial]',skin_tone='[s_tone]',skin_red='[r_skin]',skin_green='[g_skin]',skin_blue='[b_skin]',hair_style_name='[sql_sanitize_text(h_style)]',facial_style_name='[sql_sanitize_text(f_style)]',eyes_red='[r_eyes]',eyes_green='[g_eyes]',eyes_blue='[b_eyes]',underwear='[underwear]',undershirt='[undershirt]',backbag='[backbag]',b_type='[b_type]',alternate_option='[alternate_option]',job_support_high='[job_support_high]',job_support_med='[job_support_med]',job_support_low='[job_support_low]',job_medsci_high='[job_medsci_high]',job_medsci_med='[job_medsci_med]',job_medsci_low='[job_medsci_low]',job_engsec_high='[job_engsec_high]',job_engsec_med='[job_engsec_med]',job_engsec_low='[job_engsec_low]',job_karma_high='[job_karma_high]',job_karma_med='[job_karma_med]',job_karma_low='[job_karma_low]',flavor_text='[sql_sanitize_text(flavor_text)]',med_record='[sql_sanitize_text(med_record)]',sec_record='[sql_sanitize_text(sec_record)]',gen_record='[sql_sanitize_text(gen_record)]',player_alt_titles='[sql_sanitize_text(playertitlelist)]',be_special='[be_special]',disabilities='[disabilities]',organ_data='[organlist]',nanotrasen_relation='[nanotrasen_relation]', speciesprefs='[speciesprefs]' WHERE ckey='[C.ckey]' AND slot='[default_slot]'")
|
||||
var/DBQuery/query = dbcon.NewQuery("UPDATE characters SET OOC_Notes='[sql_sanitize_text(metadata)]',real_name='[sql_sanitize_text(real_name)]',name_is_always_random='[be_random_name]',gender='[gender]',age='[age]',species='[sql_sanitize_text(species)]',language='[sql_sanitize_text(language)]',hair_red='[r_hair]',hair_green='[g_hair]',hair_blue='[b_hair]',facial_red='[r_facial]',facial_green='[g_facial]',facial_blue='[b_facial]',skin_tone='[s_tone]',skin_red='[r_skin]',skin_green='[g_skin]',skin_blue='[b_skin]',hair_style_name='[sql_sanitize_text(h_style)]',facial_style_name='[sql_sanitize_text(f_style)]',eyes_red='[r_eyes]',eyes_green='[g_eyes]',eyes_blue='[b_eyes]',underwear='[underwear]',undershirt='[undershirt]',backbag='[backbag]',b_type='[b_type]',alternate_option='[alternate_option]',job_support_high='[job_support_high]',job_support_med='[job_support_med]',job_support_low='[job_support_low]',job_medsci_high='[job_medsci_high]',job_medsci_med='[job_medsci_med]',job_medsci_low='[job_medsci_low]',job_engsec_high='[job_engsec_high]',job_engsec_med='[job_engsec_med]',job_engsec_low='[job_engsec_low]',job_karma_high='[job_karma_high]',job_karma_med='[job_karma_med]',job_karma_low='[job_karma_low]',flavor_text='[sql_sanitize_text(flavor_text)]',med_record='[sql_sanitize_text(med_record)]',sec_record='[sql_sanitize_text(sec_record)]',gen_record='[sql_sanitize_text(gen_record)]',player_alt_titles='[playertitlelist]',be_special='[be_special]',disabilities='[disabilities]',organ_data='[organlist]',nanotrasen_relation='[nanotrasen_relation]', speciesprefs='[speciesprefs]' WHERE ckey='[C.ckey]' AND slot='[default_slot]'")
|
||||
if(!query.Execute())
|
||||
var/err = query.ErrorMsg()
|
||||
log_game("SQL ERROR during character slot saving. Error : \[[err]\]\n")
|
||||
|
||||
@@ -79,20 +79,20 @@
|
||||
..()
|
||||
return
|
||||
|
||||
if(!canremove)
|
||||
if(flags & NODROP)
|
||||
return
|
||||
|
||||
var/obj/item/clothing/ears/O
|
||||
if(slot_flags & SLOT_TWOEARS )
|
||||
O = (H.l_ear == src ? H.r_ear : H.l_ear)
|
||||
user.u_equip(O)
|
||||
user.unEquip(O)
|
||||
if(!istype(src,/obj/item/clothing/ears/offear))
|
||||
del(O)
|
||||
O = src
|
||||
else
|
||||
O = src
|
||||
|
||||
user.u_equip(src)
|
||||
user.unEquip(src)
|
||||
|
||||
if (O)
|
||||
user.put_in_hands(O)
|
||||
@@ -267,7 +267,6 @@ BLIND // can't see anything
|
||||
icon = 'icons/obj/clothing/suits.dmi'
|
||||
name = "suit"
|
||||
var/fire_resist = T0C+100
|
||||
flags = FPRINT | TABLEPASS
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
slot_flags = SLOT_OCLOTHING
|
||||
@@ -281,7 +280,7 @@ 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 = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE
|
||||
item_state = "s_helmet"
|
||||
permeability_coefficient = 0.01
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50)
|
||||
@@ -302,7 +301,7 @@ BLIND // can't see anything
|
||||
w_class = 4//bulky item
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.02
|
||||
flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE
|
||||
flags = STOPSPRESSUREDMAGE
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit)
|
||||
slowdown = 2
|
||||
@@ -321,7 +320,6 @@ BLIND // can't see anything
|
||||
name = "under"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
permeability_coefficient = 0.90
|
||||
flags = FPRINT | TABLEPASS
|
||||
slot_flags = SLOT_ICLOTHING
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
var/has_sensor = 1//For the crew computer 2 = unable to change mode
|
||||
@@ -390,10 +388,10 @@ BLIND // can't see anything
|
||||
if (!( usr.restrained() ) && !( usr.stat ) && ( over_object ))
|
||||
switch(over_object.name)
|
||||
if("r_hand")
|
||||
usr.u_equip(src)
|
||||
usr.unEquip(src)
|
||||
usr.put_in_r_hand(src)
|
||||
if("l_hand")
|
||||
usr.u_equip(src)
|
||||
usr.unEquip(src)
|
||||
usr.put_in_l_hand(src)
|
||||
src.add_fingerprint(usr)
|
||||
return
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
desc = "An implanted replacement for a left eye with meson vision capabilities."
|
||||
icon_state = "cybereye-green"
|
||||
item_state = "eyepatch"
|
||||
canremove = 0
|
||||
flags = NODROP
|
||||
|
||||
/obj/item/clothing/glasses/science
|
||||
name = "Science Goggles"
|
||||
@@ -88,7 +88,7 @@
|
||||
desc = "An implanted replacement for a left eye with material vision capabilities."
|
||||
icon_state = "cybereye-blue"
|
||||
item_state = "eyepatch"
|
||||
canremove = 0
|
||||
flags = NODROP
|
||||
|
||||
/obj/item/clothing/glasses/regular
|
||||
name = "Prescription Glasses"
|
||||
@@ -293,4 +293,4 @@
|
||||
desc = "An implanted replacement for a left eye with thermal vision capabilities."
|
||||
icon_state = "cybereye-red"
|
||||
item_state = "eyepatch"
|
||||
canremove = 0
|
||||
flags = NODROP
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
name = "hard hat"
|
||||
desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight."
|
||||
icon_state = "hardhat0_yellow"
|
||||
flags = FPRINT | TABLEPASS
|
||||
item_state = "hardhat0_yellow"
|
||||
var/brightness_on = 4 //luminosity when on
|
||||
var/on = 0
|
||||
@@ -48,7 +47,7 @@
|
||||
item_state = "hardhat0_red"
|
||||
_color = "red"
|
||||
name = "firefighter helmet"
|
||||
flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE
|
||||
flags = STOPSPRESSUREDMAGE
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
cold_protection = HEAD
|
||||
@@ -58,7 +57,7 @@
|
||||
icon_state = "hardhat0_white"
|
||||
item_state = "hardhat0_white"
|
||||
_color = "white"
|
||||
flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE
|
||||
flags = STOPSPRESSUREDMAGE
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
cold_protection = HEAD
|
||||
@@ -76,7 +75,7 @@
|
||||
_color = "atmos"
|
||||
name = "atmospheric technician's firefighting helmet"
|
||||
desc = "A firefighter's helmet, able to keep the user cool in any situation."
|
||||
flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE
|
||||
flags = STOPSPRESSUREDMAGE
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "helmet"
|
||||
desc = "Standard Security gear. Protects the head from impacts."
|
||||
icon_state = "helmet"
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | HEADBANGPROTECT
|
||||
flags = HEADCOVERSEYES | HEADBANGPROTECT
|
||||
item_state = "helmet"
|
||||
armor = list(melee = 50, bullet = 15, laser = 50,energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
flags_inv = HIDEEARS|HIDEEYES
|
||||
@@ -25,7 +25,7 @@
|
||||
desc = "It's a helmet specifically designed to protect against close range attacks."
|
||||
icon_state = "riot"
|
||||
item_state = "helmet"
|
||||
flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|HEADBANGPROTECT
|
||||
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | HEADBANGPROTECT
|
||||
armor = list(melee = 82, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0)
|
||||
flags_inv = HIDEEARS
|
||||
siemens_coefficient = 0.7
|
||||
@@ -34,7 +34,7 @@
|
||||
name = "\improper SWAT helmet"
|
||||
desc = "They're often used by highly trained Swat Members."
|
||||
icon_state = "swat"
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES
|
||||
flags = HEADCOVERSEYES
|
||||
item_state = "swat"
|
||||
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
|
||||
flags_inv = HIDEEARS|HIDEEYES
|
||||
@@ -54,7 +54,7 @@
|
||||
name = "\improper Thunderdome helmet"
|
||||
desc = "<i>'Let the battle commence!'</i>"
|
||||
icon_state = "thunderdome"
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES
|
||||
flags = HEADCOVERSEYES
|
||||
item_state = "thunderdome"
|
||||
armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0)
|
||||
cold_protection = HEAD
|
||||
@@ -81,7 +81,7 @@
|
||||
name = "gladiator helmet"
|
||||
desc = "Ave, Imperator, morituri te salutant."
|
||||
icon_state = "gladiator"
|
||||
flags = FPRINT|TABLEPASS|HEADCOVERSEYES|BLOCKHAIR
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR
|
||||
item_state = "gladiator"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
siemens_coefficient = 1
|
||||
@@ -91,7 +91,7 @@ obj/item/clothing/head/helmet/redtaghelm
|
||||
name = "red laser tag helmet"
|
||||
desc = "They have chosen their own end."
|
||||
icon_state = "redtaghelm"
|
||||
flags = FPRINT|TABLEPASS|HEADCOVERSEYES
|
||||
flags = HEADCOVERSEYES
|
||||
item_state = "redtaghelm"
|
||||
armor = list(melee = 30, bullet = 10, laser = 20,energy = 10, bomb = 20, bio = 0, rad = 0)
|
||||
// Offer about the same protection as a hardhat.
|
||||
@@ -101,7 +101,7 @@ obj/item/clothing/head/helmet/bluetaghelm
|
||||
name = "blue laser tag helmet"
|
||||
desc = "They'll need more men."
|
||||
icon_state = "bluetaghelm"
|
||||
flags = FPRINT|TABLEPASS|HEADCOVERSEYES
|
||||
flags = HEADCOVERSEYES
|
||||
item_state = "bluetaghelm"
|
||||
armor = list(melee = 30, bullet = 10, laser = 20,energy = 10, bomb = 20, bio = 0, rad = 0)
|
||||
// Offer about the same protection as a hardhat.
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
icon_state = "chef"
|
||||
item_state = "chef"
|
||||
desc = "The commander in chef's head wear."
|
||||
flags = FPRINT | TABLEPASS
|
||||
siemens_coefficient = 0.9
|
||||
loose = 35 // why-a do people always push-a me over
|
||||
|
||||
@@ -15,7 +14,6 @@
|
||||
name = "captain's hat"
|
||||
icon_state = "captain"
|
||||
desc = "It's good being the king."
|
||||
flags = FPRINT|TABLEPASS
|
||||
item_state = "caphat"
|
||||
siemens_coefficient = 0.9
|
||||
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
@@ -32,7 +30,6 @@
|
||||
name = "head of personnel's cap"
|
||||
icon_state = "hopcap"
|
||||
desc = "The symbol of true bureaucratic micromanagement."
|
||||
flags = FPRINT|TABLEPASS
|
||||
siemens_coefficient = 0.9
|
||||
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
loose = 43 // not the answer
|
||||
@@ -42,7 +39,7 @@
|
||||
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 = FPRINT|TABLEPASS|HEADCOVERSEYES|BLOCKHAIR
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR
|
||||
siemens_coefficient = 0.9
|
||||
loose = 2
|
||||
|
||||
@@ -51,7 +48,7 @@
|
||||
name = "nun hood"
|
||||
desc = "Maximum piety in this star system."
|
||||
icon_state = "nun_hood"
|
||||
flags = FPRINT|TABLEPASS|HEADCOVERSEYES|BLOCKHAIR
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR
|
||||
siemens_coefficient = 0.9
|
||||
loose = 2
|
||||
|
||||
@@ -68,7 +65,6 @@
|
||||
name = "beret"
|
||||
desc = "A beret, an artists favorite headwear."
|
||||
icon_state = "beret"
|
||||
flags = FPRINT | TABLEPASS
|
||||
siemens_coefficient = 0.9
|
||||
loose = 16
|
||||
|
||||
@@ -77,7 +73,6 @@
|
||||
name = "head of security cap"
|
||||
desc = "The robust standard-issue cap of the Head of Security. For showing the officers who's in charge."
|
||||
icon_state = "hoscap"
|
||||
flags = FPRINT | TABLEPASS
|
||||
armor = list(melee = 80, bullet = 60, laser = 50, energy = 10, bomb = 25, bio = 10, rad = 0)
|
||||
|
||||
/obj/item/clothing/head/HoS/beret
|
||||
@@ -89,7 +84,6 @@
|
||||
name = "warden's police hat"
|
||||
desc = "It's a special armored hat issued to the Warden of a security force. Protects the head from impacts."
|
||||
icon_state = "policehelm"
|
||||
flags = FPRINT | TABLEPASS
|
||||
armor = list(melee = 60, bullet = 5, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/head/customs
|
||||
@@ -98,14 +92,12 @@
|
||||
icon_state = "customshelm"
|
||||
item_state = "customshelm"
|
||||
armor = list(melee = 30, bullet = 25, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/head/beret/sec
|
||||
name = "security beret"
|
||||
desc = "A beret with the security insignia emblazoned on it. For officers that are more inclined towards style than safety."
|
||||
icon_state = "beret_badge"
|
||||
armor = list(melee = 30, bullet = 25, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/head/beret/sec/warden
|
||||
name = "warden's beret"
|
||||
@@ -117,14 +109,13 @@
|
||||
name = "engineering beret"
|
||||
desc = "A beret with the engineering insignia emblazoned on it. For engineers that are more inclined towards style than safety."
|
||||
icon_state = "e_beret_badge"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
//Medical
|
||||
/obj/item/clothing/head/surgery
|
||||
name = "surgical cap"
|
||||
desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs."
|
||||
icon_state = "surgcap_blue"
|
||||
flags = FPRINT | TABLEPASS | BLOCKHEADHAIR
|
||||
flags = BLOCKHEADHAIR
|
||||
loose = 13
|
||||
|
||||
/obj/item/clothing/head/surgery/purple
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
name = "\improper CentComm. hat"
|
||||
icon_state = "centcom"
|
||||
desc = "It's good to be emperor."
|
||||
flags = FPRINT|TABLEPASS
|
||||
item_state = "centhat"
|
||||
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.9
|
||||
@@ -14,7 +13,6 @@
|
||||
icon_state = "hairflower"
|
||||
desc = "Smells nice."
|
||||
item_state = "hairflower"
|
||||
flags = FPRINT|TABLEPASS
|
||||
|
||||
/obj/item/clothing/head/hairflower/purple
|
||||
icon_state = "hairflowerp"
|
||||
@@ -34,7 +32,6 @@
|
||||
desc = "It's an amish looking hat."
|
||||
icon_state = "tophat"
|
||||
item_state = "that"
|
||||
flags = FPRINT|TABLEPASS
|
||||
siemens_coefficient = 0.9
|
||||
loose = 70
|
||||
|
||||
@@ -42,21 +39,18 @@
|
||||
name = "redcoat's hat"
|
||||
icon_state = "redcoat"
|
||||
desc = "<i>'I guess it's a redhead.'</i>"
|
||||
flags = FPRINT | TABLEPASS
|
||||
loose = 45
|
||||
|
||||
/obj/item/clothing/head/mailman
|
||||
name = "mailman's hat"
|
||||
icon_state = "mailman"
|
||||
desc = "<i>'Right-on-time'</i> mail service head wear."
|
||||
flags = FPRINT | TABLEPASS
|
||||
loose = 65
|
||||
|
||||
/obj/item/clothing/head/plaguedoctorhat
|
||||
name = "plague doctor's hat"
|
||||
desc = "These were once used by Plague doctors. They're pretty much useless."
|
||||
icon_state = "plaguedoctor"
|
||||
flags = FPRINT | TABLEPASS
|
||||
permeability_coefficient = 0.01
|
||||
siemens_coefficient = 0.9
|
||||
loose = 30
|
||||
@@ -65,14 +59,13 @@
|
||||
name = "hastur's hood"
|
||||
desc = "It's unspeakably stylish"
|
||||
icon_state = "hasturhood"
|
||||
flags = FPRINT|TABLEPASS|HEADCOVERSEYES|BLOCKHAIR
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR
|
||||
loose = 1
|
||||
|
||||
/obj/item/clothing/head/nursehat
|
||||
name = "nurse's hat"
|
||||
desc = "It allows quick identification of trained medical personnel."
|
||||
icon_state = "nursehat"
|
||||
flags = FPRINT|TABLEPASS
|
||||
siemens_coefficient = 0.9
|
||||
loose = 80 // allowing for awkward come-ons when he/she drops his/her hat and you get it for him/her.
|
||||
|
||||
@@ -81,7 +74,7 @@
|
||||
icon_state = "syndicate-helm-black-red"
|
||||
item_state = "syndicate-helm-black-red"
|
||||
desc = "A plastic replica of a syndicate agent's space helmet, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!"
|
||||
flags = FPRINT | TABLEPASS | BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
siemens_coefficient = 2.0
|
||||
loose = 15 // not a very good replica
|
||||
@@ -90,7 +83,7 @@
|
||||
name = "cueball helmet"
|
||||
desc = "A large, featureless white orb mean to be worn on your head. How do you even see out of this thing?"
|
||||
icon_state = "cueball"
|
||||
flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
|
||||
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
|
||||
item_state="cueball"
|
||||
flags_inv = 0
|
||||
loose = 0
|
||||
@@ -100,7 +93,6 @@
|
||||
desc = "It's an amish looking armored top hat."
|
||||
icon_state = "tophat"
|
||||
item_state = "that"
|
||||
flags = FPRINT|TABLEPASS
|
||||
flags_inv = 0
|
||||
loose = 70
|
||||
|
||||
@@ -110,7 +102,6 @@
|
||||
desc = "It's a green bandana with some fine nanotech lining."
|
||||
icon_state = "greenbandana"
|
||||
item_state = "greenbandana"
|
||||
flags = FPRINT|TABLEPASS
|
||||
flags_inv = 0
|
||||
loose = 1
|
||||
|
||||
@@ -119,7 +110,7 @@
|
||||
desc = "A helmet made out of a box."
|
||||
icon_state = "cardborg_h"
|
||||
item_state = "cardborg_h"
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
flags = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
loose = 20
|
||||
|
||||
@@ -128,7 +119,7 @@
|
||||
desc = "fight for what's righteous!"
|
||||
icon_state = "justicered"
|
||||
item_state = "justicered"
|
||||
flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
|
||||
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
|
||||
loose = 0
|
||||
|
||||
/obj/item/clothing/head/justice/blue
|
||||
@@ -151,7 +142,6 @@
|
||||
name = "rabbit ears"
|
||||
desc = "Wearing these makes you looks useless, and only good for your sex appeal."
|
||||
icon_state = "bunny"
|
||||
flags = FPRINT | TABLEPASS
|
||||
loose = 4
|
||||
|
||||
/obj/item/clothing/head/flatcap
|
||||
@@ -190,28 +180,24 @@
|
||||
icon_state = "bowler_hat"
|
||||
item_state = "bowler_hat"
|
||||
desc = "For that industrial age look."
|
||||
flags = FPRINT|TABLEPASS
|
||||
|
||||
/obj/item/clothing/head/beaverhat
|
||||
name = "beaver hat"
|
||||
icon_state = "beaver_hat"
|
||||
item_state = "beaver_hat"
|
||||
desc = "Like a top hat, but made of beavers."
|
||||
flags = FPRINT|TABLEPASS
|
||||
|
||||
/obj/item/clothing/head/boaterhat
|
||||
name = "boater hat"
|
||||
icon_state = "boater_hat"
|
||||
item_state = "boater_hat"
|
||||
desc = "Goes well with celery."
|
||||
flags = FPRINT|TABLEPASS
|
||||
|
||||
/obj/item/clothing/head/fedora
|
||||
name = "\improper fedora"
|
||||
icon_state = "fedora"
|
||||
item_state = "fedora"
|
||||
desc = "A great hat ruined by being within fifty yards of you."
|
||||
flags = FPRINT|TABLEPASS
|
||||
|
||||
//TIPS FEDORA
|
||||
/obj/item/clothing/head/fedora/verb/tip_fedora()
|
||||
@@ -226,7 +212,6 @@
|
||||
icon_state = "fez"
|
||||
item_state = "fez"
|
||||
desc = "Put it on your monkey, make lots of cash money."
|
||||
flags = FPRINT|TABLEPASS
|
||||
|
||||
//end bs12 hats
|
||||
|
||||
@@ -235,7 +220,7 @@
|
||||
desc = "Eeeee~heheheheheheh!"
|
||||
icon_state = "witch"
|
||||
item_state = "witch"
|
||||
flags = FPRINT | TABLEPASS | BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
siemens_coefficient = 2.0
|
||||
loose = 1
|
||||
|
||||
@@ -244,7 +229,7 @@
|
||||
desc = "Bkaw!"
|
||||
icon_state = "chickenhead"
|
||||
item_state = "chickensuit"
|
||||
flags = FPRINT | TABLEPASS | BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
siemens_coefficient = 2.0
|
||||
|
||||
/obj/item/clothing/head/corgi
|
||||
@@ -252,7 +237,7 @@
|
||||
desc = "Woof!"
|
||||
icon_state = "corgihead"
|
||||
item_state = "chickensuit"
|
||||
flags = FPRINT | TABLEPASS | BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
siemens_coefficient = 2.0
|
||||
|
||||
/obj/item/clothing/head/bearpelt
|
||||
@@ -260,7 +245,7 @@
|
||||
desc = "Fuzzy."
|
||||
icon_state = "bearpelt"
|
||||
item_state = "bearpelt"
|
||||
flags = FPRINT | TABLEPASS | BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
siemens_coefficient = 2.0
|
||||
loose = 0 // grrrr
|
||||
|
||||
@@ -269,7 +254,7 @@
|
||||
icon_state = "xenos"
|
||||
item_state = "xenos_helm"
|
||||
desc = "A helmet made out of chitinous alien hide."
|
||||
flags = FPRINT | TABLEPASS | BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
siemens_coefficient = 2.0
|
||||
|
||||
@@ -278,7 +263,6 @@
|
||||
icon_state = "crown"
|
||||
item_state = "crown"
|
||||
desc = "A gliterring bananium crown with spessjewels in it. Swaggy."
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
|
||||
/obj/item/clothing/head/fedora
|
||||
@@ -300,7 +284,7 @@
|
||||
desc = "The typical clown soldier's helmet."
|
||||
icon_state = "stalhelm"
|
||||
item_state = "stalhelm"
|
||||
flags = FPRINT | TABLEPASS | BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
flags_inv = HIDEEARS
|
||||
|
||||
/obj/item/clothing/head/panzer
|
||||
@@ -308,14 +292,14 @@
|
||||
desc = "The softcap worn by HONK Mech pilots."
|
||||
icon_state = "panzercap"
|
||||
item_state = "panzercap"
|
||||
flags = FPRINT | TABLEPASS | BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
|
||||
/obj/item/clothing/head/naziofficer
|
||||
name = "Clown Officer Cap"
|
||||
desc = "The peaked clown officer's cap, disturbingly similar to the warden's."
|
||||
icon_state = "officercap"
|
||||
item_state = "officercap"
|
||||
flags = FPRINT | TABLEPASS | BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
flags_inv = HIDEEARS
|
||||
|
||||
/obj/item/clothing/head/beret/purple
|
||||
@@ -323,19 +307,16 @@
|
||||
desc = " A purple beret, with a small golden crescent moon sewn onto it."
|
||||
icon_state = "purpleberet"
|
||||
item_state = "purpleberet"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/head/beret/centcom/officer
|
||||
name = "officers beret"
|
||||
desc = "A black beret adorned with the shield—a silver kite shield with an engraved sword—of the Nanotrasen security forces, announcing to the world that the wearer is a defender of Nanotrasen."
|
||||
icon_state = "centcomofficerberet"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/head/beret/centcom/captain
|
||||
name = "captains beret"
|
||||
desc = "A white beret adorned with the shield—a cobalt kite shield with an engraved sword—of the Nanotrasen security forces, worn only by those captaining a vessel of the Nanotrasen Navy."
|
||||
icon_state = "centcomcaptain"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/head/sombrero
|
||||
name = "sombrero"
|
||||
@@ -354,4 +335,4 @@
|
||||
icon_state = "shamebrero"
|
||||
item_state = "shamebrero"
|
||||
desc = "Once it's on, it never comes off."
|
||||
canremove = 0
|
||||
flags = NODROP
|
||||
@@ -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 = (FPRINT | TABLEPASS | HEADCOVERSEYES | HEADCOVERSMOUTH)
|
||||
flags = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
item_state = "welding"
|
||||
m_amt = 1750
|
||||
g_amt = 400
|
||||
@@ -60,7 +60,7 @@
|
||||
name = "cake-hat"
|
||||
desc = "It's tasty looking!"
|
||||
icon_state = "cake0"
|
||||
flags = FPRINT|TABLEPASS|HEADCOVERSEYES
|
||||
flags = 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
|
||||
@@ -128,7 +128,7 @@
|
||||
icon_state = "hardhat0_pumpkin"//Could stand to be renamed
|
||||
item_state = "hardhat0_pumpkin"
|
||||
_color = "pumpkin"
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
|
||||
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
|
||||
action_button_name = "Toggle Pumpkin Light"
|
||||
@@ -143,7 +143,6 @@
|
||||
icon_state = "hardhat0_reindeer"
|
||||
item_state = "hardhat0_reindeer"
|
||||
_color = "reindeer"
|
||||
flags = FPRINT | TABLEPASS
|
||||
flags_inv = 0
|
||||
action_button_name = "Toggle Nose Light"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
@@ -157,7 +156,6 @@
|
||||
name = "kitty ears"
|
||||
desc = "A pair of kitty ears. Meow!"
|
||||
icon_state = "kitty"
|
||||
flags = FPRINT | TABLEPASS
|
||||
var/icon/mob
|
||||
siemens_coefficient = 1.5
|
||||
loose = 33
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "cargo cap"
|
||||
desc = "It's a baseball hat in a tasteless yellow colour."
|
||||
icon_state = "cargosoft"
|
||||
flags = FPRINT|TABLEPASS
|
||||
item_state = "helmet"
|
||||
_color = "cargo"
|
||||
var/flipped = 0
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "LOADSAMONEY"
|
||||
icon_state = "balaclava"
|
||||
item_state = "balaclava"
|
||||
flags = FPRINT|TABLEPASS|BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
flags_inv = HIDEFACE
|
||||
w_class = 2
|
||||
species_fit = list("Vox")
|
||||
@@ -15,7 +15,7 @@
|
||||
desc = "Worn by robust fighters, flying high to defeat their foes!"
|
||||
icon_state = "luchag"
|
||||
item_state = "luchag"
|
||||
flags = FPRINT|TABLEPASS|BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
flags_inv = HIDEFACE
|
||||
w_class = 2
|
||||
siemens_coefficient = 3.0
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
name = "breath mask"
|
||||
icon_state = "breath"
|
||||
item_state = "breath"
|
||||
flags = FPRINT | TABLEPASS | MASKCOVERSMOUTH | MASKINTERNALS
|
||||
flags = MASKCOVERSMOUTH | MASKINTERNALS
|
||||
w_class = 2
|
||||
gas_transfer_coefficient = 0.10
|
||||
permeability_coefficient = 0.50
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "gas mask"
|
||||
desc = "A face-covering mask that can be connected to an air supply."
|
||||
icon_state = "gas_alt"
|
||||
flags = FPRINT | TABLEPASS | MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE
|
||||
w_class = 3.0
|
||||
item_state = "gas_alt"
|
||||
@@ -19,7 +19,7 @@
|
||||
name = "bane mask"
|
||||
desc = "Only when the station is in flames, do you have my permission to robust."
|
||||
icon_state = "bane_mask"
|
||||
flags = FPRINT | TABLEPASS | MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE
|
||||
w_class = 3.0
|
||||
item_state = "bane_mask"
|
||||
@@ -95,7 +95,7 @@
|
||||
icon_state = "clown"
|
||||
item_state = "clown_hat"
|
||||
species_fit = list("Vox")
|
||||
flags = FPRINT | TABLEPASS | MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS | BLOCKHAIR
|
||||
flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS | BLOCKHAIR
|
||||
|
||||
/obj/item/clothing/mask/gas/clown_hat/attack_self(mob/user)
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
desc = "Some pranksters are truly magical."
|
||||
icon_state = "wizzclown"
|
||||
item_state = "wizzclown"
|
||||
flags = FPRINT | TABLEPASS | MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS | BLOCKHAIR
|
||||
flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS | BLOCKHAIR
|
||||
|
||||
/obj/item/clothing/mask/gas/virusclown_hat
|
||||
name = "clown wig and mask"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "To stop that awful noise."
|
||||
icon_state = "muzzle"
|
||||
item_state = "muzzle"
|
||||
flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH
|
||||
flags = MASKCOVERSMOUTH
|
||||
w_class = 2
|
||||
gas_transfer_coefficient = 0.90
|
||||
species_fit = list("Vox")
|
||||
@@ -31,7 +31,7 @@
|
||||
icon_state = "sterile"
|
||||
item_state = "sterile"
|
||||
w_class = 1
|
||||
flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH
|
||||
flags = 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)
|
||||
@@ -43,7 +43,6 @@
|
||||
name = "fake moustache"
|
||||
desc = "Warning: moustache is fake."
|
||||
icon_state = "fake-moustache"
|
||||
flags = FPRINT|TABLEPASS
|
||||
flags_inv = HIDEFACE
|
||||
|
||||
//scarves (fit in in mask slot)
|
||||
@@ -53,7 +52,7 @@
|
||||
desc = "A blue neck scarf."
|
||||
icon_state = "blueneckscarf"
|
||||
item_state = "blueneckscarf"
|
||||
flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH
|
||||
flags = MASKCOVERSMOUTH
|
||||
w_class = 2
|
||||
gas_transfer_coefficient = 0.90
|
||||
|
||||
@@ -62,7 +61,7 @@
|
||||
desc = "A red and white checkered neck scarf."
|
||||
icon_state = "redwhite_scarf"
|
||||
item_state = "redwhite_scarf"
|
||||
flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH
|
||||
flags = MASKCOVERSMOUTH
|
||||
w_class = 2
|
||||
gas_transfer_coefficient = 0.90
|
||||
|
||||
@@ -71,7 +70,7 @@
|
||||
desc = "A green neck scarf."
|
||||
icon_state = "green_scarf"
|
||||
item_state = "green_scarf"
|
||||
flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH
|
||||
flags = MASKCOVERSMOUTH
|
||||
w_class = 2
|
||||
gas_transfer_coefficient = 0.90
|
||||
|
||||
@@ -80,7 +79,7 @@
|
||||
desc = "A stealthy, dark scarf."
|
||||
icon_state = "ninja_scarf"
|
||||
item_state = "ninja_scarf"
|
||||
flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH
|
||||
flags = MASKCOVERSMOUTH
|
||||
w_class = 2
|
||||
gas_transfer_coefficient = 0.90
|
||||
siemens_coefficient = 0
|
||||
@@ -90,7 +89,7 @@
|
||||
desc = "A rubber pig mask."
|
||||
icon_state = "pig"
|
||||
item_state = "pig"
|
||||
flags = FPRINT|TABLEPASS|BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
flags_inv = HIDEFACE
|
||||
w_class = 2
|
||||
siemens_coefficient = 0.9
|
||||
@@ -101,7 +100,7 @@
|
||||
desc = "A mask made of soft vinyl and latex, representing the head of a horse."
|
||||
icon_state = "horsehead"
|
||||
item_state = "horsehead"
|
||||
flags = FPRINT|TABLEPASS|BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
flags_inv = HIDEFACE
|
||||
w_class = 2
|
||||
siemens_coefficient = 0.9
|
||||
@@ -112,7 +111,7 @@
|
||||
|
||||
|
||||
/obj/item/clothing/mask/horsehead/equipped(mob/user, slot)
|
||||
if(!canremove) //cursed masks only
|
||||
if(flags & NODROP) //cursed masks only
|
||||
originalname = user.real_name
|
||||
if(!user.real_name || user.real_name == "Unknown")
|
||||
user.real_name = "A Horse With No Name" //it felt good to be out of the rain
|
||||
@@ -121,12 +120,12 @@
|
||||
..()
|
||||
|
||||
/obj/item/clothing/mask/horsehead/dropped() //this really shouldn't happen, but call it extreme caution
|
||||
if(!canremove)
|
||||
if(flags & NODROP)
|
||||
goodbye_horses(loc)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/mask/horsehead/Destroy()
|
||||
if(!canremove)
|
||||
if(flags & NODROP)
|
||||
goodbye_horses(loc)
|
||||
..()
|
||||
|
||||
@@ -150,4 +149,4 @@
|
||||
icon_state = "pennywise_mask"
|
||||
item_state = "pennywise_mask"
|
||||
species_fit = list("Vox")
|
||||
flags = FPRINT | TABLEPASS | MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS | BLOCKHAIR
|
||||
flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS | BLOCKHAIR
|
||||
|
||||
@@ -93,13 +93,13 @@
|
||||
if (src.chained)
|
||||
src.chained = null
|
||||
src.slowdown = SHOES_SLOWDOWN
|
||||
new /obj/item/weapon/handcuffs( user.loc )
|
||||
new /obj/item/weapon/restraints/handcuffs( user.loc )
|
||||
src.icon_state = "orange"
|
||||
return
|
||||
|
||||
/obj/item/clothing/shoes/orange/attackby(H as obj, loc)
|
||||
..()
|
||||
if ((istype(H, /obj/item/weapon/handcuffs) && !( src.chained )))
|
||||
if ((istype(H, /obj/item/weapon/restraints/handcuffs) && !( src.chained )))
|
||||
//H = null
|
||||
if (src.icon_state != "orange") return
|
||||
del(H)
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
// Can't be equipped by any other species due to bone structure and vox cybernetics.
|
||||
/obj/item/clothing/suit/space/vox
|
||||
w_class = 3
|
||||
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,/obj/item/weapon/handcuffs,/obj/item/weapon/tank)
|
||||
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,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
|
||||
slowdown = 2
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
|
||||
siemens_coefficient = 0.6
|
||||
@@ -204,7 +204,7 @@
|
||||
if(src.magpulse)
|
||||
flags &= ~NOSLIP
|
||||
magpulse = 0
|
||||
canremove = 1
|
||||
flags |= NODROP
|
||||
user << "You relax your deathgrip on the flooring."
|
||||
else
|
||||
//make sure these can only be used when equipped.
|
||||
@@ -218,7 +218,7 @@
|
||||
|
||||
flags |= NOSLIP
|
||||
magpulse = 1
|
||||
canremove = 0 //kinda hard to take off magclaws when you are gripping them tightly.
|
||||
flags &= ~NODROP //kinda hard to take off magclaws when you are gripping them tightly.
|
||||
user << "You dig your claws deeply into the flooring, bracing yourself."
|
||||
user << "It would be hard to take off the [src] without relaxing your grip first."
|
||||
|
||||
@@ -229,7 +229,7 @@
|
||||
user.visible_message("The [src] go limp as they are removed from [usr]'s feet.", "The [src] go limp as they are removed from your feet.")
|
||||
flags &= ~NOSLIP
|
||||
magpulse = 0
|
||||
canremove = 1
|
||||
flags &= ~NODROP
|
||||
|
||||
/obj/item/clothing/shoes/magboots/vox/examine()
|
||||
set src in view()
|
||||
@@ -259,7 +259,7 @@
|
||||
|
||||
/obj/item/clothing/suit/space/plasmaman
|
||||
w_class = 3
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box/magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box/magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
|
||||
slowdown = 2
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 0)
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
@@ -267,13 +267,13 @@
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
species_restricted = list("Plasmaman")
|
||||
flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE | PLASMAGUARD
|
||||
flags = STOPSPRESSUREDMAGE | PLASMAGUARD
|
||||
|
||||
icon_state = "plasmaman_suit"
|
||||
item_state = "plasmaman_suit"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/plasmaman
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE | PLASMAGUARD
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE | PLASMAGUARD
|
||||
species_restricted = list("Plasmaman")
|
||||
|
||||
icon_state = "plasmaman_helmet0"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "capspace"
|
||||
item_state = "capspacehelmet"
|
||||
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Only for the most fashionable of military figureheads."
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE|HEADCOVERSMOUTH
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE|HEADCOVERSMOUTH
|
||||
flags_inv = HIDEFACE
|
||||
permeability_coefficient = 0.01
|
||||
armor = list(melee = 65, bullet = 50, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 50)
|
||||
@@ -18,9 +18,9 @@
|
||||
w_class = 4
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.02
|
||||
flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE | ONESIZEFITSALL
|
||||
flags = STOPSPRESSUREDMAGE | ONESIZEFITSALL
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs)
|
||||
slowdown = 1.5
|
||||
armor = list(melee = 65, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT||HIDETAIL
|
||||
|
||||
@@ -139,9 +139,9 @@
|
||||
if(user.head && istype(user.head, /obj/item/clothing/head/helmet/space/chronos))
|
||||
user << "\[ <span style='color: #00ff00;'>ok</span> \] Mounting /dev/helmet"
|
||||
helmet = user.head
|
||||
helmet.canremove = 0
|
||||
helmet.flags |= NODROP
|
||||
helmet.suit = src
|
||||
src.canremove = 0
|
||||
src.flags |= NODROP
|
||||
user << "\[ <span style='color: #00ff00;'>ok</span> \] Starting brainwave scanner"
|
||||
user << "\[ <span style='color: #00ff00;'>ok</span> \] Starting ui display driver"
|
||||
user << "\[ <span style='color: #00ff00;'>ok</span> \] Initializing chronowalk4-view"
|
||||
@@ -169,11 +169,11 @@
|
||||
user << "\[ <span style='color: #ff5500;'>ok</span> \] Stopping ui display driver"
|
||||
user << "\[ <span style='color: #ff5500;'>ok</span> \] Stopping brainwave scanner"
|
||||
user << "\[ <span style='color: #ff5500;'>ok</span> \] Unmounting /dev/helmet"
|
||||
helmet.canremove = 1
|
||||
helmet.flags &= ~NODROP
|
||||
helmet.suit = null
|
||||
helmet = null
|
||||
user << "logout"
|
||||
src.canremove = 1
|
||||
src.flags &= ~NODROP
|
||||
cooldown = world.time + cooldowntime * 1.5
|
||||
activated = 0
|
||||
activating = 0
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
icon_state = "ert_commander"
|
||||
item_state = "suit-command"
|
||||
w_class = 3
|
||||
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,/obj/item/weapon/handcuffs,/obj/item/weapon/tank)
|
||||
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,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
|
||||
slowdown = 1
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 60)
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/crowbar, \
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
icon_state = "caparmor"
|
||||
item_state = "capspacesuit"
|
||||
w_class = 4
|
||||
allowed = list(/obj/item/weapon/tank, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
|
||||
allowed = list(/obj/item/weapon/tank, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs)
|
||||
slowdown = 1
|
||||
armor = list(melee = 65, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50)
|
||||
siemens_coefficient = 0.7
|
||||
@@ -35,7 +35,7 @@
|
||||
desc = "A heavily armored, advanced space suit that protects against most forms of damage."
|
||||
icon_state = "deathsquad"
|
||||
item_state = "swat_suit"
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
|
||||
armor = list(melee = 80, bullet = 80, laser = 50,energy = 50, bomb = 100, bio = 100, rad = 100)
|
||||
slowdown = 1
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
|
||||
@@ -64,7 +64,7 @@
|
||||
name = "Santa's hat"
|
||||
desc = "Ho ho ho. Merrry X-mas!"
|
||||
icon_state = "santahat"
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE
|
||||
|
||||
/obj/item/clothing/suit/space/santa
|
||||
name = "Santa's suit"
|
||||
@@ -72,7 +72,7 @@
|
||||
icon_state = "santa"
|
||||
item_state = "santa"
|
||||
slowdown = 0
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL | STOPSPRESSUREDMAGE
|
||||
flags = ONESIZEFITSALL | STOPSPRESSUREDMAGE
|
||||
allowed = list(/obj/item) //for stuffing exta special presents
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
icon_state = "pirate"
|
||||
item_state = "pirate"
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
/obj/item/clothing/suit/space/pirate
|
||||
@@ -92,7 +92,7 @@
|
||||
icon_state = "pirate"
|
||||
item_state = "pirate"
|
||||
w_class = 3
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
|
||||
slowdown = 0
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
desc = "A unique, vaccum-proof suit of nano-enhanced armor designed specifically for Spider Clan assassins."
|
||||
icon_state = "s-ninja"
|
||||
item_state = "s-ninja_suit"
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank,/obj/item/weapon/stock_parts/cell,/obj/item/device/suit_cooling_unit)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank,/obj/item/weapon/stock_parts/cell,/obj/item/device/suit_cooling_unit)
|
||||
slowdown = 0
|
||||
unacidable = 1
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
//TODO: Species check, skull damage for forcing an unfitting helmet on?
|
||||
helmet.loc = H
|
||||
H.equip_to_slot(helmet, slot_head)
|
||||
helmet.canremove = 0
|
||||
helmet.flags |= NODROP
|
||||
|
||||
if(attached_boots && boots)
|
||||
if(H.shoes)
|
||||
@@ -121,7 +121,7 @@
|
||||
M << "Your suit's boots deploy with a hiss."
|
||||
boots.loc = H
|
||||
H.equip_to_slot(boots, slot_shoes)
|
||||
boots.canremove = 0
|
||||
boots.flags |= NODROP
|
||||
|
||||
/obj/item/clothing/suit/space/rig/dropped()
|
||||
..()
|
||||
@@ -132,16 +132,16 @@
|
||||
H = helmet.loc
|
||||
if(istype(H))
|
||||
if(helmet && H.head == helmet)
|
||||
helmet.canremove = 1
|
||||
H.drop_from_inventory(helmet)
|
||||
helmet.flags &= ~NODROP
|
||||
H.unEquip(helmet)
|
||||
helmet.loc = src
|
||||
|
||||
if(boots)
|
||||
H = boots.loc
|
||||
if(istype(H))
|
||||
if(boots && H.shoes == boots)
|
||||
boots.canremove = 1
|
||||
H.drop_from_inventory(boots)
|
||||
boots.flags &= ~NODROP
|
||||
H.unEquip(boots)
|
||||
boots.loc = src
|
||||
|
||||
/*
|
||||
@@ -206,8 +206,8 @@
|
||||
if(H.wear_suit != src) return
|
||||
|
||||
if(H.head == helmet)
|
||||
helmet.canremove = 1
|
||||
H.drop_from_inventory(helmet)
|
||||
helmet.flags &= ~NODROP
|
||||
H.unEquip(helmet)
|
||||
helmet.loc = src
|
||||
H << "\blue You retract your hardsuit helmet."
|
||||
else
|
||||
@@ -218,7 +218,7 @@
|
||||
helmet.loc = H
|
||||
helmet.pickup(H)
|
||||
H.equip_to_slot(helmet, slot_head)
|
||||
helmet.canremove = 0
|
||||
helmet.flags |= NODROP
|
||||
H << "\blue You deploy your hardsuit helmet, sealing you off from the world."
|
||||
|
||||
/obj/item/clothing/suit/space/rig/attackby(obj/item/W as obj, mob/user as mob)
|
||||
@@ -398,7 +398,7 @@
|
||||
slowdown = 1
|
||||
w_class = 3
|
||||
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box/magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box/magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
|
||||
siemens_coefficient = 0.6
|
||||
species_restricted = list("exclude","Unathi","Tajaran","Skrell","Vox")
|
||||
sprite_sheets = null
|
||||
@@ -469,7 +469,7 @@
|
||||
desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
|
||||
item_state = "sec_hardsuit"
|
||||
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/handcuffs)
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/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)
|
||||
siemens_coefficient = 0.7
|
||||
|
||||
|
||||
@@ -508,5 +508,5 @@
|
||||
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"
|
||||
flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE
|
||||
flags = STOPSPRESSUREDMAGE
|
||||
armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 25, bio = 100, rad = 100)
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
item_state = "space_suit_syndicate"
|
||||
desc = "Has a tag on it: Totally not property of of a hostile corporation, honest!"
|
||||
w_class = 3
|
||||
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,/obj/item/weapon/handcuffs,/obj/item/weapon/tank)
|
||||
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,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
|
||||
slowdown = 1
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
|
||||
siemens_coefficient = 0.8
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
|
||||
/obj/item/clothing/suit/armor
|
||||
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/handcuffs,/obj/item/device/flashlight/seclite,/obj/item/weapon/melee/telebaton)
|
||||
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,/obj/item/weapon/melee/telebaton)
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
flags = FPRINT | TABLEPASS
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO
|
||||
min_cold_protection_temperature = ARMOR_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO
|
||||
@@ -16,7 +15,7 @@
|
||||
icon_state = "armor"
|
||||
item_state = "armor"
|
||||
blood_overlay_type = "armor"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/combat
|
||||
@@ -25,7 +24,7 @@
|
||||
icon_state = "armor-combat"
|
||||
item_state = "bulletproof"
|
||||
blood_overlay_type = "armor"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/security
|
||||
@@ -146,8 +145,8 @@
|
||||
icon_state = "detective-armor"
|
||||
item_state = "armor"
|
||||
blood_overlay_type = "armor"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/device/flashlight,/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/device/detective_scanner,/obj/item/device/taperecorder)
|
||||
flags = ONESIZEFITSALL
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/device/flashlight,/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/device/detective_scanner,/obj/item/device/taperecorder)
|
||||
|
||||
|
||||
//Reactive armor
|
||||
@@ -160,7 +159,6 @@
|
||||
item_state = "reactiveoff"
|
||||
blood_overlay_type = "armor"
|
||||
slowdown = 1
|
||||
flags = FPRINT | TABLEPASS
|
||||
icon_action_button = "reactiveoff"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
@@ -199,7 +197,7 @@
|
||||
item_state = "centcom"
|
||||
w_class = 4//bulky item
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "bio"
|
||||
desc = "A hood that protects the head and face from biological comtaminants."
|
||||
permeability_coefficient = 0.01
|
||||
flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
|
||||
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
siemens_coefficient = 0.9
|
||||
@@ -18,7 +18,7 @@
|
||||
w_class = 4//bulky item
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
slowdown = 1.0
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/pen,/obj/item/device/flashlight/pen)
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
item_state = "bio_suit"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
allowed = list(/obj/item/weapon/disk, /obj/item/weapon/stamp, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/weapon/melee, /obj/item/weapon/storage/lockbox/medal, /obj/item/device/flash, /obj/item/weapon/storage/box/matches, /obj/item/weapon/lighter, /obj/item/clothing/mask/cigarette, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/tank/emergency_oxygen)
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
@@ -132,11 +132,11 @@
|
||||
item_state = "det_suit"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/device/flashlight,/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/device/detective_scanner,/obj/item/device/taperecorder)
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/device/flashlight,/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/device/detective_scanner,/obj/item/device/taperecorder)
|
||||
armor = list(melee = 50, bullet = 10, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/suit.dmi'
|
||||
@@ -148,7 +148,7 @@
|
||||
desc = "A forensics technician jacket."
|
||||
item_state = "det_suit"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/device/detective_scanner,/obj/item/device/taperecorder)
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy,/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/detective_scanner,/obj/item/device/taperecorder)
|
||||
armor = list(melee = 10, bullet = 10, laser = 15, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/storage/forensics/red
|
||||
@@ -175,6 +175,14 @@
|
||||
)
|
||||
|
||||
//Lawyer
|
||||
/obj/item/clothing/suit/storage/lawyer/blackjacket
|
||||
name = "Black Suit Jacket"
|
||||
desc = "A snappy dress jacket."
|
||||
icon_state = "suitjacket_black_open"
|
||||
item_state = "suitjacket_black_open"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
|
||||
/obj/item/clothing/suit/storage/lawyer/bluejacket
|
||||
name = "Blue Suit Jacket"
|
||||
desc = "A snappy dress jacket."
|
||||
|
||||
@@ -36,14 +36,12 @@
|
||||
desc = "Yarr."
|
||||
icon_state = "pirate_old"
|
||||
item_state = "pirate_old"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/suit/pirate_black
|
||||
name = "black pirate coat"
|
||||
desc = "Yarr."
|
||||
icon_state = "pirate"
|
||||
item_state = "pirate"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
|
||||
/obj/item/clothing/suit/hgpirate
|
||||
@@ -51,7 +49,6 @@
|
||||
desc = "Yarr."
|
||||
icon_state = "hgpirate"
|
||||
item_state = "hgpirate"
|
||||
flags = FPRINT | TABLEPASS
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
|
||||
|
||||
@@ -60,7 +57,7 @@
|
||||
desc = "Suit for a cyborg costume."
|
||||
icon_state = "death"
|
||||
item_state = "death"
|
||||
flags = FPRINT | TABLEPASS | CONDUCT
|
||||
flags = CONDUCT
|
||||
fire_resist = T0C+5200
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
@@ -70,7 +67,6 @@
|
||||
desc = "A Nazi great coat"
|
||||
icon_state = "nazi"
|
||||
item_state = "nazi"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
|
||||
/obj/item/clothing/suit/johnny_coat
|
||||
@@ -78,7 +74,6 @@
|
||||
desc = "Johnny~~"
|
||||
icon_state = "johnny"
|
||||
item_state = "johnny"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
|
||||
/obj/item/clothing/suit/justice
|
||||
@@ -86,7 +81,6 @@
|
||||
desc = "this pretty much looks ridiculous"
|
||||
icon_state = "justice"
|
||||
item_state = "justice"
|
||||
flags = FPRINT | TABLEPASS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
|
||||
@@ -95,7 +89,6 @@
|
||||
desc = "This robe commands authority."
|
||||
icon_state = "judge"
|
||||
item_state = "judge"
|
||||
flags = FPRINT | TABLEPASS
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
allowed = list(/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/spacecash)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
@@ -124,7 +117,6 @@
|
||||
item_state = "syndicate-black-red"
|
||||
desc = "A plastic replica of the syndicate space suit, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!"
|
||||
w_class = 3
|
||||
flags = FPRINT | TABLEPASS
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/toy)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
@@ -215,7 +207,7 @@
|
||||
desc = "Forced to live on your shameful acting as a fake Mexican, you and your poncho have grown inseperable. Literally."
|
||||
icon_state = "ponchoshame"
|
||||
item_state = "ponchoshame"
|
||||
canremove = 0
|
||||
flags = NODROP
|
||||
|
||||
/*
|
||||
* Misc
|
||||
@@ -228,7 +220,7 @@
|
||||
item_state = "straight_jacket"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/suit/ianshirt
|
||||
name = "worn shirt"
|
||||
@@ -282,21 +274,18 @@
|
||||
desc = "A long, thick black leather coat."
|
||||
icon_state = "leathercoat"
|
||||
item_state = "leathercoat"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/suit/browncoat
|
||||
name = "brown leather coat"
|
||||
desc = "A long, brown leather coat."
|
||||
icon_state = "browncoat"
|
||||
item_state = "browncoat"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/suit/neocoat
|
||||
name = "black coat"
|
||||
desc = "A flowing, black coat."
|
||||
icon_state = "neocoat"
|
||||
item_state = "neocoat"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/suit/browntrenchcoat
|
||||
name = "brown trench coat"
|
||||
@@ -318,7 +307,6 @@
|
||||
desc = "A cream coloured, genteel suit."
|
||||
icon_state = "creamsuit"
|
||||
item_state = "creamsuit"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
//stripper
|
||||
|
||||
@@ -412,7 +400,7 @@
|
||||
w_class = 4//bulky item
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/pen,/obj/item/device/flashlight/pen)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
|
||||
@@ -425,7 +413,7 @@
|
||||
icon_state = "mercy_hood"
|
||||
item_state = "mercy_hood"
|
||||
permeability_coefficient = 0.01
|
||||
flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
|
||||
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/extinguisher)
|
||||
slowdown = 1.0
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
|
||||
flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE
|
||||
flags = STOPSPRESSUREDMAGE
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
|
||||
@@ -55,7 +55,7 @@
|
||||
name = "bomb hood"
|
||||
desc = "Use in case of bomb."
|
||||
icon_state = "bombsuit"
|
||||
flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
|
||||
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
|
||||
armor = list(melee = 40, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
cold_protection = HEAD
|
||||
@@ -74,7 +74,6 @@
|
||||
w_class = 4//bulky item
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
flags = FPRINT | TABLEPASS
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
slowdown = 2
|
||||
armor = list(melee = 40, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0)
|
||||
@@ -94,7 +93,7 @@
|
||||
/obj/item/clothing/suit/bomb_suit/security
|
||||
icon_state = "bombsuitsec"
|
||||
item_state = "bombsuitsec"
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs)
|
||||
|
||||
/*
|
||||
* Radiation protection
|
||||
@@ -103,7 +102,7 @@
|
||||
name = "Radiation Hood"
|
||||
icon_state = "rad"
|
||||
desc = "A hood with radiation protective properties. Label: Made with lead, do not eat insulation"
|
||||
flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
|
||||
flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100)
|
||||
loose = 8
|
||||
|
||||
|
||||
@@ -189,17 +189,7 @@
|
||||
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.")
|
||||
|
||||
/obj/item/clothing/accessory/holobadge/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
|
||||
if (istype(O, /obj/item/weapon/card/emag))
|
||||
if (emagged)
|
||||
user << "\red [src] is already cracked."
|
||||
return
|
||||
else
|
||||
emagged = 1
|
||||
user << "\red You swipe [O] and crack the holobadge security checks."
|
||||
return
|
||||
|
||||
else if(istype(O, /obj/item/weapon/card/id) || istype(O, /obj/item/device/pda))
|
||||
if(istype(O, /obj/item/weapon/card/id) || istype(O, /obj/item/device/pda))
|
||||
|
||||
var/obj/item/weapon/card/id/id_card = null
|
||||
|
||||
@@ -218,6 +208,15 @@
|
||||
user << "[src] rejects your insufficient access rights."
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/clothing/accessory/holobadge/emag_act(user as mob)
|
||||
if (emagged)
|
||||
user << "\red [src] is already cracked."
|
||||
return
|
||||
else
|
||||
emagged = 1
|
||||
user << "\red You swipe the card and crack the holobadge security checks."
|
||||
return
|
||||
|
||||
/obj/item/clothing/accessory/holobadge/attack(mob/living/carbon/human/M, mob/living/user)
|
||||
if(isliving(user))
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/clothing/accessory/holster/attack_self()
|
||||
var/holsteritem = usr.get_active_hand()
|
||||
if(!holstered)
|
||||
@@ -40,7 +40,7 @@
|
||||
return
|
||||
|
||||
holstered = W
|
||||
user.drop_from_inventory(holstered)
|
||||
user.unEquip(holstered)
|
||||
holstered.loc = src
|
||||
holstered.add_fingerprint(user)
|
||||
user.visible_message("<span class='notice'>[user] holsters the [holstered].</span>", "<span class='notice'>You holster the [holstered].</span>")
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
icon_state = "black"
|
||||
item_state = "bl_suit"
|
||||
_color = "black"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/blackf
|
||||
name = "feminine black jumpsuit"
|
||||
@@ -29,17 +29,17 @@
|
||||
icon_state = "blue"
|
||||
item_state = "b_suit"
|
||||
_color = "blue"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/blue/dodgeball
|
||||
canremove = 0
|
||||
flags = ONESIZEFITSALL | NODROP
|
||||
|
||||
/obj/item/clothing/under/color/green
|
||||
name = "green jumpsuit"
|
||||
icon_state = "green"
|
||||
item_state = "g_suit"
|
||||
_color = "green"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/grey
|
||||
name = "grey jumpsuit"
|
||||
@@ -47,7 +47,7 @@
|
||||
icon_state = "grey"
|
||||
item_state = "gy_suit"
|
||||
_color = "grey"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
|
||||
/obj/item/clothing/under/color/orange
|
||||
@@ -56,7 +56,7 @@
|
||||
icon_state = "orange"
|
||||
item_state = "o_suit"
|
||||
_color = "orange"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/orange/prison
|
||||
name = "orange jumpsuit"
|
||||
@@ -66,7 +66,7 @@
|
||||
_color = "orange"
|
||||
has_sensor = 2
|
||||
sensor_mode = 3
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/pink
|
||||
name = "pink jumpsuit"
|
||||
@@ -74,31 +74,31 @@
|
||||
icon_state = "pink"
|
||||
item_state = "p_suit"
|
||||
_color = "pink"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/red
|
||||
name = "red jumpsuit"
|
||||
icon_state = "red"
|
||||
item_state = "r_suit"
|
||||
_color = "red"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/red/dodgeball
|
||||
canremove = 0
|
||||
flags = ONESIZEFITSALL | NODROP
|
||||
|
||||
/obj/item/clothing/under/color/white
|
||||
name = "white jumpsuit"
|
||||
icon_state = "white"
|
||||
item_state = "w_suit"
|
||||
_color = "white"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/yellow
|
||||
name = "yellow jumpsuit"
|
||||
icon_state = "yellow"
|
||||
item_state = "y_suit"
|
||||
_color = "yellow"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/psyche
|
||||
name = "psychedelic jumpsuit"
|
||||
@@ -115,7 +115,7 @@
|
||||
name = "aqua jumpsuit"
|
||||
icon_state = "aqua"
|
||||
_color = "aqua"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/purple
|
||||
name = "purple jumpsuit"
|
||||
@@ -142,13 +142,12 @@
|
||||
name = "light brown jumpsuit"
|
||||
icon_state = "lightbrown"
|
||||
_color = "lightbrown"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/brown
|
||||
name = "brown jumpsuit"
|
||||
icon_state = "brown"
|
||||
_color = "brown"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/under/color/yellowgreen
|
||||
name = "yellow green jumpsuit"
|
||||
@@ -159,7 +158,7 @@
|
||||
name = "dark blue jumpsuit"
|
||||
icon_state = "darkblue"
|
||||
_color = "darkblue"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/lightred
|
||||
name = "light red jumpsuit"
|
||||
@@ -170,4 +169,4 @@
|
||||
name = "dark red jumpsuit"
|
||||
icon_state = "darkred"
|
||||
_color = "darkred"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon_state = "ba_suit"
|
||||
item_state = "ba_suit"
|
||||
_color = "ba_suit"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -18,7 +18,7 @@
|
||||
icon_state = "captain"
|
||||
item_state = "caparmor"
|
||||
_color = "captain"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -31,7 +31,7 @@
|
||||
icon_state = "qm"
|
||||
item_state = "lb_suit"
|
||||
_color = "qm"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -44,7 +44,7 @@
|
||||
icon_state = "cargotech"
|
||||
item_state = "lb_suit"
|
||||
_color = "cargo"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -57,7 +57,7 @@
|
||||
icon_state = "chaplain"
|
||||
item_state = "bl_suit"
|
||||
_color = "chapblack"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -69,7 +69,7 @@
|
||||
name = "chef's uniform"
|
||||
icon_state = "chef"
|
||||
_color = "chef"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -82,7 +82,7 @@
|
||||
icon_state = "clown"
|
||||
item_state = "clown"
|
||||
_color = "clown"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/head_of_personnel
|
||||
@@ -91,7 +91,7 @@
|
||||
icon_state = "hop"
|
||||
item_state = "b_suit"
|
||||
_color = "hop"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -103,7 +103,6 @@
|
||||
icon_state = "hopwhimsy"
|
||||
item_state = "hopwhimsy"
|
||||
_color = "hopwhimsy"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/hydroponics
|
||||
@@ -113,7 +112,7 @@
|
||||
item_state = "g_suit"
|
||||
_color = "hydroponics"
|
||||
permeability_coefficient = 0.50
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -126,7 +125,7 @@
|
||||
icon_state = "internalaffairs"
|
||||
item_state = "internalaffairs"
|
||||
_color = "internalaffairs"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -139,7 +138,7 @@
|
||||
icon_state = "janitor"
|
||||
_color = "janitor"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -149,7 +148,7 @@
|
||||
/obj/item/clothing/under/lawyer
|
||||
desc = "Slick threads."
|
||||
name = "Lawyer suit"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/lawyer/black
|
||||
icon_state = "lawyer_black"
|
||||
@@ -226,7 +225,7 @@
|
||||
icon_state = "red_suit"
|
||||
item_state = "red_suit"
|
||||
_color = "red_suit"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -239,7 +238,7 @@
|
||||
icon_state = "mime"
|
||||
item_state = "mime"
|
||||
_color = "mime"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/miner
|
||||
@@ -248,7 +247,7 @@
|
||||
icon_state = "miner"
|
||||
item_state = "miner"
|
||||
_color = "miner"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
item_state = "g_suit"
|
||||
_color = "chief"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -18,7 +18,7 @@
|
||||
icon_state = "atmos"
|
||||
item_state = "atmos_suit"
|
||||
_color = "atmos"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -31,7 +31,7 @@
|
||||
item_state = "engi_suit"
|
||||
_color = "engine"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -43,7 +43,7 @@
|
||||
icon_state = "robotics"
|
||||
item_state = "robotics"
|
||||
_color = "robotics"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
item_state = "g_suit"
|
||||
_color = "director"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 10, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -22,7 +22,7 @@
|
||||
_color = "toxinswhite"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -36,7 +36,7 @@
|
||||
_color = "chemistrywhite"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -53,7 +53,7 @@
|
||||
_color = "cmo"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -67,7 +67,7 @@
|
||||
_color = "geneticswhite"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -81,7 +81,7 @@
|
||||
_color = "virologywhite"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -95,7 +95,7 @@
|
||||
_color = "nursesuit"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -109,7 +109,7 @@
|
||||
_color = "nurse"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -123,7 +123,7 @@
|
||||
_color = "orderly"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -137,7 +137,7 @@
|
||||
_color = "medical"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -148,7 +148,7 @@
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in baby blue."
|
||||
icon_state = "scrubsblue"
|
||||
_color = "scrubsblue"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -159,7 +159,7 @@
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in dark green."
|
||||
icon_state = "scrubsgreen"
|
||||
_color = "scrubsgreen"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -170,7 +170,7 @@
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in deep purple."
|
||||
icon_state = "scrubspurple"
|
||||
_color = "scrubspurple"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -181,7 +181,7 @@
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is as dark as an emo's poetry."
|
||||
icon_state = "scrubsblack"
|
||||
_color = "scrubsblack"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -196,7 +196,7 @@
|
||||
_color = "paramedic"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 10)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -208,7 +208,7 @@
|
||||
icon_state = "psych"
|
||||
item_state = "w_suit"
|
||||
_color = "psych"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/psych/turtleneck
|
||||
desc = "A turqouise turtleneck and a pair of dark blue slacks, belonging to a psychologist."
|
||||
@@ -216,7 +216,7 @@
|
||||
icon_state = "psychturtle"
|
||||
item_state = "b_suit"
|
||||
_color = "psychturtle"
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
|
||||
/*
|
||||
@@ -230,7 +230,7 @@
|
||||
_color = "genetics_new"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/chemist_new
|
||||
desc = "It's made of a special fiber which provides minor protection against biohazards."
|
||||
@@ -240,7 +240,7 @@
|
||||
_color = "chemist_new"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/scientist_new
|
||||
desc = "Made of a special fiber that gives special protection against biohazards and small explosions."
|
||||
@@ -250,7 +250,7 @@
|
||||
_color = "scientist_new"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/virologist_new
|
||||
desc = "Made of a special fiber that gives increased protection against biohazards."
|
||||
@@ -260,4 +260,4 @@
|
||||
_color = "virologist_new"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
item_state = "r_suit"
|
||||
_color = "warden"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
/obj/item/clothing/under/rank/security
|
||||
@@ -25,7 +25,7 @@
|
||||
item_state = "r_suit"
|
||||
_color = "secred"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
/obj/item/clothing/under/rank/dispatch
|
||||
@@ -35,7 +35,7 @@
|
||||
item_state = "dispatch"
|
||||
_color = "dispatch"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
/obj/item/clothing/under/rank/security2
|
||||
@@ -45,7 +45,7 @@
|
||||
item_state = "r_suit"
|
||||
_color = "redshirt2"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
/obj/item/clothing/under/rank/security/corp
|
||||
@@ -68,7 +68,7 @@
|
||||
item_state = "det"
|
||||
_color = "detective"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
/*
|
||||
@@ -81,7 +81,7 @@
|
||||
item_state = "r_suit"
|
||||
_color = "hosred"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
siemens_coefficient = 0.8
|
||||
|
||||
/obj/item/clothing/under/rank/head_of_security/corp
|
||||
@@ -97,7 +97,7 @@
|
||||
item_state = "jensen"
|
||||
_color = "jensen"
|
||||
siemens_coefficient = 0.6
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
//Paradise Station
|
||||
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
name = "amish suit"
|
||||
icon_state = "sl_suit"
|
||||
_color = "sl_suit"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/under/waiter
|
||||
name = "waiter's outfit"
|
||||
@@ -39,7 +38,6 @@
|
||||
icon_state = "waiter"
|
||||
item_state = "waiter"
|
||||
_color = "waiter"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/under/rank/mailman
|
||||
name = "mailman's jumpsuit"
|
||||
@@ -83,7 +81,7 @@
|
||||
item_state = "g_suit"
|
||||
_color = "officer"
|
||||
displays_id = 0
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/centcom/captain
|
||||
desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Captain\" and bears \"N.C.V. Fearless CV-286\" on the left shounder."
|
||||
@@ -100,7 +98,7 @@
|
||||
item_state = "g_suit"
|
||||
_color = "officer"
|
||||
displays_id = 0
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/centcom/representative
|
||||
desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Ensign\" and bears \"N.S.S. Cyberiad\" on the left shounder."
|
||||
@@ -109,7 +107,7 @@
|
||||
item_state = "g_suit"
|
||||
_color = "officer"
|
||||
displays_id = 0
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/space
|
||||
name = "\improper NASA jumpsuit"
|
||||
@@ -120,7 +118,6 @@
|
||||
w_class = 4//bulky item
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.02
|
||||
flags = FPRINT | TABLEPASS
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | ARMS //Needs gloves and shoes with cold protection to be fully protected.
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
@@ -135,7 +132,6 @@
|
||||
desc = "it's a cybernetically enhanced jumpsuit used for administrative duties."
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
flags = FPRINT | TABLEPASS
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
armor = list(melee = 100, bullet = 100, laser = 100,energy = 100, bomb = 100, bio = 100, rad = 100)
|
||||
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
|
||||
@@ -149,7 +145,6 @@
|
||||
desc = "A jumpsuit with owl wings. Photorealistic owl feathers! Twooooo!"
|
||||
icon_state = "owl"
|
||||
_color = "owl"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/under/johnny
|
||||
name = "johnny~~ jumpsuit"
|
||||
@@ -228,6 +223,27 @@
|
||||
item_state = "navy_suit"
|
||||
_color = "navy_suit"
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/tan
|
||||
name = "tan suit"
|
||||
desc = "A tan suit with a yellow tie. Smart, but casual."
|
||||
icon_state = "tan_suit"
|
||||
item_state = "tan_suit"
|
||||
_color = "tan_suit"
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/burgundy
|
||||
name = "burgundy suit"
|
||||
desc = "A burgundy suit and black tie. Somewhat formal."
|
||||
icon_state = "burgundy_suit"
|
||||
item_state = "burgundy_suit"
|
||||
_color = "burgundy_suit"
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/charcoal
|
||||
name = "charcoal suit"
|
||||
desc = "A charcoal suit and red tie. Very professional."
|
||||
icon_state = "charcoal_suit"
|
||||
item_state = "charcoal_suit"
|
||||
_color = "charcoal_suit"
|
||||
|
||||
/obj/item/clothing/under/blackskirt
|
||||
name = "black skirt"
|
||||
desc = "A black skirt, very fancy!"
|
||||
@@ -587,6 +603,13 @@
|
||||
_color = "pennywise"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
|
||||
/obj/item/clothing/under/assistantformal
|
||||
name = "assistant's formal uniform"
|
||||
desc = "An assistant's formal-wear. Why an assistant needs formal-wear is still unknown."
|
||||
icon_state = "assistant_formal"
|
||||
item_state = "gy_suit"
|
||||
_color = "assistant_formal"
|
||||
|
||||
/obj/item/clothing/under/blacktango
|
||||
name = "black tango dress"
|
||||
desc = "Filled with Latin fire."
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "athletic shorts"
|
||||
desc = "95% Polyester, 5% Spandex!"
|
||||
gender = PLURAL
|
||||
flags = FPRINT | TABLEPASS
|
||||
body_parts_covered = LOWER_TORSO
|
||||
|
||||
/obj/item/clothing/under/shorts/red
|
||||
|
||||
@@ -85,6 +85,15 @@
|
||||
var/dualslot = 0 // faster than typechecking
|
||||
attackby_types = list(/obj/item/weapon/card)
|
||||
|
||||
emag_act(user as mob)
|
||||
if(!writer)
|
||||
usr << "You insert \the card, and the computer grinds, sparks, and beeps. After a moment, the card ejects itself."
|
||||
computer.emagged = 1
|
||||
return 1
|
||||
else
|
||||
usr << "You are unable to insert \the card, as the reader slot is occupied"
|
||||
return 0
|
||||
|
||||
attackby(var/obj/item/I as obj, var/mob/user as mob)
|
||||
if(istype(I,/obj/item/weapon/card))
|
||||
insert(I)
|
||||
@@ -102,14 +111,6 @@
|
||||
usr << "This device has only one card slot"
|
||||
return 0
|
||||
|
||||
if(istype(card,/obj/item/weapon/card/emag)) // emag reader slot
|
||||
if(!writer)
|
||||
usr << "You insert \the [card], and the computer grinds, sparks, and beeps. After a moment, the card ejects itself."
|
||||
computer.emagged = 1
|
||||
return 1
|
||||
else
|
||||
usr << "You are unable to insert \the [card], as the reader slot is occupied"
|
||||
|
||||
var/mob/living/L = usr
|
||||
switch(slot)
|
||||
if(1)
|
||||
@@ -132,7 +133,6 @@
|
||||
else
|
||||
usr << "There is already something in the reader slot."
|
||||
|
||||
|
||||
// Usage of insert() preferred, as it also tells result to the user.
|
||||
proc/equip_to_reader(var/obj/item/weapon/card/card, var/mob/living/L)
|
||||
if(!reader)
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
if(isobj(obj))
|
||||
var/mob/M = obj.loc
|
||||
if(ismob(M))
|
||||
M.u_equip(obj)
|
||||
M.unEquip(obj)
|
||||
M.update_icons() //so their overlays update
|
||||
|
||||
if(!silent)
|
||||
|
||||
@@ -185,12 +185,12 @@
|
||||
return null
|
||||
|
||||
var/list/L = list()
|
||||
for(var/obj/machinery/camera/C in cameranet.viewpoints)
|
||||
for(var/obj/machinery/camera/C in cameranet.cameras)
|
||||
var/list/temp = C.network & key.networks
|
||||
if(temp.len)
|
||||
L.Add(C)
|
||||
|
||||
camera_sort(L)
|
||||
cameranet.process_sort()
|
||||
|
||||
return L
|
||||
verify_machine(var/obj/machinery/camera/C,var/datum/file/camnet_key/key = null)
|
||||
|
||||
@@ -42,6 +42,12 @@
|
||||
var/status_display_freq = "1435"
|
||||
var/stat_msg1
|
||||
var/stat_msg2
|
||||
|
||||
var/datum/announcement/priority/crew_announcement = new
|
||||
|
||||
New()
|
||||
..()
|
||||
crew_announcement.newscast = 1
|
||||
|
||||
Reset()
|
||||
..()
|
||||
@@ -53,7 +59,7 @@
|
||||
Topic(var/href, var/list/href_list)
|
||||
if(!interactable() || !computer.radio || ..(href,href_list) )
|
||||
return
|
||||
if (computer.z > 1)
|
||||
if (!(computer.z in config.station_levels))
|
||||
usr << "\red <b>Unable to establish a connection</b>: \black You're too far away from the station!"
|
||||
return
|
||||
|
||||
@@ -68,11 +74,11 @@
|
||||
authenticated = 1
|
||||
if(access_captain in I.GetAccess())
|
||||
authenticated = 2
|
||||
if(istype(I,/obj/item/weapon/card/emag))
|
||||
authenticated = 2
|
||||
computer.emagged = 1
|
||||
crew_announcement.announcer = GetNameAndAssignmentFromId(I)
|
||||
|
||||
if("logout" in href_list)
|
||||
authenticated = 0
|
||||
crew_announcement.announcer = ""
|
||||
|
||||
if("swipeidseclevel" in href_list)
|
||||
var/mob/M = usr
|
||||
@@ -104,13 +110,13 @@
|
||||
usr << "You need to swipe your ID."
|
||||
if("announce" in href_list)
|
||||
if(authenticated==2)
|
||||
if(message_cooldown) return
|
||||
var/input = stripped_input(usr, "Please choose a message to announce to the station crew.", "What?")
|
||||
if(message_cooldown)
|
||||
usr << "Please allow at least one minute to pass between announcements"
|
||||
return
|
||||
var/input = input(usr, "Please write a message to announce to the station crew.", "Priority Announcement")
|
||||
if(!input || !interactable())
|
||||
return
|
||||
captain_announce(input)//This should really tell who is, IE HoP, CE, HoS, RD, Captain
|
||||
log_say("[key_name(usr)] has made a captain announcement: [input]")
|
||||
message_admins("[key_name_admin(usr)] has made a captain announcement.", 1)
|
||||
crew_announcement.Announce(input)
|
||||
message_cooldown = 1
|
||||
spawn(600)//One minute cooldown
|
||||
message_cooldown = 0
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
|
||||
proc/authenticate()
|
||||
if(access_security in scan.access || access_forensics_lockers in scan.access )
|
||||
if((access_security in scan.access) || (access_forensics_lockers in scan.access) )
|
||||
return 1
|
||||
if(istype(usr,/mob/living/silicon/ai))
|
||||
return 1
|
||||
|
||||
@@ -60,11 +60,13 @@
|
||||
world << "\blue <B>All authorizations to shorting time for shuttle launch have been revoked!</B>"
|
||||
src.authorized.len = 0
|
||||
src.authorized = list( )
|
||||
|
||||
else if (istype(W, /obj/item/card/emag) && !emagged)
|
||||
return
|
||||
|
||||
emag_act(user as mob)
|
||||
if (!emagged)
|
||||
var/choice = alert(user, "Would you like to launch the shuttle?","Shuttle control", "Launch", "Cancel")
|
||||
|
||||
if(!emagged && emergency_shuttle.location == 1 && user.get_active_hand() == W)
|
||||
if(!emagged && emergency_shuttle.location == 1)
|
||||
switch(choice)
|
||||
if("Launch")
|
||||
world << "\blue <B>Alert: Shuttle launch time shortened to 10 seconds!</B>"
|
||||
@@ -72,4 +74,3 @@
|
||||
emagged = 1
|
||||
if("Cancel")
|
||||
return
|
||||
return
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
icon= 'icons/obj/clothing/hats.dmi'
|
||||
icon_state = "hairflowerp"
|
||||
item_state = "hairflowerp"
|
||||
flags = FPRINT|TABLEPASS
|
||||
|
||||
/obj/item/clothing/under/fluff/WornTurtleneck // DaveTheHeadcrab: Makkota Atani
|
||||
name = "Worn Combat Turtleneck"
|
||||
@@ -46,7 +45,6 @@
|
||||
name = "royal marines commando beret"
|
||||
desc = "Dark Green beret with an old insignia on it."
|
||||
icon_state = "sparkyninja_beret"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
//////////////////////////////////
|
||||
////////// Fluff Items ///////////
|
||||
@@ -413,7 +411,6 @@
|
||||
item_state = "ciglit"
|
||||
w_class = 1
|
||||
body_parts_covered = null
|
||||
flags = FPRINT|TABLEPASS
|
||||
|
||||
//Strange penlight, Nerezza: Asher Spock
|
||||
|
||||
@@ -777,7 +774,6 @@
|
||||
_color = "jane_sid_suit"
|
||||
has_sensor = 2
|
||||
sensor_mode = 3
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
//Suit roll-down toggle.
|
||||
/obj/item/clothing/under/fluff/jane_sidsuit/verb/toggle_zipper()
|
||||
@@ -818,7 +814,7 @@
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "flagmask"
|
||||
item_state = "flagmask"
|
||||
flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH
|
||||
flags = MASKCOVERSMOUTH
|
||||
w_class = 2
|
||||
gas_transfer_coefficient = 0.90
|
||||
*/
|
||||
@@ -828,7 +824,6 @@
|
||||
desc = "A silver and emerald shamrock pendant. It has the initials \"M.K.\" engraved on the back."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "mara_kilpatrick_1"
|
||||
flags = FPRINT|TABLEPASS
|
||||
w_class = 1
|
||||
|
||||
////// Small locket - Altair An-Nasaqan - Serithi
|
||||
@@ -841,7 +836,6 @@
|
||||
item_state = "altair_locket"
|
||||
_color = "altair_locket"
|
||||
slot_flags = 0
|
||||
flags = FPRINT|TABLEPASS
|
||||
w_class = 1
|
||||
slot_flags = SLOT_MASK
|
||||
|
||||
@@ -855,7 +849,6 @@
|
||||
item_state = "konaahirano"
|
||||
_color = "konaahirano"
|
||||
slot_flags = 0
|
||||
flags = FPRINT|TABLEPASS
|
||||
w_class = 1
|
||||
slot_flags = SLOT_MASK
|
||||
var/obj/item/held //Item inside locket.
|
||||
@@ -885,7 +878,6 @@
|
||||
desc = "This silvered medallion bears the symbol of the Hadii Clan of the Tajaran."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "nasir_khayyam_1"
|
||||
flags = FPRINT|TABLEPASS
|
||||
w_class = 1
|
||||
slot_flags = SLOT_MASK
|
||||
|
||||
@@ -897,7 +889,6 @@
|
||||
desc = "A shiny black medallion made of something that looks like the Earth's obsidian, but it is harder than anything ever seen yet. On the front there seems to be a standing unathi chiseled in it, on the back the name of Lin Chang with the title of the Assassin Archmage."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "nasir_khayyam_1"
|
||||
flags = FPRINT|TABLEPASS
|
||||
w_class = 1
|
||||
slot_flags = SLOT_MASK
|
||||
|
||||
@@ -908,7 +899,6 @@
|
||||
desc = "A brass necklace with a green emerald placed at the end. It has a small inscription on the top of the chain, saying \'Foster\'"
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "ty_foster"
|
||||
flags = FPRINT|TABLEPASS
|
||||
w_class = 1
|
||||
|
||||
//////////// Shoes ////////////
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
/obj/machinery/mill/attackby(var/obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W,/obj/item/weapon/reagent_containers/food))
|
||||
user.u_equip(W)
|
||||
user.unEquip(W)
|
||||
W.loc = src
|
||||
input += W
|
||||
else
|
||||
@@ -128,7 +128,7 @@
|
||||
|
||||
/obj/machinery/fermenter/attackby(var/obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W,/obj/item/weapon/reagent_containers/food))
|
||||
user.u_equip(W)
|
||||
user.unEquip(W)
|
||||
W.loc = src
|
||||
input += W
|
||||
else
|
||||
@@ -189,7 +189,7 @@
|
||||
|
||||
/obj/machinery/still/attackby(var/obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W,/obj/item/weapon/reagent_containers/food))
|
||||
user.u_equip(W)
|
||||
user.unEquip(W)
|
||||
W.loc = src
|
||||
input += W
|
||||
else
|
||||
@@ -274,7 +274,7 @@
|
||||
|
||||
/obj/machinery/centrifuge/attackby(var/obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W,/obj/item/weapon/reagent_containers/food))
|
||||
user.u_equip(W)
|
||||
user.unEquip(W)
|
||||
W.loc = src
|
||||
input += W
|
||||
else
|
||||
|
||||
@@ -125,13 +125,13 @@ var/global/list/all_money_accounts = list()
|
||||
var/money = 0
|
||||
var/suspended = 0
|
||||
var/list/transaction_log = list()
|
||||
var/security_level = 1 //0 - auto-identify from worn ID, require only account number
|
||||
var/security_level = 0 //0 - auto-identify from worn ID, require only account number
|
||||
//1 - require manual login / account number and pin
|
||||
//2 - require card and manual login
|
||||
|
||||
/datum/money_account/New()
|
||||
..()
|
||||
security_level = pick (0,1) //Stealing is now slightly viable
|
||||
//security_level = pick (0,1) //Stealing is now slightly viable
|
||||
|
||||
/datum/transaction
|
||||
var/target_name = ""
|
||||
|
||||
@@ -67,7 +67,15 @@ var/setup_economy = 0
|
||||
/proc/setup_economy()
|
||||
if(setup_economy)
|
||||
return
|
||||
|
||||
var/datum/feed_channel/newChannel = new /datum/feed_channel
|
||||
newChannel.channel_name = "Public Station Announcements"
|
||||
newChannel.author = "Automated Announcement Listing"
|
||||
newChannel.locked = 1
|
||||
newChannel.is_admin_channel = 1
|
||||
news_network.network_channels += newChannel
|
||||
|
||||
newChannel = new /datum/feed_channel
|
||||
newChannel.channel_name = "Tau Ceti Daily"
|
||||
newChannel.author = "CentComm Minister of Information"
|
||||
newChannel.locked = 1
|
||||
|
||||
@@ -15,18 +15,17 @@
|
||||
|
||||
/datum/event/alien_infestation/announce()
|
||||
if(successSpawn)
|
||||
command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert")
|
||||
world << sound('sound/AI/aliens.ogg')
|
||||
command_announcement.Announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", new_sound = 'sound/AI/aliens.ogg')
|
||||
|
||||
|
||||
/datum/event/alien_infestation/start()
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in world)
|
||||
if(temp_vent.loc.z == 1 && !temp_vent.welded && temp_vent.network)
|
||||
if((temp_vent.loc.z in config.station_levels) && !temp_vent.welded && temp_vent.network)
|
||||
if(temp_vent.network.normal_members.len > 50) //Stops Aliens getting stuck in small networks. See: Security, Virology
|
||||
vents += temp_vent
|
||||
|
||||
var/list/candidates = get_candidates(BE_ALIEN,ALIEN_AFK_BRACKET,"alien","Syndicate")
|
||||
var/list/candidates = get_candidates(BE_ALIEN,ALIEN_AFK_BRACKET)
|
||||
|
||||
while(spawncount > 0 && vents.len && candidates.len)
|
||||
var/obj/vent = pick_n_take(vents)
|
||||
|
||||
@@ -7,8 +7,7 @@
|
||||
|
||||
|
||||
/datum/event/blob/announce()
|
||||
command_alert("Confirmed outbreak of level 7 biohazard aboard [station_name()]. Nanotrasen has issued a directive 7-10. The station is to be considered quarantined.", "Biohazard Alert")
|
||||
world << sound('sound/AI/blob_confirmed.ogg')
|
||||
command_announcement.Announce("Confirmed outbreak of level 7 biohazard aboard [station_name()]. Nanotrasen has issued a directive 7-10. The station is to be considered quarantined.", "Biohazard Alert", new_sound = 'sound/AI/blob_confirmed.ogg')
|
||||
|
||||
for (var/mob/living/silicon/ai/aiPlayer in player_list)
|
||||
if (aiPlayer.client)
|
||||
@@ -39,14 +38,14 @@
|
||||
/datum/event/blob/proc/announce_nuke()
|
||||
var/nukecode = "ERROR"
|
||||
for(var/obj/machinery/nuclearbomb/bomb in world)
|
||||
if(bomb && bomb.r_code && bomb.z == 1)
|
||||
if(bomb && bomb.r_code && (bomb.z in config.station_levels))
|
||||
nukecode = bomb.r_code
|
||||
|
||||
command_alert("The biohazard has grown out of control and will soon reach critical mass. Activate the nuclear failsafe to maintain quarantine. The Nuclear Authentication Code is [nukecode] ", "Biohazard Alert")
|
||||
command_announcement.Announce("The biohazard has grown out of control and will soon reach critical mass. Activate the nuclear failsafe to maintain quarantine. The Nuclear Authentication Code is [nukecode] ", "Biohazard Alert")
|
||||
set_security_level("gamma")
|
||||
|
||||
var/obj/machinery/door/airlock/vault/V = locate(/obj/machinery/door/airlock/vault) in world
|
||||
if(V && V.z == 1)
|
||||
if(V && (V.z in config.station_levels))
|
||||
V.locked = 0
|
||||
V.update_icon()
|
||||
|
||||
@@ -64,12 +63,11 @@
|
||||
spawn(10)
|
||||
if(Blob || blob_cores.len)
|
||||
return
|
||||
command_alert("The level 7 biohazard aboard [station_name()] has been eliminated. Directive 7-10 has been lifted, and the station is no longer quarantined.", "Biohazard Update")
|
||||
command_announcement.Announce("The level 7 biohazard aboard [station_name()] has been eliminated. Directive 7-10 has been lifted, and the station is no longer quarantined.", "Biohazard Update")
|
||||
|
||||
for (var/mob/living/silicon/ai/aiPlayer in player_list)
|
||||
if (aiPlayer.client)
|
||||
var/law = ""
|
||||
aiPlayer.set_zeroth_law(law)
|
||||
aiPlayer.clear_zeroth_law()
|
||||
aiPlayer << "\red <b>You have detected a change in your laws information:</b>"
|
||||
aiPlayer << "Laws Updated: [law]"
|
||||
aiPlayer << "Laws Updated: Zeroth law removed."
|
||||
..()
|
||||
@@ -12,18 +12,17 @@
|
||||
|
||||
/datum/event/borer_infestation/announce()
|
||||
if(successSpawn)
|
||||
command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert")
|
||||
world << sound('sound/AI/aliens.ogg')
|
||||
command_announcement.Announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", new_sound = 'sound/AI/aliens.ogg')
|
||||
|
||||
/datum/event/borer_infestation/start()
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in world)
|
||||
if(temp_vent.loc.z == 1 && !temp_vent.welded && temp_vent.network)
|
||||
if((temp_vent.loc.z in config.station_levels) && !temp_vent.welded && temp_vent.network)
|
||||
//Stops cortical borers getting stuck in small networks. See: Security, Virology
|
||||
if(temp_vent.network.normal_members.len > 50)
|
||||
vents += temp_vent
|
||||
|
||||
var/list/candidates = get_candidates(BE_ALIEN,ALIEN_AFK_BRACKET,"alien","Syndicate")
|
||||
var/list/candidates = get_candidates(BE_ALIEN,ALIEN_AFK_BRACKET)
|
||||
while(spawncount > 0 && vents.len && candidates.len)
|
||||
var/obj/vent = pick_n_take(vents)
|
||||
var/client/C = pick_n_take(candidates)
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
var/obj/machinery/vending/originMachine
|
||||
|
||||
/datum/event/brand_intelligence/announce()
|
||||
command_alert("Rampant brand intelligence has been detected aboard [station_name()], please stand-by.", "Machine Learning Alert")
|
||||
command_announcement.Announce("Rampant brand intelligence has been detected aboard [station_name()], please stand-by.", "Machine Learning Alert")
|
||||
|
||||
/datum/event/brand_intelligence/start()
|
||||
for(var/obj/machinery/vending/V in machines)
|
||||
if(V.z != 1) continue
|
||||
if(!(V.z in config.station_levels)) continue
|
||||
vendingMachines.Add(V)
|
||||
|
||||
if(!vendingMachines.len)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
announceWhen = 5
|
||||
|
||||
/datum/event/cargo_bonus/announce()
|
||||
command_alert("Congratulations! [station_name()] was chosen for supply limit increase, please contact local cargo department for details!", "Supply Alert")
|
||||
command_announcement.Announce("Congratulations! [station_name()] was chosen for supply limit increase, please contact local cargo department for details!", "Supply Alert")
|
||||
|
||||
/datum/event/cargo_bonus/start()
|
||||
supply_controller.points+=rand(100,500)
|
||||
@@ -8,7 +8,7 @@
|
||||
endWhen = rand(600,1200)
|
||||
|
||||
/datum/event/carp_migration/announce()
|
||||
command_alert("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert")
|
||||
command_announcement.Announce("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert")
|
||||
|
||||
/datum/event/carp_migration/start()
|
||||
for(var/obj/effect/landmark/C in landmarks_list)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/proc/communications_blackout(var/silent = 1)
|
||||
if(!silent)
|
||||
command_alert("Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you-BZZT")
|
||||
command_announcement.Announce("Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you-BZZT")
|
||||
else // AIs will always know if there's a comm blackout, rogue AIs could then lie about comm blackouts in the future while they shutdown comms
|
||||
for(var/mob/living/silicon/ai/A in player_list)
|
||||
A << "<br>"
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
A << "<br>"
|
||||
|
||||
if(prob(30)) //most of the time, we don't want an announcement, so as to allow AIs to fake blackouts.
|
||||
command_alert(alert)
|
||||
command_announcement.Announce(alert)
|
||||
|
||||
/datum/event/communications_blackout/start()
|
||||
for(var/obj/machinery/telecomms/T in telecomms_list)
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
oneShot = 1
|
||||
|
||||
/datum/event/disease_outbreak/announce()
|
||||
command_alert("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
|
||||
world << sound('sound/AI/outbreak7.ogg')
|
||||
command_announcement.Announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", new_sound = 'sound/AI/outbreak7.ogg')
|
||||
|
||||
/datum/event/disease_outbreak/setup()
|
||||
announceWhen = rand(15, 30)
|
||||
@@ -17,7 +16,7 @@
|
||||
var/turf/T = get_turf(H)
|
||||
if(!T)
|
||||
continue
|
||||
if(T.z != 1)
|
||||
if(!(T.z in config.station_levels))
|
||||
continue
|
||||
for(var/datum/disease/D in H.viruses)
|
||||
foundAlready = 1
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
var/lightsoutRange = 25
|
||||
|
||||
/datum/event/electrical_storm/announce()
|
||||
command_alert("An electrical storm has been detected in your area, please repair potential electronic overloads.", "Electrical Storm Alert")
|
||||
command_announcement.Announce("An electrical storm has been detected in your area, please repair potential electronic overloads.", "Electrical Storm Alert")
|
||||
|
||||
/datum/event/electrical_storm/start()
|
||||
var/list/epicentreList = list()
|
||||
|
||||
@@ -135,8 +135,7 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 100, list(ASSIGNMENT_JANITOR = 100)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 0, list(ASSIGNMENT_ENGINEER = 30, ASSIGNMENT_GARDENER = 50)),
|
||||
// NON-BAY EVENTS
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Cargo Bonus", /datum/event/cargo_bonus, 150),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mass Hallucination",/datum/event/mass_hallucination,200),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Cargo Bonus", /datum/event/cargo_bonus, 100)
|
||||
)
|
||||
|
||||
/datum/event_container/moderate
|
||||
@@ -145,9 +144,9 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Nothing", /datum/event/nothing, 1230),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 100, list(ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_SECURITY = 20), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 20, list(ASSIGNMENT_SECURITY = 20)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space vines", /datum/event/spacevine, 200, list(ASSIGNMENT_ENGINEER = 10)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Vines", /datum/event/spacevine, 200, list(ASSIGNMENT_ENGINEER = 10)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_shower, 0, list(ASSIGNMENT_ENGINEER = 20)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meaty Ores", /datum/event/dust/meaty, 0, list(ASSIGNMENT_ENGINEER = 20)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meaty Ores", /datum/event/dust/meaty, 0, list(ASSIGNMENT_ENGINEER = 30)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(ASSIGNMENT_AI = 150, ASSIGNMENT_SECURITY = 120)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, 0, list(ASSIGNMENT_SECURITY = 100)),
|
||||
// new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 200, list(ASSIGNMENT_ENGINEER = 60)),
|
||||
@@ -156,18 +155,19 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Viral Infection", /datum/event/viral_infection, 0, list(ASSIGNMENT_MEDICAL = 150)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, 100, list(ASSIGNMENT_SECURITY = 30), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ionstorm, 0, list(ASSIGNMENT_AI = 50, ASSIGNMENT_CYBORG = 50, ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_SCIENTIST = 5)),
|
||||
new /datum/event_meta/alien(EVENT_LEVEL_MODERATE, "Alien Infestation", /datum/event/alien_infestation, 2.5, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5),
|
||||
new /datum/event_meta/ninja(EVENT_LEVEL_MODERATE, "Space Ninja", /datum/event/space_ninja, 0, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5),
|
||||
new /datum/event_meta/alien(EVENT_LEVEL_MODERATE, "Alien Infestation", /datum/event/alien_infestation, 0, list(ASSIGNMENT_SECURITY = 20), 1),
|
||||
new /datum/event_meta/ninja(EVENT_LEVEL_MODERATE, "Space Ninja", /datum/event/space_ninja, 0, list(ASSIGNMENT_SECURITY = 15), 1),
|
||||
// NON-BAY EVENTS
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 50, list(ASSIGNMENT_ENGINEER = 50)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Mass Hallucination", /datum/event/mass_hallucination, 300),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 50, list(ASSIGNMENT_ENGINEER = 50)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Dimensional Tear", /datum/event/tear, 0, list(ASSIGNMENT_SECURITY = 25)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Vent Clog", /datum/event/vent_clog, 250),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Wormholes", /datum/event/wormholes, 150),
|
||||
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Pyro Anomaly", /datum/event/anomaly/anomaly_pyro, 100, list(ASSIGNMENT_ENGINEER = 60)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Vortex Anomaly", /datum/event/anomaly/anomaly_vortex, 50, list(ASSIGNMENT_ENGINEER = 25)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Bluespace Anomaly", /datum/event/anomaly/anomaly_bluespace, 50, list(ASSIGNMENT_ENGINEER = 25)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Flux Anomaly", /datum/event/anomaly/anomaly_flux, 50, list(ASSIGNMENT_ENGINEER = 50)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravitational Anomaly", /datum/event/anomaly/anomaly_grav, 200),
|
||||
// new /datum/event_meta(EVENT_LEVEL_MODERATE, "Pyro Anomaly", /datum/event/anomaly/anomaly_pyro, 100, list(ASSIGNMENT_ENGINEER = 60)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Vortex Anomaly", /datum/event/anomaly/anomaly_vortex, 50, list(ASSIGNMENT_ENGINEER = 25)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Bluespace Anomaly", /datum/event/anomaly/anomaly_bluespace, 50, list(ASSIGNMENT_ENGINEER = 25)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Flux Anomaly", /datum/event/anomaly/anomaly_flux, 50, list(ASSIGNMENT_ENGINEER = 50)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravitational Anomaly", /datum/event/anomaly/anomaly_grav, 200),
|
||||
)
|
||||
|
||||
/datum/event_container/major
|
||||
|
||||
@@ -79,7 +79,7 @@ var/global/list/possibleEvents = list()
|
||||
if(!spacevines_spawned)
|
||||
possibleEvents[/datum/event/spacevine] = 10 + 5 * active_with_role["Engineer"]
|
||||
if(minutes_passed >= 30) // Give engineers time to set up engine
|
||||
possibleEvents[/datum/event/anomaly/anomaly_pyro] = 100 + 60 * active_with_role["Engineer"]
|
||||
// possibleEvents[/datum/event/anomaly/anomaly_pyro] = 100 + 60 * active_with_role["Engineer"]
|
||||
possibleEvents[/datum/event/anomaly/anomaly_vortex] = 50 + 25 * active_with_role["Engineer"]
|
||||
possibleEvents[/datum/event/anomaly/anomaly_bluespace] = 50 + 25 * active_with_role["Engineer"]
|
||||
possibleEvents[/datum/event/anomaly/anomaly_flux] = 50 + 50 * active_with_role["Engineer"]
|
||||
@@ -152,10 +152,7 @@ var/global/list/possibleEvents = list()
|
||||
|
||||
/*switch(picked_event)
|
||||
if("Meteor")
|
||||
command_alert("Meteors have been detected on collision course with the station.", "Meteor Alert")
|
||||
for(var/mob/M in player_list)
|
||||
if(!istype(M,/mob/new_player))
|
||||
M << sound('sound/AI/meteors.ogg')
|
||||
command_announcement.Announce("Meteors have been detected on collision course with the station.", "Meteor Alert", new_sound = 'sound/AI/meteors.ogg')
|
||||
spawn(100)
|
||||
meteor_wave(10)
|
||||
spawn_meteors()
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
var/window_y = 600
|
||||
var/report_at_round_end = 0
|
||||
var/table_options = " align='center'"
|
||||
var/head_options = " style='font-weight:bold;'"
|
||||
var/row_options1 = " width='85px'"
|
||||
var/row_options2 = " width='260px'"
|
||||
var/row_options3 = " width='150px'"
|
||||
@@ -87,7 +88,7 @@
|
||||
html += "<div class='block'>"
|
||||
html += "<h2>Available [severity_to_string[selected_event_container.severity]] Events (queued & running events will not be displayed)</h2>"
|
||||
html += "<table[table_options]>"
|
||||
html += "<tr><td[row_options2]>Name </td><td>Weight </td><td>MinWeight </td><td>MaxWeight </td><td>OneShot </td><td>Enabled </td><td><span class='alert'>CurrWeight </span></td><td>Remove</td></tr>"
|
||||
html += "<tr[head_options]><td[row_options2]>Name </td><td>Weight </td><td>MinWeight </td><td>MaxWeight </td><td>OneShot </td><td>Enabled </td><td><span class='alert'>CurrWeight </span></td><td>Remove</td></tr>"
|
||||
for(var/datum/event_meta/EM in selected_event_container.available_events)
|
||||
html += "<tr>"
|
||||
html += "<td>[EM.name]</td>"
|
||||
@@ -105,7 +106,7 @@
|
||||
html += "<div class='block'>"
|
||||
html += "<h2>Add Event</h2>"
|
||||
html += "<table[table_options]>"
|
||||
html += "<tr><td[row_options2]>Name</td><td[row_options2]>Type</td><td[row_options1]>Weight</td><td[row_options1]>OneShot</td></tr>"
|
||||
html += "<tr [head_options]><td[row_options2]>Name</td><td[row_options2]>Type</td><td[row_options1]>Weight</td><td[row_options1]>OneShot</td></tr>"
|
||||
html += "<tr>"
|
||||
html += "<td><A align='right' href='?src=\ref[src];set_name=\ref[new_event]'>[new_event.name ? new_event.name : "Enter Event"]</A></td>"
|
||||
html += "<td><A align='right' href='?src=\ref[src];set_type=\ref[new_event]'>[new_event.event_type ? new_event.event_type : "Select Type"]</A></td>"
|
||||
@@ -121,7 +122,7 @@
|
||||
html += "<h2>Event Start</h2>"
|
||||
|
||||
html += "<table[table_options]>"
|
||||
html += "<tr><td[row_options1]>Severity</td><td[row_options1]>Starts At</td><td[row_options1]>Starts In</td><td[row_options3]>Adjust Start</td><td[row_options1]>Pause</td><td[row_options1]>Interval Mod</td></tr>"
|
||||
html += "<tr[head_options]><td[row_options1]>Severity</td><td[row_options1]>Starts At</td><td[row_options1]>Starts In</td><td[row_options3]>Adjust Start</td><td[row_options1]>Pause</td><td[row_options1]>Interval Mod</td></tr>"
|
||||
for(var/severity = EVENT_LEVEL_MUNDANE to EVENT_LEVEL_MAJOR)
|
||||
var/datum/event_container/EC = event_containers[severity]
|
||||
var/next_event_at = max(0, EC.next_event_time - world.time)
|
||||
@@ -148,7 +149,7 @@
|
||||
html += "<div class='block'>"
|
||||
html += "<h2>Next Event</h2>"
|
||||
html += "<table[table_options]>"
|
||||
html += "<tr><td[row_options1]>Severity</td><td[row_options2]>Name</td><td[row_options3]>Event Rotation</td><td>Clear</td></tr>"
|
||||
html += "<tr[head_options]><td[row_options1]>Severity</td><td[row_options2]>Name</td><td[row_options3]>Event Rotation</td><td>Clear</td></tr>"
|
||||
for(var/severity = EVENT_LEVEL_MUNDANE to EVENT_LEVEL_MAJOR)
|
||||
var/datum/event_container/EC = event_containers[severity]
|
||||
var/datum/event_meta/EM = EC.next_event
|
||||
@@ -165,7 +166,7 @@
|
||||
html += "<h2>Running Events</h2>"
|
||||
html += "Estimated times, affected by master controller delays."
|
||||
html += "<table[table_options]>"
|
||||
html += "<tr><td[row_options1]>Severity</td><td[row_options2]>Name</td><td[row_options1]>Ends At</td><td[row_options1]>Ends In</td><td[row_options3]>Stop</td></tr>"
|
||||
html += "<tr[head_options]><td[row_options1]>Severity</td><td[row_options2]>Name</td><td[row_options1]>Ends At</td><td[row_options1]>Ends In</td><td[row_options3]>Stop</td></tr>"
|
||||
for(var/datum/event/E in active_events)
|
||||
if(!E.event_meta)
|
||||
continue
|
||||
|
||||
@@ -8,9 +8,7 @@
|
||||
power_failure(0)
|
||||
|
||||
/datum/event/grid_check/announce()
|
||||
command_alert("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Automated Grid Check")
|
||||
for(var/mob/M in player_list)
|
||||
M << sound('sound/AI/poweroff.ogg')
|
||||
command_announcement.Announce("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Automated Grid Check", new_sound = 'sound/AI/poweroff.ogg')
|
||||
|
||||
/datum/event/grid_check/end()
|
||||
power_restore()
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
|
||||
|
||||
/datum/event/infestation/announce()
|
||||
command_alert("Bioscans indicate that [vermstring] have been breeding in [locstring]. Clear them out, before this starts to affect productivity.", "Lifesign Alert")
|
||||
command_announcement.Announce("Bioscans indicate that [vermstring] have been breeding in [locstring]. Clear them out, before this starts to affect productivity.", "Lifesign Alert")
|
||||
|
||||
#undef LOC_KITCHEN
|
||||
#undef LOC_ATMOS
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
/datum/event/ionstorm/announce()
|
||||
endWhen = rand(500, 1500)
|
||||
// command_alert("The station has entered an ion storm. Monitor all electronic equipment for malfunctions", "Anomaly Alert")
|
||||
// command_announcement.Announce("The station has entered an ion storm. Monitor all electronic equipment for malfunctions", "Anomaly Alert")
|
||||
for (var/mob/living/carbon/human/player in world)
|
||||
if(player.client)
|
||||
players += player.real_name
|
||||
@@ -86,7 +86,7 @@
|
||||
/datum/event/ionstorm/end()
|
||||
spawn(rand(5000,8000))
|
||||
if(prob(50))
|
||||
command_alert("It has come to our attention that the station passed through an ion storm. Please monitor all electronic equipment for malfunctions.", "Anomaly Alert")
|
||||
command_announcement.Announce("It has come to our attention that the station passed through an ion storm. Please monitor all electronic equipment for malfunctions.", "Anomaly Alert")
|
||||
|
||||
/*
|
||||
/proc/IonStorm(botEmagChance = 10)
|
||||
@@ -212,21 +212,21 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
|
||||
spawn(0)
|
||||
world << "Started processing APCs"
|
||||
for (var/obj/machinery/power/apc/APC in world)
|
||||
if(APC.z == 1)
|
||||
if((APC.z in config.station_levels))
|
||||
APC.ion_act()
|
||||
apcnum++
|
||||
world << "Finished processing APCs. Processed: [apcnum]"
|
||||
spawn(0)
|
||||
world << "Started processing SMES"
|
||||
for (var/obj/machinery/power/smes/SMES in world)
|
||||
if(SMES.z == 1)
|
||||
if((SMES.z in config.station_levels))
|
||||
SMES.ion_act()
|
||||
smesnum++
|
||||
world << "Finished processing SMES. Processed: [smesnum]"
|
||||
spawn(0)
|
||||
world << "Started processing AIRLOCKS"
|
||||
for (var/obj/machinery/door/airlock/D in world)
|
||||
if(D.z == 1)
|
||||
if((D.z in config.station_levels))
|
||||
//if(length(D.req_access) > 0 && !(12 in D.req_access)) //not counting general access and maintenance airlocks
|
||||
airlocknum++
|
||||
spawn(0)
|
||||
@@ -235,7 +235,7 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
|
||||
spawn(0)
|
||||
world << "Started processing FIREDOORS"
|
||||
for (var/obj/machinery/door/firedoor/D in world)
|
||||
if(D.z == 1)
|
||||
if((D.z in config.station_levels))
|
||||
firedoornum++;
|
||||
spawn(0)
|
||||
D.ion_act()
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
if(!(C.species.flags & IS_SYNTHETIC))
|
||||
C.hallucination += rand(50, 100)
|
||||
/datum/event/mass_hallucination/announce()
|
||||
command_alert("It seems that station [station_name()] is passing through a minor radiation field, this may cause some hallucination, but no further damage")
|
||||
command_announcement.Announce("It seems that station [station_name()] is passing through a minor radiation field, this may cause some hallucination, but no further damage")
|
||||
@@ -9,15 +9,14 @@
|
||||
endWhen = rand(10,25) * 3
|
||||
|
||||
/datum/event/meteor_wave/announce()
|
||||
command_alert("Meteors have been detected on collision course with the station.", "Meteor Alert")
|
||||
world << sound('sound/AI/meteors.ogg')
|
||||
|
||||
command_announcement.Announce("Meteors have been detected on collision course with the station.", "Meteor Alert", new_sound = 'sound/AI/meteors.ogg')
|
||||
|
||||
/datum/event/meteor_wave/tick()
|
||||
if(IsMultiple(activeFor, 3))
|
||||
spawn_meteors(rand(2,5))
|
||||
|
||||
/datum/event/meteor_wave/end()
|
||||
command_alert("The station has cleared the meteor storm.", "Meteor Alert")
|
||||
command_announcement.Announce("The station has cleared the meteor storm.", "Meteor Alert")
|
||||
|
||||
//
|
||||
/datum/event/meteor_shower
|
||||
@@ -30,7 +29,7 @@
|
||||
waves = rand(1,4)
|
||||
|
||||
/datum/event/meteor_shower/announce()
|
||||
command_alert("The station is now in a meteor shower.", "Meteor Alert")
|
||||
command_announcement.Announce("The station is now in a meteor shower.", "Meteor Alert")
|
||||
|
||||
//meteor showers are lighter and more common,
|
||||
/datum/event/meteor_shower/tick()
|
||||
@@ -44,4 +43,4 @@
|
||||
endWhen = next_meteor + 1
|
||||
|
||||
/datum/event/meteor_shower/end()
|
||||
command_alert("The station has cleared the meteor shower", "Meteor Alert")
|
||||
command_announcement.Announce("The station has cleared the meteor shower", "Meteor Alert")
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
/datum/event/prison_break/announce()
|
||||
if(prisonAreas && prisonAreas.len > 0)
|
||||
command_alert("[pick("Gr3y.T1d3 virus","Malignant trojan")] detected in [station_name()] imprisonment subroutines. Recommend station AI involvement.", "Security Alert")
|
||||
command_announcement.Announce("[pick("Gr3y.T1d3 virus","Malignant trojan")] detected in [station_name()] imprisonment subroutines. Recommend station AI involvement.", "Security Alert")
|
||||
else
|
||||
world.log << "ERROR: Could not initate grey-tide. Unable find prison or brig area."
|
||||
kill()
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
/datum/event/prison_break/announce()
|
||||
if(prisonAreas && prisonAreas.len > 0)
|
||||
command_alert("[pick("Gr3y.T1d3 virus","Malignant trojan")] detected in [station_name()] imprisonment subroutines. Recommend station AI involvement.", "Security Alert")
|
||||
command_announcement.Announce("[pick("Gr3y.T1d3 virus","Malignant trojan")] detected in [station_name()] imprisonment subroutines. Recommend station AI involvement.", "Security Alert")
|
||||
else
|
||||
world.log << "ERROR: Could not initate grey-tide. Unable find prison or brig area."
|
||||
kill()
|
||||
|
||||
@@ -22,11 +22,10 @@
|
||||
|
||||
/datum/event/radiation_storm/start()
|
||||
spawn()
|
||||
world << sound('sound/AI/radiation.ogg')
|
||||
command_alert("High levels of radiation detected near the station. Please evacuate into one of the shielded maintenance tunnels.", "Anomaly Alert")
|
||||
command_announcement.Announce("High levels of radiation detected near the station. Please evacuate into one of the shielded maintenance tunnels.", "Anomaly Alert", new_sound = 'sound/AI/radiation.ogg')
|
||||
|
||||
for(var/area/A in world)
|
||||
if(A.z != 1 || is_safe_zone(A))
|
||||
if(!(A.z in config.station_levels) || is_safe_zone(A))
|
||||
continue
|
||||
A.radiation_alert()
|
||||
|
||||
@@ -36,7 +35,7 @@
|
||||
sleep(600)
|
||||
|
||||
|
||||
command_alert("The station has entered the radiation belt. Please remain in a sheltered area until we have passed the radiation belt.", "Anomaly Alert")
|
||||
command_announcement.Announce("The station has entered the radiation belt. Please remain in a sheltered area until we have passed the radiation belt.", "Anomaly Alert")
|
||||
|
||||
for(var/i = 0, i < 10, i++)
|
||||
for(var/mob/living/carbon/human/H in living_mob_list)
|
||||
@@ -45,7 +44,7 @@
|
||||
var/turf/T = get_turf(H)
|
||||
if(!T)
|
||||
continue
|
||||
if(T.z != 1 || is_safe_zone(T.loc))
|
||||
if(!(T.z in config.station_levels) || is_safe_zone(T.loc))
|
||||
continue
|
||||
|
||||
if(istype(H,/mob/living/carbon/human))
|
||||
@@ -64,16 +63,16 @@
|
||||
var/turf/T = get_turf(M)
|
||||
if(!T)
|
||||
continue
|
||||
if(T.z != 1)
|
||||
if(!(T.z in config.station_levels))
|
||||
continue
|
||||
M.apply_effect((rand(5,25)),IRRADIATE,0)
|
||||
sleep(100)
|
||||
|
||||
|
||||
command_alert("The station has passed the radiation belt. Please report to medbay if you experience any unusual symptoms. Maintenance will lose all access again shortly.", "Anomaly Alert")
|
||||
command_announcement.Announce("The station has passed the radiation belt. Please report to medbay if you experience any unusual symptoms. Maintenance will lose all access again shortly.", "Anomaly Alert")
|
||||
|
||||
for(var/area/A in world)
|
||||
if(A.z != 1 || is_safe_zone(A))
|
||||
if(!(A.z in config.station_levels) || is_safe_zone(A))
|
||||
continue
|
||||
A.reset_radiation_alert()
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
msg = "Contact has been lost with a combat drone wing operating out of the NMV Icarus. If any are sighted in the area, approach with caution."
|
||||
else
|
||||
msg = "Unidentified hackers have targetted a combat drone wing deployed from the NMV Icarus. If any are sighted in the area, approach with caution."
|
||||
command_alert(msg, "Rogue drone alert")
|
||||
command_announcement.Announce(msg, "Rogue drone alert")
|
||||
|
||||
|
||||
/datum/event/rogue_drone/tick()
|
||||
@@ -49,6 +49,6 @@
|
||||
num_recovered++
|
||||
|
||||
if(num_recovered > drones_list.len * 0.75)
|
||||
command_alert("Icarus drone control reports the malfunctioning wing has been recovered safely.", "Rogue drone alert")
|
||||
command_announcement.Announce("Icarus drone control reports the malfunctioning wing has been recovered safely.", "Rogue drone alert")
|
||||
else
|
||||
command_alert("Icarus drone control registers disappointment at the loss of the drones, but the survivors have been recovered.", "Rogue drone alert")
|
||||
command_announcement.Announce("Icarus drone control registers disappointment at the loss of the drones, but the survivors have been recovered.", "Rogue drone alert")
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
/datum/event/dust/meaty/announce()
|
||||
if(prob(16))
|
||||
command_alert("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert")
|
||||
command_announcement.Announce("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert")
|
||||
else
|
||||
command_alert("Meaty ores have been detected on collision course with the station.", "Meaty Ore Alert")
|
||||
world << sound('sound/AI/meteors.ogg')
|
||||
command_announcement.Announce("Meaty ores have been detected on collision course with the station.", "Meaty Ore Alert",new_sound = 'sound/AI/meteors.ogg')
|
||||
|
||||
/datum/event/dust/meaty/setup()
|
||||
qnty = rand(45,125)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
RS.start()
|
||||
RS.kill()
|
||||
for(var/area/A)
|
||||
if(A.z != 1) continue //Spook on main station only.
|
||||
if(!(A.z in config.station_levels)) continue //Spook on main station only.
|
||||
if(A.luminosity) continue
|
||||
// if(A.lighting_space) continue
|
||||
if(A.type == /area) continue
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
/datum/event/wormholes/start()
|
||||
for(var/turf/simulated/floor/T in world)
|
||||
if(T.z == 1)
|
||||
if((T.z in config.station_levels))
|
||||
pick_turfs += T
|
||||
|
||||
for(var/i = 1, i <= number_of_wormholes, i++)
|
||||
@@ -21,10 +21,7 @@
|
||||
wormholes += new /obj/effect/portal/wormhole(T, null, null, -1)
|
||||
|
||||
/datum/event/wormholes/announce()
|
||||
command_alert("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert")
|
||||
for(var/mob/M in player_list)
|
||||
if(!istype(M, /mob/new_player))
|
||||
M << sound('sound/AI/spanomalies.ogg')
|
||||
command_announcement.Announce("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert", new_sound = 'sound/AI/spanomalies.ogg')
|
||||
|
||||
/datum/event/wormholes/tick()
|
||||
if(activeFor % shift_frequency == 0)
|
||||
|
||||
@@ -12,15 +12,13 @@
|
||||
sent_spiders_to_station = 1
|
||||
|
||||
/datum/event/spider_infestation/announce()
|
||||
command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert")
|
||||
world << sound('sound/AI/aliens.ogg')
|
||||
|
||||
command_announcement.Announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", new_sound = 'sound/AI/aliens.ogg')
|
||||
|
||||
/datum/event/spider_infestation/start()
|
||||
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in world)
|
||||
if(temp_vent.loc.z == 1 && !temp_vent.welded && temp_vent.network)
|
||||
if((temp_vent.loc.z in config.station_levels) && !temp_vent.welded && temp_vent.network)
|
||||
if(temp_vent.network.normal_members.len > 50)
|
||||
vents += temp_vent
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
var/obj/effect/tear/TE
|
||||
|
||||
/datum/event/tear/announce()
|
||||
command_alert("A tear in the fabric of space and time has opened. Expected location: [impact_area.name].", "Anomaly Alert")
|
||||
command_announcement.Announce("A tear in the fabric of space and time has opened. Expected location: [impact_area.name].", "Anomaly Alert")
|
||||
|
||||
|
||||
/datum/event/tear/start()
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
/var/global/sent_aliens_to_station = 0
|
||||
|
||||
/datum/event/alien_infestation
|
||||
announceWhen = 400
|
||||
|
||||
var/spawncount = 1
|
||||
var/successSpawn = 0 //So we don't make a command report if nothing gets spawned.
|
||||
|
||||
|
||||
/datum/event/alien_infestation/setup()
|
||||
announceWhen = rand(announceWhen, announceWhen + 50)
|
||||
spawncount = rand(1, 2)
|
||||
sent_aliens_to_station = 1
|
||||
|
||||
|
||||
/datum/event/alien_infestation/announce()
|
||||
if(successSpawn)
|
||||
command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert")
|
||||
world << sound('sound/AI/aliens.ogg')
|
||||
|
||||
|
||||
/datum/event/alien_infestation/start()
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in world)
|
||||
if(temp_vent.loc.z == 1 && !temp_vent.welded && temp_vent.network)
|
||||
if(temp_vent.network.normal_members.len > 50) //Stops Aliens getting stuck in small networks. See: Security, Virology
|
||||
vents += temp_vent
|
||||
|
||||
var/list/candidates = get_candidates(BE_ALIEN,ALIEN_AFK_BRACKET,"alien","Syndicate")
|
||||
|
||||
while(spawncount > 0 && vents.len && candidates.len)
|
||||
var/obj/vent = pick_n_take(vents)
|
||||
var/client/C = pick_n_take(candidates)
|
||||
if(C)
|
||||
respawnable_list -= C
|
||||
var/mob/living/carbon/alien/larva/new_xeno = new(vent.loc)
|
||||
new_xeno.key = C.key
|
||||
|
||||
spawncount--
|
||||
successSpawn = 1
|
||||
@@ -15,7 +15,7 @@
|
||||
setup(safety_loop)
|
||||
|
||||
/datum/event/anomaly/announce()
|
||||
command_alert("Localized hyper-energetic flux wave detected on long range scanners. Expected location of impact: [impact_area.name].", "Anomaly Alert")
|
||||
command_announcement.Announce("Localized hyper-energetic flux wave detected on long range scanners. Expected location of impact: [impact_area.name].", "Anomaly Alert")
|
||||
|
||||
/datum/event/anomaly/start()
|
||||
var/turf/T = pick(get_area_turfs(impact_area))
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
endWhen = 160
|
||||
|
||||
/datum/event/anomaly/anomaly_bluespace/announce()
|
||||
command_alert("Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
|
||||
command_announcement.Announce("Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
|
||||
|
||||
|
||||
/datum/event/anomaly/anomaly_bluespace/start()
|
||||
@@ -21,7 +21,7 @@
|
||||
var/obj/item/device/radio/beacon/chosen
|
||||
var/list/possible = list()
|
||||
for(var/obj/item/device/radio/beacon/W in world)
|
||||
if(W.z != 1)
|
||||
if(!(W.z in config.station_levels))
|
||||
continue
|
||||
possible += W
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
var/turf/TO = get_turf(chosen) // the turf of origin we're travelling TO
|
||||
|
||||
playsound(TO, 'sound/effects/phasein.ogg', 100, 1)
|
||||
command_alert("Massive bluespace translocation detected.", "Anomaly Alert")
|
||||
command_announcement.Announce("Massive bluespace translocation detected.", "Anomaly Alert")
|
||||
|
||||
var/list/flashers = list()
|
||||
for(var/mob/living/carbon/human/M in viewers(TO, null))
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
endWhen = 180
|
||||
|
||||
/datum/event/anomaly/anomaly_flux/announce()
|
||||
command_alert("Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
|
||||
command_announcement.Announce("Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
|
||||
|
||||
/datum/event/anomaly/anomaly_flux/start()
|
||||
var/turf/T = pick(get_area_turfs(impact_area))
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
endWhen = 70
|
||||
|
||||
/datum/event/anomaly/anomaly_grav/announce()
|
||||
command_alert("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
|
||||
command_announcement.Announce("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
|
||||
|
||||
/datum/event/anomaly/anomaly_grav/start()
|
||||
var/turf/T = pick(get_area_turfs(impact_area))
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user