mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 19:47:22 +01:00
Merge remote-tracking branch 'upstream/master' into third_times_the_charm_questionmark
Conflicts: code/game/objects/items.dm
This commit is contained in:
@@ -56,10 +56,11 @@ var/global/nologevent = 0
|
||||
body += "[admin_jump_link(M, src)]\] </b><br>"
|
||||
|
||||
body += "<b>Mob type:</b> [M.type]<br>"
|
||||
if(M.client.related_accounts_cid.len)
|
||||
body += "<b>Related accounts by CID:</b> [list2text(M.client.related_accounts_cid, " - ")]<br>"
|
||||
if(M.client.related_accounts_ip.len)
|
||||
body += "<b>Related accounts by IP:</b> [list2text(M.client.related_accounts_ip, " - ")]<br><br>"
|
||||
if(M.client)
|
||||
if(M.client.related_accounts_cid.len)
|
||||
body += "<b>Related accounts by CID:</b> [list2text(M.client.related_accounts_cid, " - ")]<br>"
|
||||
if(M.client.related_accounts_ip.len)
|
||||
body += "<b>Related accounts by IP:</b> [list2text(M.client.related_accounts_ip, " - ")]<br><br>"
|
||||
|
||||
body += "<A href='?_src_=holder;boot2=\ref[M]'>Kick</A> | "
|
||||
body += "<A href='?_src_=holder;warn=[M.ckey]'>Warn</A> | "
|
||||
|
||||
@@ -6,18 +6,50 @@
|
||||
if(!dbcon.IsConnected())
|
||||
src << "<span class='danger'>Failed to establish database connection.</span>"
|
||||
return
|
||||
var/returned = create_poll_function()
|
||||
if(returned)
|
||||
var/DBQuery/query_check_option = dbcon.NewQuery("SELECT id FROM [format_table_name("poll_option")] WHERE pollid = [returned]")
|
||||
if(!query_check_option.Execute())
|
||||
var/err = query_check_option.ErrorMsg()
|
||||
log_game("SQL ERROR obtaining id from poll_option table. Error : \[[err]\]\n")
|
||||
return
|
||||
if(query_check_option.NextRow())
|
||||
var/DBQuery/query_log_get = dbcon.NewQuery("SELECT polltype, question, adminonly FROM [format_table_name("poll_question")] WHERE id = [returned]")
|
||||
if(!query_log_get.Execute())
|
||||
var/err = query_log_get.ErrorMsg()
|
||||
log_game("SQL ERROR obtaining polltype, question, adminonly from poll_question table. Error : \[[err]\]\n")
|
||||
return
|
||||
if(query_log_get.NextRow())
|
||||
var/polltype = query_log_get.item[1]
|
||||
var/question = query_log_get.item[2]
|
||||
var/adminonly = query_log_get.item[3]
|
||||
log_admin("[key_name(usr)] has created a new server poll. Poll Type: [polltype] - Admin Only: [adminonly ? "Yes" : "No"] - Question: [question]")
|
||||
message_admins("[key_name_admin(usr)] has created a new server poll. Poll Type: [polltype] - Admin Only: [adminonly ? "Yes" : "No"]<br>Question: [question]")
|
||||
else
|
||||
src << "Poll question created without any options, poll will be deleted."
|
||||
var/DBQuery/query_del_poll = dbcon.NewQuery("DELETE FROM [format_table_name("poll_question")] WHERE id = [returned]")
|
||||
if(!query_del_poll.Execute())
|
||||
var/err = query_del_poll.ErrorMsg()
|
||||
log_game("SQL ERROR deleting poll question [returned]. Error : \[[err]\]\n")
|
||||
return
|
||||
|
||||
/client/proc/create_poll_function()
|
||||
if(!check_rights(R_PERMISSIONS))
|
||||
return
|
||||
var/polltype = input("Choose poll type.","Poll Type") in list("Single Option","Text Reply","Rating","Multiple Choice")
|
||||
var/choice_amount = 0
|
||||
switch(polltype)
|
||||
if("Single Option")
|
||||
polltype = "OPTION"
|
||||
polltype = POLLTYPE_OPTION
|
||||
if("Text Reply")
|
||||
polltype = "TEXT"
|
||||
polltype = POLLTYPE_TEXT
|
||||
if("Rating")
|
||||
polltype = "NUMVAL"
|
||||
polltype = POLLTYPE_RATING
|
||||
if("Multiple Choice")
|
||||
polltype = "MULTICHOICE"
|
||||
choice_amount = input("How many choices should be allowed?","Select choice amount") as num
|
||||
polltype = POLLTYPE_MULTI
|
||||
choice_amount = input("How many choices should be allowed?","Select choice amount") as num|null
|
||||
if(!choice_amount)
|
||||
return
|
||||
var/starttime = SQLtime()
|
||||
var/endtime = input("Set end time for poll as format YYYY-MM-DD HH:MM:SS. All times in server time. HH:MM:SS is optional and 24-hour. Must be later than starting time for obvious reasons.", "Set end time", SQLtime()) as text
|
||||
if(!endtime)
|
||||
@@ -33,7 +65,7 @@
|
||||
if(!endtime)
|
||||
src << "Datetime entered is invalid."
|
||||
return
|
||||
var/DBQuery/query_time_later = dbcon.NewQuery("SELECT DATE('[endtime]') < NOW()")
|
||||
var/DBQuery/query_time_later = dbcon.NewQuery("SELECT TIMESTAMP('[endtime]') < NOW()")
|
||||
if(!query_time_later.Execute())
|
||||
var/err = query_time_later.ErrorMsg()
|
||||
log_game("SQL ERROR comparing endtime to NOW(). Error : \[[err]\]\n")
|
||||
@@ -52,7 +84,7 @@
|
||||
else
|
||||
return
|
||||
var/sql_ckey = sanitizeSQL(ckey)
|
||||
var/question = input("Write your question","Question") as message
|
||||
var/question = input("Write your question","Question") as message|null
|
||||
if(!question)
|
||||
return
|
||||
question = sanitizeSQL(question)
|
||||
@@ -61,6 +93,10 @@
|
||||
var/err = query_polladd_question.ErrorMsg()
|
||||
log_game("SQL ERROR adding new poll question to table. Error : \[[err]\]\n")
|
||||
return
|
||||
if(polltype == POLLTYPE_TEXT)
|
||||
log_admin("[key_name(usr)] has created a new server poll. Poll type: [polltype] - Admin Only: [adminonly ? "Yes" : "No"] - Question: [question]")
|
||||
message_admins("[key_name_admin(usr)] has created a new server poll. Poll type: [polltype] - Admin Only: [adminonly ? "Yes" : "No"]<br>Question: [question]")
|
||||
return
|
||||
var/pollid = 0
|
||||
var/DBQuery/query_get_id = dbcon.NewQuery("SELECT id FROM [format_table_name("poll_question")] WHERE question = '[question]' AND starttime = '[starttime]' AND endtime = '[endtime]' AND createdby_ckey = '[sql_ckey]' AND createdby_ip = '[address]'")
|
||||
if(!query_get_id.Execute())
|
||||
@@ -69,13 +105,11 @@
|
||||
return
|
||||
if(query_get_id.NextRow())
|
||||
pollid = query_get_id.item[1]
|
||||
if(polltype == "TEXT")
|
||||
return
|
||||
var/add_option = 1
|
||||
while(add_option)
|
||||
var/option = input("Write your option","Option") as message
|
||||
var/option = input("Write your option",POLLTYPE_OPTION) as message|null
|
||||
if(!option)
|
||||
return
|
||||
return pollid
|
||||
option = sanitizeSQL(option)
|
||||
var/percentagecalc
|
||||
switch(alert("Calculate option results as percentage?",,"Yes","No","Cancel"))
|
||||
@@ -84,42 +118,45 @@
|
||||
if("No")
|
||||
percentagecalc = 0
|
||||
else
|
||||
return
|
||||
return pollid
|
||||
var/minval = 0
|
||||
var/maxval = 0
|
||||
var/descmin = ""
|
||||
var/descmid = ""
|
||||
var/descmax = ""
|
||||
if(polltype == "NUMVAL")
|
||||
minval = input("Set minimum rating value.","Minimum rating") as num
|
||||
if(polltype == POLLTYPE_RATING)
|
||||
minval = input("Set minimum rating value.","Minimum rating") as num|null
|
||||
if(!minval)
|
||||
return
|
||||
maxval = input("Set maximum rating value.","Maximum rating") as num
|
||||
return pollid
|
||||
maxval = input("Set maximum rating value.","Maximum rating") as num|null
|
||||
if(!maxval)
|
||||
return
|
||||
return pollid
|
||||
if(minval >= maxval)
|
||||
src << "Minimum rating value can't be more than maximum rating value"
|
||||
return
|
||||
descmin = input("Optional: Set description for minimum rating","Minimum rating description") as message
|
||||
return pollid
|
||||
descmin = input("Optional: Set description for minimum rating","Minimum rating description") as message|null
|
||||
if(descmin)
|
||||
descmin = sanitizeSQL(descmin)
|
||||
descmid = input("Optional: Set description for median rating","Median rating description") as message
|
||||
else if(descmin == null)
|
||||
return pollid
|
||||
descmid = input("Optional: Set description for median rating","Median rating description") as message|null
|
||||
if(descmid)
|
||||
descmid = sanitizeSQL(descmid)
|
||||
descmax = input("Optional: Set description for maximum rating","Maximum rating description") as message
|
||||
else if(descmid == null)
|
||||
return pollid
|
||||
descmax = input("Optional: Set description for maximum rating","Maximum rating description") as message|null
|
||||
if(descmax)
|
||||
descmax = sanitizeSQL(descmax)
|
||||
else if(descmax == null)
|
||||
return pollid
|
||||
var/DBQuery/query_polladd_option = dbcon.NewQuery("INSERT INTO [format_table_name("poll_option")] (pollid, text, percentagecalc, minval, maxval, descmin, descmid, descmax) VALUES ('[pollid]', '[option]', '[percentagecalc]', '[minval]', '[maxval]', '[descmin]', '[descmid]', '[descmax]')")
|
||||
if(!query_polladd_option.Execute())
|
||||
var/err = query_polladd_option.ErrorMsg()
|
||||
log_game("SQL ERROR adding new poll option to table. Error : \[[err]\]\n")
|
||||
return
|
||||
switch(alert(" ",,"Add option","Finish","Cancel"))
|
||||
return pollid
|
||||
switch(alert(" ",,"Add option","Finish"))
|
||||
if("Add option")
|
||||
add_option = 1
|
||||
if("Finish")
|
||||
log_admin("[key_name(usr)] has created a new server poll. Poll type: [polltype] - Question: [question] - Admin Only: [adminonly ? "Yes" : "No"]")
|
||||
message_admins("[key_name_admin(usr)] has created a new server poll. Poll type: [polltype] - Question: [question] - Admin Only: [adminonly ? "Yes" : "No"]")
|
||||
add_option = 0
|
||||
else
|
||||
return
|
||||
return pollid
|
||||
@@ -2652,7 +2652,7 @@
|
||||
for(var/obj/item/clothing/under/W in world)
|
||||
W.icon_state = "schoolgirl"
|
||||
W.item_state = "w_suit"
|
||||
W._color = "schoolgirl"
|
||||
W.item_color = "schoolgirl"
|
||||
message_admins("[key_name_admin(usr)] activated Japanese Animes mode")
|
||||
world << sound('sound/AI/animes.ogg')
|
||||
if("eagles")//SCRAW
|
||||
|
||||
@@ -91,41 +91,38 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
|
||||
//send this msg to all admins
|
||||
var/admin_number_afk = 0
|
||||
var/list/mentorholders = list()
|
||||
var/list/modholders = list()
|
||||
var/list/adminholders = list()
|
||||
for(var/client/X in admins)
|
||||
if(check_rights(R_MOD|R_MENTOR, 0, X.mob))
|
||||
if(X.is_afk())
|
||||
admin_number_afk++
|
||||
modholders += X
|
||||
if(check_rights(R_ADMIN, 0, X.mob))
|
||||
if(X.is_afk())
|
||||
admin_number_afk++
|
||||
adminholders += X
|
||||
continue
|
||||
if(check_rights(R_MOD, 0, X.mob))
|
||||
modholders += X
|
||||
continue
|
||||
if(check_rights(R_MENTOR, 0, X.mob))
|
||||
mentorholders += X
|
||||
continue
|
||||
|
||||
switch(selected_type)
|
||||
if("Question")
|
||||
if(modholders.len)
|
||||
for(var/client/X in modholders)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
X << msg
|
||||
if(adminholders.len)
|
||||
for(var/client/X in adminholders)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
X << msg
|
||||
for(var/client/X in mentorholders + modholders + adminholders)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
X << msg
|
||||
if("Player Complaint")
|
||||
if(adminholders.len)
|
||||
for(var/client/X in adminholders)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
X << msg
|
||||
for(var/client/X in modholders + adminholders)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
X << msg
|
||||
|
||||
//show it to the person adminhelping too
|
||||
src << "<font color='blue'><b>[selected_type]</b>: [original_msg]</font>"
|
||||
|
||||
var/admin_number_present = admins.len - admin_number_afk
|
||||
var/admin_number_present = adminholders.len - admin_number_afk
|
||||
log_admin("[selected_type]: [key_name(src)]: [original_msg] - heard by [admin_number_present] non-AFK admins.")
|
||||
if(admin_number_present <= 0)
|
||||
if(!admin_number_afk)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/client/proc/Debug2()
|
||||
set category = "Debug"
|
||||
set name = "Debug-Game"
|
||||
|
||||
if(!check_rights(R_DEBUG))
|
||||
|
||||
if(!check_rights(R_DEBUG))
|
||||
return
|
||||
|
||||
if(Debug2)
|
||||
@@ -30,7 +30,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
set category = "Debug"
|
||||
set name = "Advanced ProcCall"
|
||||
|
||||
if(!check_rights(R_PROCCALL))
|
||||
if(!check_rights(R_PROCCALL))
|
||||
return
|
||||
|
||||
spawn(0)
|
||||
@@ -186,10 +186,10 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
/client/proc/Cell()
|
||||
set category = "Debug"
|
||||
set name = "Air Status in Location"
|
||||
|
||||
|
||||
if(!check_rights(R_DEBUG))
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
if(!mob)
|
||||
return
|
||||
var/turf/T = mob.loc
|
||||
@@ -211,9 +211,9 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
/client/proc/cmd_admin_robotize(var/mob/M in mob_list)
|
||||
set category = "Event"
|
||||
set name = "Make Robot"
|
||||
|
||||
|
||||
if(!check_rights(R_SPAWN))
|
||||
return
|
||||
return
|
||||
|
||||
if(!ticker)
|
||||
alert("Wait until the game starts")
|
||||
@@ -229,9 +229,9 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
/client/proc/cmd_admin_animalize(var/mob/M in mob_list)
|
||||
set category = "Event"
|
||||
set name = "Make Simple Animal"
|
||||
|
||||
|
||||
if(!check_rights(R_SPAWN))
|
||||
return
|
||||
return
|
||||
|
||||
if(!ticker)
|
||||
alert("Wait until the game starts")
|
||||
@@ -254,7 +254,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
set category = "Event"
|
||||
set name = "Make pAI"
|
||||
set desc = "Specify a location to spawn a pAI device, then specify a key to play that pAI"
|
||||
|
||||
|
||||
if(!check_rights(R_SPAWN))
|
||||
return
|
||||
|
||||
@@ -283,9 +283,9 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
/client/proc/cmd_admin_alienize(var/mob/M in mob_list)
|
||||
set category = "Event"
|
||||
set name = "Make Alien"
|
||||
|
||||
|
||||
if(!check_rights(R_SPAWN))
|
||||
return
|
||||
return
|
||||
|
||||
if(!ticker)
|
||||
alert("Wait until the game starts")
|
||||
@@ -303,9 +303,9 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
/client/proc/cmd_admin_slimeize(var/mob/M in mob_list)
|
||||
set category = "Event"
|
||||
set name = "Make slime"
|
||||
|
||||
|
||||
if(!check_rights(R_SPAWN))
|
||||
return
|
||||
return
|
||||
|
||||
if(!ticker)
|
||||
alert("Wait until the game starts")
|
||||
@@ -323,9 +323,9 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
/client/proc/cmd_admin_super(var/mob/M in mob_list)
|
||||
set category = "Event"
|
||||
set name = "Make Superhero"
|
||||
|
||||
|
||||
if(!check_rights(R_SPAWN))
|
||||
return
|
||||
return
|
||||
|
||||
if(!ticker)
|
||||
alert("Wait until the game starts")
|
||||
@@ -346,7 +346,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
set name = "Del-All"
|
||||
|
||||
if(!check_rights(R_DEBUG))
|
||||
return
|
||||
return
|
||||
|
||||
// to prevent REALLY stupid deletions
|
||||
var/blocked = list(/mob/living, /mob/living/carbon, /mob/living/carbon/human, /mob/dead, /mob/dead/observer, /mob/living/silicon, /mob/living/silicon/robot, /mob/living/silicon/ai)
|
||||
@@ -362,10 +362,10 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
/client/proc/cmd_debug_make_powernets()
|
||||
set category = "Debug"
|
||||
set name = "Make Powernets"
|
||||
|
||||
|
||||
if(!check_rights(R_DEBUG))
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
makepowernets()
|
||||
log_admin("[key_name(src)] has remade the powernet. makepowernets() called.")
|
||||
message_admins("[key_name_admin(src)] has remade the powernets. makepowernets() called.", 0)
|
||||
@@ -374,7 +374,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
/client/proc/cmd_admin_grantfullaccess(var/mob/M in mob_list)
|
||||
set category = "Admin"
|
||||
set name = "Grant Full Access"
|
||||
|
||||
|
||||
if(!check_rights(R_EVENT))
|
||||
return
|
||||
|
||||
@@ -410,9 +410,9 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
set name = "Assume direct control"
|
||||
set desc = "Direct intervention"
|
||||
|
||||
if(!check_rights(R_DEBUG|R_ADMIN))
|
||||
if(!check_rights(R_DEBUG|R_ADMIN))
|
||||
return
|
||||
|
||||
|
||||
if(M.ckey)
|
||||
if(alert("This mob is being controlled by [M.ckey]. Are you sure you wish to assume control of it? [M.ckey] will be made a ghost.",,"Yes","No") != "Yes")
|
||||
return
|
||||
@@ -431,7 +431,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
/client/proc/cmd_admin_areatest()
|
||||
set category = "Mapping"
|
||||
set name = "Test areas"
|
||||
|
||||
|
||||
if(!check_rights(R_DEBUG))
|
||||
return
|
||||
|
||||
@@ -522,14 +522,14 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
/client/proc/cmd_admin_dress(var/mob/living/carbon/human/M in mob_list)
|
||||
set category = "Event"
|
||||
set name = "Select equipment"
|
||||
|
||||
|
||||
if(!check_rights(R_EVENT))
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
if(!ishuman(M))
|
||||
alert("Invalid mob")
|
||||
return
|
||||
|
||||
|
||||
//log_admin("[key_name(src)] has alienized [M.key].")
|
||||
var/list/dresspacks = list(
|
||||
"strip",
|
||||
@@ -826,43 +826,43 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
M.equip_syndicate_commando()
|
||||
|
||||
if("nanotrasen officer")
|
||||
M.equip_if_possible(new /obj/item/clothing/under/rank/centcom/officer(M), slot_w_uniform)
|
||||
M.equip_if_possible(new /obj/item/clothing/shoes/centcom(M), slot_shoes)
|
||||
M.equip_if_possible(new /obj/item/clothing/gloves/color/white(M), slot_gloves)
|
||||
M.equip_if_possible(new /obj/item/device/radio/headset/heads/captain/alt(M), slot_l_ear)
|
||||
M.equip_if_possible(new /obj/item/clothing/head/beret/centcom/officer(M), slot_head)
|
||||
|
||||
M.equip_or_collect(new /obj/item/clothing/shoes/centcom(M), slot_shoes)
|
||||
M.equip_or_collect(new /obj/item/clothing/gloves/color/white(M), slot_gloves)
|
||||
M.equip_or_collect(new /obj/item/device/radio/headset/heads/captain/alt(M), slot_l_ear)
|
||||
M.equip_or_collect(new /obj/item/clothing/head/beret/centcom/officer(M), slot_head)
|
||||
|
||||
var/obj/item/device/pda/centcom/pda = new(M)
|
||||
pda.owner = M.real_name
|
||||
pda.ownjob = "Nanotrasen Navy Officer"
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
|
||||
M.equip_if_possible(pda, slot_r_store)
|
||||
M.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(M), slot_l_store)
|
||||
M.equip_if_possible(new /obj/item/weapon/gun/energy/pulse_rifle/pistol(M), slot_belt)
|
||||
M.equip_or_collect(pda, slot_r_store)
|
||||
M.equip_or_collect(new /obj/item/clothing/glasses/sunglasses(M), slot_l_store)
|
||||
M.equip_or_collect(new /obj/item/weapon/gun/energy/pulse_rifle/pistol(M), slot_belt)
|
||||
|
||||
var/obj/item/weapon/card/id/centcom/W = new(M)
|
||||
W.name = "[M.real_name]'s ID Card (Nanotrasen Navy Officer)"
|
||||
W.assignment = "Nanotrasen Navy Officer"
|
||||
W.access = get_centcom_access(W.assignment)
|
||||
W.registered_name = M.real_name
|
||||
M.equip_if_possible(W, slot_wear_id)
|
||||
M.equip_or_collect(W, slot_wear_id)
|
||||
|
||||
if("nanotrasen captain")
|
||||
M.equip_if_possible(new /obj/item/clothing/under/rank/centcom/captain(M), slot_w_uniform)
|
||||
M.equip_if_possible(new /obj/item/clothing/shoes/centcom(M), slot_shoes)
|
||||
M.equip_if_possible(new /obj/item/clothing/gloves/color/white(M), slot_gloves)
|
||||
M.equip_if_possible(new /obj/item/device/radio/headset/heads/captain/alt(M), slot_l_ear)
|
||||
M.equip_if_possible(new /obj/item/clothing/head/beret/centcom/captain(M), slot_head)
|
||||
M.equip_or_collect(new /obj/item/clothing/under/rank/centcom/captain(M), slot_w_uniform)
|
||||
M.equip_or_collect(new /obj/item/clothing/shoes/centcom(M), slot_shoes)
|
||||
M.equip_or_collect(new /obj/item/clothing/gloves/color/white(M), slot_gloves)
|
||||
M.equip_or_collect(new /obj/item/device/radio/headset/heads/captain/alt(M), slot_l_ear)
|
||||
M.equip_or_collect(new /obj/item/clothing/head/beret/centcom/captain(M), slot_head)
|
||||
|
||||
var/obj/item/device/pda/centcom/pda = new(M)
|
||||
pda.owner = M.real_name
|
||||
pda.ownjob = "Nanotrasen Navy Captain"
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
|
||||
M.equip_if_possible(pda, slot_r_store)
|
||||
M.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(M), slot_l_store)
|
||||
M.equip_if_possible(new /obj/item/weapon/gun/energy/pulse_rifle/pistol(M), slot_belt)
|
||||
M.equip_or_collect(pda, slot_r_store)
|
||||
M.equip_or_collect(new /obj/item/clothing/glasses/sunglasses(M), slot_l_store)
|
||||
M.equip_or_collect(new /obj/item/weapon/gun/energy/pulse_rifle/pistol(M), slot_belt)
|
||||
|
||||
var/obj/item/weapon/card/id/centcom/W = new(M)
|
||||
W.name = "[M.real_name]'s ID Card (Nanotrasen Navy Captain)"
|
||||
@@ -870,7 +870,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
W.assignment = "Nanotrasen Navy Captain"
|
||||
W.access = get_centcom_access(W.assignment)
|
||||
W.registered_name = M.real_name
|
||||
M.equip_if_possible(W, slot_wear_id)
|
||||
M.equip_or_collect(W, slot_wear_id)
|
||||
|
||||
if("emergency response team member")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform)
|
||||
@@ -947,7 +947,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
M.equip_to_slot_or_del(W, slot_wear_id)
|
||||
|
||||
if("special ops formal")
|
||||
M.equip_if_possible(new /obj/item/clothing/under/rank/centcom/captain(M), slot_w_uniform)
|
||||
M.equip_or_collect(new /obj/item/clothing/under/rank/centcom/captain(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert/alt(src), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
|
||||
@@ -957,7 +957,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/weapon/gun/energy/pulse_rifle/pistol/m1911(M), slot_belt)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/matches(M), slot_r_store)
|
||||
M.equip_if_possible(new /obj/item/weapon/melee/classic_baton/telescopic(M), slot_l_store)
|
||||
M.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(M), slot_l_store)
|
||||
|
||||
var/obj/item/device/pda/centcom/pda = new(M)
|
||||
pda.owner = M.real_name
|
||||
@@ -966,10 +966,10 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
pda.desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a special edition designed for military field work."
|
||||
|
||||
M.equip_if_possible(pda, slot_wear_pda)
|
||||
M.equip_or_collect(pda, slot_wear_pda)
|
||||
|
||||
M.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(M), slot_l_store)
|
||||
M.equip_if_possible(new /obj/item/weapon/melee/classic_baton/telescopic(M), slot_r_store)
|
||||
M.equip_or_collect(new /obj/item/clothing/glasses/sunglasses(M), slot_l_store)
|
||||
M.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(M), slot_r_store)
|
||||
|
||||
var/obj/item/weapon/card/id/W = new(M)
|
||||
W.name = "[M.real_name]'s ID Card (Special Operations Officer)"
|
||||
@@ -1056,7 +1056,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
W.assignment = "Admiral"
|
||||
W.registered_name = M.real_name
|
||||
M.equip_to_slot_or_del(W, slot_wear_id)
|
||||
|
||||
|
||||
if("chrono legionnaire")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/chronos(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/syndicate(src), slot_wear_mask)
|
||||
@@ -1086,8 +1086,8 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
set desc = "Sets up the singularity and all machines to get power flowing through the station"
|
||||
|
||||
if(!check_rights(R_DEBUG))
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
if(alert("Are you sure? This will start up the engine. Should only be used during debug!",,"Yes","No") != "Yes")
|
||||
return
|
||||
|
||||
@@ -1137,9 +1137,9 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
set category = "Debug"
|
||||
set name = "Debug Mob Lists"
|
||||
set desc = "For when you just gotta know"
|
||||
|
||||
|
||||
if(!check_rights(R_DEBUG))
|
||||
return
|
||||
return
|
||||
|
||||
switch(input("Which list?") in list("Players","Admins","Mobs","Living Mobs","Dead Mobs","Silicons","Clients","Respawnable Mobs"))
|
||||
if("Players")
|
||||
@@ -1162,7 +1162,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
|
||||
/client/proc/cmd_admin_toggle_block(var/mob/M,var/block)
|
||||
if(!check_rights(R_SPAWN))
|
||||
return
|
||||
return
|
||||
|
||||
if(!ticker)
|
||||
alert("Wait until the game starts")
|
||||
|
||||
@@ -190,48 +190,48 @@ BLIND // can't see anything
|
||||
/obj/item/clothing/gloves/proc/Touch()
|
||||
return
|
||||
|
||||
/obj/item/clothing/under/proc/set_sensors(mob/usr as mob)
|
||||
var/mob/M = usr
|
||||
/obj/item/clothing/under/proc/set_sensors(mob/user as mob)
|
||||
var/mob/M = user
|
||||
if (istype(M, /mob/dead/)) return
|
||||
if (usr.stat || usr.restrained()) return
|
||||
if (user.stat || user.restrained()) return
|
||||
if(has_sensor >= 2)
|
||||
usr << "The controls are locked."
|
||||
user << "The controls are locked."
|
||||
return 0
|
||||
if(has_sensor <= 0)
|
||||
usr << "This suit does not have any sensors."
|
||||
user << "This suit does not have any sensors."
|
||||
return 0
|
||||
|
||||
var/list/modes = list("Off", "Binary sensors", "Vitals tracker", "Tracking beacon")
|
||||
var/switchMode = input("Select a sensor mode:", "Suit Sensor Mode", modes[sensor_mode + 1]) in modes
|
||||
if(get_dist(usr, src) > 1)
|
||||
usr << "You have moved too far away."
|
||||
if(get_dist(user, src) > 1)
|
||||
user << "You have moved too far away."
|
||||
return
|
||||
sensor_mode = modes.Find(switchMode) - 1
|
||||
|
||||
if (src.loc == usr)
|
||||
if (src.loc == user)
|
||||
switch(sensor_mode)
|
||||
if(0)
|
||||
usr << "You disable your suit's remote sensing equipment."
|
||||
user << "You disable your suit's remote sensing equipment."
|
||||
if(1)
|
||||
usr << "Your suit will now report whether you are live or dead."
|
||||
user << "Your suit will now report whether you are live or dead."
|
||||
if(2)
|
||||
usr << "Your suit will now report your vital lifesigns."
|
||||
user << "Your suit will now report your vital lifesigns."
|
||||
if(3)
|
||||
usr << "Your suit will now report your vital lifesigns as well as your coordinate position."
|
||||
user << "Your suit will now report your vital lifesigns as well as your coordinate position."
|
||||
else if (istype(src.loc, /mob))
|
||||
switch(sensor_mode)
|
||||
if(0)
|
||||
for(var/mob/V in viewers(usr, 1))
|
||||
V.show_message("\red [usr] disables [src.loc]'s remote sensing equipment.", 1)
|
||||
for(var/mob/V in viewers(user, 1))
|
||||
V.show_message("\red [user] disables [src.loc]'s remote sensing equipment.", 1)
|
||||
if(1)
|
||||
for(var/mob/V in viewers(usr, 1))
|
||||
V.show_message("[usr] turns [src.loc]'s remote sensors to binary.", 1)
|
||||
for(var/mob/V in viewers(user, 1))
|
||||
V.show_message("[user] turns [src.loc]'s remote sensors to binary.", 1)
|
||||
if(2)
|
||||
for(var/mob/V in viewers(usr, 1))
|
||||
V.show_message("[usr] sets [src.loc]'s sensors to track vitals.", 1)
|
||||
for(var/mob/V in viewers(user, 1))
|
||||
V.show_message("[user] sets [src.loc]'s sensors to track vitals.", 1)
|
||||
if(3)
|
||||
for(var/mob/V in viewers(usr, 1))
|
||||
V.show_message("[usr] sets [src.loc]'s sensors to maximum.", 1)
|
||||
for(var/mob/V in viewers(user, 1))
|
||||
V.show_message("[user] sets [src.loc]'s sensors to maximum.", 1)
|
||||
|
||||
/obj/item/clothing/under/verb/toggle()
|
||||
set name = "Toggle Suit Sensors"
|
||||
@@ -480,11 +480,11 @@ BLIND // can't see anything
|
||||
if(!istype(usr, /mob/living)) return
|
||||
if(usr.stat) return
|
||||
|
||||
if(copytext(_color,-2) != "_d")
|
||||
basecolor = _color
|
||||
if(copytext(item_color,-2) != "_d")
|
||||
basecolor = item_color
|
||||
usr << "DEBUG:[basecolor]"
|
||||
if(basecolor + "_d_s" in icon_states('icons/mob/uniform.dmi'))
|
||||
_color = _color == "[basecolor]" ? "[basecolor]_d" : "[basecolor]"
|
||||
item_color = item_color == "[basecolor]" ? "[basecolor]_d" : "[basecolor]"
|
||||
usr.update_inv_w_uniform()
|
||||
else
|
||||
usr << "<span class='notice'>You cannot roll down the uniform!</span>"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
item_state = "ygloves"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
_color="yellow"
|
||||
item_color="yellow"
|
||||
power
|
||||
var/next_shock = 0
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
item_state = "ygloves"
|
||||
siemens_coefficient = 1 //Set to a default of 1, gets overridden in New()
|
||||
permeability_coefficient = 0.05
|
||||
_color="yellow"
|
||||
item_color="yellow"
|
||||
|
||||
New()
|
||||
siemens_coefficient = pick(0,0.5,0.5,0.5,0.5,0.75,1.5)
|
||||
@@ -30,7 +30,7 @@
|
||||
name = "black gloves"
|
||||
icon_state = "black"
|
||||
item_state = "bgloves"
|
||||
_color="brown"
|
||||
item_color="brown"
|
||||
cold_protection = HANDS
|
||||
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
|
||||
heat_protection = HANDS
|
||||
@@ -38,10 +38,10 @@
|
||||
|
||||
|
||||
hos
|
||||
_color = "hosred" //Exists for washing machines. Is not different from black gloves in any way.
|
||||
item_color = "hosred" //Exists for washing machines. Is not different from black gloves in any way.
|
||||
|
||||
ce
|
||||
_color = "chief" //Exists for washing machines. Is not different from black gloves in any way.
|
||||
item_color = "chief" //Exists for washing machines. Is not different from black gloves in any way.
|
||||
|
||||
thief
|
||||
pickpocket = 1
|
||||
@@ -51,14 +51,14 @@
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "orange"
|
||||
item_state = "orangegloves"
|
||||
_color="orange"
|
||||
item_color="orange"
|
||||
|
||||
/obj/item/clothing/gloves/color/red
|
||||
name = "red gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "red"
|
||||
item_state = "redgloves"
|
||||
_color = "red"
|
||||
item_color = "red"
|
||||
|
||||
/obj/item/clothing/gloves/color/red/insulated
|
||||
name = "insulated gloves"
|
||||
@@ -71,60 +71,60 @@
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "rainbow"
|
||||
item_state = "rainbowgloves"
|
||||
_color = "rainbow"
|
||||
item_color = "rainbow"
|
||||
clown
|
||||
_color = "clown"
|
||||
item_color = "clown"
|
||||
|
||||
/obj/item/clothing/gloves/color/blue
|
||||
name = "blue gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "blue"
|
||||
item_state = "bluegloves"
|
||||
_color="blue"
|
||||
item_color="blue"
|
||||
|
||||
/obj/item/clothing/gloves/color/purple
|
||||
name = "purple gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "purple"
|
||||
item_state = "purplegloves"
|
||||
_color="purple"
|
||||
item_color="purple"
|
||||
|
||||
/obj/item/clothing/gloves/color/green
|
||||
name = "green gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "green"
|
||||
item_state = "greengloves"
|
||||
_color="green"
|
||||
item_color="green"
|
||||
|
||||
/obj/item/clothing/gloves/color/grey
|
||||
name = "grey gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "gray"
|
||||
item_state = "graygloves"
|
||||
_color="grey"
|
||||
item_color="grey"
|
||||
|
||||
rd
|
||||
_color = "director" //Exists for washing machines. Is not different from gray gloves in any way.
|
||||
item_color = "director" //Exists for washing machines. Is not different from gray gloves in any way.
|
||||
|
||||
hop
|
||||
_color = "hop" //Exists for washing machines. Is not different from gray gloves in any way.
|
||||
item_color = "hop" //Exists for washing machines. Is not different from gray gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/color/light_brown
|
||||
name = "light brown gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "lightbrown"
|
||||
item_state = "lightbrowngloves"
|
||||
_color="light brown"
|
||||
item_color="light brown"
|
||||
|
||||
/obj/item/clothing/gloves/color/brown
|
||||
name = "brown gloves"
|
||||
desc = "A pair of gloves, they don't look special in any way."
|
||||
icon_state = "brown"
|
||||
item_state = "browngloves"
|
||||
_color="brown"
|
||||
item_color="brown"
|
||||
|
||||
cargo
|
||||
_color = "cargo" //Exists for washing machines. Is not different from brown gloves in any way.
|
||||
item_color = "cargo" //Exists for washing machines. Is not different from brown gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/color/latex
|
||||
name = "latex gloves"
|
||||
@@ -133,7 +133,7 @@
|
||||
item_state = "lgloves"
|
||||
siemens_coefficient = 0.30
|
||||
permeability_coefficient = 0.01
|
||||
_color="white"
|
||||
item_color="white"
|
||||
transfer_prints = TRUE
|
||||
|
||||
/obj/item/clothing/gloves/color/latex/nitrile
|
||||
@@ -142,17 +142,17 @@
|
||||
icon_state = "nitrile"
|
||||
item_state = "nitrilegloves"
|
||||
transfer_prints = FALSE
|
||||
_color = "medical"
|
||||
item_color = "medical"
|
||||
|
||||
/obj/item/clothing/gloves/color/white
|
||||
name = "white gloves"
|
||||
desc = "These look pretty fancy."
|
||||
icon_state = "white"
|
||||
item_state = "wgloves"
|
||||
_color="mime"
|
||||
item_color="mime"
|
||||
|
||||
redcoat
|
||||
_color = "redcoat" //Exists for washing machines. Is not different from white gloves in any way.
|
||||
item_color = "redcoat" //Exists for washing machines. Is not different from white gloves in any way.
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/color/captain
|
||||
@@ -160,7 +160,7 @@
|
||||
name = "captain's gloves"
|
||||
icon_state = "captain"
|
||||
item_state = "egloves"
|
||||
_color = "captain"
|
||||
item_color = "captain"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
cold_protection = HANDS
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Plain black gloves without fingertips for the hard working."
|
||||
icon_state = "fingerless"
|
||||
item_state = "fingerless"
|
||||
_color = null //So they don't wash.
|
||||
item_color = null //So they don't wash.
|
||||
transfer_prints = TRUE
|
||||
cold_protection = HANDS
|
||||
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
|
||||
@@ -44,4 +44,4 @@
|
||||
name = "batgloves"
|
||||
icon_state = "bmgloves"
|
||||
item_state = "bmgloves"
|
||||
_color="bmgloves"
|
||||
item_color="bmgloves"
|
||||
@@ -6,7 +6,7 @@
|
||||
item_state = "hardhat0_yellow"
|
||||
var/brightness_on = 4 //luminosity when on
|
||||
var/on = 0
|
||||
_color = "yellow" //Determines used sprites: hardhat[on]_[color] and hardhat[on]_[color]2 (lying down sprite)
|
||||
item_color = "yellow" //Determines used sprites: hardhat[on]_[color] and hardhat[on]_[color]2 (lying down sprite)
|
||||
armor = list(melee = 30, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20)
|
||||
flags_inv = 0
|
||||
action_button_name = "Toggle Helmet Light"
|
||||
@@ -18,8 +18,8 @@
|
||||
user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities.
|
||||
return
|
||||
on = !on
|
||||
icon_state = "hardhat[on]_[_color]"
|
||||
item_state = "hardhat[on]_[_color]"
|
||||
icon_state = "hardhat[on]_[item_color]"
|
||||
item_state = "hardhat[on]_[item_color]"
|
||||
|
||||
if(on) set_light(brightness_on)
|
||||
else set_light(0)
|
||||
@@ -28,12 +28,12 @@
|
||||
/obj/item/clothing/head/hardhat/orange
|
||||
icon_state = "hardhat0_orange"
|
||||
item_state = "hardhat0_orange"
|
||||
_color = "orange"
|
||||
item_color = "orange"
|
||||
|
||||
/obj/item/clothing/head/hardhat/red
|
||||
icon_state = "hardhat0_red"
|
||||
item_state = "hardhat0_red"
|
||||
_color = "red"
|
||||
item_color = "red"
|
||||
name = "firefighter helmet"
|
||||
flags = STOPSPRESSUREDMAGE
|
||||
heat_protection = HEAD
|
||||
@@ -44,7 +44,7 @@
|
||||
/obj/item/clothing/head/hardhat/white
|
||||
icon_state = "hardhat0_white"
|
||||
item_state = "hardhat0_white"
|
||||
_color = "white"
|
||||
item_color = "white"
|
||||
flags = STOPSPRESSUREDMAGE
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
|
||||
@@ -55,12 +55,12 @@
|
||||
/obj/item/clothing/head/hardhat/dblue
|
||||
icon_state = "hardhat0_dblue"
|
||||
item_state = "hardhat0_dblue"
|
||||
_color = "dblue"
|
||||
item_color = "dblue"
|
||||
|
||||
/obj/item/clothing/head/hardhat/atmos
|
||||
icon_state = "hardhat0_atmos"
|
||||
item_state = "hardhat0_atmos"
|
||||
_color = "atmos"
|
||||
item_color = "atmos"
|
||||
name = "atmospheric technician's firefighting helmet"
|
||||
desc = "A firefighter's helmet, able to keep the user cool in any situation."
|
||||
flags = STOPSPRESSUREDMAGE
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/head.dmi'
|
||||
)
|
||||
|
||||
|
||||
/obj/item/clothing/head/welding/flamedecal
|
||||
name = "flame decal welding helmet"
|
||||
desc = "A welding helmet adorned with flame decals, and several cryptic slogans of varying degrees of legibility."
|
||||
@@ -39,8 +39,8 @@
|
||||
/obj/item/clothing/head/welding/flamedecal/blue
|
||||
name = "blue flame decal welding helmet"
|
||||
desc = "A welding helmet with blue flame decals on it."
|
||||
icon_state = "welding_blueflame"
|
||||
|
||||
icon_state = "welding_blueflame"
|
||||
|
||||
/obj/item/clothing/head/welding/white
|
||||
name = "white decal welding helmet"
|
||||
desc = "A white welding helmet with a character written across it."
|
||||
@@ -146,7 +146,7 @@
|
||||
desc = "A jack o' lantern! Believed to ward off evil spirits."
|
||||
icon_state = "hardhat0_pumpkin"//Could stand to be renamed
|
||||
item_state = "hardhat0_pumpkin"
|
||||
_color = "pumpkin"
|
||||
item_color = "pumpkin"
|
||||
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
desc = "Some fake antlers and a very fake red nose."
|
||||
icon_state = "hardhat0_reindeer"
|
||||
item_state = "hardhat0_reindeer"
|
||||
_color = "reindeer"
|
||||
item_color = "reindeer"
|
||||
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)
|
||||
@@ -179,18 +179,24 @@
|
||||
siemens_coefficient = 1.5
|
||||
loose = 33
|
||||
|
||||
update_icon(var/mob/living/carbon/human/user)
|
||||
if(!istype(user)) return
|
||||
mob = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kitty")
|
||||
/obj/item/clothing/head/kitty/update_icon(var/mob/living/carbon/human/user)
|
||||
if(!istype(user)) return
|
||||
mob = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kitty")
|
||||
// mob2 = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kitty2") - Commented out because it seemingly does nothing.
|
||||
mob.Blend(rgb(user.r_hair, user.g_hair, user.b_hair), ICON_ADD)
|
||||
mob.Blend(rgb(user.r_hair, user.g_hair, user.b_hair), ICON_ADD)
|
||||
// mob2.Blend(rgb(user.r_hair, user.g_hair, user.b_hair), ICON_ADD) - Commented out because it seemingly does nothing.
|
||||
|
||||
var/icon/earbit = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kittyinner")
|
||||
var/icon/earbit = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kittyinner")
|
||||
// var/icon/earbit2 = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kittyinner2") - Commented out because it seemingly does nothing.
|
||||
mob.Blend(earbit, ICON_OVERLAY)
|
||||
mob.Blend(earbit, ICON_OVERLAY)
|
||||
// mob2.Blend(earbit2, ICON_OVERLAY) - Commented out because it seemingly does nothing.
|
||||
|
||||
icon_override = mob
|
||||
|
||||
/obj/item/clothing/head/kitty/equipped(var/mob/M, slot)
|
||||
. = ..()
|
||||
if(ishuman(M) && slot == slot_head)
|
||||
update_icon(M)
|
||||
|
||||
|
||||
/obj/item/clothing/head/kitty/mouse
|
||||
@@ -198,10 +204,12 @@
|
||||
desc = "A pair of mouse ears. Squeak!"
|
||||
icon_state = "mousey"
|
||||
|
||||
update_icon(var/mob/living/carbon/human/user)
|
||||
if(!istype(user)) return
|
||||
mob = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "mousey")
|
||||
mob.Blend(rgb(user.r_hair, user.g_hair, user.b_hair), ICON_ADD)
|
||||
/obj/item/clothing/head/kitty/mouse/update_icon(var/mob/living/carbon/human/user)
|
||||
if(!istype(user)) return
|
||||
mob = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "mousey")
|
||||
mob.Blend(rgb(user.r_hair, user.g_hair, user.b_hair), ICON_ADD)
|
||||
|
||||
var/icon/earbit = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "mouseyinner")
|
||||
mob.Blend(earbit, ICON_OVERLAY)
|
||||
var/icon/earbit = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "mouseyinner")
|
||||
mob.Blend(earbit, ICON_OVERLAY)
|
||||
|
||||
icon_override = mob
|
||||
@@ -3,12 +3,12 @@
|
||||
desc = "It's a baseball hat in a tasteless yellow colour."
|
||||
icon_state = "cargosoft"
|
||||
item_state = "helmet"
|
||||
_color = "cargo"
|
||||
item_color = "cargo"
|
||||
var/flipped = 0
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
dropped()
|
||||
src.icon_state = "[_color]soft"
|
||||
src.icon_state = "[item_color]soft"
|
||||
src.flipped=0
|
||||
..()
|
||||
|
||||
@@ -19,10 +19,10 @@
|
||||
if(usr.canmove && !usr.stat && !usr.restrained())
|
||||
src.flipped = !src.flipped
|
||||
if(src.flipped)
|
||||
icon_state = "[_color]soft_flipped"
|
||||
icon_state = "[item_color]soft_flipped"
|
||||
usr << "You flip the hat backwards."
|
||||
else
|
||||
icon_state = "[_color]soft"
|
||||
icon_state = "[item_color]soft"
|
||||
usr << "You flip the hat back in normal position."
|
||||
usr.update_inv_head() //so our mob-overlays update
|
||||
|
||||
@@ -30,71 +30,71 @@
|
||||
name = "red cap"
|
||||
desc = "It's a baseball hat in a tasteless red colour."
|
||||
icon_state = "redsoft"
|
||||
_color = "red"
|
||||
item_color = "red"
|
||||
|
||||
/obj/item/clothing/head/soft/blue
|
||||
name = "blue cap"
|
||||
desc = "It's a baseball hat in a tasteless blue colour."
|
||||
icon_state = "bluesoft"
|
||||
_color = "blue"
|
||||
item_color = "blue"
|
||||
|
||||
/obj/item/clothing/head/soft/green
|
||||
name = "green cap"
|
||||
desc = "It's a baseball hat in a tasteless green colour."
|
||||
icon_state = "greensoft"
|
||||
_color = "green"
|
||||
item_color = "green"
|
||||
|
||||
/obj/item/clothing/head/soft/yellow
|
||||
name = "yellow cap"
|
||||
desc = "It's a baseball hat in a tasteless yellow colour."
|
||||
icon_state = "yellowsoft"
|
||||
_color = "yellow"
|
||||
item_color = "yellow"
|
||||
|
||||
/obj/item/clothing/head/soft/grey
|
||||
name = "grey cap"
|
||||
desc = "It's a baseball hat in a tasteful grey colour."
|
||||
icon_state = "greysoft"
|
||||
_color = "grey"
|
||||
item_color = "grey"
|
||||
|
||||
/obj/item/clothing/head/soft/orange
|
||||
name = "orange cap"
|
||||
desc = "It's a baseball hat in a tasteless orange colour."
|
||||
icon_state = "orangesoft"
|
||||
_color = "orange"
|
||||
item_color = "orange"
|
||||
|
||||
/obj/item/clothing/head/soft/mime
|
||||
name = "white cap"
|
||||
desc = "It's a baseball hat in a tasteless white colour."
|
||||
icon_state = "mimesoft"
|
||||
_color = "mime"
|
||||
item_color = "mime"
|
||||
|
||||
/obj/item/clothing/head/soft/purple
|
||||
name = "purple cap"
|
||||
desc = "It's a baseball hat in a tasteless purple colour."
|
||||
icon_state = "purplesoft"
|
||||
_color = "purple"
|
||||
item_color = "purple"
|
||||
|
||||
/obj/item/clothing/head/soft/black
|
||||
name = "black cap"
|
||||
desc = "It's a baseball hat in a tasteless black colour."
|
||||
icon_state = "blacksoft"
|
||||
_color = "black"
|
||||
item_color = "black"
|
||||
|
||||
/obj/item/clothing/head/soft/rainbow
|
||||
name = "rainbow cap"
|
||||
desc = "It's a baseball hat in a bright rainbow of colors."
|
||||
icon_state = "rainbowsoft"
|
||||
_color = "rainbow"
|
||||
item_color = "rainbow"
|
||||
|
||||
/obj/item/clothing/head/soft/sec
|
||||
name = "security cap"
|
||||
desc = "It's baseball hat in tasteful red colour."
|
||||
icon_state = "secsoft"
|
||||
_color = "sec"
|
||||
item_color = "sec"
|
||||
armor = list(melee = 30, bullet = 25, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/head/soft/sec/corp
|
||||
name = "corporate security cap"
|
||||
desc = "It's baseball hat in corpotate colours."
|
||||
icon_state = "corpsoft"
|
||||
_color = "corp"
|
||||
item_color = "corp"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/item/clothing/shoes/black
|
||||
name = "black shoes"
|
||||
icon_state = "black"
|
||||
_color = "black"
|
||||
item_color = "black"
|
||||
desc = "A pair of black shoes."
|
||||
|
||||
cold_protection = FEET
|
||||
@@ -10,7 +10,7 @@
|
||||
max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT
|
||||
|
||||
redcoat
|
||||
_color = "redcoat" //Exists for washing machines. Is not different from black shoes in any way.
|
||||
item_color = "redcoat" //Exists for washing machines. Is not different from black shoes in any way.
|
||||
|
||||
/obj/item/clothing/shoes/black/greytide
|
||||
flags = NODROP
|
||||
@@ -21,71 +21,71 @@
|
||||
icon_state = "brown"
|
||||
|
||||
captain
|
||||
_color = "captain" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
item_color = "captain" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
hop
|
||||
_color = "hop" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
item_color = "hop" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
ce
|
||||
_color = "chief" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
item_color = "chief" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
rd
|
||||
_color = "director" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
item_color = "director" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
cmo
|
||||
_color = "medical" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
item_color = "medical" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
cmo
|
||||
_color = "cargo" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
item_color = "cargo" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
|
||||
/obj/item/clothing/shoes/blue
|
||||
name = "blue shoes"
|
||||
icon_state = "blue"
|
||||
_color = "blue"
|
||||
item_color = "blue"
|
||||
|
||||
/obj/item/clothing/shoes/green
|
||||
name = "green shoes"
|
||||
icon_state = "green"
|
||||
_color = "green"
|
||||
item_color = "green"
|
||||
|
||||
/obj/item/clothing/shoes/yellow
|
||||
name = "yellow shoes"
|
||||
icon_state = "yellow"
|
||||
_color = "yellow"
|
||||
item_color = "yellow"
|
||||
|
||||
/obj/item/clothing/shoes/purple
|
||||
name = "purple shoes"
|
||||
icon_state = "purple"
|
||||
_color = "purple"
|
||||
item_color = "purple"
|
||||
|
||||
/obj/item/clothing/shoes/brown
|
||||
name = "brown shoes"
|
||||
icon_state = "brown"
|
||||
_color = "brown"
|
||||
item_color = "brown"
|
||||
|
||||
/obj/item/clothing/shoes/red
|
||||
name = "red shoes"
|
||||
desc = "Stylish red shoes."
|
||||
icon_state = "red"
|
||||
_color = "red"
|
||||
item_color = "red"
|
||||
|
||||
/obj/item/clothing/shoes/white
|
||||
name = "white shoes"
|
||||
icon_state = "white"
|
||||
permeability_coefficient = 0.01
|
||||
_color = "white"
|
||||
item_color = "white"
|
||||
|
||||
/obj/item/clothing/shoes/leather
|
||||
name = "leather shoes"
|
||||
desc = "A sturdy pair of leather shoes."
|
||||
icon_state = "leather"
|
||||
_color = "leather"
|
||||
item_color = "leather"
|
||||
|
||||
/obj/item/clothing/shoes/rainbow
|
||||
name = "rainbow shoes"
|
||||
desc = "Very gay shoes."
|
||||
icon_state = "rain_bow"
|
||||
_color = "rainbow"
|
||||
item_color = "rainbow"
|
||||
|
||||
/obj/item/clothing/shoes/orange
|
||||
name = "orange shoes"
|
||||
icon_state = "orange"
|
||||
_color = "orange"
|
||||
item_color = "orange"
|
||||
|
||||
/obj/item/clothing/shoes/orange/attack_self(mob/user as mob)
|
||||
if (src.chained)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
/obj/item/clothing/shoes/mime
|
||||
name = "mime shoes"
|
||||
icon_state = "mime"
|
||||
_color = "mime"
|
||||
item_color = "mime"
|
||||
|
||||
/obj/item/clothing/shoes/combat //basic syndicate combat boots for nuke ops and mob corpses
|
||||
name = "combat boots"
|
||||
@@ -57,7 +57,7 @@
|
||||
icon_state = "clown"
|
||||
item_state = "clown_shoes"
|
||||
slowdown = SHOES_SLOWDOWN+1
|
||||
_color = "clown"
|
||||
item_color = "clown"
|
||||
var/footstep = 1 //used for squeeks whilst walking
|
||||
species_restricted = null
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
desc = "Nanotrasen-issue Security combat boots for combat scenarios or combat situations. All combat, all the time."
|
||||
icon_state = "jackboots"
|
||||
item_state = "jackboots"
|
||||
_color = "hosred"
|
||||
item_color = "hosred"
|
||||
siemens_coefficient = 0.7
|
||||
var/footstep=1
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
name = "jacksandals"
|
||||
desc = "Nanotrasen-issue Security combat sandals for combat scenarios. They're jacksandals, however that works."
|
||||
icon_state = "jacksandal"
|
||||
_color = "jacksandal"
|
||||
item_color = "jacksandal"
|
||||
species_restricted = null
|
||||
|
||||
/obj/item/clothing/shoes/cult
|
||||
@@ -82,7 +82,7 @@
|
||||
desc = "A pair of boots worn by the followers of Nar-Sie."
|
||||
icon_state = "cult"
|
||||
item_state = "cult"
|
||||
_color = "cult"
|
||||
item_color = "cult"
|
||||
siemens_coefficient = 0.7
|
||||
|
||||
cold_protection = FEET
|
||||
@@ -137,6 +137,6 @@
|
||||
name = "noble boots"
|
||||
desc = "The boots are economically designed to balance function and comfort, so that you can step on peasants without having to worry about blisters. The leather also resists unwanted blood stains."
|
||||
icon_state = "noble_boot"
|
||||
_color = "noble_boot"
|
||||
item_color = "noble_boot"
|
||||
item_state = "noble_boot"
|
||||
|
||||
@@ -9,12 +9,12 @@
|
||||
/obj/item/clothing/head/helmet/space/skrell/white
|
||||
icon_state = "skrell_helmet_white"
|
||||
item_state = "skrell_helmet_white"
|
||||
_color = "skrell_helmet_white"
|
||||
item_color = "skrell_helmet_white"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/skrell/black
|
||||
icon_state = "skrell_helmet_black"
|
||||
item_state = "skrell_helmet_black"
|
||||
_color = "skrell_helmet_black"
|
||||
item_color = "skrell_helmet_black"
|
||||
|
||||
/obj/item/clothing/suit/space/skrell
|
||||
name = "Skrellian hardsuit"
|
||||
@@ -28,12 +28,12 @@
|
||||
/obj/item/clothing/suit/space/skrell/white
|
||||
icon_state = "skrell_suit_white"
|
||||
item_state = "skrell_suit_white"
|
||||
_color = "skrell_suit_white"
|
||||
item_color = "skrell_suit_white"
|
||||
|
||||
/obj/item/clothing/suit/space/skrell/black
|
||||
icon_state = "skrell_suit_black"
|
||||
item_state = "skrell_suit_black"
|
||||
_color = "skrell_suit_black"
|
||||
item_color = "skrell_suit_black"
|
||||
|
||||
//Unathi space gear. Huge and restrictive.
|
||||
/obj/item/clothing/head/helmet/space/unathi
|
||||
@@ -48,7 +48,7 @@
|
||||
desc = "Hey! Watch it with that thing! It's a knock-off of a Unathi battle-helm, and that spike could put someone's eye out."
|
||||
icon_state = "unathi_helm_cheap"
|
||||
item_state = "unathi_helm_cheap"
|
||||
_color = "unathi_helm_cheap"
|
||||
item_color = "unathi_helm_cheap"
|
||||
|
||||
/obj/item/clothing/suit/space/unathi
|
||||
armor = list(melee = 40, bullet = 30, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 50)
|
||||
@@ -69,14 +69,14 @@
|
||||
desc = "Weathered, ancient and battle-scarred. The helmet is too."
|
||||
icon_state = "unathi_breacher"
|
||||
item_state = "unathi_breacher"
|
||||
_color = "unathi_breacher"
|
||||
item_color = "unathi_breacher"
|
||||
|
||||
/obj/item/clothing/suit/space/unathi/breacher
|
||||
name = "breacher chassis"
|
||||
desc = "Huge, bulky and absurdly heavy. It must be like wearing a tank."
|
||||
icon_state = "unathi_breacher"
|
||||
item_state = "unathi_breacher"
|
||||
_color = "unathi_breacher"
|
||||
item_color = "unathi_breacher"
|
||||
slowdown = 1
|
||||
|
||||
// Vox space gear (vaccuum suit, low pressure armour)
|
||||
@@ -162,7 +162,7 @@
|
||||
name = "alien clothing"
|
||||
desc = "This doesn't look very comfortable."
|
||||
icon_state = "vox-casual-1"
|
||||
_color = "vox-casual-1"
|
||||
item_color = "vox-casual-1"
|
||||
item_state = "vox-casual-1"
|
||||
body_parts_covered = LEGS
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
name = "alien robes"
|
||||
desc = "Weird and flowing!"
|
||||
icon_state = "vox-casual-2"
|
||||
_color = "vox-casual-2"
|
||||
item_color = "vox-casual-2"
|
||||
item_state = "vox-casual-2"
|
||||
|
||||
/obj/item/clothing/gloves/color/yellow/vox
|
||||
@@ -180,7 +180,7 @@
|
||||
item_state = "gloves-vox"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
_color = "gloves-vox"
|
||||
item_color = "gloves-vox"
|
||||
species_restricted = list("Vox","Vox Armalis")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/gloves.dmi',
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
desc = "A helmet worn by the commander of a Nanotrasen Emergency Response Team. Has blue highlights. Armoured and space ready."
|
||||
icon_state = "rig0-ert_commander"
|
||||
item_state = "helm-command"
|
||||
_color = "ert_commander"
|
||||
item_color = "ert_commander"
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert/commander
|
||||
name = "emergency response team commander suit"
|
||||
@@ -58,7 +58,7 @@
|
||||
desc = "A helmet worn by security members of a Nanotrasen Emergency Response Team. Has red highlights. Armoured and space ready."
|
||||
icon_state = "rig0-ert_security"
|
||||
item_state = "syndicate-helm-black-red"
|
||||
_color = "ert_security"
|
||||
item_color = "ert_security"
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert/security
|
||||
name = "emergency response team security suit"
|
||||
@@ -71,7 +71,7 @@
|
||||
name = "emergency response team engineer helmet"
|
||||
desc = "A helmet worn by engineers of a Nanotrasen Emergency Response Team. Has yellow highlights. Armoured and space ready."
|
||||
icon_state = "rig0-ert_engineer"
|
||||
_color = "ert_engineer"
|
||||
item_color = "ert_engineer"
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert/engineer
|
||||
name = "emergency response team engineer suit"
|
||||
@@ -83,7 +83,7 @@
|
||||
name = "emergency response team medical helmet"
|
||||
desc = "A helmet worn by medical members of a Nanotrasen Emergency Response Team. Has white highlights. Armoured and space ready."
|
||||
icon_state = "rig0-ert_medical"
|
||||
_color = "ert_medical"
|
||||
item_color = "ert_medical"
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert/medical
|
||||
name = "emergency response team medical suit"
|
||||
@@ -95,7 +95,7 @@
|
||||
name = "emergency response team janitor helmet"
|
||||
desc = "A helmet worn by janitorial members of a Nanotrasen Emergency Response Team. Has purple highlights. Armoured and space ready."
|
||||
icon_state = "rig0-ert_janitor"
|
||||
_color = "ert_janitor"
|
||||
item_color = "ert_janitor"
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert/janitor
|
||||
name = "emergency response team janitor suit"
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
armor = list(melee = 0, bullet = 0, laser = 0 ,energy = 0, bomb = 0, bio = 100, rad = 20)
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
flags_inv = HIDEGLOVES|HIDESHOES
|
||||
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
|
||||
species_restricted = list("Plasmaman")
|
||||
flags = STOPSPRESSUREDMAGE | PLASMAGUARD
|
||||
@@ -53,19 +53,19 @@
|
||||
user << "<span class='warning'>You cannot turn the light on while in this [user.loc].</span>" //To prevent some lighting anomalities.
|
||||
return
|
||||
toggle_light(user)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/eva/plasmaman/proc/toggle_light(mob/user)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/eva/plasmaman/proc/toggle_light(mob/user)
|
||||
on = !on
|
||||
icon_state = "[base_state][on]"
|
||||
|
||||
if(on)
|
||||
if(on)
|
||||
set_light(brightness_on)
|
||||
else
|
||||
else
|
||||
set_light(0)
|
||||
|
||||
if(istype(user,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.update_inv_head()
|
||||
H.update_inv_head()
|
||||
|
||||
// ENGINEERING
|
||||
/obj/item/clothing/suit/space/eva/plasmaman/assistant
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
allowed = list(/obj/item/device/flashlight)
|
||||
var/brightness_on = 4 //luminosity when on
|
||||
var/on = 0
|
||||
_color = "engineering" //Determines used sprites: rig[on]-[color] and rig[on]-[color]2 (lying down sprite)
|
||||
item_color = "engineering" //Determines used sprites: rig[on]-[color] and rig[on]-[color]2 (lying down sprite)
|
||||
action_button_name = "Toggle Helmet Light"
|
||||
|
||||
//Species-specific stuff.
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/proc/toggle_light(mob/user)
|
||||
on = !on
|
||||
icon_state = "rig[on]-[_color]"
|
||||
icon_state = "rig[on]-[item_color]"
|
||||
|
||||
if(on)
|
||||
set_light(brightness_on)
|
||||
@@ -248,7 +248,7 @@
|
||||
desc = "An advanced helmet designed for work in a hazardous, low pressure environment. Shines with a high polish."
|
||||
icon_state = "rig0-white"
|
||||
item_state = "ce_helm"
|
||||
_color = "white"
|
||||
item_color = "white"
|
||||
armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 90)
|
||||
heat_protection = HEAD //Uncomment to enable firesuit protection
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
|
||||
@@ -268,7 +268,7 @@
|
||||
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has reinforced plating."
|
||||
icon_state = "rig0-mining"
|
||||
item_state = "mining_helm"
|
||||
_color = "mining"
|
||||
item_color = "mining"
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE
|
||||
armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50)
|
||||
|
||||
@@ -287,14 +287,14 @@
|
||||
desc = "A dual-mode advanced helmet designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
|
||||
icon_state = "hardsuit1-syndi"
|
||||
item_state = "syndie_helm"
|
||||
_color = "syndi"
|
||||
item_color = "syndi"
|
||||
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
|
||||
on = 1
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL
|
||||
action_button_name = "Toggle Helmet Mode"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/syndi/update_icon()
|
||||
icon_state = "hardsuit[on]-[_color]"
|
||||
icon_state = "hardsuit[on]-[item_color]"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/syndi/attack_self(mob/user)
|
||||
if(!isturf(user.loc))
|
||||
@@ -328,7 +328,7 @@
|
||||
desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
|
||||
icon_state = "hardsuit1-syndi"
|
||||
item_state = "syndie_hardsuit"
|
||||
_color = "syndi"
|
||||
item_color = "syndi"
|
||||
slowdown = 1
|
||||
w_class = 3
|
||||
var/on = 1
|
||||
@@ -337,7 +337,7 @@
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
|
||||
|
||||
/obj/item/clothing/suit/space/rig/syndi/update_icon()
|
||||
icon_state = "hardsuit[on]-[_color]"
|
||||
icon_state = "hardsuit[on]-[item_color]"
|
||||
|
||||
/obj/item/clothing/suit/space/rig/syndi/attack_self(mob/user)
|
||||
on = !on
|
||||
@@ -369,7 +369,7 @@
|
||||
desc = "A bizarre gem-encrusted helmet that radiates magical energies."
|
||||
icon_state = "rig0-wiz"
|
||||
item_state = "wiz_helm"
|
||||
_color = "wiz"
|
||||
item_color = "wiz"
|
||||
unacidable = 1 //No longer shall our kind be foiled by lone chemists with spray bottles!
|
||||
armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60)
|
||||
siemens_coefficient = 0.7
|
||||
@@ -400,7 +400,7 @@
|
||||
desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort, but does not protect the eyes from intense light."
|
||||
icon_state = "rig0-medical"
|
||||
item_state = "medical_helm"
|
||||
_color = "medical"
|
||||
item_color = "medical"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50)
|
||||
flash_protect = 0
|
||||
@@ -420,7 +420,7 @@
|
||||
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
|
||||
icon_state = "rig0-sec"
|
||||
item_state = "sec_helm"
|
||||
_color = "sec"
|
||||
item_color = "sec"
|
||||
armor = list(melee = 30, bullet = 15, laser = 30,energy = 10, bomb = 10, bio = 100, rad = 50)
|
||||
siemens_coefficient = 0.7
|
||||
|
||||
@@ -440,7 +440,7 @@
|
||||
name = "atmospherics hardsuit helmet"
|
||||
icon_state = "rig0-atmos"
|
||||
item_state = "atmos_helm"
|
||||
_color = "atmos"
|
||||
item_color = "atmos"
|
||||
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 0)
|
||||
heat_protection = HEAD //Uncomment to enable firesuit protection
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
|
||||
@@ -460,7 +460,7 @@
|
||||
desc = "This is an adamantium helmet from the chapter of the Singuloth Knights. It shines with a holy aura."
|
||||
icon_state = "rig0-singuloth"
|
||||
item_state = "singuloth_helm"
|
||||
_color = "singuloth"
|
||||
item_color = "singuloth"
|
||||
armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 25, bio = 100, rad = 100)
|
||||
|
||||
/obj/item/clothing/suit/space/rig/singuloth
|
||||
|
||||
@@ -334,14 +334,14 @@
|
||||
name = "pink swimsuit"
|
||||
desc = "A rather skimpy pink swimsuit."
|
||||
icon_state = "stripper_p_under"
|
||||
_color = "stripper_p"
|
||||
item_color = "stripper_p"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/under/stripper/stripper_green
|
||||
name = "green swimsuit"
|
||||
desc = "A rather skimpy green swimsuit."
|
||||
icon_state = "stripper_g_under"
|
||||
_color = "stripper_g"
|
||||
item_color = "stripper_g"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/suit/stripper/stripper_pink
|
||||
@@ -362,7 +362,7 @@
|
||||
name = "the mankini"
|
||||
desc = "No honest man would wear this abomination"
|
||||
icon_state = "mankini"
|
||||
_color = "mankini"
|
||||
item_color = "mankini"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/suit/jacket/miljacket
|
||||
@@ -389,35 +389,35 @@
|
||||
name = "black swimsuit"
|
||||
desc = "An oldfashioned black swimsuit."
|
||||
icon_state = "swim_black"
|
||||
_color = "swim_black"
|
||||
item_color = "swim_black"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/under/swimsuit/blue
|
||||
name = "blue swimsuit"
|
||||
desc = "An oldfashioned blue swimsuit."
|
||||
icon_state = "swim_blue"
|
||||
_color = "swim_blue"
|
||||
item_color = "swim_blue"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/under/swimsuit/purple
|
||||
name = "purple swimsuit"
|
||||
desc = "An oldfashioned purple swimsuit."
|
||||
icon_state = "swim_purp"
|
||||
_color = "swim_purp"
|
||||
item_color = "swim_purp"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/under/swimsuit/green
|
||||
name = "green swimsuit"
|
||||
desc = "An oldfashioned green swimsuit."
|
||||
icon_state = "swim_green"
|
||||
_color = "swim_green"
|
||||
item_color = "swim_green"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/under/swimsuit/red
|
||||
name = "red swimsuit"
|
||||
desc = "An oldfashioned red swimsuit."
|
||||
icon_state = "swim_red"
|
||||
_color = "swim_red"
|
||||
item_color = "swim_red"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/suit/storage/mercy_hoodie
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon = 'icons/obj/clothing/ties.dmi'
|
||||
icon_state = "bluetie"
|
||||
item_state = "" //no inhands
|
||||
_color = "bluetie"
|
||||
item_color = "bluetie"
|
||||
slot_flags = SLOT_TIE
|
||||
w_class = 2.0
|
||||
var/slot = "decor"
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
/obj/item/clothing/accessory/New()
|
||||
..()
|
||||
inv_overlay = image("icon" = 'icons/obj/clothing/ties_overlay.dmi', "icon_state" = "[_color? "[_color]" : "[icon_state]"]")
|
||||
inv_overlay = image("icon" = 'icons/obj/clothing/ties_overlay.dmi', "icon_state" = "[item_color? "[item_color]" : "[icon_state]"]")
|
||||
|
||||
//when user attached an accessory to S
|
||||
/obj/item/clothing/accessory/proc/on_attached(obj/item/clothing/under/S, mob/user as mob)
|
||||
@@ -47,36 +47,36 @@
|
||||
/obj/item/clothing/accessory/blue
|
||||
name = "blue tie"
|
||||
icon_state = "bluetie"
|
||||
_color = "bluetie"
|
||||
item_color = "bluetie"
|
||||
|
||||
/obj/item/clothing/accessory/red
|
||||
name = "red tie"
|
||||
icon_state = "redtie"
|
||||
_color = "redtie"
|
||||
item_color = "redtie"
|
||||
|
||||
/obj/item/clothing/accessory/black
|
||||
name = "black tie"
|
||||
icon_state = "blacktie"
|
||||
_color = "blacktie"
|
||||
item_color = "blacktie"
|
||||
|
||||
/obj/item/clothing/accessory/horrible
|
||||
name = "horrible tie"
|
||||
desc = "A neosilk clip-on tie. This one is disgusting."
|
||||
icon_state = "horribletie"
|
||||
_color = "horribletie"
|
||||
item_color = "horribletie"
|
||||
|
||||
/obj/item/clothing/accessory/waistcoat // No overlay
|
||||
name = "waistcoat"
|
||||
desc = "For some classy, murderous fun."
|
||||
icon_state = "waistcoat"
|
||||
item_state = "waistcoat"
|
||||
_color = "waistcoat"
|
||||
item_color = "waistcoat"
|
||||
|
||||
/obj/item/clothing/accessory/stethoscope
|
||||
name = "stethoscope"
|
||||
desc = "An outdated medical apparatus for listening to the sounds of the human body. It also makes you look like you know what you're doing."
|
||||
icon_state = "stethoscope"
|
||||
_color = "stethoscope"
|
||||
item_color = "stethoscope"
|
||||
|
||||
/obj/item/clothing/accessory/stethoscope/attack(mob/living/carbon/human/M, mob/living/user)
|
||||
if(ishuman(M) && isliving(user))
|
||||
@@ -117,7 +117,7 @@
|
||||
name = "bronze medal"
|
||||
desc = "A bronze medal."
|
||||
icon_state = "bronze"
|
||||
_color = "bronze"
|
||||
item_color = "bronze"
|
||||
materials = list(MAT_METAL=1000)
|
||||
|
||||
/obj/item/clothing/accessory/medal/conduct
|
||||
@@ -137,7 +137,7 @@
|
||||
name = "silver medal"
|
||||
desc = "A silver medal."
|
||||
icon_state = "silver"
|
||||
_color = "silver"
|
||||
item_color = "silver"
|
||||
materials = list(MAT_SILVER=1000)
|
||||
|
||||
/obj/item/clothing/accessory/medal/silver/valor
|
||||
@@ -152,7 +152,7 @@
|
||||
name = "gold medal"
|
||||
desc = "A prestigious golden medal."
|
||||
icon_state = "gold"
|
||||
_color = "gold"
|
||||
item_color = "gold"
|
||||
materials = list(MAT_GOLD=1000)
|
||||
|
||||
/obj/item/clothing/accessory/medal/gold/captain
|
||||
@@ -173,7 +173,7 @@
|
||||
name = "holobadge"
|
||||
desc = "This glowing blue badge marks the holder as THE LAW."
|
||||
icon_state = "holobadge"
|
||||
_color = "holobadge"
|
||||
item_color = "holobadge"
|
||||
slot_flags = SLOT_BELT | SLOT_TIE
|
||||
|
||||
var/emagged = 0 //Emagging removes Sec check.
|
||||
@@ -181,7 +181,7 @@
|
||||
|
||||
/obj/item/clothing/accessory/holobadge/cord
|
||||
icon_state = "holobadge-cord"
|
||||
_color = "holobadge-cord"
|
||||
item_color = "holobadge-cord"
|
||||
slot_flags = SLOT_MASK | SLOT_TIE
|
||||
|
||||
/obj/item/clothing/accessory/holobadge/attack_self(mob/user as mob)
|
||||
@@ -250,57 +250,57 @@
|
||||
/obj/item/clothing/accessory/scarf/red
|
||||
name = "red scarf"
|
||||
icon_state = "redscarf"
|
||||
_color = "redscarf"
|
||||
item_color = "redscarf"
|
||||
|
||||
/obj/item/clothing/accessory/scarf/green
|
||||
name = "green scarf"
|
||||
icon_state = "greenscarf"
|
||||
_color = "greenscarf"
|
||||
item_color = "greenscarf"
|
||||
|
||||
/obj/item/clothing/accessory/scarf/darkblue
|
||||
name = "dark blue scarf"
|
||||
icon_state = "darkbluescarf"
|
||||
_color = "darkbluescarf"
|
||||
item_color = "darkbluescarf"
|
||||
|
||||
/obj/item/clothing/accessory/scarf/purple
|
||||
name = "purple scarf"
|
||||
icon_state = "purplescarf"
|
||||
_color = "purplescarf"
|
||||
item_color = "purplescarf"
|
||||
|
||||
/obj/item/clothing/accessory/scarf/yellow
|
||||
name = "yellow scarf"
|
||||
icon_state = "yellowscarf"
|
||||
_color = "yellowscarf"
|
||||
item_color = "yellowscarf"
|
||||
|
||||
/obj/item/clothing/accessory/scarf/orange
|
||||
name = "orange scarf"
|
||||
icon_state = "orangescarf"
|
||||
_color = "orangescarf"
|
||||
item_color = "orangescarf"
|
||||
|
||||
/obj/item/clothing/accessory/scarf/lightblue
|
||||
name = "light blue scarf"
|
||||
icon_state = "lightbluescarf"
|
||||
_color = "lightbluescarf"
|
||||
item_color = "lightbluescarf"
|
||||
|
||||
/obj/item/clothing/accessory/scarf/white
|
||||
name = "white scarf"
|
||||
icon_state = "whitescarf"
|
||||
_color = "whitescarf"
|
||||
item_color = "whitescarf"
|
||||
|
||||
/obj/item/clothing/accessory/scarf/black
|
||||
name = "black scarf"
|
||||
icon_state = "blackscarf"
|
||||
_color = "blackscarf"
|
||||
item_color = "blackscarf"
|
||||
|
||||
/obj/item/clothing/accessory/scarf/zebra
|
||||
name = "zebra scarf"
|
||||
icon_state = "zebrascarf"
|
||||
_color = "zebrascarf"
|
||||
item_color = "zebrascarf"
|
||||
|
||||
/obj/item/clothing/accessory/scarf/christmas
|
||||
name = "christmas scarf"
|
||||
icon_state = "christmasscarf"
|
||||
_color = "christmasscarf"
|
||||
item_color = "christmasscarf"
|
||||
|
||||
//The three following scarves don't have the scarf subtype
|
||||
//This is because Ian can equip anything from that subtype
|
||||
@@ -308,22 +308,22 @@
|
||||
/obj/item/clothing/accessory/stripedredscarf
|
||||
name = "striped red scarf"
|
||||
icon_state = "stripedredscarf"
|
||||
_color = "stripedredscarf"
|
||||
item_color = "stripedredscarf"
|
||||
|
||||
/obj/item/clothing/accessory/stripedgreenscarf
|
||||
name = "striped green scarf"
|
||||
icon_state = "stripedgreenscarf"
|
||||
_color = "stripedgreenscarf"
|
||||
item_color = "stripedgreenscarf"
|
||||
|
||||
/obj/item/clothing/accessory/stripedbluescarf
|
||||
name = "striped blue scarf"
|
||||
icon_state = "stripedbluescarf"
|
||||
_color = "stripedbluescarf"
|
||||
item_color = "stripedbluescarf"
|
||||
|
||||
/obj/item/clothing/accessory/petcollar
|
||||
name = "pet collar"
|
||||
icon_state = "petcollar"
|
||||
_color = "petcollar"
|
||||
item_color = "petcollar"
|
||||
var/tagname = null
|
||||
|
||||
/obj/item/clothing/accessory/petcollar/attack_self(mob/user as mob)
|
||||
|
||||
@@ -2,41 +2,41 @@
|
||||
name = "red armband"
|
||||
desc = "A fancy red armband!"
|
||||
icon_state = "red"
|
||||
_color = "red"
|
||||
item_color = "red"
|
||||
slot = "armband"
|
||||
|
||||
/obj/item/clothing/accessory/armband/cargo
|
||||
name = "cargo armband"
|
||||
desc = "An armband, worn by the crew to display which department they're assigned to. This one is brown."
|
||||
icon_state = "cargo"
|
||||
_color = "cargo"
|
||||
item_color = "cargo"
|
||||
|
||||
/obj/item/clothing/accessory/armband/engine
|
||||
name = "engineering armband"
|
||||
desc = "An armband, worn by the crew to display which department they're assigned to. This one is orange with a reflective strip!"
|
||||
icon_state = "engie"
|
||||
_color = "engie"
|
||||
item_color = "engie"
|
||||
|
||||
/obj/item/clothing/accessory/armband/science
|
||||
name = "science armband"
|
||||
desc = "An armband, worn by the crew to display which department they're assigned to. This one is purple."
|
||||
icon_state = "rnd"
|
||||
_color = "rnd"
|
||||
item_color = "rnd"
|
||||
|
||||
/obj/item/clothing/accessory/armband/hydro
|
||||
name = "hydroponics armband"
|
||||
desc = "An armband, worn by the crew to display which department they're assigned to. This one is green and blue."
|
||||
icon_state = "hydro"
|
||||
_color = "hydro"
|
||||
item_color = "hydro"
|
||||
|
||||
/obj/item/clothing/accessory/armband/med
|
||||
name = "medical armband"
|
||||
desc = "An armband, worn by the crew to display which department they're assigned to. This one is white."
|
||||
icon_state = "med"
|
||||
_color = "med"
|
||||
item_color = "med"
|
||||
|
||||
/obj/item/clothing/accessory/armband/medgreen
|
||||
name = "EMT armband"
|
||||
desc = "An armband, worn by the crew to display which department they're assigned to. This one is white and green."
|
||||
icon_state = "medgreen"
|
||||
_color = "medgreen"
|
||||
item_color = "medgreen"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "shoulder holster"
|
||||
desc = "A handgun holster."
|
||||
icon_state = "holster"
|
||||
_color = "holster"
|
||||
item_color = "holster"
|
||||
slot = "utility"
|
||||
var/holster_allow = /obj/item/weapon/gun
|
||||
var/obj/item/weapon/gun/holstered = null
|
||||
@@ -125,11 +125,11 @@
|
||||
name = "shoulder holster"
|
||||
desc = "A worn-out handgun holster. Perfect for concealed carry"
|
||||
icon_state = "holster"
|
||||
_color = "holster"
|
||||
item_color = "holster"
|
||||
holster_allow = /obj/item/weapon/gun/projectile
|
||||
|
||||
/obj/item/clothing/accessory/holster/waist
|
||||
name = "shoulder holster"
|
||||
desc = "A handgun holster. Made of expensive leather."
|
||||
icon_state = "holster"
|
||||
_color = "holster_low"
|
||||
item_color = "holster_low"
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "load bearing equipment"
|
||||
desc = "Used to hold things when you don't have enough hands."
|
||||
icon_state = "webbing"
|
||||
_color = "webbing"
|
||||
item_color = "webbing"
|
||||
slot = "utility"
|
||||
var/slots = 3
|
||||
var/obj/item/weapon/storage/internal/hold
|
||||
@@ -69,27 +69,27 @@
|
||||
name = "webbing"
|
||||
desc = "Sturdy mess of synthcotton belts and buckles, ready to share your burden."
|
||||
icon_state = "webbing"
|
||||
_color = "webbing"
|
||||
item_color = "webbing"
|
||||
|
||||
/obj/item/clothing/accessory/storage/black_vest
|
||||
name = "black webbing vest"
|
||||
desc = "Robust black synthcotton vest with lots of pockets to hold whatever you need, but cannot hold in hands."
|
||||
icon_state = "vest_black"
|
||||
_color = "vest_black"
|
||||
item_color = "vest_black"
|
||||
slots = 5
|
||||
|
||||
/obj/item/clothing/accessory/storage/brown_vest
|
||||
name = "brown webbing vest"
|
||||
desc = "Worn brownish synthcotton vest with lots of pockets to unload your hands."
|
||||
icon_state = "vest_brown"
|
||||
_color = "vest_brown"
|
||||
item_color = "vest_brown"
|
||||
slots = 5
|
||||
|
||||
/obj/item/clothing/accessory/storage/knifeharness
|
||||
name = "decorated harness"
|
||||
desc = "A heavily decorated harness of sinew and leather with two knife-loops."
|
||||
icon_state = "unathiharness2"
|
||||
_color = "unathiharness2"
|
||||
item_color = "unathiharness2"
|
||||
slots = 2
|
||||
|
||||
/obj/item/clothing/accessory/storage/knifeharness/New()
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
name = "black jumpsuit"
|
||||
icon_state = "black"
|
||||
item_state = "bl_suit"
|
||||
_color = "black"
|
||||
item_color = "black"
|
||||
desc = "It's a plain jumpsuit. It seems to have a small dial on the wrist."
|
||||
origin_tech = "syndicate=3"
|
||||
siemens_coefficient = 0.8
|
||||
@@ -38,11 +38,11 @@
|
||||
name = "psychedelic"
|
||||
desc = "Groovy!"
|
||||
icon_state = "psyche"
|
||||
_color = "psyche"
|
||||
item_color = "psyche"
|
||||
spawn(200)
|
||||
name = "Black Jumpsuit"
|
||||
icon_state = "bl_suit"
|
||||
_color = "black"
|
||||
item_color = "black"
|
||||
desc = null
|
||||
..()
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
name = A.name
|
||||
icon_state = A.icon_state
|
||||
item_state = A.item_state
|
||||
_color = A._color
|
||||
item_color = A.item_color
|
||||
usr.update_inv_w_uniform() //so our overlays update.
|
||||
|
||||
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
name = initial(C.name)
|
||||
icon_state = initial(C.icon_state)
|
||||
item_state = initial(C.item_state)
|
||||
_color = initial(C._color)
|
||||
item_color = initial(C.item_color)
|
||||
|
||||
/obj/item/clothing/under/color/black
|
||||
name = "black jumpsuit"
|
||||
icon_state = "black"
|
||||
item_state = "bl_suit"
|
||||
_color = "black"
|
||||
item_color = "black"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/blackf
|
||||
@@ -23,13 +23,13 @@
|
||||
desc = "It's very smart and in a ladies-size!"
|
||||
icon_state = "black"
|
||||
item_state = "bl_suit"
|
||||
_color = "blackf"
|
||||
item_color = "blackf"
|
||||
|
||||
/obj/item/clothing/under/color/blue
|
||||
name = "blue jumpsuit"
|
||||
icon_state = "blue"
|
||||
item_state = "b_suit"
|
||||
_color = "blue"
|
||||
item_color = "blue"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/blue/dodgeball
|
||||
@@ -39,7 +39,7 @@
|
||||
name = "green jumpsuit"
|
||||
icon_state = "green"
|
||||
item_state = "g_suit"
|
||||
_color = "green"
|
||||
item_color = "green"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/grey
|
||||
@@ -47,7 +47,7 @@
|
||||
desc = "A tasteful grey jumpsuit that reminds you of the good old days."
|
||||
icon_state = "grey"
|
||||
item_state = "gy_suit"
|
||||
_color = "grey"
|
||||
item_color = "grey"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/grey/greytide
|
||||
@@ -58,7 +58,7 @@
|
||||
desc = "Don't wear this near paranoid security officers"
|
||||
icon_state = "orange"
|
||||
item_state = "o_suit"
|
||||
_color = "orange"
|
||||
item_color = "orange"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/orange/prison
|
||||
@@ -66,7 +66,7 @@
|
||||
desc = "It's standardised Nanotrasen prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position."
|
||||
icon_state = "orange"
|
||||
item_state = "o_suit"
|
||||
_color = "orange"
|
||||
item_color = "orange"
|
||||
has_sensor = 2
|
||||
sensor_mode = 3
|
||||
flags = ONESIZEFITSALL
|
||||
@@ -76,14 +76,14 @@
|
||||
desc = "Just looking at this makes you feel <i>fabulous</i>."
|
||||
icon_state = "pink"
|
||||
item_state = "p_suit"
|
||||
_color = "pink"
|
||||
item_color = "pink"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/red
|
||||
name = "red jumpsuit"
|
||||
icon_state = "red"
|
||||
item_state = "r_suit"
|
||||
_color = "red"
|
||||
item_color = "red"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/red/dodgeball
|
||||
@@ -93,21 +93,21 @@
|
||||
name = "white jumpsuit"
|
||||
icon_state = "white"
|
||||
item_state = "w_suit"
|
||||
_color = "white"
|
||||
item_color = "white"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/yellow
|
||||
name = "yellow jumpsuit"
|
||||
icon_state = "yellow"
|
||||
item_state = "y_suit"
|
||||
_color = "yellow"
|
||||
item_color = "yellow"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/psyche
|
||||
name = "psychedelic jumpsuit"
|
||||
desc = "Groovy!"
|
||||
icon_state = "psyche"
|
||||
_color = "psyche"
|
||||
item_color = "psyche"
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -116,66 +116,66 @@
|
||||
/obj/item/clothing/under/color/lightblue
|
||||
name = "light blue jumpsuit"
|
||||
icon_state = "lightblue"
|
||||
_color = "lightblue"
|
||||
item_color = "lightblue"
|
||||
|
||||
/obj/item/clothing/under/color/aqua
|
||||
name = "aqua jumpsuit"
|
||||
icon_state = "aqua"
|
||||
_color = "aqua"
|
||||
item_color = "aqua"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/purple
|
||||
name = "purple jumpsuit"
|
||||
icon_state = "purple"
|
||||
item_state = "p_suit"
|
||||
_color = "purple"
|
||||
item_color = "purple"
|
||||
|
||||
/obj/item/clothing/under/color/lightpurple
|
||||
name = "light purple jumpsuit"
|
||||
icon_state = "lightpurple"
|
||||
_color = "lightpurple"
|
||||
item_color = "lightpurple"
|
||||
|
||||
/obj/item/clothing/under/color/lightgreen
|
||||
name = "light green jumpsuit"
|
||||
icon_state = "lightgreen"
|
||||
_color = "lightgreen"
|
||||
item_color = "lightgreen"
|
||||
|
||||
/obj/item/clothing/under/color/lightblue
|
||||
name = "light blue jumpsuit"
|
||||
icon_state = "lightblue"
|
||||
_color = "lightblue"
|
||||
item_color = "lightblue"
|
||||
|
||||
/obj/item/clothing/under/color/lightbrown
|
||||
name = "light brown jumpsuit"
|
||||
icon_state = "lightbrown"
|
||||
_color = "lightbrown"
|
||||
item_color = "lightbrown"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/brown
|
||||
name = "brown jumpsuit"
|
||||
icon_state = "brown"
|
||||
_color = "brown"
|
||||
item_color = "brown"
|
||||
|
||||
/obj/item/clothing/under/color/yellowgreen
|
||||
name = "yellow green jumpsuit"
|
||||
icon_state = "yellowgreen"
|
||||
_color = "yellowgreen"
|
||||
item_color = "yellowgreen"
|
||||
|
||||
/obj/item/clothing/under/color/darkblue
|
||||
name = "dark blue jumpsuit"
|
||||
icon_state = "darkblue"
|
||||
_color = "darkblue"
|
||||
item_color = "darkblue"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/lightred
|
||||
name = "light red jumpsuit"
|
||||
icon_state = "lightred"
|
||||
_color = "lightred"
|
||||
item_color = "lightred"
|
||||
|
||||
/obj/item/clothing/under/color/darkred
|
||||
name = "dark red jumpsuit"
|
||||
icon_state = "darkred"
|
||||
_color = "darkred"
|
||||
item_color = "darkred"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/red/jersey
|
||||
@@ -183,7 +183,7 @@
|
||||
desc = "The jersey of the Nanotrasen Phi-ghters!"
|
||||
icon_state = "redjersey"
|
||||
item_state = "r_suit"
|
||||
_color = "redjersey"
|
||||
item_color = "redjersey"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/color/blue/jersey
|
||||
@@ -191,5 +191,5 @@
|
||||
desc = "The jersey of the Nanotrasen Pi-rates!"
|
||||
icon_state = "bluejersey"
|
||||
item_state = "b_suit"
|
||||
_color = "bluejersey"
|
||||
item_color = "bluejersey"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
name = "bartender's uniform"
|
||||
icon_state = "ba_suit"
|
||||
item_state = "ba_suit"
|
||||
_color = "ba_suit"
|
||||
item_color = "ba_suit"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/captain //Alright, technically not a 'civilian' but its better then giving a .dm file for a single define.
|
||||
@@ -13,7 +13,7 @@
|
||||
name = "captain's jumpsuit"
|
||||
icon_state = "captain"
|
||||
item_state = "caparmor"
|
||||
_color = "captain"
|
||||
item_color = "captain"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/cargo
|
||||
@@ -21,7 +21,7 @@
|
||||
desc = "It's a jumpsuit worn by the quartermaster. It's specially designed to prevent back injuries caused by pushing paper."
|
||||
icon_state = "qm"
|
||||
item_state = "lb_suit"
|
||||
_color = "qm"
|
||||
item_color = "qm"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
desc = "Shooooorts! They're comfy and easy to wear!"
|
||||
icon_state = "cargotech"
|
||||
item_state = "lb_suit"
|
||||
_color = "cargo"
|
||||
item_color = "cargo"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
|
||||
@@ -39,14 +39,14 @@
|
||||
name = "chaplain's jumpsuit"
|
||||
icon_state = "chaplain"
|
||||
item_state = "bl_suit"
|
||||
_color = "chapblack"
|
||||
item_color = "chapblack"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/chef
|
||||
desc = "It's an apron which is given only to the most <b>hardcore</b> chefs in space."
|
||||
name = "chef's uniform"
|
||||
icon_state = "chef"
|
||||
_color = "chef"
|
||||
item_color = "chef"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/clown
|
||||
@@ -54,7 +54,7 @@
|
||||
desc = "<i>'HONK!'</i>"
|
||||
icon_state = "clown"
|
||||
item_state = "clown"
|
||||
_color = "clown"
|
||||
item_color = "clown"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
name = "head of personnel's jumpsuit"
|
||||
icon_state = "hop"
|
||||
item_state = "b_suit"
|
||||
_color = "hop"
|
||||
item_color = "hop"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/head_of_personnel_whimsy
|
||||
@@ -71,7 +71,7 @@
|
||||
name = "head of personnel's suit"
|
||||
icon_state = "hopwhimsy"
|
||||
item_state = "hopwhimsy"
|
||||
_color = "hopwhimsy"
|
||||
item_color = "hopwhimsy"
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/hydroponics
|
||||
@@ -79,7 +79,7 @@
|
||||
name = "botanist's jumpsuit"
|
||||
icon_state = "hydroponics"
|
||||
item_state = "g_suit"
|
||||
_color = "hydroponics"
|
||||
item_color = "hydroponics"
|
||||
permeability_coefficient = 0.50
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
name = "Internal Affairs uniform"
|
||||
icon_state = "internalaffairs"
|
||||
item_state = "internalaffairs"
|
||||
_color = "internalaffairs"
|
||||
item_color = "internalaffairs"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/ntrep
|
||||
@@ -96,14 +96,14 @@
|
||||
name = "dress shirt"
|
||||
icon_state = "internalaffairs"
|
||||
item_state = "internalaffairs"
|
||||
_color = "internalaffairs"
|
||||
item_color = "internalaffairs"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/janitor
|
||||
desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards."
|
||||
name = "janitor's jumpsuit"
|
||||
icon_state = "janitor"
|
||||
_color = "janitor"
|
||||
item_color = "janitor"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
@@ -116,42 +116,42 @@
|
||||
/obj/item/clothing/under/lawyer/black
|
||||
icon_state = "lawyer_black"
|
||||
item_state = "lawyer_black"
|
||||
_color = "lawyer_black"
|
||||
item_color = "lawyer_black"
|
||||
|
||||
/obj/item/clothing/under/lawyer/female
|
||||
icon_state = "black_suit_fem"
|
||||
item_state = "black_suit_fem"
|
||||
_color = "black_suit_fem"
|
||||
item_color = "black_suit_fem"
|
||||
|
||||
/obj/item/clothing/under/lawyer/red
|
||||
icon_state = "lawyer_red"
|
||||
item_state = "lawyer_red"
|
||||
_color = "lawyer_red"
|
||||
item_color = "lawyer_red"
|
||||
|
||||
/obj/item/clothing/under/lawyer/blue
|
||||
icon_state = "lawyer_blue"
|
||||
item_state = "lawyer_blue"
|
||||
_color = "lawyer_blue"
|
||||
item_color = "lawyer_blue"
|
||||
|
||||
/obj/item/clothing/under/lawyer/bluesuit
|
||||
name = "Blue Suit"
|
||||
desc = "A classy suit and tie"
|
||||
icon_state = "bluesuit"
|
||||
item_state = "bluesuit"
|
||||
_color = "bluesuit"
|
||||
item_color = "bluesuit"
|
||||
|
||||
/obj/item/clothing/under/lawyer/purpsuit
|
||||
name = "Purple Suit"
|
||||
icon_state = "lawyer_purp"
|
||||
item_state = "lawyer_purp"
|
||||
_color = "lawyer_purp"
|
||||
item_color = "lawyer_purp"
|
||||
|
||||
/obj/item/clothing/under/lawyer/oldman
|
||||
name = "Old Man's Suit"
|
||||
desc = "A classic suit for the older gentleman with built in back support."
|
||||
icon_state = "oldman"
|
||||
item_state = "oldman"
|
||||
_color = "oldman"
|
||||
item_color = "oldman"
|
||||
|
||||
|
||||
/obj/item/clothing/under/librarian
|
||||
@@ -159,7 +159,7 @@
|
||||
desc = "It's very... sensible."
|
||||
icon_state = "red_suit"
|
||||
item_state = "red_suit"
|
||||
_color = "red_suit"
|
||||
item_color = "red_suit"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/mime
|
||||
@@ -167,7 +167,7 @@
|
||||
desc = "It's not very colourful."
|
||||
icon_state = "mime"
|
||||
item_state = "mime"
|
||||
_color = "mime"
|
||||
item_color = "mime"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
name = "shaft miner's jumpsuit"
|
||||
icon_state = "miner"
|
||||
item_state = "miner"
|
||||
_color = "miner"
|
||||
item_color = "miner"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/barber
|
||||
@@ -184,4 +184,4 @@
|
||||
name = "barber's uniform"
|
||||
icon_state = "barber"
|
||||
item_state = "barber"
|
||||
_color = "barber"
|
||||
item_color = "barber"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
name = "chief engineer's jumpsuit"
|
||||
icon_state = "chiefengineer"
|
||||
item_state = "g_suit"
|
||||
_color = "chief"
|
||||
item_color = "chief"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
name = "atmospheric technician's jumpsuit"
|
||||
icon_state = "atmos"
|
||||
item_state = "atmos_suit"
|
||||
_color = "atmos"
|
||||
item_color = "atmos"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/engineer
|
||||
@@ -21,7 +21,7 @@
|
||||
name = "engineer's jumpsuit"
|
||||
icon_state = "engine"
|
||||
item_state = "engi_suit"
|
||||
_color = "engine"
|
||||
item_color = "engine"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
name = "roboticist's jumpsuit"
|
||||
icon_state = "robotics"
|
||||
item_state = "robotics"
|
||||
_color = "robotics"
|
||||
item_color = "robotics"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/mechanic
|
||||
@@ -38,4 +38,4 @@
|
||||
name = "mechanic's overalls"
|
||||
icon_state = "mechanic"
|
||||
item_state = "mechanic"
|
||||
_color = "mechanic"
|
||||
item_color = "mechanic"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
name = "research director's jumpsuit"
|
||||
icon_state = "director"
|
||||
item_state = "g_suit"
|
||||
_color = "director"
|
||||
item_color = "director"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
name = "scientist's jumpsuit"
|
||||
icon_state = "toxins"
|
||||
item_state = "w_suit"
|
||||
_color = "toxinswhite"
|
||||
item_color = "toxinswhite"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
@@ -25,7 +25,7 @@
|
||||
name = "chemist's jumpsuit"
|
||||
icon_state = "chemistry"
|
||||
item_state = "w_suit"
|
||||
_color = "chemistrywhite"
|
||||
item_color = "chemistrywhite"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
@@ -38,7 +38,7 @@
|
||||
name = "chief medical officer's jumpsuit"
|
||||
icon_state = "cmo"
|
||||
item_state = "w_suit"
|
||||
_color = "cmo"
|
||||
item_color = "cmo"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
@@ -48,7 +48,7 @@
|
||||
name = "geneticist's jumpsuit"
|
||||
icon_state = "genetics"
|
||||
item_state = "w_suit"
|
||||
_color = "geneticswhite"
|
||||
item_color = "geneticswhite"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
@@ -58,7 +58,7 @@
|
||||
name = "virologist's jumpsuit"
|
||||
icon_state = "virology"
|
||||
item_state = "w_suit"
|
||||
_color = "virologywhite"
|
||||
item_color = "virologywhite"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
@@ -68,7 +68,7 @@
|
||||
name = "nurse's suit"
|
||||
icon_state = "nursesuit"
|
||||
item_state = "nursesuit"
|
||||
_color = "nursesuit"
|
||||
item_color = "nursesuit"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
@@ -78,7 +78,7 @@
|
||||
name = "nurse's dress"
|
||||
icon_state = "nurse"
|
||||
item_state = "nurse"
|
||||
_color = "nurse"
|
||||
item_color = "nurse"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
@@ -88,7 +88,7 @@
|
||||
name = "orderly's uniform"
|
||||
icon_state = "orderly"
|
||||
item_state = "orderly"
|
||||
_color = "orderly"
|
||||
item_color = "orderly"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
@@ -98,7 +98,7 @@
|
||||
name = "medical doctor's jumpsuit"
|
||||
icon_state = "medical"
|
||||
item_state = "w_suit"
|
||||
_color = "medical"
|
||||
item_color = "medical"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
@@ -107,28 +107,28 @@
|
||||
name = "medical scrubs"
|
||||
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"
|
||||
item_color = "scrubsblue"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/medical/green
|
||||
name = "medical scrubs"
|
||||
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"
|
||||
item_color = "scrubsgreen"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/medical/purple
|
||||
name = "medical scrubs"
|
||||
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"
|
||||
item_color = "scrubspurple"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/medical/mortician
|
||||
name = "coroner's scrubs"
|
||||
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"
|
||||
item_color = "scrubsblack"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
//paramedic
|
||||
@@ -137,7 +137,7 @@
|
||||
name = "paramedic's jumpsuit"
|
||||
icon_state = "paramedic"
|
||||
item_state = "paramedic"
|
||||
_color = "paramedic"
|
||||
item_color = "paramedic"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 10)
|
||||
flags = ONESIZEFITSALL
|
||||
@@ -147,7 +147,7 @@
|
||||
name = "psychiatrist's jumpsuit"
|
||||
icon_state = "psych"
|
||||
item_state = "w_suit"
|
||||
_color = "psych"
|
||||
item_color = "psych"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/rank/psych/turtleneck
|
||||
@@ -155,7 +155,7 @@
|
||||
name = "psychologist's turtleneck"
|
||||
icon_state = "psychturtle"
|
||||
item_state = "b_suit"
|
||||
_color = "psychturtle"
|
||||
item_color = "psychturtle"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
name = "geneticist's jumpsuit"
|
||||
icon_state = "genetics_new"
|
||||
item_state = "w_suit"
|
||||
_color = "genetics_new"
|
||||
item_color = "genetics_new"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
@@ -177,7 +177,7 @@
|
||||
name = "chemist's jumpsuit"
|
||||
icon_state = "chemist_new"
|
||||
item_state = "w_suit"
|
||||
_color = "chemist_new"
|
||||
item_color = "chemist_new"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
@@ -187,7 +187,7 @@
|
||||
name = "scientist's jumpsuit"
|
||||
icon_state = "scientist_new"
|
||||
item_state = "w_suit"
|
||||
_color = "scientist_new"
|
||||
item_color = "scientist_new"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
@@ -197,7 +197,7 @@
|
||||
name = "virologist's jumpsuit"
|
||||
icon_state = "virologist_new"
|
||||
item_state = "w_suit"
|
||||
_color = "virologist_new"
|
||||
item_color = "virologist_new"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
name = "warden's jumpsuit"
|
||||
icon_state = "warden"
|
||||
item_state = "r_suit"
|
||||
_color = "warden"
|
||||
item_color = "warden"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
siemens_coefficient = 0.9
|
||||
@@ -24,7 +24,7 @@
|
||||
desc = "It's made of a slightly sturdier material than standard jumpsuits, to allow for robust protection."
|
||||
icon_state = "security"
|
||||
item_state = "r_suit"
|
||||
_color = "secred"
|
||||
item_color = "secred"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
siemens_coefficient = 0.9
|
||||
@@ -34,7 +34,7 @@
|
||||
desc = "A dress shirt and khakis with a security patch sewn on."
|
||||
icon_state = "dispatch"
|
||||
item_state = "dispatch"
|
||||
_color = "dispatch"
|
||||
item_color = "dispatch"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
siemens_coefficient = 0.9
|
||||
@@ -44,7 +44,7 @@
|
||||
desc = "It's made of a slightly sturdier material, to allow for robust protection."
|
||||
icon_state = "redshirt2"
|
||||
item_state = "r_suit"
|
||||
_color = "redshirt2"
|
||||
item_color = "redshirt2"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
siemens_coefficient = 0.9
|
||||
@@ -52,12 +52,12 @@
|
||||
/obj/item/clothing/under/rank/security/corp
|
||||
icon_state = "sec_corporate"
|
||||
item_state = "sec_corporate"
|
||||
_color = "sec_corporate"
|
||||
item_color = "sec_corporate"
|
||||
|
||||
/obj/item/clothing/under/rank/warden/corp
|
||||
icon_state = "warden_corporate"
|
||||
item_state = "warden_corporate"
|
||||
_color = "warden_corporate"
|
||||
item_color = "warden_corporate"
|
||||
|
||||
/*
|
||||
* Detective
|
||||
@@ -67,7 +67,7 @@
|
||||
desc = "Someone who wears this means business."
|
||||
icon_state = "detective"
|
||||
item_state = "det"
|
||||
_color = "detective"
|
||||
item_color = "detective"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
siemens_coefficient = 0.9
|
||||
@@ -84,7 +84,7 @@
|
||||
name = "head of security's jumpsuit"
|
||||
icon_state = "hos"
|
||||
item_state = "r_suit"
|
||||
_color = "hosred"
|
||||
item_color = "hosred"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
siemens_coefficient = 0.8
|
||||
@@ -92,7 +92,7 @@
|
||||
/obj/item/clothing/under/rank/head_of_security/corp
|
||||
icon_state = "hos_corporate"
|
||||
item_state = "hos_corporate"
|
||||
_color = "hos_corporate"
|
||||
item_color = "hos_corporate"
|
||||
|
||||
//Jensen cosplay gear
|
||||
/obj/item/clothing/under/rank/head_of_security/jensen
|
||||
@@ -100,7 +100,7 @@
|
||||
name = "head of security's jumpsuit"
|
||||
icon_state = "jensen"
|
||||
item_state = "jensen"
|
||||
_color = "jensen"
|
||||
item_color = "jensen"
|
||||
siemens_coefficient = 0.6
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
@@ -133,21 +133,21 @@
|
||||
desc = "A formal security suit for officers complete with nanotrasen belt buckle."
|
||||
icon_state = "security_formal"
|
||||
item_state = "gy_suit"
|
||||
_color = "security_formal"
|
||||
item_color = "security_formal"
|
||||
|
||||
/obj/item/clothing/under/rank/warden/formal
|
||||
name = "warden's suit"
|
||||
desc = "A formal security suit for the warden with blue desginations and '/Warden/' stiched into the shoulders."
|
||||
icon_state = "warden_formal"
|
||||
item_state = "gy_suit"
|
||||
_color = "warden_formal"
|
||||
item_color = "warden_formal"
|
||||
|
||||
/obj/item/clothing/under/rank/head_of_security/formal
|
||||
name = "head of security's suit"
|
||||
desc = "A security suit decorated for those few with the dedication to achieve the position of Head of Security."
|
||||
icon_state = "hos_formal"
|
||||
item_state = "gy_suit"
|
||||
_color = "hos_formal"
|
||||
item_color = "hos_formal"
|
||||
|
||||
|
||||
//Brig Physician
|
||||
@@ -156,7 +156,7 @@
|
||||
name = "brig physician's jumpsuit"
|
||||
icon_state = "brig_phys"
|
||||
item_state = "brig_phys"
|
||||
_color = "brig_phys"
|
||||
item_color = "brig_phys"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
@@ -2,14 +2,14 @@
|
||||
name = "red pj's"
|
||||
desc = "Sleepwear."
|
||||
icon_state = "red_pyjamas"
|
||||
_color = "red_pyjamas"
|
||||
item_color = "red_pyjamas"
|
||||
item_state = "w_suit"
|
||||
|
||||
/obj/item/clothing/under/pj/blue
|
||||
name = "blue pj's"
|
||||
desc = "Sleepwear."
|
||||
icon_state = "blue_pyjamas"
|
||||
_color = "blue_pyjamas"
|
||||
item_color = "blue_pyjamas"
|
||||
item_state = "w_suit"
|
||||
|
||||
/obj/item/clothing/under/patriotsuit
|
||||
@@ -17,76 +17,76 @@
|
||||
desc = "Motorcycle not included."
|
||||
icon_state = "ek"
|
||||
item_state = "ek"
|
||||
_color = "ek"
|
||||
item_color = "ek"
|
||||
|
||||
/obj/item/clothing/under/captain_fly
|
||||
name = "rogue captains uniform"
|
||||
desc = "For the man who doesn't care because he's still free."
|
||||
icon_state = "captain_fly"
|
||||
item_state = "captain_fly"
|
||||
_color = "captain_fly"
|
||||
item_color = "captain_fly"
|
||||
|
||||
/obj/item/clothing/under/scratch
|
||||
name = "white suit"
|
||||
desc = "A white suit, suitable for an excellent host"
|
||||
icon_state = "scratch"
|
||||
item_state = "scratch"
|
||||
_color = "scratch"
|
||||
item_color = "scratch"
|
||||
|
||||
/obj/item/clothing/under/sl_suit
|
||||
desc = "It's a very amish looking suit."
|
||||
name = "amish suit"
|
||||
icon_state = "sl_suit"
|
||||
_color = "sl_suit"
|
||||
item_color = "sl_suit"
|
||||
|
||||
/obj/item/clothing/under/waiter
|
||||
name = "waiter's outfit"
|
||||
desc = "It's a very smart uniform with a special pocket for tip."
|
||||
icon_state = "waiter"
|
||||
item_state = "waiter"
|
||||
_color = "waiter"
|
||||
item_color = "waiter"
|
||||
|
||||
/obj/item/clothing/under/rank/mailman
|
||||
name = "mailman's jumpsuit"
|
||||
desc = "<i>'Special delivery!'</i>"
|
||||
icon_state = "mailman"
|
||||
item_state = "b_suit"
|
||||
_color = "mailman"
|
||||
item_color = "mailman"
|
||||
|
||||
/obj/item/clothing/under/sexyclown
|
||||
name = "sexy-clown suit"
|
||||
desc = "It makes you look HONKable!"
|
||||
icon_state = "sexyclown"
|
||||
item_state = "sexyclown"
|
||||
_color = "sexyclown"
|
||||
item_color = "sexyclown"
|
||||
|
||||
/obj/item/clothing/under/rank/vice
|
||||
name = "vice officer's jumpsuit"
|
||||
desc = "It's the standard issue pretty-boy outfit, as seen on Holo-Vision."
|
||||
icon_state = "vice"
|
||||
item_state = "gy_suit"
|
||||
_color = "vice"
|
||||
item_color = "vice"
|
||||
|
||||
/obj/item/clothing/under/rank/centcom_officer
|
||||
desc = "It's a jumpsuit worn by CentCom Officers."
|
||||
name = "\improper CentCom officer's jumpsuit"
|
||||
icon_state = "officer"
|
||||
item_state = "g_suit"
|
||||
_color = "officer"
|
||||
item_color = "officer"
|
||||
|
||||
/obj/item/clothing/under/rank/centcom_commander
|
||||
desc = "It's a jumpsuit worn by CentCom's highest-tier Commanders."
|
||||
name = "\improper CentCom officer's jumpsuit"
|
||||
icon_state = "centcom"
|
||||
item_state = "dg_suit"
|
||||
_color = "centcom"
|
||||
item_color = "centcom"
|
||||
|
||||
/obj/item/clothing/under/rank/centcom/officer
|
||||
desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Lieutenant-Commander\" and bears \"N.C.V. Fearless CV-286\" on the left shounder."
|
||||
name = "\improper Nanotrasen Officers Uniform"
|
||||
icon_state = "officer"
|
||||
item_state = "g_suit"
|
||||
_color = "officer"
|
||||
item_color = "officer"
|
||||
displays_id = 0
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
name = "\improper Nanotrasen Captains Uniform"
|
||||
icon_state = "centcom"
|
||||
item_state = "dg_suit"
|
||||
_color = "centcom"
|
||||
item_color = "centcom"
|
||||
displays_id = 0
|
||||
|
||||
/obj/item/clothing/under/rank/centcom/blueshield
|
||||
@@ -103,7 +103,7 @@
|
||||
name = "\improper Nanotrasen Navy Uniform"
|
||||
icon_state = "officer"
|
||||
item_state = "g_suit"
|
||||
_color = "officer"
|
||||
item_color = "officer"
|
||||
displays_id = 0
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
name = "\improper Nanotrasen Navy Uniform"
|
||||
icon_state = "officer"
|
||||
item_state = "g_suit"
|
||||
_color = "officer"
|
||||
item_color = "officer"
|
||||
displays_id = 0
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
name = "\improper Nanotrasen Diplomatic Uniform"
|
||||
icon_state = "presidente"
|
||||
item_state = "g_suit"
|
||||
_color = "presidente"
|
||||
item_color = "presidente"
|
||||
displays_id = 0
|
||||
|
||||
/obj/item/clothing/under/rank/blueshield
|
||||
@@ -129,7 +129,7 @@
|
||||
desc = "A short-sleeved black uniform, paired with grey digital-camo cargo pants. Standard issue to Blueshield officers."
|
||||
icon_state = "ert_uniform"
|
||||
item_state = "bl_suit"
|
||||
_color = "ert_uniform"
|
||||
item_color = "ert_uniform"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/under/space
|
||||
@@ -137,7 +137,7 @@
|
||||
desc = "It has a NASA logo on it and is made of space-proofed materials."
|
||||
icon_state = "black"
|
||||
item_state = "bl_suit"
|
||||
_color = "black"
|
||||
item_color = "black"
|
||||
w_class = 4//bulky item
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.02
|
||||
@@ -151,7 +151,7 @@
|
||||
name = "administrative cybernetic jumpsuit"
|
||||
icon_state = "syndicate"
|
||||
item_state = "bl_suit"
|
||||
_color = "syndicate"
|
||||
item_color = "syndicate"
|
||||
desc = "it's a cybernetically enhanced jumpsuit used for administrative duties."
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
@@ -168,69 +168,69 @@
|
||||
name = "johnny~~ jumpsuit"
|
||||
desc = "Johnny~~"
|
||||
icon_state = "johnny"
|
||||
_color = "johnny"
|
||||
item_color = "johnny"
|
||||
|
||||
/obj/item/clothing/under/rainbow
|
||||
name = "rainbow"
|
||||
desc = "rainbow"
|
||||
icon_state = "rainbow"
|
||||
item_state = "rainbow"
|
||||
_color = "rainbow"
|
||||
item_color = "rainbow"
|
||||
|
||||
/obj/item/clothing/under/cloud
|
||||
name = "cloud"
|
||||
desc = "cloud"
|
||||
icon_state = "cloud"
|
||||
_color = "cloud"
|
||||
item_color = "cloud"
|
||||
|
||||
/obj/item/clothing/under/psysuit
|
||||
name = "dark undersuit"
|
||||
desc = "A thick, layered grey undersuit lined with power cables. Feels a little like wearing an electrical storm."
|
||||
icon_state = "psysuit"
|
||||
item_state = "psysuit"
|
||||
_color = "psysuit"
|
||||
item_color = "psysuit"
|
||||
|
||||
/obj/item/clothing/under/gimmick/rank/captain/suit
|
||||
name = "captain's suit"
|
||||
desc = "A green suit and yellow necktie. Exemplifies authority."
|
||||
icon_state = "green_suit"
|
||||
item_state = "dg_suit"
|
||||
_color = "green_suit"
|
||||
item_color = "green_suit"
|
||||
|
||||
/obj/item/clothing/under/gimmick/rank/head_of_personnel/suit
|
||||
name = "head of personnel's suit"
|
||||
desc = "A teal suit and yellow necktie. An authoritative yet tacky ensemble."
|
||||
icon_state = "teal_suit"
|
||||
item_state = "g_suit"
|
||||
_color = "teal_suit"
|
||||
item_color = "teal_suit"
|
||||
|
||||
/obj/item/clothing/under/suit_jacket
|
||||
name = "black suit"
|
||||
desc = "A black suit and red tie. Very formal."
|
||||
icon_state = "black_suit"
|
||||
item_state = "bl_suit"
|
||||
_color = "black_suit"
|
||||
item_color = "black_suit"
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/really_black
|
||||
name = "executive suit"
|
||||
desc = "A formal black suit and red tie, intended for the station's finest."
|
||||
icon_state = "really_black_suit"
|
||||
item_state = "bl_suit"
|
||||
_color = "really_black_suit"
|
||||
item_color = "really_black_suit"
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/female
|
||||
name = "executive suit"
|
||||
desc = "A formal trouser suit for women, intended for the station's finest."
|
||||
icon_state = "black_suit_fem"
|
||||
item_state = "black_suit_fem"
|
||||
_color = "black_suit_fem"
|
||||
item_color = "black_suit_fem"
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/red
|
||||
name = "red suit"
|
||||
desc = "A red suit and blue tie. Somewhat formal."
|
||||
icon_state = "red_suit"
|
||||
item_state = "r_suit"
|
||||
_color = "red_suit"
|
||||
item_color = "red_suit"
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/navy
|
||||
@@ -238,34 +238,34 @@
|
||||
desc = "A navy suit and red tie, intended for the station's finest."
|
||||
icon_state = "navy_suit"
|
||||
item_state = "navy_suit"
|
||||
_color = "navy_suit"
|
||||
item_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"
|
||||
item_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"
|
||||
item_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"
|
||||
item_color = "charcoal_suit"
|
||||
|
||||
/obj/item/clothing/under/blackskirt
|
||||
name = "black skirt"
|
||||
desc = "A black skirt, very fancy!"
|
||||
icon_state = "blackskirt"
|
||||
_color = "blackskirt"
|
||||
item_color = "blackskirt"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
|
||||
/obj/item/clothing/under/schoolgirl
|
||||
@@ -273,7 +273,7 @@
|
||||
desc = "It's just like one of my Japanese animes!"
|
||||
icon_state = "schoolgirl"
|
||||
item_state = "schoolgirl"
|
||||
_color = "schoolgirl"
|
||||
item_color = "schoolgirl"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
|
||||
/obj/item/clothing/under/overalls
|
||||
@@ -281,42 +281,42 @@
|
||||
desc = "A set of durable overalls for getting the job done."
|
||||
icon_state = "overalls"
|
||||
item_state = "lb_suit"
|
||||
_color = "overalls"
|
||||
item_color = "overalls"
|
||||
|
||||
/obj/item/clothing/under/pirate
|
||||
name = "pirate outfit"
|
||||
desc = "Yarr."
|
||||
icon_state = "pirate"
|
||||
item_state = "pirate"
|
||||
_color = "pirate"
|
||||
item_color = "pirate"
|
||||
|
||||
/obj/item/clothing/under/pirate_rags
|
||||
name = "pirate rags"
|
||||
desc = "an old ragged set of clothing"
|
||||
icon_state = "piraterags"
|
||||
item_state = "piraterags"
|
||||
_color = "piraterags"
|
||||
item_color = "piraterags"
|
||||
|
||||
/obj/item/clothing/under/soviet
|
||||
name = "soviet uniform"
|
||||
desc = "For the Motherland!"
|
||||
icon_state = "soviet"
|
||||
item_state = "soviet"
|
||||
_color = "soviet"
|
||||
item_color = "soviet"
|
||||
|
||||
/obj/item/clothing/under/redcoat
|
||||
name = "redcoat uniform"
|
||||
desc = "Looks old."
|
||||
icon_state = "redcoat"
|
||||
item_state = "redcoat"
|
||||
_color = "redcoat"
|
||||
item_color = "redcoat"
|
||||
|
||||
/obj/item/clothing/under/kilt
|
||||
name = "kilt"
|
||||
desc = "Includes shoes and plaid"
|
||||
icon_state = "kilt"
|
||||
item_state = "kilt"
|
||||
_color = "kilt"
|
||||
item_color = "kilt"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|FEET
|
||||
|
||||
/obj/item/clothing/under/sexymime
|
||||
@@ -324,7 +324,7 @@
|
||||
desc = "The only time when you DON'T enjoy looking at someone's rack."
|
||||
icon_state = "sexymime"
|
||||
item_state = "sexymime"
|
||||
_color = "sexymime"
|
||||
item_color = "sexymime"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
|
||||
/obj/item/clothing/under/gladiator
|
||||
@@ -332,7 +332,7 @@
|
||||
desc = "Are you not entertained? Is that not why you are here?"
|
||||
icon_state = "gladiator"
|
||||
item_state = "gladiator"
|
||||
_color = "gladiator"
|
||||
item_color = "gladiator"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
|
||||
//dress
|
||||
@@ -341,79 +341,79 @@
|
||||
name = "flame dress"
|
||||
desc = "A small black dress with blue flames print on it."
|
||||
icon_state = "dress_fire"
|
||||
_color = "dress_fire"
|
||||
item_color = "dress_fire"
|
||||
|
||||
/obj/item/clothing/under/dress/dress_green
|
||||
name = "green dress"
|
||||
desc = "A simple, tight fitting green dress."
|
||||
icon_state = "dress_green"
|
||||
_color = "dress_green"
|
||||
item_color = "dress_green"
|
||||
|
||||
/obj/item/clothing/under/dress/dress_orange
|
||||
name = "orange dress"
|
||||
desc = "A fancy orange gown for those who like to show leg."
|
||||
icon_state = "dress_orange"
|
||||
_color = "dress_orange"
|
||||
item_color = "dress_orange"
|
||||
|
||||
/obj/item/clothing/under/dress/dress_pink
|
||||
name = "pink dress"
|
||||
desc = "A simple, tight fitting pink dress."
|
||||
icon_state = "dress_pink"
|
||||
_color = "dress_pink"
|
||||
item_color = "dress_pink"
|
||||
|
||||
/obj/item/clothing/under/dress/dress_yellow
|
||||
name = "yellow dress"
|
||||
desc = "A flirty, little yellow dress."
|
||||
icon_state = "dress_yellow"
|
||||
_color = "dress_yellow"
|
||||
item_color = "dress_yellow"
|
||||
|
||||
/obj/item/clothing/under/dress/dress_saloon
|
||||
name = "saloon girl dress"
|
||||
desc = "A old western inspired gown for the girl who likes to drink."
|
||||
icon_state = "dress_saloon"
|
||||
_color = "dress_saloon"
|
||||
item_color = "dress_saloon"
|
||||
|
||||
/obj/item/clothing/under/dress/dress_rd
|
||||
name = "research director dress uniform"
|
||||
desc = "Feminine fashion for the style concious RD."
|
||||
icon_state = "dress_rd"
|
||||
_color = "dress_rd"
|
||||
item_color = "dress_rd"
|
||||
|
||||
/obj/item/clothing/under/dress/dress_cap
|
||||
name = "captain dress uniform"
|
||||
desc = "Feminine fashion for the style concious captain."
|
||||
icon_state = "dress_cap"
|
||||
_color = "dress_cap"
|
||||
item_color = "dress_cap"
|
||||
|
||||
/obj/item/clothing/under/dress/dress_hop
|
||||
name = "head of personal dress uniform"
|
||||
desc = "Feminine fashion for the style concious HoP."
|
||||
icon_state = "dress_hop"
|
||||
_color = "dress_hop"
|
||||
item_color = "dress_hop"
|
||||
|
||||
/obj/item/clothing/under/dress/dress_hr
|
||||
name = "human resources director uniform"
|
||||
desc = "Superior class for the nosy H.R. Director."
|
||||
icon_state = "huresource"
|
||||
_color = "huresource"
|
||||
item_color = "huresource"
|
||||
|
||||
/obj/item/clothing/under/dress/plaid_blue
|
||||
name = "blue plaid skirt"
|
||||
desc = "A preppy blue skirt with a white blouse."
|
||||
icon_state = "plaid_blue"
|
||||
_color = "plaid_blue"
|
||||
item_color = "plaid_blue"
|
||||
|
||||
/obj/item/clothing/under/dress/plaid_red
|
||||
name = "red plaid skirt"
|
||||
desc = "A preppy red skirt with a white blouse."
|
||||
icon_state = "plaid_red"
|
||||
_color = "plaid_red"
|
||||
item_color = "plaid_red"
|
||||
|
||||
/obj/item/clothing/under/dress/plaid_purple
|
||||
name = "blue purple skirt"
|
||||
desc = "A preppy purple skirt with a white blouse."
|
||||
icon_state = "plaid_purple"
|
||||
_color = "plaid_purple"
|
||||
item_color = "plaid_purple"
|
||||
|
||||
//wedding stuff
|
||||
|
||||
@@ -421,35 +421,35 @@
|
||||
name = "orange wedding dress"
|
||||
desc = "A big and puffy orange dress."
|
||||
icon_state = "bride_orange"
|
||||
_color = "bride_orange"
|
||||
item_color = "bride_orange"
|
||||
flags_inv = HIDESHOES
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_purple
|
||||
name = "purple wedding dress"
|
||||
desc = "A big and puffy purple dress."
|
||||
icon_state = "bride_purple"
|
||||
_color = "bride_purple"
|
||||
item_color = "bride_purple"
|
||||
flags_inv = HIDESHOES
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_blue
|
||||
name = "blue wedding dress"
|
||||
desc = "A big and puffy blue dress."
|
||||
icon_state = "bride_blue"
|
||||
_color = "bride_blue"
|
||||
item_color = "bride_blue"
|
||||
flags_inv = HIDESHOES
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_red
|
||||
name = "red wedding dress"
|
||||
desc = "A big and puffy red dress."
|
||||
icon_state = "bride_red"
|
||||
_color = "bride_red"
|
||||
item_color = "bride_red"
|
||||
flags_inv = HIDESHOES
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_white
|
||||
name = "orange wedding dress"
|
||||
desc = "A white wedding gown made from the finest silk."
|
||||
icon_state = "bride_white"
|
||||
_color = "bride_white"
|
||||
item_color = "bride_white"
|
||||
flags_inv = HIDESHOES
|
||||
|
||||
/obj/item/clothing/under/sundress
|
||||
@@ -457,14 +457,14 @@
|
||||
desc = "Makes you want to frolic in a field of daisies."
|
||||
icon_state = "sundress"
|
||||
item_state = "sundress"
|
||||
_color = "sundress"
|
||||
item_color = "sundress"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
|
||||
/obj/item/clothing/under/roman
|
||||
name = "roman armor"
|
||||
desc = "An ancient Roman armor. Made of metallic strips and leather straps."
|
||||
icon_state = "roman"
|
||||
_color = "roman"
|
||||
item_color = "roman"
|
||||
item_state = "armor"
|
||||
|
||||
/obj/item/clothing/under/maid
|
||||
@@ -472,7 +472,7 @@
|
||||
desc = "Maid in China."
|
||||
icon_state = "meido"
|
||||
item_state = "meido"
|
||||
_color = "meido"
|
||||
item_color = "meido"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
|
||||
/obj/item/clothing/under/janimaid
|
||||
@@ -480,7 +480,7 @@
|
||||
desc = "A simple maid uniform for housekeeping."
|
||||
icon_state = "janimaid"
|
||||
item_state = "janimaid"
|
||||
_color = "janimaid"
|
||||
item_color = "janimaid"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
|
||||
/obj/item/clothing/under/flappers
|
||||
@@ -488,42 +488,42 @@
|
||||
desc = "Nothing like the roarin' '20s, flapping the night away on the dance floor."
|
||||
icon_state = "flapper"
|
||||
item_state = "flapper"
|
||||
_color = "flapper"
|
||||
item_color = "flapper"
|
||||
|
||||
/obj/item/clothing/under/mafia
|
||||
name = "mafia outfit"
|
||||
desc = "The business of the mafia is business."
|
||||
icon_state = "mafia"
|
||||
item_state = "mafia"
|
||||
_color = "mafia"
|
||||
item_color = "mafia"
|
||||
|
||||
/obj/item/clothing/under/mafia/vest
|
||||
name = "mafia vest"
|
||||
desc = "Extreme problems often require extreme solutions."
|
||||
icon_state = "mafiavest"
|
||||
item_state = "mafiavest"
|
||||
_color = "mafiavest"
|
||||
item_color = "mafiavest"
|
||||
|
||||
/obj/item/clothing/under/mafia/white
|
||||
name = "white mafia outfit"
|
||||
desc = "The best defense against the treacherous is treachery."
|
||||
icon_state = "mafiawhite"
|
||||
item_state = "mafiawhite"
|
||||
_color = "mafiawhite"
|
||||
item_color = "mafiawhite"
|
||||
|
||||
/obj/item/clothing/under/mafia/sue
|
||||
name = "mafia vest"
|
||||
desc = "The business is born into."
|
||||
icon_state = "suevest"
|
||||
item_state = "suevest"
|
||||
_color = "suevest"
|
||||
item_color = "suevest"
|
||||
|
||||
/obj/item/clothing/under/mafia/tan
|
||||
name = "leather mafia outfit"
|
||||
desc = "The big drum sounds good only from a distance."
|
||||
icon_state = "mafiatan"
|
||||
item_state = "mafiatan"
|
||||
_color = "mafiatan"
|
||||
item_color = "mafiatan"
|
||||
|
||||
|
||||
/obj/item/clothing/under/bane
|
||||
@@ -531,42 +531,42 @@
|
||||
desc = "Wear this harness to become the bane of the station."
|
||||
icon_state = "bane"
|
||||
item_state = "bane"
|
||||
_color = "bane"
|
||||
item_color = "bane"
|
||||
|
||||
/obj/item/clothing/under/vox_grey
|
||||
name = "Grey Vox Jumpsuit"
|
||||
desc = "An assistant's jumpsuit ripped to better fit a vox."
|
||||
icon_state = "vgrey"
|
||||
item_state = "vgrey"
|
||||
_color = "vgrey"
|
||||
item_color = "vgrey"
|
||||
|
||||
/obj/item/clothing/under/vox_robotics
|
||||
name = "Vox Robotics Jumpsuit"
|
||||
desc = "A roboticist's jumpsuit ripped to better fit a vox."
|
||||
icon_state = "vrobotics"
|
||||
item_state = "vrobotics"
|
||||
_color = "vrobotics"
|
||||
item_color = "vrobotics"
|
||||
|
||||
/obj/item/clothing/under/vox_toxins
|
||||
name = "Vox Toxins Jumpsuit"
|
||||
desc = "A Toxin Researcher's jumpsuit ripped to better fit a vox."
|
||||
icon_state = "vtoxinswhite"
|
||||
item_state = "vtoxinswhite"
|
||||
_color = "vtoxinswhite"
|
||||
item_color = "vtoxinswhite"
|
||||
|
||||
/obj/item/clothing/under/vox_atmos
|
||||
name = "Vox Atmos Jumpsuit"
|
||||
desc = "An Atmos Tech's jumpsuit ripped to better fit a vox."
|
||||
icon_state = "vatmos"
|
||||
item_state = "vatmos"
|
||||
_color = "vatmos"
|
||||
item_color = "vatmos"
|
||||
|
||||
/obj/item/clothing/under/vox_engi
|
||||
name = "Vox Engineer Jumpsuit"
|
||||
desc = "An Engineer's jumpsuit ripped to better fit a vox."
|
||||
icon_state = "vengine"
|
||||
item_state = "vengine"
|
||||
_color = "vengine"
|
||||
item_color = "vengine"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
|
||||
|
||||
/obj/item/clothing/under/vox_sec
|
||||
@@ -574,7 +574,7 @@
|
||||
desc = "A Security officer's jumpsuit ripped to better fit a vox."
|
||||
icon_state = "vred"
|
||||
item_state = "vred"
|
||||
_color = "vred"
|
||||
item_color = "vred"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/under/vox_chem
|
||||
@@ -582,7 +582,7 @@
|
||||
desc = "A Chemist's jumpsuit ripped to better fit a vox."
|
||||
icon_state = "vchem"
|
||||
item_state = "vchem"
|
||||
_color = "vchem"
|
||||
item_color = "vchem"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
|
||||
/obj/item/clothing/under/psyjump
|
||||
@@ -590,34 +590,34 @@
|
||||
desc = "A suit made of strange materials."
|
||||
icon_state = "psyamp"
|
||||
item_state = "psyamp"
|
||||
_color = "psyamp"
|
||||
item_color = "psyamp"
|
||||
|
||||
/obj/item/clothing/under/rebeloutfit
|
||||
name = "Rebel Outfit"
|
||||
desc = "Made in Seattle, 2216."
|
||||
icon_state = "colin_earle"
|
||||
item_state = "colin_earle"
|
||||
_color = "colin_earle"
|
||||
item_color = "colin_earle"
|
||||
|
||||
/obj/item/clothing/under/officeruniform
|
||||
name = "Clown Officer's Uniform"
|
||||
desc = "For Clown officers, this uniform was designed by the great clown designer Hugo Boss."
|
||||
icon_state = "officeruniform"
|
||||
_color = "officeruniform"
|
||||
item_color = "officeruniform"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
|
||||
/obj/item/clothing/under/soldieruniform
|
||||
name = "Clown Soldier's Uniform"
|
||||
desc = "For the basic grunt of the Clown army."
|
||||
icon_state = "soldieruniform"
|
||||
_color = "soldieruniform"
|
||||
item_color = "soldieruniform"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
|
||||
/obj/item/clothing/under/pennywise
|
||||
name = "Pennywise Costume"
|
||||
desc = "It's everything you ever were afraid of."
|
||||
icon_state = "pennywise"
|
||||
_color = "pennywise"
|
||||
item_color = "pennywise"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
|
||||
/obj/item/clothing/under/assistantformal
|
||||
@@ -625,60 +625,60 @@
|
||||
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"
|
||||
item_color = "assistant_formal"
|
||||
|
||||
/obj/item/clothing/under/blacktango
|
||||
name = "black tango dress"
|
||||
desc = "Filled with Latin fire."
|
||||
icon_state = "black_tango"
|
||||
item_state = "wcoat"
|
||||
_color = "black_tango"
|
||||
item_color = "black_tango"
|
||||
|
||||
/obj/item/clothing/under/stripeddress
|
||||
name = "striped dress"
|
||||
desc = "Fashion in space."
|
||||
icon_state = "striped_dress"
|
||||
item_state = "stripeddress"
|
||||
_color = "striped_dress"
|
||||
item_color = "striped_dress"
|
||||
|
||||
/obj/item/clothing/under/sailordress
|
||||
name = "sailor dress"
|
||||
desc = "Formal wear for a leading lady."
|
||||
icon_state = "sailor_dress"
|
||||
item_state = "sailordress"
|
||||
_color = "sailor_dress"
|
||||
item_color = "sailor_dress"
|
||||
|
||||
/obj/item/clothing/under/redeveninggown
|
||||
name = "red evening gown"
|
||||
desc = "Fancy dress for space bar singers."
|
||||
icon_state = "red_evening_gown"
|
||||
item_state = "redeveninggown"
|
||||
_color = "red_evening_gown"
|
||||
item_color = "red_evening_gown"
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/checkered
|
||||
name = "checkered suit"
|
||||
desc = "That's a very nice suit you have there. Shame if something were to happen to it, eh?"
|
||||
icon_state = "checkered_suit"
|
||||
item_state = "checkered_suit"
|
||||
_color = "checkered_suit"
|
||||
item_color = "checkered_suit"
|
||||
|
||||
/obj/item/clothing/under/owl
|
||||
name = "owl uniform"
|
||||
desc = "A soft brown jumpsuit made of synthetic feathers and strong conviction."
|
||||
icon_state = "owl"
|
||||
_color = "owl"
|
||||
item_color = "owl"
|
||||
flags = NODROP
|
||||
|
||||
/obj/item/clothing/under/griffin
|
||||
name = "griffon uniform"
|
||||
desc = "A soft brown jumpsuit with a white feather collar made of synthetic feathers and a lust for mayhem."
|
||||
icon_state = "griffin"
|
||||
_color = "griffin"
|
||||
item_color = "griffin"
|
||||
flags = NODROP
|
||||
|
||||
/obj/item/clothing/under/noble_clothes
|
||||
name = "noble clothes"
|
||||
desc = "They fall just short of majestic."
|
||||
icon_state = "noble_clothes"
|
||||
_color = "noble_clothes"
|
||||
item_color = "noble_clothes"
|
||||
item_state = "noble_clothes"
|
||||
|
||||
@@ -7,83 +7,83 @@
|
||||
name = "classic jeans"
|
||||
desc = "You feel cooler already."
|
||||
icon_state = "jeansclassic"
|
||||
_color = "jeansclassic"
|
||||
item_color = "jeansclassic"
|
||||
|
||||
/obj/item/clothing/under/pants/mustangjeans
|
||||
name = "Must Hang jeans"
|
||||
desc = "Made in the finest space jeans factory this side of Alpha Centauri."
|
||||
icon_state = "jeansmustang"
|
||||
_color = "jeansmustang"
|
||||
item_color = "jeansmustang"
|
||||
|
||||
/obj/item/clothing/under/pants/blackjeans
|
||||
name = "black jeans"
|
||||
desc = "Only for those who can pull it off."
|
||||
icon_state = "jeansblack"
|
||||
_color = "jeansblack"
|
||||
item_color = "jeansblack"
|
||||
|
||||
/obj/item/clothing/under/pants/youngfolksjeans
|
||||
name = "Young Folks jeans"
|
||||
desc = "For those tired of boring old jeans. Relive the passion of your youth!"
|
||||
icon_state = "jeansyoungfolks"
|
||||
_color = "jeansyoungfolks"
|
||||
item_color = "jeansyoungfolks"
|
||||
|
||||
/obj/item/clothing/under/pants/white
|
||||
name = "white pants"
|
||||
desc = "Plain white pants. Boring."
|
||||
icon_state = "whitepants"
|
||||
_color = "whitepants"
|
||||
item_color = "whitepants"
|
||||
|
||||
/obj/item/clothing/under/pants/red
|
||||
name = "red pants"
|
||||
desc = "Bright red pants. Overflowing with personality."
|
||||
icon_state = "redpants"
|
||||
_color = "redpants"
|
||||
item_color = "redpants"
|
||||
|
||||
/obj/item/clothing/under/pants/black
|
||||
name = "black pants"
|
||||
desc = "These pants are dark, like your soul."
|
||||
icon_state = "blackpants"
|
||||
_color = "blackpants"
|
||||
item_color = "blackpants"
|
||||
|
||||
/obj/item/clothing/under/pants/tan
|
||||
name = "tan pants"
|
||||
desc = "Some tan pants. You look like a white collar worker with these on."
|
||||
icon_state = "tanpants"
|
||||
_color = "tanpants"
|
||||
item_color = "tanpants"
|
||||
|
||||
/obj/item/clothing/under/pants/blue
|
||||
name = "blue pants"
|
||||
desc = "Stylish blue pants. These go well with a lot of clothes."
|
||||
icon_state = "bluepants"
|
||||
_color = "bluepants"
|
||||
item_color = "bluepants"
|
||||
|
||||
/obj/item/clothing/under/pants/track
|
||||
name = "track pants"
|
||||
desc = "A pair of track pants, for the athletic."
|
||||
icon_state = "trackpants"
|
||||
_color = "trackpants"
|
||||
item_color = "trackpants"
|
||||
|
||||
/obj/item/clothing/under/pants/jeans
|
||||
name = "jeans"
|
||||
desc = "A nondescript pair of tough blue jeans."
|
||||
icon_state = "jeans"
|
||||
_color = "jeans"
|
||||
item_color = "jeans"
|
||||
|
||||
/obj/item/clothing/under/pants/khaki
|
||||
name = "khaki pants"
|
||||
desc = "A pair of dust beige khaki pants."
|
||||
icon_state = "khaki"
|
||||
_color = "khaki"
|
||||
item_color = "khaki"
|
||||
|
||||
/obj/item/clothing/under/pants/camo
|
||||
name = "camo pants"
|
||||
desc = "A pair of woodland camouflage pants. Probably not the best choice for a space station."
|
||||
icon_state = "camopants"
|
||||
_color = "camopants"
|
||||
item_color = "camopants"
|
||||
|
||||
/obj/item/clothing/under/pants/chaps
|
||||
name = "black leather assless chaps"
|
||||
desc = "For those brave enough to weather the breeze."
|
||||
icon_state = "chaps"
|
||||
_color = "chaps"
|
||||
item_color = "chaps"
|
||||
flags = ONESIZEFITSALL
|
||||
@@ -7,20 +7,20 @@
|
||||
|
||||
/obj/item/clothing/under/shorts/red
|
||||
icon_state = "redshorts"
|
||||
_color = "redshorts"
|
||||
item_color = "redshorts"
|
||||
|
||||
/obj/item/clothing/under/shorts/green
|
||||
icon_state = "greenshorts"
|
||||
_color = "greenshorts"
|
||||
item_color = "greenshorts"
|
||||
|
||||
/obj/item/clothing/under/shorts/blue
|
||||
icon_state = "blueshorts"
|
||||
_color = "blueshorts"
|
||||
item_color = "blueshorts"
|
||||
|
||||
/obj/item/clothing/under/shorts/black
|
||||
icon_state = "blackshorts"
|
||||
_color = "blackshorts"
|
||||
item_color = "blackshorts"
|
||||
|
||||
/obj/item/clothing/under/shorts/grey
|
||||
icon_state = "greyshorts"
|
||||
_color = "greyshorts"
|
||||
item_color = "greyshorts"
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "It's some non-descript, slightly suspicious looking, support clothing."
|
||||
icon_state = "syndicate"
|
||||
item_state = "bl_suit"
|
||||
_color = "syndicate"
|
||||
item_color = "syndicate"
|
||||
has_sensor = 0
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.9
|
||||
@@ -16,7 +16,7 @@
|
||||
desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-."
|
||||
icon_state = "tactifool"
|
||||
item_state = "bl_suit"
|
||||
_color = "tactifool"
|
||||
item_color = "tactifool"
|
||||
siemens_coefficient = 1
|
||||
|
||||
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
icon= 'icons/obj/clothing/uniforms.dmi'
|
||||
icon_state = "syndicate"
|
||||
item_state = "bl_suit"
|
||||
_color = "syndicate"
|
||||
item_color = "syndicate"
|
||||
has_sensor = 1 // Jumpsuit has no sensor by default
|
||||
displays_id = 0 // Purely astetic, the ID does not show up on the player sprite when equipped. Examining still reveals it.
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) // Standard Security jumpsuit stats
|
||||
@@ -153,7 +153,7 @@
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "castile_dress"
|
||||
item_state = "castile_dress"
|
||||
_color = "castile_dress"
|
||||
item_color = "castile_dress"
|
||||
|
||||
/obj/item/clothing/under/psysuit/fluff/isaca_sirius_1 // Xilia: Isaca Sirius
|
||||
name = "Isaca's suit"
|
||||
@@ -165,7 +165,7 @@
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "jane_sid_suit"
|
||||
item_state = "jane_sid_suit"
|
||||
_color = "jane_sid_suit"
|
||||
item_color = "jane_sid_suit"
|
||||
has_sensor = 2
|
||||
sensor_mode = 3
|
||||
|
||||
@@ -178,14 +178,14 @@
|
||||
return 0
|
||||
|
||||
if(src.icon_state == "jane_sid_suit_down")
|
||||
src._color = "jane_sid_suit"
|
||||
src.item_color = "jane_sid_suit"
|
||||
usr << "You zip up \the [src]."
|
||||
else
|
||||
src._color = "jane_sid_suit_down"
|
||||
src.item_color = "jane_sid_suit_down"
|
||||
usr << "You unzip and roll down \the [src]."
|
||||
|
||||
src.icon_state = "[_color]"
|
||||
src.item_state = "[_color]"
|
||||
src.icon_state = "[item_color]"
|
||||
src.item_state = "[item_color]"
|
||||
usr.update_inv_w_uniform()
|
||||
|
||||
//////////// Masks ////////////
|
||||
@@ -207,7 +207,7 @@
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "fox_suit"
|
||||
item_state = "g_suit"
|
||||
_color = "fox_suit"
|
||||
item_color = "fox_suit"
|
||||
displays_id = 0 //still appears on examine; this is pure fluff.
|
||||
|
||||
// TheFlagbearer: Willow Walker
|
||||
@@ -217,7 +217,7 @@
|
||||
icon = 'icons/obj/clothing/uniforms.dmi'
|
||||
icon_state = "superior_suit"
|
||||
item_state = "superior_suit"
|
||||
_color = "superior_suit"
|
||||
item_color = "superior_suit"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
I.dna_hash = C.dna_hash
|
||||
I.fingerprint_hash = C.fingerprint_hash
|
||||
qdel(C)
|
||||
ok = M.equip_if_possible(I, slot_wear_id, 0) //if 1, last argument deletes on fail
|
||||
ok = M.equip_or_collect(I, slot_wear_id, 0) //if 1, last argument deletes on fail
|
||||
break
|
||||
else if(istype(M.back, /obj/item/weapon/storage)) // Try to place it in something on the mob's back
|
||||
var/obj/item/weapon/storage/S = M.back
|
||||
@@ -68,7 +68,7 @@
|
||||
/proc/HackProperties(var/mob/living/carbon/human/M,var/obj/item/I,var/script)
|
||||
var/list/statements = text2list(script,";")
|
||||
if(statements.len == 0)
|
||||
return
|
||||
return
|
||||
for(var/statement in statements)
|
||||
var/list/assignmentChunks = text2list(statement,"=")
|
||||
var/varname = assignmentChunks[1]
|
||||
|
||||
@@ -361,11 +361,6 @@ var/const/POS_HEADER = {"<html>
|
||||
else
|
||||
overlays += "pos-standby"
|
||||
|
||||
/obj/machinery/pos/attack_robot(var/mob/user)
|
||||
// if(isMoMMI(user))
|
||||
// return attack_hand(user)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/pos/attack_hand(var/mob/user)
|
||||
user.set_machine(src)
|
||||
var/logindata=""
|
||||
|
||||
@@ -34,9 +34,11 @@
|
||||
if(beaker)
|
||||
user << "<span class='notice'>A container is already inside [src].</span>"
|
||||
return
|
||||
if(!user.drop_item())
|
||||
user << "<span class='warning'>\The [I] is stuck to you!</span>"
|
||||
return
|
||||
beaker = I
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
I.forceMove(src)
|
||||
user << "<span class='notice'>You add [I] to [src]</span>"
|
||||
updateUsrDialog()
|
||||
return
|
||||
@@ -105,7 +107,7 @@
|
||||
|
||||
else if(href_list["eject"])
|
||||
if(beaker)
|
||||
A.loc = loc
|
||||
A.forceMove(loc)
|
||||
beaker = null
|
||||
reagents.trans_to(A,reagents.total_volume)
|
||||
|
||||
@@ -248,4 +250,4 @@
|
||||
dat += show_toppings()
|
||||
var/datum/browser/popup = new(user, "cream_master","Cream-Master Deluxe", 700, 400, src)
|
||||
popup.set_content(dat)
|
||||
popup.open()
|
||||
popup.open()
|
||||
|
||||
+32
-125
@@ -3,28 +3,26 @@
|
||||
|
||||
//Returns the thing in our active hand
|
||||
/mob/proc/get_active_hand()
|
||||
if(issilicon(src))
|
||||
if(isrobot(src))
|
||||
if(src:module_active)
|
||||
return src:module_active
|
||||
else
|
||||
if(hand) return l_hand
|
||||
else return r_hand
|
||||
if(hand) return l_hand
|
||||
else return r_hand
|
||||
|
||||
//Returns the thing in our inactive hand
|
||||
/mob/proc/get_inactive_hand()
|
||||
if(hand) return r_hand
|
||||
else return l_hand
|
||||
|
||||
//Returns if a certain item can be equipped to a certain slot.
|
||||
// Currently invalid for two-handed items - call obj/item/mob_can_equip() instead.
|
||||
/mob/proc/can_equip(obj/item/I, slot, disable_warning = 0)
|
||||
return 0
|
||||
|
||||
// Because there's several different places it's stored.
|
||||
/mob/proc/get_multitool(var/if_active=0)
|
||||
return null
|
||||
|
||||
//Puts the item into your l_hand if possible and calls all necessary triggers/updates. returns 1 on success.
|
||||
/mob/proc/put_in_l_hand(var/obj/item/W)
|
||||
if(lying && !(W.flags & ABSTRACT))
|
||||
return 0
|
||||
if(!istype(W))
|
||||
if(!put_in_hand_check(W))
|
||||
return 0
|
||||
if(!l_hand)
|
||||
W.forceMove(src) //TODO: move to equipped?
|
||||
@@ -40,9 +38,7 @@
|
||||
|
||||
//Puts the item into your r_hand if possible and calls all necessary triggers/updates. returns 1 on success.
|
||||
/mob/proc/put_in_r_hand(var/obj/item/W)
|
||||
if(lying && !(W.flags & ABSTRACT))
|
||||
return 0
|
||||
if(!istype(W))
|
||||
if(!put_in_hand_check(W))
|
||||
return 0
|
||||
if(!r_hand)
|
||||
W.forceMove(src)
|
||||
@@ -56,6 +52,11 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/mob/proc/put_in_hand_check(var/obj/item/W)
|
||||
if(lying && !(W.flags & ABSTRACT)) return 0
|
||||
if(!istype(W)) return 0
|
||||
return 1
|
||||
|
||||
//Puts the item into our active hand if possible. returns 1 on success.
|
||||
/mob/proc/put_in_active_hand(var/obj/item/W)
|
||||
if(hand) return put_in_l_hand(W)
|
||||
@@ -97,6 +98,13 @@
|
||||
|
||||
//Here lie unEquip and before_item_take, already forgotten and not missed.
|
||||
|
||||
/mob/proc/canUnEquip(obj/item/I, force)
|
||||
if(!I)
|
||||
return 1
|
||||
if((I.flags & NODROP) && !force)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/mob/proc/unEquip(obj/item/I, force) //Force overrides NODROP for things like wizarditis and admin undress.
|
||||
if(!I) //If there's nothing to drop, the drop is automatically succesfull. If(unEquip) should generally be used to check for NODROP.
|
||||
return 1
|
||||
@@ -152,120 +160,19 @@
|
||||
|
||||
return items
|
||||
|
||||
/** BS12's proc to get the item in the active hand. Couldn't find the /tg/ equivalent. **/
|
||||
/mob/proc/equipped()
|
||||
if(issilicon(src))
|
||||
if(isrobot(src))
|
||||
if(src:module_active)
|
||||
return src:module_active
|
||||
else
|
||||
if (hand)
|
||||
return l_hand
|
||||
else
|
||||
return r_hand
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/proc/equip_if_possible(obj/item/W, slot, del_on_fail = 1) // since byond doesn't seem to have pointers, this seems like the best way to do this :/
|
||||
//warning: icky code
|
||||
var/equipped = 0
|
||||
switch(slot)
|
||||
if(slot_back)
|
||||
if(!src.back)
|
||||
src.back = W
|
||||
equipped = 1
|
||||
if(slot_wear_mask)
|
||||
if(!src.wear_mask)
|
||||
src.wear_mask = W
|
||||
equipped = 1
|
||||
if(slot_handcuffed)
|
||||
if(!src.handcuffed)
|
||||
src.handcuffed = W
|
||||
equipped = 1
|
||||
if(slot_l_hand)
|
||||
if(!src.l_hand)
|
||||
src.l_hand = W
|
||||
equipped = 1
|
||||
if(slot_r_hand)
|
||||
if(!src.r_hand)
|
||||
src.r_hand = W
|
||||
equipped = 1
|
||||
if(slot_belt)
|
||||
if(!src.belt && src.w_uniform)
|
||||
src.belt = W
|
||||
equipped = 1
|
||||
if(slot_wear_id)
|
||||
if(!src.wear_id && src.w_uniform)
|
||||
src.wear_id = W
|
||||
equipped = 1
|
||||
if(slot_wear_pda)
|
||||
if(!src.wear_pda && src.w_uniform)
|
||||
src.wear_pda = W
|
||||
equipped = 1
|
||||
if(slot_l_ear)
|
||||
if(!src.l_ear)
|
||||
src.l_ear = W
|
||||
equipped = 1
|
||||
if(slot_r_ear)
|
||||
if(!src.r_ear)
|
||||
src.r_ear = W
|
||||
equipped = 1
|
||||
if(slot_glasses)
|
||||
if(!src.glasses)
|
||||
src.glasses = W
|
||||
equipped = 1
|
||||
if(slot_gloves)
|
||||
if(!src.gloves)
|
||||
src.gloves = W
|
||||
equipped = 1
|
||||
if(slot_head)
|
||||
if(!src.head)
|
||||
src.head = W
|
||||
equipped = 1
|
||||
if(slot_shoes)
|
||||
if(!src.shoes)
|
||||
src.shoes = W
|
||||
equipped = 1
|
||||
if(slot_wear_suit)
|
||||
if(!src.wear_suit)
|
||||
src.wear_suit = W
|
||||
equipped = 1
|
||||
if(slot_w_uniform)
|
||||
if(!src.w_uniform)
|
||||
src.w_uniform = W
|
||||
equipped = 1
|
||||
if(slot_l_store)
|
||||
if(!src.l_store && src.w_uniform)
|
||||
src.l_store = W
|
||||
equipped = 1
|
||||
if(slot_r_store)
|
||||
if(!src.r_store && src.w_uniform)
|
||||
src.r_store = W
|
||||
equipped = 1
|
||||
if(slot_s_store)
|
||||
if(!src.s_store && src.wear_suit)
|
||||
src.s_store = W
|
||||
equipped = 1
|
||||
if(slot_in_backpack)
|
||||
if (src.back && istype(src.back, /obj/item/weapon/storage/backpack))
|
||||
var/obj/item/weapon/storage/backpack/B = src.back
|
||||
if(B.contents.len < B.storage_slots && W.w_class <= B.max_w_class)
|
||||
W.forceMove(B)
|
||||
equipped = 1
|
||||
|
||||
if(equipped)
|
||||
W.layer = 20
|
||||
if(src.back && W.loc != src.back)
|
||||
W.forceMove(src)
|
||||
else
|
||||
if (del_on_fail)
|
||||
qdel(W)
|
||||
return equipped
|
||||
|
||||
/mob/proc/get_all_slots()
|
||||
return list(wear_mask, back, l_hand, r_hand)
|
||||
|
||||
return list(wear_mask, back, l_hand, r_hand)
|
||||
|
||||
/mob/proc/get_id_card()
|
||||
for(var/obj/item/I in src.get_all_slots())
|
||||
. = I.GetID()
|
||||
if(.)
|
||||
break
|
||||
break
|
||||
|
||||
/mob/proc/get_item_by_slot(slot_id)
|
||||
switch(slot_id)
|
||||
if(slot_l_hand)
|
||||
return l_hand
|
||||
if(slot_r_hand)
|
||||
return r_hand
|
||||
return null
|
||||
@@ -2,8 +2,6 @@
|
||||
name = "alien"
|
||||
icon_state = "alien_s"
|
||||
|
||||
var/obj/item/clothing/suit/wear_suit = null //TODO: necessary? Are they even used? ~Carn
|
||||
var/obj/item/clothing/head/head = null //
|
||||
var/obj/item/weapon/r_store = null
|
||||
var/obj/item/weapon/l_store = null
|
||||
var/caste = ""
|
||||
|
||||
@@ -25,16 +25,15 @@
|
||||
spawn(600)
|
||||
if(ghost_volunteers.len)
|
||||
var/mob/dead/observer/O = pick(ghost_volunteers)
|
||||
if(istype(O) && O.client && O.key)
|
||||
if(check_observer(O))
|
||||
transfer_personality(O)
|
||||
reset_search()
|
||||
|
||||
/obj/item/device/mmi/posibrain/proc/request_player()
|
||||
for(var/mob/dead/observer/O in player_list)
|
||||
if(O.client && O.client.prefs.be_special & BE_PAI && !jobban_isbanned(O, "Cyborg") && !jobban_isbanned(O,"nonhumandept"))
|
||||
if(check_observer(O))
|
||||
O << "\blue <b>\A [src] has been activated. (<a href='?src=\ref[O];jump=\ref[src]'>Teleport</a> | <a href='?src=\ref[src];signup=\ref[O]'>Sign Up</a>)"
|
||||
//question(O.client)
|
||||
if(check_observer(O))
|
||||
O << "\blue <b>\A [src] has been activated. (<a href='?src=\ref[O];jump=\ref[src]'>Teleport</a> | <a href='?src=\ref[src];signup=\ref[O]'>Sign Up</a>)"
|
||||
//question(O.client)
|
||||
|
||||
/obj/item/device/mmi/posibrain/proc/check_observer(var/mob/dead/observer/O)
|
||||
if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted)
|
||||
|
||||
@@ -513,7 +513,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
|
||||
if(I == back)
|
||||
back = null
|
||||
update_inv_back(0)
|
||||
update_inv_back()
|
||||
else if(I == wear_mask)
|
||||
if(istype(src, /mob/living/carbon/human)) //If we don't do this hair won't be properly rebuilt.
|
||||
return
|
||||
@@ -523,10 +523,10 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
handcuffed = null
|
||||
if(buckled && buckled.buckle_requires_restraints)
|
||||
buckled.unbuckle_mob()
|
||||
update_inv_handcuffed(1)
|
||||
update_inv_handcuffed()
|
||||
else if(I == legcuffed)
|
||||
legcuffed = null
|
||||
update_inv_legcuffed(1)
|
||||
update_inv_legcuffed()
|
||||
|
||||
/mob/living/carbon/proc/get_temperature(var/datum/gas_mixture/environment)
|
||||
var/loc_temp = T0C
|
||||
@@ -558,24 +558,73 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
|
||||
return loc_temp
|
||||
|
||||
/mob/living/carbon/show_inv(mob/living/carbon/user as mob)
|
||||
/mob/living/carbon/show_inv(mob/user)
|
||||
user.set_machine(src)
|
||||
var/dat = {"
|
||||
<B><HR><FONT size=3>[name]</FONT></B>
|
||||
<BR><HR>
|
||||
<BR><B>Head(Mask):</B> <A href='?src=\ref[src];item=mask'>[(wear_mask && !(wear_mask.flags & ABSTRACT)) ? wear_mask : "Nothing"]</A>
|
||||
<BR><B>Left Hand:</B> <A href='?src=\ref[src];item=l_hand'>[(l_hand && !(l_hand.flags & ABSTRACT)) ? l_hand : "Nothing"]</A>
|
||||
<BR><B>Right Hand:</B> <A href='?src=\ref[src];item=r_hand'>[(r_hand && !(r_hand.flags & ABSTRACT)) ? r_hand : "Nothing"]</A>
|
||||
<BR><B>Back:</B> <A href='?src=\ref[src];item=back'>[(back ? back : "Nothing")]</A> [((istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/weapon/tank) && !( internal )) ? text(" <A href='?src=\ref[];item=internal'>Set Internal</A>", src) : "")]
|
||||
<BR>[(handcuffed ? text("<A href='?src=\ref[src];item=handcuff'>Handcuffed</A>") : text("<A href='?src=\ref[src];item=handcuff'>Not Handcuffed</A>"))]
|
||||
<BR>[(internal ? text("<A href='?src=\ref[src];item=internal'>Remove Internal</A>") : "")]
|
||||
<BR><A href='?src=\ref[src];item=pockets'>Empty Pockets</A>
|
||||
<BR><A href='?src=\ref[user];refresh=1'>Refresh</A>
|
||||
<HR>
|
||||
<B><FONT size=3>[name]</FONT></B>
|
||||
<HR>
|
||||
<BR><B>Head:</B> <A href='?src=\ref[src];item=[slot_head]'> [(head && !(head.flags&ABSTRACT)) ? head : "Nothing"]</A>
|
||||
<BR><B>Mask:</B> <A href='?src=\ref[src];item=[slot_wear_mask]'> [(wear_mask && !(wear_mask.flags&ABSTRACT)) ? wear_mask : "Nothing"]</A>
|
||||
<BR><B>Left Hand:</B> <A href='?src=\ref[src];item=[slot_l_hand]'> [(l_hand && !(l_hand.flags&ABSTRACT)) ? l_hand : "Nothing"]</A>
|
||||
<BR><B>Right Hand:</B> <A href='?src=\ref[src];item=[slot_r_hand]'> [(r_hand && !(r_hand.flags&ABSTRACT)) ? r_hand : "Nothing"]</A>"}
|
||||
|
||||
dat += "<BR><B>Back:</B> <A href='?src=\ref[src];item=[slot_back]'>[back ? back : "Nothing"]</A>"
|
||||
|
||||
if(istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/weapon/tank))
|
||||
dat += "<BR><A href='?src=\ref[src];internal=1'>[internal ? "Disable Internals" : "Set Internals"]</A>"
|
||||
|
||||
if(handcuffed)
|
||||
dat += "<BR><A href='?src=\ref[src];item=[slot_handcuffed]'>Handcuffed</A>"
|
||||
if(legcuffed)
|
||||
dat += "<BR><A href='?src=\ref[src];item=[slot_legcuffed]'>Legcuffed</A>"
|
||||
|
||||
dat += {"
|
||||
<BR>
|
||||
<BR><A href='?src=\ref[user];mach_close=mob\ref[src]'>Close</A>
|
||||
<BR>"}
|
||||
user << browse(dat, text("window=mob\ref[src];size=325x500"))
|
||||
"}
|
||||
user << browse(dat, "window=mob\ref[src];size=325x500")
|
||||
onclose(user, "mob\ref[src]")
|
||||
return
|
||||
|
||||
/mob/living/carbon/Topic(href, href_list)
|
||||
..()
|
||||
//strip panel
|
||||
if(!usr.stat && usr.canmove && !usr.restrained() && in_range(src, usr))
|
||||
if(href_list["internal"])
|
||||
var/slot = text2num(href_list["internal"])
|
||||
var/obj/item/ITEM = get_item_by_slot(slot)
|
||||
if(ITEM && istype(ITEM, /obj/item/weapon/tank) && wear_mask && (wear_mask.flags & MASKINTERNALS))
|
||||
visible_message("<span class='danger'>[usr] tries to [internal ? "close" : "open"] the valve on [src]'s [ITEM].</span>", \
|
||||
"<span class='userdanger'>[usr] tries to [internal ? "close" : "open"] the valve on [src]'s [ITEM].</span>")
|
||||
if(do_mob(usr, src, POCKET_STRIP_DELAY))
|
||||
if(internal)
|
||||
internal = null
|
||||
if(internals)
|
||||
internals.icon_state = "internal0"
|
||||
else if(ITEM && istype(ITEM, /obj/item/weapon/tank) && wear_mask && (wear_mask.flags & MASKINTERNALS))
|
||||
internal = ITEM
|
||||
if(internals)
|
||||
internals.icon_state = "internal1"
|
||||
|
||||
visible_message("<span class='danger'>[usr] [internal ? "opens" : "closes"] the valve on [src]'s [ITEM].</span>", \
|
||||
"<span class='userdanger'>[usr] [internal ? "opens" : "closes"] the valve on [src]'s [ITEM].</span>")
|
||||
|
||||
/mob/living/carbon/get_item_by_slot(slot_id)
|
||||
switch(slot_id)
|
||||
if(slot_back)
|
||||
return back
|
||||
if(slot_wear_mask)
|
||||
return wear_mask
|
||||
if(slot_handcuffed)
|
||||
return handcuffed
|
||||
if(slot_legcuffed)
|
||||
return legcuffed
|
||||
if(slot_l_hand)
|
||||
return l_hand
|
||||
if(slot_r_hand)
|
||||
return r_hand
|
||||
return null
|
||||
|
||||
|
||||
//generates realistic-ish pulse output based on preset levels
|
||||
/mob/living/carbon/proc/get_pulse(var/method) //method 0 is for hands, 1 is for machines, more accurate
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
var/number_wounds = 0
|
||||
var/obj/item/handcuffed = null //Whether or not the mob is handcuffed
|
||||
var/obj/item/legcuffed = null //Same as handcuffs but for legs. Bear traps use this.
|
||||
|
||||
var/obj/item/head = null
|
||||
var/obj/item/clothing/suit/wear_suit = null //TODO: necessary? Are they even used? ~Carn
|
||||
|
||||
//Surgery info
|
||||
var/datum/surgery_status/op_stage = new/datum/surgery_status
|
||||
//Active emote/pose
|
||||
|
||||
@@ -266,9 +266,9 @@
|
||||
|
||||
var/obj/item/organ/external/E = organs_by_name[organ_tag]
|
||||
if(!E)
|
||||
wound_flavor_text["[organ_tag]"] = "<span class='warning'><b>[t_He] is missing [t_his] [organ_descriptor].</b></span>\n"
|
||||
wound_flavor_text["[organ_tag]"] = "<span class='warning'><b>[t_He] [t_is] missing [t_his] [organ_descriptor].</b></span>\n"
|
||||
else if(E.is_stump())
|
||||
wound_flavor_text["[organ_tag]"] = "<span class='warning'><b>[t_He] has a stump where [t_his] [organ_descriptor] should be.</b></span>\n"
|
||||
wound_flavor_text["[organ_tag]"] = "<span class='warning'><b>[t_He] [t_has] a stump where [t_his] [organ_descriptor] should be.</b></span>\n"
|
||||
else
|
||||
continue
|
||||
|
||||
@@ -277,10 +277,10 @@
|
||||
if(temp.status & ORGAN_ROBOT)
|
||||
if(!(temp.brute_dam + temp.burn_dam))
|
||||
if(!isSynthetic())
|
||||
wound_flavor_text["[temp.limb_name]"] = "<span class='warning'>[t_He] has a robotic [temp.name]!</span>\n"
|
||||
wound_flavor_text["[temp.limb_name]"] = "<span class='warning'>[t_He] [t_has] a robotic [temp.name]!</span>\n"
|
||||
continue
|
||||
else
|
||||
wound_flavor_text["[temp.limb_name]"] = "<span class='warning'>[t_He] has a robotic [temp.name]. It has"
|
||||
wound_flavor_text["[temp.limb_name]"] = "<span class='warning'>[t_He] [t_has] a robotic [temp.name]. It has"
|
||||
if(temp.brute_dam) switch(temp.brute_dam)
|
||||
if(0 to 20)
|
||||
wound_flavor_text["[temp.limb_name]"] += " some dents"
|
||||
@@ -317,22 +317,22 @@
|
||||
switch(wound_descriptors[wound])
|
||||
if(1)
|
||||
if(!flavor_text.len)
|
||||
flavor_text += "<span class='warning'>[t_He] has[prob(10) && !(wound in no_exclude) ? " what might be" : ""] a [wound]"
|
||||
flavor_text += "<span class='warning'>[t_He] [t_has][prob(10) && !(wound in no_exclude) ? " what might be" : ""] a [wound]"
|
||||
else
|
||||
flavor_text += "[prob(10) && !(wound in no_exclude) ? " what might be" : ""] a [wound]"
|
||||
if(2)
|
||||
if(!flavor_text.len)
|
||||
flavor_text += "<span class='warning'>[t_He] has[prob(10) && !(wound in no_exclude) ? " what might be" : ""] a pair of [wound]s"
|
||||
flavor_text += "<span class='warning'>[t_He] [t_has][prob(10) && !(wound in no_exclude) ? " what might be" : ""] a pair of [wound]s"
|
||||
else
|
||||
flavor_text += "[prob(10) && !(wound in no_exclude) ? " what might be" : ""] a pair of [wound]s"
|
||||
if(3 to 5)
|
||||
if(!flavor_text.len)
|
||||
flavor_text += "<span class='warning'>[t_He] has several [wound]s"
|
||||
flavor_text += "<span class='warning'>[t_He] [t_has] several [wound]s"
|
||||
else
|
||||
flavor_text += " several [wound]s"
|
||||
if(6 to INFINITY)
|
||||
if(!flavor_text.len)
|
||||
flavor_text += "<span class='warning'>[t_He] has a bunch of [wound]s"
|
||||
flavor_text += "<span class='warning'>[t_He] [t_has] a bunch of [wound]s"
|
||||
else
|
||||
flavor_text += " a ton of [wound]\s"
|
||||
var/flavor_text_string = ""
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#define STRIP_DELAY 40 //time taken (in deciseconds) to strip somebody
|
||||
/mob/living/carbon/human
|
||||
name = "unknown"
|
||||
real_name = "unknown"
|
||||
@@ -422,7 +421,8 @@
|
||||
var/armor = run_armor_check(affecting, "melee")
|
||||
|
||||
var/obj/item/organ/external/affected = src.get_organ(dam_zone)
|
||||
affected.add_autopsy_data(M.name, damage) // Add the mob's name to the autopsy data
|
||||
if(affected)
|
||||
affected.add_autopsy_data(M.name, damage) // Add the mob's name to the autopsy data
|
||||
apply_damage(damage, BRUTE, affecting, armor, M.name)
|
||||
updatehealth()
|
||||
|
||||
@@ -532,54 +532,108 @@
|
||||
/mob/living/carbon/human/var/temperature_resistance = T0C+75
|
||||
|
||||
|
||||
/mob/living/carbon/human/show_inv(mob/user as mob)
|
||||
var/obj/item/clothing/under/suit = null
|
||||
if (istype(w_uniform, /obj/item/clothing/under))
|
||||
suit = w_uniform
|
||||
|
||||
var/obj/item/clothing/gloves/G
|
||||
var/pickpocket = 0
|
||||
if(ishuman(user))
|
||||
if(user:gloves)
|
||||
G = user:gloves
|
||||
pickpocket = G.pickpocket
|
||||
/mob/living/carbon/human/show_inv(mob/user)
|
||||
user.set_machine(src)
|
||||
var/dat = {"
|
||||
<B><HR><FONT size=3>[name]</FONT></B>
|
||||
<BR><HR>
|
||||
<BR><B>Back:</B> <A href='?src=\ref[src];item=back'>[(back && !(back.flags & ABSTRACT)) ? back : "Nothing"]</A> [((istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/weapon/tank) && !( internal )) ? text(" <A href='?src=\ref[];item=internal'>Set Internal</A>", src) : "")]
|
||||
<BR><B>Head(Mask):</B> <A href='?src=\ref[src];item=mask'>[(wear_mask && !(wear_mask.flags & ABSTRACT)) ? wear_mask : "Nothing"]</A>
|
||||
<BR><B>Left Hand:</B> <A href='?src=\ref[src];item=l_hand'>[(l_hand && !(l_hand.flags & ABSTRACT)) ? l_hand : "Nothing"]</A>
|
||||
<BR><B>Right Hand:</B> <A href='?src=\ref[src];item=r_hand'>[(r_hand && !(r_hand.flags&ABSTRACT)) ? r_hand : "Nothing"]</A>"}
|
||||
var/has_breathable_mask = istype(wear_mask, /obj/item/clothing/mask)
|
||||
var/list/obscured = check_obscured_slots()
|
||||
|
||||
var/dat = {"<table>
|
||||
<tr><td><B>Left Hand:</B></td><td><A href='?src=\ref[src];item=[slot_l_hand]'>[(l_hand && !(l_hand.flags&ABSTRACT)) ? l_hand : "<font color=grey>Empty</font>"]</A></td></tr>
|
||||
<tr><td><B>Right Hand:</B></td><td><A href='?src=\ref[src];item=[slot_r_hand]'>[(r_hand && !(r_hand.flags&ABSTRACT)) ? r_hand : "<font color=grey>Empty</font>"]</A></td></tr>
|
||||
<tr><td> </td></tr>"}
|
||||
|
||||
dat += "<tr><td><B>Back:</B></td><td><A href='?src=\ref[src];item=[slot_back]'>[(back && !(back.flags&ABSTRACT)) ? back : "<font color=grey>Empty</font>"]</A>"
|
||||
if(has_breathable_mask && istype(back, /obj/item/weapon/tank))
|
||||
dat += " <A href='?src=\ref[src];internal=[slot_back]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
|
||||
|
||||
dat += "</td></tr><tr><td> </td></tr>"
|
||||
|
||||
dat += "<tr><td><B>Head:</B></td><td><A href='?src=\ref[src];item=[slot_head]'>[(head && !(head.flags&ABSTRACT)) ? head : "<font color=grey>Empty</font>"]</A></td></tr>"
|
||||
|
||||
if(slot_wear_mask in obscured)
|
||||
dat += "<tr><td><font color=grey><B>Mask:</B></font></td><td><font color=grey>Obscured</font></td></tr>"
|
||||
else
|
||||
dat += "<tr><td><B>Mask:</B></td><td><A href='?src=\ref[src];item=[slot_wear_mask]'>[(wear_mask && !(wear_mask.flags&ABSTRACT)) ? wear_mask : "<font color=grey>Empty</font>"]</A></td></tr>"
|
||||
|
||||
if(!issmall(src))
|
||||
dat += {"
|
||||
<BR><B>Gloves:</B> <A href='?src=\ref[src];item=gloves'>[(gloves && !(gloves.flags & ABSTRACT)) ? gloves : "Nothing"]</A>
|
||||
<BR><B>Eyes:</B> <A href='?src=\ref[src];item=eyes'>[(glasses && !(glasses.flags & ABSTRACT)) ? glasses : "Nothing"]</A>
|
||||
<BR><B>Left Ear:</B> <A href='?src=\ref[src];item=l_ear'>[(l_ear && !(l_ear.flags & ABSTRACT)) ? l_ear : "Nothing"]</A>
|
||||
<BR><B>Right Ear:</B> <A href='?src=\ref[src];item=r_ear'>[(r_ear && !(r_ear.flags & ABSTRACT)) ? r_ear : "Nothing"]</A>
|
||||
<BR><B>Head:</B> <A href='?src=\ref[src];item=head'>[(head && !(head.flags & ABSTRACT)) ? head : "Nothing"]</A>
|
||||
<BR><B>Shoes:</B> <A href='?src=\ref[src];item=shoes'>[(shoes && !(shoes.flags & ABSTRACT)) ? shoes : "Nothing"]</A>
|
||||
<BR><B>Belt:</B> <A href='?src=\ref[src];item=belt'>[(belt && !(belt.flags & ABSTRACT)) ? belt : "Nothing"]</A> [((istype(wear_mask, /obj/item/clothing/mask) && istype(belt, /obj/item/weapon/tank) && !( internal )) ? text(" <A href='?src=\ref[];item=internal'>Set Internal</A>", src) : "")]
|
||||
<BR><B>Uniform:</B> <A href='?src=\ref[src];item=uniform'>[(w_uniform && !(w_uniform.flags & ABSTRACT)) ? w_uniform : "Nothing"]</A> [(suit) ? ((suit.has_sensor == 1) ? text(" <A href='?src=\ref[];item=sensor'>Sensors</A>", src) : "") :]
|
||||
<BR><B>(Exo)Suit:</B> <A href='?src=\ref[src];item=suit'>[(wear_suit && !(wear_suit.flags & ABSTRACT)) ? wear_suit : "Nothing"]</A>
|
||||
<BR><B>ID:</B> <A href='?src=\ref[src];item=id'>[(wear_id && !(wear_id.flags & ABSTRACT)) ? wear_id : "Nothing"]</A>
|
||||
<BR><B>PDA:</B> <A href='?src=\ref[src];item=pda'>[(wear_pda && !(wear_pda.flags & ABSTRACT)) ? wear_pda : "Nothing"]</A>
|
||||
<BR><B>Suit Storage:</B> <A href='?src=\ref[src];item=s_store'>[(s_store && !(s_store.flags & ABSTRACT)) ? s_store : "Nothing"]</A>
|
||||
<BR><BR><A href='?src=\ref[src];pockets=left'>Left Pocket ([(l_store && !(l_store.flags & ABSTRACT)) ? (pickpocket ? l_store.name : "Full") : "Empty"])</A>
|
||||
<BR><A href='?src=\ref[src];pockets=right'>Right Pocket ([(r_store && !(r_store.flags & ABSTRACT)) ? (pickpocket ? r_store.name : "Full") : "Empty"])</A>
|
||||
<BR><A href='?src=\ref[src];item=pockets'>Empty Both Pockets</A>"}
|
||||
dat += {"
|
||||
<BR><BR>[(handcuffed ? text("<A href='?src=\ref[src];item=handcuff'>Handcuffed</A>") : text("<A href='?src=\ref[src];item=handcuff'>Not Handcuffed</A>"))]
|
||||
<BR>[(legcuffed ? text("<A href='?src=\ref[src];item=legcuff'>Legcuffed</A>") : text(""))]
|
||||
[(suit) ? ((suit.accessories.len) ? text("<BR><A href='?src=\ref[];item=tie'>Remove Accessory</A>", src) : "") :]
|
||||
[(internal ? text("<BR><A href='?src=\ref[src];item=internal'>Remove Internal</A>") : "")]
|
||||
<BR><A href='?src=\ref[src];item=splints'>Remove Splints</A>
|
||||
<BR><A href='?src=\ref[user];refresh=1'>Refresh</A>
|
||||
<BR><A href='?src=\ref[user];mach_close=mob\ref[src]'>Close</A>
|
||||
<BR>"}
|
||||
user << browse(dat, text("window=mob\ref[src];size=340x480"))
|
||||
onclose(user, "mob\ref[src]")
|
||||
return
|
||||
if(slot_glasses in obscured)
|
||||
dat += "<tr><td><font color=grey><B>Eyes:</B></font></td><td><font color=grey>Obscured</font></td></tr>"
|
||||
else
|
||||
dat += "<tr><td><B>Eyes:</B></td><td><A href='?src=\ref[src];item=[slot_glasses]'>[(glasses && !(glasses.flags&ABSTRACT)) ? glasses : "<font color=grey>Empty</font>"]</A></td></tr>"
|
||||
|
||||
if(slot_l_ear in obscured)
|
||||
dat += "<tr><td><font color=grey><B>Left Ear:</B></font></td><td><font color=grey>Obscured</font></td></tr>"
|
||||
else
|
||||
dat += "<tr><td><B>Left Ear:</B></td><td><A href='?src=\ref[src];item=[slot_l_ear]'>[(l_ear && !(l_ear.flags&ABSTRACT)) ? l_ear : "<font color=grey>Empty</font>"]</A></td></tr>"
|
||||
|
||||
if(slot_r_ear in obscured)
|
||||
dat += "<tr><td><font color=grey><B>Right Ear:</B></font></td><td><font color=grey>Obscured</font></td></tr>"
|
||||
else
|
||||
dat += "<tr><td><B>Right Ear:</B></td><td><A href='?src=\ref[src];item=[slot_r_ear]'>[(r_ear && !(r_ear.flags&ABSTRACT)) ? r_ear : "<font color=grey>Empty</font>"]</A></td></tr>"
|
||||
|
||||
dat += "<tr><td> </td></tr>"
|
||||
|
||||
dat += "<tr><td><B>Exosuit:</B></td><td><A href='?src=\ref[src];item=[slot_wear_suit]'>[(wear_suit && !(wear_suit.flags&ABSTRACT)) ? wear_suit : "<font color=grey>Empty</font>"]</A></td></tr>"
|
||||
if(wear_suit)
|
||||
dat += "<tr><td> ↳<B>Suit Storage:</B></td><td><A href='?src=\ref[src];item=[slot_s_store]'>[(s_store && !(s_store.flags&ABSTRACT)) ? s_store : "<font color=grey>Empty</font>"]</A>"
|
||||
if(has_breathable_mask && istype(s_store, /obj/item/weapon/tank))
|
||||
dat += " <A href='?src=\ref[src];internal=[slot_s_store]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
|
||||
dat += "</td></tr>"
|
||||
else
|
||||
dat += "<tr><td><font color=grey> ↳<B>Suit Storage:</B></font></td></tr>"
|
||||
|
||||
if(slot_shoes in obscured)
|
||||
dat += "<tr><td><font color=grey><B>Shoes:</B></font></td><td><font color=grey>Obscured</font></td></tr>"
|
||||
else
|
||||
dat += "<tr><td><B>Shoes:</B></td><td><A href='?src=\ref[src];item=[slot_shoes]'>[(shoes && !(shoes.flags&ABSTRACT)) ? shoes : "<font color=grey>Empty</font>"]</A></td></tr>"
|
||||
|
||||
if(slot_gloves in obscured)
|
||||
dat += "<tr><td><font color=grey><B>Gloves:</B></font></td><td><font color=grey>Obscured</font></td></tr>"
|
||||
else
|
||||
dat += "<tr><td><B>Gloves:</B></td><td><A href='?src=\ref[src];item=[slot_gloves]'>[(gloves && !(gloves.flags&ABSTRACT)) ? gloves : "<font color=grey>Empty</font>"]</A></td></tr>"
|
||||
|
||||
if(slot_w_uniform in obscured)
|
||||
dat += "<tr><td><font color=grey><B>Uniform:</B></font></td><td><font color=grey>Obscured</font></td></tr>"
|
||||
else
|
||||
dat += "<tr><td><B>Uniform:</B></td><td><A href='?src=\ref[src];item=[slot_w_uniform]'>[(w_uniform && !(w_uniform.flags&ABSTRACT)) ? w_uniform : "<font color=grey>Empty</font>"]</A></td></tr>"
|
||||
|
||||
if(w_uniform == null || (slot_w_uniform in obscured))
|
||||
dat += "<tr><td><font color=grey> ↳<B>Pockets:</B></font></td></tr>"
|
||||
dat += "<tr><td><font color=grey> ↳<B>ID:</B></font></td></tr>"
|
||||
dat += "<tr><td><font color=grey> ↳<B>Belt:</B></font></td></tr>"
|
||||
dat += "<tr><td><font color=grey> ↳<B>Suit Sensors:</B></font></td></tr>"
|
||||
dat += "<tr><td><font color=grey> ↳<B>PDA:</B></font></td></tr>"
|
||||
else
|
||||
dat += "<tr><td> ↳<B>Belt:</B></td><td><A href='?src=\ref[src];item=[slot_belt]'>[(belt && !(belt.flags&ABSTRACT)) ? belt : "<font color=grey>Empty</font>"]</A>"
|
||||
if(has_breathable_mask && istype(belt, /obj/item/weapon/tank))
|
||||
dat += " <A href='?src=\ref[src];internal=[slot_belt]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
|
||||
dat += "</td></tr>"
|
||||
dat += "<tr><td> ↳<B>Pockets:</B></td><td><A href='?src=\ref[src];pockets=left'>[(l_store && !(l_store.flags&ABSTRACT)) ? "Left (Full)" : "<font color=grey>Left (Empty)</font>"]</A>"
|
||||
dat += " <A href='?src=\ref[src];pockets=right'>[(r_store && !(r_store.flags&ABSTRACT)) ? "Right (Full)" : "<font color=grey>Right (Empty)</font>"]</A></td></tr>"
|
||||
dat += "<tr><td> ↳<B>ID:</B></td><td><A href='?src=\ref[src];item=[slot_wear_id]'>[(wear_id && !(wear_id.flags&ABSTRACT)) ? wear_id : "<font color=grey>Empty</font>"]</A></td></tr>"
|
||||
dat += "<tr><td> ↳<B>PDA:</B></td><td><A href='?src=\ref[src];item=[slot_wear_pda]'>[(wear_pda && !(wear_pda.flags&ABSTRACT)) ? wear_pda : "<font color=grey>Empty</font>"]</A></td></tr>"
|
||||
|
||||
if(istype(w_uniform, /obj/item/clothing/under))
|
||||
var/obj/item/clothing/under/U = w_uniform
|
||||
dat += "<tr><td> ↳<B>Suit Sensors:</b></td><td><A href='?src=\ref[src];set_sensor=1'>[U.has_sensor >= 2 ? "</a><font color=grey>--SENSORS LOCKED--</font>" : "Set Sensors</a>"]</td></tr>"
|
||||
|
||||
if(U.accessories.len)
|
||||
dat += "<tr><td> ↳<A href='?src=\ref[src];strip_accessory=1'>Remove Accessory</a></td></tr>"
|
||||
|
||||
|
||||
if(handcuffed)
|
||||
dat += "<tr><td><B>Handcuffed:</B> <A href='?src=\ref[src];item=[slot_handcuffed]'>Remove</A></td></tr>"
|
||||
if(legcuffed)
|
||||
dat += "<tr><td><A href='?src=\ref[src];item=[slot_legcuffed]'>Legcuffed</A></td></tr>"
|
||||
|
||||
dat += {"</table>
|
||||
<A href='?src=\ref[user];mach_close=mob\ref[src]'>Close</A>
|
||||
"}
|
||||
|
||||
var/datum/browser/popup = new(user, "mob\ref[src]", "[src]", 440, 540)
|
||||
popup.set_content(dat)
|
||||
popup.open()
|
||||
|
||||
|
||||
// called when something steps onto a human
|
||||
// this handles mulebots and vehicles
|
||||
@@ -697,94 +751,66 @@
|
||||
|
||||
|
||||
/mob/living/carbon/human/Topic(href, href_list)
|
||||
var/pickpocket = 0
|
||||
|
||||
if(ishuman(usr))
|
||||
var/mob/living/carbon/human/H = usr
|
||||
var/obj/item/clothing/gloves/G = H.gloves
|
||||
if(G)
|
||||
pickpocket = G.pickpocket
|
||||
|
||||
if(!usr.stat && usr.canmove && !usr.restrained() && in_range(src, usr))
|
||||
|
||||
// if looting pockets with gloves, do it quietly
|
||||
if(href_list["pockets"])
|
||||
if(isanimal(usr))
|
||||
return //animals cannot strip people
|
||||
|
||||
if(frozen)
|
||||
usr << "\red Do not attempt to strip frozen people."
|
||||
if(href_list["item"])
|
||||
var/slot = text2num(href_list["item"])
|
||||
if(slot in check_obscured_slots())
|
||||
usr << "<span class='warning'>You can't reach that! Something is covering it.</span>"
|
||||
return
|
||||
|
||||
if(href_list["pockets"])
|
||||
var/pocket_side = href_list["pockets"]
|
||||
var/pocket_id = (pocket_side == "right" ? slot_r_store : slot_l_store)
|
||||
var/obj/item/pocket_item = (pocket_id == slot_r_store ? src.r_store : src.l_store)
|
||||
var/obj/item/pocket_item = (pocket_id == slot_r_store ? r_store : l_store)
|
||||
var/obj/item/place_item = usr.get_active_hand() // Item to place in the pocket, if it's empty
|
||||
|
||||
if(pocket_item && !(pocket_item.flags & ABSTRACT))
|
||||
var/delay_denominator = 1
|
||||
if(pocket_item && !(pocket_item.flags&ABSTRACT))
|
||||
if(pocket_item.flags & NODROP)
|
||||
usr << "<span class='notice'>You try to empty [src]'s [pocket_side] pocket, it seems to be stuck!</span>"
|
||||
usr << "<span class='warning'>You try to empty [src]'s [pocket_side] pocket, it seems to be stuck!</span>"
|
||||
usr << "<span class='notice'>You try to empty [src]'s [pocket_side] pocket.</span>"
|
||||
else if(place_item && place_item.mob_can_equip(src, pocket_id, 1) && !(place_item.flags & ABSTRACT))
|
||||
else if(place_item && place_item.mob_can_equip(src, pocket_id, 1) && !(place_item.flags&ABSTRACT))
|
||||
usr << "<span class='notice'>You try to place [place_item] into [src]'s [pocket_side] pocket.</span>"
|
||||
delay_denominator = 4
|
||||
else
|
||||
return
|
||||
|
||||
if(do_mob(usr, src, STRIP_DELAY))
|
||||
if(do_mob(usr, src, POCKET_STRIP_DELAY/delay_denominator)) //placing an item into the pocket is 4 times faster
|
||||
if(pocket_item)
|
||||
unEquip(pocket_item)
|
||||
usr.put_in_hands(pocket_item)
|
||||
if(pocket_item == (pocket_id == slot_r_store ? r_store : l_store)) //item still in the pocket we search
|
||||
unEquip(pocket_item)
|
||||
else
|
||||
if(place_item)
|
||||
usr.unEquip(place_item)
|
||||
equip_to_slot_if_possible(place_item, pocket_id, 0, 1)
|
||||
equip_to_slot_if_possible(place_item, pocket_id, 0, 1)
|
||||
|
||||
// Update strip window
|
||||
if(usr.machine == src && in_range(src, usr))
|
||||
show_inv(usr)
|
||||
|
||||
else if(!pickpocket)
|
||||
else
|
||||
// Display a warning if the user mocks up
|
||||
src << "<span class='warning'>You feel your [pocket_side] pocket being fumbled with!</span>"
|
||||
|
||||
// if looting id with gloves, do it quietly - this allows pickpocket gloves to take/place id stealthily - Bone White
|
||||
if(href_list["item"])
|
||||
if(isanimal(usr))
|
||||
return //animals cannot strip people
|
||||
if(href_list["set_sensor"])
|
||||
if(istype(w_uniform, /obj/item/clothing/under))
|
||||
var/obj/item/clothing/under/U = w_uniform
|
||||
U.set_sensors(usr)
|
||||
|
||||
if(frozen)
|
||||
usr << "\red Do not attempt to strip frozen people."
|
||||
return
|
||||
var/itemTarget = href_list["item"]
|
||||
if(itemTarget == "id")
|
||||
if(pickpocket)
|
||||
var/obj/item/worn_id = src.wear_id
|
||||
var/obj/item/place_item = usr.get_active_hand() // Item to place in the pocket, if it's empty
|
||||
if(href_list["strip_accessory"])
|
||||
if(istype(w_uniform, /obj/item/clothing/under))
|
||||
var/obj/item/clothing/under/U = w_uniform
|
||||
if(U.accessories.len)
|
||||
var/obj/item/clothing/accessory/A = U.accessories[1]
|
||||
usr.visible_message("<span class='danger'>\The [usr] starts to take off \the [A] from \the [src]'s [U]!</span>", \
|
||||
"<span class='danger'>You start to take off \the [A] from \the [src]'s [U]!</span>")
|
||||
|
||||
if(worn_id)
|
||||
usr << "<span class='notice'>You try to remove [src]'s ID.</span>"
|
||||
else if(place_item && place_item.mob_can_equip(src, slot_wear_id, 1))
|
||||
usr << "<span class='notice'>You try to place [place_item] onto [src].</span>"
|
||||
else
|
||||
return
|
||||
|
||||
if(do_mob(usr, src, STRIP_DELAY))
|
||||
if(worn_id)
|
||||
unEquip(worn_id)
|
||||
usr.put_in_hands(worn_id)
|
||||
else
|
||||
if(place_item)
|
||||
usr.unEquip(place_item)
|
||||
equip_to_slot_if_possible(place_item, slot_wear_id, 0, 1)
|
||||
|
||||
// Update strip window
|
||||
if(usr.machine == src && in_range(src, usr))
|
||||
show_inv(usr)
|
||||
|
||||
|
||||
|
||||
else if(!pickpocket)
|
||||
// Display a warning if the user mocks up
|
||||
src << "<span class='warning'>You feel your ID slot being fumbled with!</span>"
|
||||
if(do_mob(usr, src, 40) && A && U.accessories.len)
|
||||
usr.visible_message("<span class='danger'>\The [usr] takes \the [A] off of \the [src]'s [U]!</span>", \
|
||||
"<span class='danger'>You take \the [A] off of \the [src]'s [U]!</span>")
|
||||
A.on_removed(usr)
|
||||
U.accessories -= A
|
||||
update_inv_w_uniform()
|
||||
|
||||
if (href_list["refresh"])
|
||||
if((machine)&&(in_range(src, usr)))
|
||||
@@ -795,21 +821,6 @@
|
||||
unset_machine()
|
||||
src << browse(null, t1)
|
||||
|
||||
if ((href_list["item"] && !( usr.stat ) && usr.canmove && !( usr.restrained() ) && in_range(src, usr) && ticker)) //if game hasn't started, can't make an equip_e
|
||||
var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( )
|
||||
if(!pickpocket || href_list["item"] != "id") // Stop the non-stealthy verbose strip if pickpocketing id.
|
||||
O.source = usr
|
||||
O.target = src
|
||||
O.item = usr.get_active_hand()
|
||||
O.s_loc = usr.loc
|
||||
O.t_loc = loc
|
||||
O.place = href_list["item"]
|
||||
O.pickpocket = pickpocket //Stealthy
|
||||
requests += O
|
||||
spawn( 0 )
|
||||
O.process()
|
||||
return
|
||||
|
||||
if (href_list["criminal"])
|
||||
if(hasHUD(usr,"security"))
|
||||
|
||||
@@ -959,7 +970,6 @@
|
||||
if (E.fields["name"] == perpname)
|
||||
for (var/datum/data/record/R in data_core.general)
|
||||
if (R.fields["id"] == E.fields["id"])
|
||||
|
||||
var/setmedical = input(usr, "Specify a new medical status for this person.", "Medical HUD", R.fields["p_stat"]) in list("*SSD*", "*Deceased*", "Physically Unfit", "Active", "Disabled", "Cancel")
|
||||
|
||||
if(hasHUD(usr,"medical"))
|
||||
@@ -1077,8 +1087,7 @@
|
||||
if (href_list["lookmob"])
|
||||
var/mob/M = locate(href_list["lookmob"])
|
||||
src.examinate(M)
|
||||
..()
|
||||
return
|
||||
. = ..()
|
||||
|
||||
|
||||
///eyecheck()
|
||||
@@ -1155,7 +1164,7 @@
|
||||
xylophone=0
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/can_inject(var/mob/user, var/error_msg, var/target_zone)
|
||||
/mob/living/carbon/human/can_inject(var/mob/user, var/error_msg, var/target_zone, var/penetrate_thick = 0)
|
||||
. = 1
|
||||
|
||||
if(!target_zone)
|
||||
@@ -1175,16 +1184,41 @@
|
||||
else
|
||||
switch(target_zone)
|
||||
if("head")
|
||||
if(head && head.flags & THICKMATERIAL)
|
||||
if(head && head.flags & THICKMATERIAL && !penetrate_thick)
|
||||
. = 0
|
||||
else
|
||||
if(wear_suit && wear_suit.flags & THICKMATERIAL)
|
||||
if(wear_suit && wear_suit.flags & THICKMATERIAL && !penetrate_thick)
|
||||
. = 0
|
||||
if(!. && error_msg && user)
|
||||
if(!fail_msg)
|
||||
fail_msg = "There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"] to inject into."
|
||||
user << "<span class='alert'>[fail_msg]</span>"
|
||||
|
||||
/mob/living/carbon/human/proc/check_obscured_slots()
|
||||
var/list/obscured = list()
|
||||
|
||||
if(wear_suit)
|
||||
if(wear_suit.flags_inv & HIDEGLOVES)
|
||||
obscured |= slot_gloves
|
||||
if(wear_suit.flags_inv & HIDEJUMPSUIT)
|
||||
obscured |= slot_w_uniform
|
||||
if(wear_suit.flags_inv & HIDESHOES)
|
||||
obscured |= slot_shoes
|
||||
|
||||
if(head)
|
||||
if(head.flags_inv & HIDEMASK)
|
||||
obscured |= slot_wear_mask
|
||||
if(head.flags_inv & HIDEEYES)
|
||||
obscured |= slot_glasses
|
||||
if(head.flags_inv & HIDEEARS)
|
||||
obscured |= slot_r_ear
|
||||
obscured |= slot_l_ear
|
||||
|
||||
if(obscured.len > 0)
|
||||
return obscured
|
||||
else
|
||||
return null
|
||||
|
||||
/mob/living/carbon/human/proc/check_has_mouth()
|
||||
// Todo, check stomach organ when implemented.
|
||||
var/obj/item/organ/external/head/H = get_organ("head")
|
||||
@@ -1806,4 +1840,4 @@
|
||||
/mob/living/carbon/human/proc/get_full_print()
|
||||
if(!dna || !dna.uni_identity)
|
||||
return
|
||||
return md5(dna.uni_identity)
|
||||
return md5(dna.uni_identity)
|
||||
|
||||
@@ -76,17 +76,22 @@
|
||||
M << "<span class='warning'>Remove his mask!</span>"
|
||||
return 0
|
||||
|
||||
var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human()
|
||||
O.source = M
|
||||
O.target = src
|
||||
O.s_loc = M.loc
|
||||
O.t_loc = loc
|
||||
O.place = "CPR"
|
||||
requests += O
|
||||
spawn(0)
|
||||
O.process()
|
||||
add_logs(src, M, "CPRed")
|
||||
return 1
|
||||
M.visible_message("<span class='danger'>\The [M] is trying to perform CPR on \the [src]!</span>", \
|
||||
"<span class='danger'>You try to perform CPR on \the [src]!</span>")
|
||||
if(do_mob(M, src, 40))
|
||||
if(health > config.health_threshold_dead && health <= config.health_threshold_crit)
|
||||
var/suff = min(getOxyLoss(), 7)
|
||||
adjustOxyLoss(-suff)
|
||||
updatehealth()
|
||||
M.visible_message("<span class='danger'>\The [M] performs CPR on \the [src]!</span>", \
|
||||
"<span class='notice'>You perform CPR on \the [src].</span>")
|
||||
|
||||
src << "<span class='notice'>You feel a breath of fresh air enter your lungs. It feels good.</span>"
|
||||
M << "<span class='alert'>Repeat at least every 7 seconds."
|
||||
add_logs(src, M, "CPRed")
|
||||
return 1
|
||||
else
|
||||
M << "<span class='danger'>You need to stay still while performing CPR!</span>"
|
||||
|
||||
if(I_GRAB)
|
||||
if(attacker_style && attacker_style.grab_act(H, src))
|
||||
|
||||
@@ -35,13 +35,11 @@
|
||||
var/backbag = 2 //Which backpack type the player has chosen. Nothing, Satchel or Backpack.
|
||||
|
||||
//Equipment slots
|
||||
var/obj/item/wear_suit = null
|
||||
var/obj/item/w_uniform = null
|
||||
var/obj/item/shoes = null
|
||||
var/obj/item/belt = null
|
||||
var/obj/item/gloves = null
|
||||
var/obj/item/glasses = null
|
||||
var/obj/item/head = null
|
||||
var/obj/item/l_ear = null
|
||||
var/obj/item/r_ear = null
|
||||
var/obj/item/wear_id = null
|
||||
|
||||
@@ -183,12 +183,6 @@
|
||||
else if(I == back)
|
||||
back = null
|
||||
update_inv_back()
|
||||
else if(I == handcuffed)
|
||||
handcuffed = null
|
||||
update_inv_handcuffed()
|
||||
else if(I == legcuffed)
|
||||
legcuffed = null
|
||||
update_inv_legcuffed()
|
||||
else if(I == r_hand)
|
||||
r_hand = null
|
||||
update_inv_r_hand()
|
||||
@@ -213,107 +207,90 @@
|
||||
src.r_hand = null
|
||||
update_inv_r_hand()
|
||||
|
||||
W.screen_loc = null
|
||||
W.loc = src
|
||||
W.equipped(src, slot)
|
||||
W.layer = 20
|
||||
|
||||
switch(slot)
|
||||
if(slot_back)
|
||||
src.back = W
|
||||
W.equipped(src, slot)
|
||||
back = W
|
||||
update_inv_back(redraw_mob)
|
||||
if(slot_wear_mask)
|
||||
src.wear_mask = W
|
||||
wear_mask = W
|
||||
if((wear_mask.flags & BLOCKHAIR) || (wear_mask.flags & BLOCKHEADHAIR))
|
||||
update_hair(redraw_mob) //rebuild hair
|
||||
W.equipped(src, slot)
|
||||
update_inv_wear_mask(redraw_mob)
|
||||
if(slot_handcuffed)
|
||||
src.handcuffed = W
|
||||
handcuffed = W
|
||||
update_inv_handcuffed(redraw_mob)
|
||||
if(slot_legcuffed)
|
||||
src.legcuffed = W
|
||||
W.equipped(src, slot)
|
||||
legcuffed = W
|
||||
update_inv_legcuffed(redraw_mob)
|
||||
if(slot_l_hand)
|
||||
src.l_hand = W
|
||||
W.equipped(src, slot)
|
||||
l_hand = W
|
||||
update_inv_l_hand(redraw_mob)
|
||||
if(slot_r_hand)
|
||||
src.r_hand = W
|
||||
W.equipped(src, slot)
|
||||
r_hand = W
|
||||
update_inv_r_hand(redraw_mob)
|
||||
if(slot_belt)
|
||||
src.belt = W
|
||||
W.equipped(src, slot)
|
||||
belt = W
|
||||
update_inv_belt(redraw_mob)
|
||||
if(slot_wear_id)
|
||||
src.wear_id = W
|
||||
W.equipped(src, slot)
|
||||
wear_id = W
|
||||
update_inv_wear_id(redraw_mob)
|
||||
if(slot_wear_pda)
|
||||
src.wear_pda = W
|
||||
W.equipped(src, slot)
|
||||
wear_pda = W
|
||||
update_inv_wear_pda(redraw_mob)
|
||||
if(slot_l_ear)
|
||||
src.l_ear = W
|
||||
l_ear = W
|
||||
if(l_ear.slot_flags & SLOT_TWOEARS)
|
||||
var/obj/item/clothing/ears/offear/O = new(W)
|
||||
O.loc = src
|
||||
src.r_ear = O
|
||||
r_ear = O
|
||||
O.layer = 20
|
||||
W.equipped(src, slot)
|
||||
update_inv_ears(redraw_mob)
|
||||
if(slot_r_ear)
|
||||
src.r_ear = W
|
||||
r_ear = W
|
||||
if(r_ear.slot_flags & SLOT_TWOEARS)
|
||||
var/obj/item/clothing/ears/offear/O = new(W)
|
||||
O.loc = src
|
||||
src.l_ear = O
|
||||
l_ear = O
|
||||
O.layer = 20
|
||||
W.equipped(src, slot)
|
||||
update_inv_ears(redraw_mob)
|
||||
if(slot_glasses)
|
||||
src.glasses = W
|
||||
W.equipped(src, slot)
|
||||
glasses = W
|
||||
update_inv_glasses(redraw_mob)
|
||||
if(slot_gloves)
|
||||
src.gloves = W
|
||||
W.equipped(src, slot)
|
||||
gloves = W
|
||||
update_inv_gloves(redraw_mob)
|
||||
if(slot_head)
|
||||
src.head = W
|
||||
head = W
|
||||
if((head.flags & BLOCKHAIR) || (head.flags & BLOCKHEADHAIR))
|
||||
update_hair(redraw_mob) //rebuild hair
|
||||
if(istype(W,/obj/item/clothing/head/kitty))
|
||||
W.update_icon(src)
|
||||
W.equipped(src, slot)
|
||||
update_inv_head(redraw_mob)
|
||||
if(slot_shoes)
|
||||
src.shoes = W
|
||||
W.equipped(src, slot)
|
||||
shoes = W
|
||||
update_inv_shoes(redraw_mob)
|
||||
if(slot_wear_suit)
|
||||
src.wear_suit = W
|
||||
W.equipped(src, slot)
|
||||
wear_suit = W
|
||||
update_inv_wear_suit(redraw_mob)
|
||||
if(slot_w_uniform)
|
||||
src.w_uniform = W
|
||||
W.equipped(src, slot)
|
||||
w_uniform = W
|
||||
update_inv_w_uniform(redraw_mob)
|
||||
if(slot_l_store)
|
||||
src.l_store = W
|
||||
W.equipped(src, slot)
|
||||
l_store = W
|
||||
update_inv_pockets(redraw_mob)
|
||||
if(slot_r_store)
|
||||
src.r_store = W
|
||||
W.equipped(src, slot)
|
||||
r_store = W
|
||||
update_inv_pockets(redraw_mob)
|
||||
if(slot_s_store)
|
||||
src.s_store = W
|
||||
W.equipped(src, slot)
|
||||
s_store = W
|
||||
update_inv_s_store(redraw_mob)
|
||||
if(slot_in_backpack)
|
||||
if(src.get_active_hand() == W)
|
||||
src.unEquip(W)
|
||||
W.loc = src.back
|
||||
if(get_active_hand() == W)
|
||||
unEquip(W)
|
||||
W.loc = back
|
||||
if(slot_tie)
|
||||
var/obj/item/clothing/under/uniform = src.w_uniform
|
||||
uniform.attackby(W,src)
|
||||
@@ -321,10 +298,6 @@
|
||||
src << "<span class='warning'>You are trying to equip this item to an unsupported inventory slot. Report this to a coder!</span>"
|
||||
return
|
||||
|
||||
W.layer = 20
|
||||
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/put_in_hands(obj/item/W)
|
||||
if(!W) return 0
|
||||
if(put_in_active_hand(W)) return 1
|
||||
@@ -332,516 +305,6 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/effect/equip_e
|
||||
name = "equip e"
|
||||
var/mob/source = null
|
||||
var/s_loc = null //source location
|
||||
var/t_loc = null //target location
|
||||
var/obj/item/item = null
|
||||
var/place = null
|
||||
var/pickpocket = null
|
||||
|
||||
/obj/effect/equip_e/human
|
||||
name = "human"
|
||||
var/mob/living/carbon/human/target = null
|
||||
|
||||
/obj/effect/equip_e/process()
|
||||
return
|
||||
|
||||
/obj/effect/equip_e/proc/done()
|
||||
return
|
||||
|
||||
/obj/effect/equip_e/New()
|
||||
if (!ticker)
|
||||
qdel(src)
|
||||
spawn(100)
|
||||
qdel(src)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/effect/equip_e/human/process()
|
||||
if (item)
|
||||
item.add_fingerprint(source)
|
||||
else
|
||||
switch(place)
|
||||
if("mask")
|
||||
if (!( target.wear_mask ))
|
||||
qdel(src)
|
||||
if("l_hand")
|
||||
if (!( target.l_hand ))
|
||||
qdel(src)
|
||||
if("r_hand")
|
||||
if (!( target.r_hand ))
|
||||
qdel(src)
|
||||
if("suit")
|
||||
if (!( target.wear_suit ))
|
||||
qdel(src)
|
||||
if("uniform")
|
||||
if (!( target.w_uniform ))
|
||||
qdel(src)
|
||||
if("back")
|
||||
if (!( target.back ))
|
||||
qdel(src)
|
||||
if("syringe")
|
||||
return
|
||||
if("pill")
|
||||
return
|
||||
if("fuel")
|
||||
return
|
||||
if("drink")
|
||||
return
|
||||
if("dnainjector")
|
||||
return
|
||||
if("handcuff")
|
||||
if (!( target.handcuffed ))
|
||||
qdel(src)
|
||||
if("id")
|
||||
if ((!( target.wear_id ) || !( target.w_uniform )))
|
||||
qdel(src)
|
||||
if("splints")
|
||||
var/count = 0
|
||||
for(var/organ in list("l_leg","r_leg","l_arm","r_arm"))
|
||||
var/obj/item/organ/external/o = target.organs_by_name[organ]
|
||||
if(o.status & ORGAN_SPLINTED)
|
||||
count = 1
|
||||
break
|
||||
if(count == 0)
|
||||
qdel(src)
|
||||
return
|
||||
if("internal")
|
||||
if ((!( (istype(target.wear_mask, /obj/item/clothing/mask) && (istype(target.back, /obj/item/weapon/tank) || istype(target.belt, /obj/item/weapon/tank) || istype(target.s_store, /obj/item/weapon/tank)) && !( target.internal )) ) && !( target.internal )))
|
||||
qdel(src)
|
||||
|
||||
var/message=null
|
||||
if(target.frozen)
|
||||
source << "\red Do not attempt to strip frozen people."
|
||||
return
|
||||
|
||||
|
||||
switch(place)
|
||||
if("syringe")
|
||||
message = "\red <B>[source] is trying to inject [target]!</B>"
|
||||
if("pill")
|
||||
message = "\red <B>[source] is trying to force [target] to swallow [item]!</B>"
|
||||
if("drink")
|
||||
message = "\red <B>[source] is trying to force [target] to swallow a gulp of [item]!</B>"
|
||||
if("dnainjector")
|
||||
message = "\red <B>[source] is trying to inject [target] with the [item]!</B>"
|
||||
if("mask")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Had their mask removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) mask</font>")
|
||||
if(target.wear_mask && (target.wear_mask.flags & NODROP))
|
||||
message = "\red <B>[source] fails to take off \a [target.wear_mask] from [target]'s head!</B>"
|
||||
return
|
||||
else if(target.wear_mask)
|
||||
message = "\red <B>[source] is trying to take off \a [target.wear_mask] from [target]'s head!</B>"
|
||||
if("l_hand")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their left hand item ([target.l_hand]) removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) left hand item ([target.l_hand])</font>")
|
||||
message = "\red <B>[source] is trying to take off \a [target.l_hand] from [target]'s left hand!</B>"
|
||||
if("r_hand")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their right hand item ([target.r_hand]) removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) right hand item ([target.r_hand])</font>")
|
||||
message = "\red <B>[source] is trying to take off \a [target.r_hand] from [target]'s right hand!</B>"
|
||||
if("gloves")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their gloves ([target.gloves]) removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) gloves ([target.gloves])</font>")
|
||||
if(target.gloves && (target.gloves.flags & NODROP))
|
||||
message = "\red <B>[source] fails to take off \a [target.gloves] from [target]'s hands!</B>"
|
||||
return
|
||||
else if(target.gloves)
|
||||
message = "\red <B>[source] is trying to take off the [target.gloves] from [target]'s hands!</B>"
|
||||
if("eyes")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their eyewear ([target.glasses]) removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) eyewear ([target.glasses])</font>")
|
||||
if(target.glasses && (target.glasses.flags & NODROP))
|
||||
message = "\red <B>[source] fails to take off \a [target.glasses] from [target]'s eyes!</B>"
|
||||
return
|
||||
else if(target.glasses)
|
||||
message = "\red <B>[source] is trying to take off the [target.glasses] from [target]'s eyes!</B>"
|
||||
if("l_ear")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their left ear item ([target.l_ear]) removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) left ear item ([target.l_ear])</font>")
|
||||
if(target.l_ear && (target.l_ear.flags & NODROP))
|
||||
message = "\red <B>[source] fails to take off \a [target.l_ear] from [target]'s left ear!</B>"
|
||||
return
|
||||
else if(target.l_ear)
|
||||
message = "\red <B>[source] is trying to take off the [target.l_ear] from [target]'s left ear!</B>"
|
||||
if("r_ear")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their right ear item ([target.r_ear]) removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) right ear item ([target.r_ear])</font>")
|
||||
if(target.r_ear && (target.r_ear.flags & NODROP))
|
||||
message = "\red <B>[source] fails to take off \a [target.r_ear] from [target]'s right ear!</B>"
|
||||
return
|
||||
else if(target.r_ear)
|
||||
message = "\red <B>[source] is trying to take off the [target.r_ear] from [target]'s right ear!</B>"
|
||||
if("head")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their hat ([target.head]) removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) hat ([target.head])</font>")
|
||||
if(target.head && (target.head.flags & NODROP))
|
||||
message = "\red <B>[source] fails to take off \a [target.head] from [target]'s head!</B>"
|
||||
return
|
||||
else if(target.head)
|
||||
message = "\red <B>[source] is trying to take off the [target.head] from [target]'s head!</B>"
|
||||
if("shoes")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their shoes ([target.shoes]) removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) shoes ([target.shoes])</font>")
|
||||
if(target.shoes && (target.shoes.flags & NODROP))
|
||||
message = "\red <B>[source] fails to take off \a [target.shoes] from [target]'s feet!</B>"
|
||||
return
|
||||
else if(target.shoes)
|
||||
message = "\red <B>[source] is trying to take off [target.shoes] from [target]'s feet!</B>"
|
||||
if("belt")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their belt item ([target.belt]) removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) belt item ([target.belt])</font>")
|
||||
if(!pickpocket && target.belt)
|
||||
message = "\red <B>[source] is trying to take off \a [target.belt] from [target]'s belt!</B>"
|
||||
if("suit")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their suit ([target.wear_suit]) removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) suit ([target.wear_suit])</font>")
|
||||
if(target.wear_suit && (target.wear_suit.flags & NODROP))
|
||||
message = "\red <B>[source] fails to take off \a [target.wear_suit] from [target]'s body!</B>"
|
||||
return
|
||||
else if(target.wear_suit)
|
||||
message = "\red <B>[source] is trying to take off \a [target.wear_suit] from [target]'s body!</B>"
|
||||
if("back")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their back item ([target.back]) removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) back item ([target.back])</font>")
|
||||
message = "\red <B>[source] is trying to take off \a [target.back] from [target]'s back!</B>"
|
||||
if("handcuff")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Was unhandcuffed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to unhandcuff [target.name]'s ([target.ckey])</font>")
|
||||
if(target.handcuffed)
|
||||
message = "\red <B>[source] is trying to unhandcuff [target]!</B>"
|
||||
if("legcuff")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Was unlegcuffed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to unlegcuff [target.name]'s ([target.ckey])</font>")
|
||||
if(target.legcuffed)
|
||||
message = "\red <B>[source] is trying to unlegcuff [target]!</B>"
|
||||
else
|
||||
message = "\red <B>[source] is trying to legcuff [target]!</B>"
|
||||
if("uniform")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their uniform ([target.w_uniform]) removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) uniform ([target.w_uniform])</font>")
|
||||
for(var/obj/item/I in list(target.l_store, target.r_store))
|
||||
if(I.on_found(source))
|
||||
return
|
||||
if(target.w_uniform && (target.w_uniform.flags & NODROP))
|
||||
message = "\red <B>[source] fails to take off \a [target.w_uniform] from [target]'s body!</B>"
|
||||
return
|
||||
else
|
||||
message = "\red <B>[source] is trying to take off \a [target.w_uniform] from [target]'s body!</B>"
|
||||
if("tie")
|
||||
var/obj/item/clothing/under/suit = target.w_uniform
|
||||
if(suit.accessories.len)
|
||||
var/obj/item/clothing/accessory/A = suit.accessories[1]
|
||||
target.attack_log += "\[[time_stamp()]\] <font color='orange'>Has had their accessory ([A]) removed by [source.name] ([source.ckey])</font>"
|
||||
source.attack_log += "\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) accessory ([A])</font>"
|
||||
if(istype(A, /obj/item/clothing/accessory/holobadge) || istype(A, /obj/item/clothing/accessory/medal))
|
||||
for(var/mob/M in viewers(target, null))
|
||||
M.show_message("\red <B>[source] tears off \the [A] from [target]'s [suit]!</B>" , 1)
|
||||
done()
|
||||
return
|
||||
else
|
||||
message = "\red <B>[source] is trying to take off \a [A] from [target]'s [suit]!</B>"
|
||||
if("s_store")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their suit storage item ([target.s_store]) removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) suit storage item ([target.s_store])</font>")
|
||||
message = "\red <B>[source] is trying to take off \a [target.s_store] from [target]'s suit!</B>"
|
||||
if("pockets")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their pockets emptied by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to empty [target.name]'s ([target.ckey]) pockets</font>")
|
||||
for(var/obj/item/I in list(target.l_store, target.r_store))
|
||||
if(I.on_found(source))
|
||||
return
|
||||
message = "\red <B>[source] is trying to empty [target]'s pockets!</B>"
|
||||
if("CPR")
|
||||
if (!target.cpr_time)
|
||||
qdel(src)
|
||||
target.cpr_time = 0
|
||||
message = "\red <B>[source] is trying perform CPR on [target]!</B>"
|
||||
if("id")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their ID ([target.wear_id]) removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) ID ([target.wear_id])</font>")
|
||||
if(!pickpocket)
|
||||
message = "\red <B>[source] is trying to take off [target.wear_id] from [target]'s uniform!</B>"
|
||||
else
|
||||
source << "\blue You try to take off [target.wear_id] from [target]'s uniform!"
|
||||
if("pda")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their PDA ([target.wear_pda]) removed by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to remove [target.name]'s ([target.ckey]) PDA ([target.wear_pda])</font>")
|
||||
message = "\red <B>[source] is trying to take off [target.wear_pda] from [target]'s uniform!</B>"
|
||||
if("internal")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their internals toggled by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to toggle [target.name]'s ([target.ckey]) internals</font>")
|
||||
if (target.internal)
|
||||
message = "\red <B>[source] is trying to remove [target]'s internals!</B>"
|
||||
else
|
||||
message = "\red <B>[source] is trying to set on [target]'s internals.</B>"
|
||||
if("splints")
|
||||
message = "\red <B>[source] is trying to remove [target]'s splints!</B>"
|
||||
if("sensor")
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their sensors toggled by [source.name] ([source.ckey])</font>")
|
||||
source.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to toggle [target.name]'s ([target.ckey]) sensors</font>")
|
||||
var/obj/item/clothing/under/suit = target.w_uniform
|
||||
if (suit.has_sensor >= 2)
|
||||
source << "The controls are locked."
|
||||
return
|
||||
message = "\red <B>[source] is trying to set [target]'s suit sensors!</B>"
|
||||
|
||||
for(var/mob/M in viewers(target, null))
|
||||
if(findtext(message, "is trying to take off from", 1, 0) > 0 || message == null)
|
||||
message = "\red <B>[source] is trying to put \a [item] on [target]!</B>"
|
||||
if(findtext(message, "is trying to put on", 1, 0) > 0)
|
||||
return
|
||||
else
|
||||
M.show_message(message, 1)
|
||||
else
|
||||
M.show_message(message, 1)
|
||||
spawn( HUMAN_STRIP_DELAY )
|
||||
done()
|
||||
return
|
||||
return
|
||||
|
||||
/*
|
||||
This proc equips stuff (or does something else) when removing stuff manually from the character window when you click and drag.
|
||||
It works in conjuction with the process() above.
|
||||
This proc works for humans only. Aliens stripping humans and the like will all use this proc. Stripping monkeys or somesuch will use their version of this proc.
|
||||
The first if statement for "mask" and such refers to items that are already equipped and un-equipping them.
|
||||
The else statement is for equipping stuff to empty slots.
|
||||
The NODROP flag refers to variable of /obj/item/clothing which either allows or disallows that item to be removed.
|
||||
It can still be worn/put on as normal.
|
||||
*/
|
||||
/obj/effect/equip_e/human/done() //TODO: And rewrite this :< ~Carn
|
||||
target.cpr_time = 1
|
||||
if(isanimal(source)) return //animals cannot strip people
|
||||
if(!source || !target) return //Target or source no longer exist
|
||||
if(source.loc != s_loc) return //source has moved
|
||||
if(target.loc != t_loc) return //target has moved
|
||||
if (LinkBlockedUnclimbable(t_loc, s_loc)) return
|
||||
if(item && source.get_active_hand() != item) return //Swapped hands / removed item from the active one
|
||||
if ((source.restrained() || source.stat)) return //Source restrained or unconscious / dead
|
||||
if(target.frozen)
|
||||
source << "\red Do not attempt to strip frozen people."
|
||||
return
|
||||
|
||||
|
||||
var/slot_to_process
|
||||
var/strip_item //this will tell us which item we will be stripping - if any.
|
||||
|
||||
switch(place) //here we go again...
|
||||
if("mask")
|
||||
slot_to_process = slot_wear_mask
|
||||
if (target.wear_mask && !(target.wear_mask.flags & NODROP))
|
||||
strip_item = target.wear_mask
|
||||
if("gloves")
|
||||
slot_to_process = slot_gloves
|
||||
if (target.gloves && !(target.gloves.flags & NODROP))
|
||||
strip_item = target.gloves
|
||||
if("eyes")
|
||||
slot_to_process = slot_glasses
|
||||
if (target.glasses)
|
||||
strip_item = target.glasses
|
||||
if("belt")
|
||||
slot_to_process = slot_belt
|
||||
if (target.belt)
|
||||
strip_item = target.belt
|
||||
if("s_store")
|
||||
slot_to_process = slot_s_store
|
||||
if (target.s_store)
|
||||
strip_item = target.s_store
|
||||
if("head")
|
||||
slot_to_process = slot_head
|
||||
if (target.head && !(target.head.flags & NODROP))
|
||||
strip_item = target.head
|
||||
if("l_ear")
|
||||
slot_to_process = slot_l_ear
|
||||
if (target.l_ear)
|
||||
strip_item = target.l_ear
|
||||
if("r_ear")
|
||||
slot_to_process = slot_r_ear
|
||||
if (target.r_ear)
|
||||
strip_item = target.r_ear
|
||||
if("shoes")
|
||||
slot_to_process = slot_shoes
|
||||
if (target.shoes && !(target.shoes.flags & NODROP))
|
||||
strip_item = target.shoes
|
||||
if("l_hand")
|
||||
if (istype(target, /obj/item/clothing/suit/straight_jacket))
|
||||
qdel(src)
|
||||
slot_to_process = slot_l_hand
|
||||
if (target.l_hand)
|
||||
strip_item = target.l_hand
|
||||
if("r_hand")
|
||||
if (istype(target, /obj/item/clothing/suit/straight_jacket))
|
||||
qdel(src)
|
||||
slot_to_process = slot_r_hand
|
||||
if (target.r_hand)
|
||||
strip_item = target.r_hand
|
||||
if("uniform")
|
||||
slot_to_process = slot_w_uniform
|
||||
if(target.w_uniform && !(target.w_uniform.flags & NODROP))
|
||||
strip_item = target.w_uniform
|
||||
if("suit")
|
||||
slot_to_process = slot_wear_suit
|
||||
if (target.wear_suit && !(target.wear_suit.flags & NODROP))
|
||||
strip_item = target.wear_suit
|
||||
if("tie")
|
||||
var/obj/item/clothing/under/suit = target.w_uniform
|
||||
//var/obj/item/clothing/accessory/tie = suit.hastie
|
||||
/*if(tie)
|
||||
if (istype(tie,/obj/item/clothing/accessory/storage))
|
||||
var/obj/item/clothing/accessory/storage/W = tie
|
||||
if (W.hold)
|
||||
W.hold.close(usr)
|
||||
usr.put_in_hands(tie)
|
||||
suit.hastie = null*/
|
||||
if(suit && suit.accessories.len)
|
||||
var/obj/item/clothing/accessory/A = suit.accessories[1]
|
||||
A.on_removed(usr)
|
||||
suit.accessories -= A
|
||||
target.update_inv_w_uniform()
|
||||
if("id")
|
||||
slot_to_process = slot_wear_id
|
||||
if (target.wear_id)
|
||||
strip_item = target.wear_id
|
||||
if("pda")
|
||||
slot_to_process = slot_wear_pda
|
||||
if (target.wear_pda)
|
||||
strip_item = target.wear_pda
|
||||
if("back")
|
||||
slot_to_process = slot_back
|
||||
if (target.back)
|
||||
strip_item = target.back
|
||||
if("handcuff")
|
||||
slot_to_process = slot_handcuffed
|
||||
if (target.handcuffed)
|
||||
strip_item = target.handcuffed
|
||||
if("legcuff")
|
||||
slot_to_process = slot_legcuffed
|
||||
if (target.legcuffed)
|
||||
strip_item = target.legcuffed
|
||||
if("splints")
|
||||
for(var/organ in list("l_leg","r_leg","l_arm","r_arm"))
|
||||
var/obj/item/organ/external/o = target.get_organ(organ)
|
||||
if (o && o.status & ORGAN_SPLINTED)
|
||||
var/obj/item/W = new /obj/item/stack/medical/splint/single()
|
||||
o.status &= ~ORGAN_SPLINTED
|
||||
if (W)
|
||||
W.loc = target.loc
|
||||
W.layer = initial(W.layer)
|
||||
W.add_fingerprint(source)
|
||||
if("CPR")
|
||||
if ((target.health > config.health_threshold_dead && target.health <= config.health_threshold_crit))
|
||||
var/suff = min(target.getOxyLoss(), 7)
|
||||
target.adjustOxyLoss(-suff)
|
||||
target.updatehealth()
|
||||
for(var/mob/O in viewers(source, null))
|
||||
O.show_message("\red [source] performs CPR on [target]!", 1)
|
||||
target << "\blue <b>You feel a breath of fresh air enter your lungs. It feels good.</b>"
|
||||
source << "\red Repeat at least every 7 seconds."
|
||||
if("dnainjector")
|
||||
var/obj/item/weapon/dnainjector/S = item
|
||||
if(S)
|
||||
S.add_fingerprint(source)
|
||||
if (!( istype(S, /obj/item/weapon/dnainjector) ))
|
||||
S.inuse = 0
|
||||
qdel(src)
|
||||
S.inject(target, source)
|
||||
if (S.s_time >= world.time + 30)
|
||||
S.inuse = 0
|
||||
qdel(src)
|
||||
S.s_time = world.time
|
||||
for(var/mob/O in viewers(source, null))
|
||||
O.show_message("\red [source] injects [target] with the DNA Injector!", 1)
|
||||
S.inuse = 0
|
||||
if("pockets")
|
||||
slot_to_process = slot_l_store
|
||||
strip_item = target.l_store //We'll do both
|
||||
if("sensor")
|
||||
var/obj/item/clothing/under/suit = target.w_uniform
|
||||
if (suit)
|
||||
if(suit.has_sensor >= 2)
|
||||
source << "The controls are locked."
|
||||
else
|
||||
suit.set_sensors(source)
|
||||
if("internal")
|
||||
if (target.internal)
|
||||
target.internal.add_fingerprint(source)
|
||||
target.internal = null
|
||||
if (target.internals)
|
||||
target.internals.icon_state = "internal0"
|
||||
else
|
||||
if (!( istype(target.wear_mask, /obj/item/clothing/mask) ))
|
||||
return
|
||||
else
|
||||
if (istype(target.back, /obj/item/weapon/tank))
|
||||
target.internal = target.back
|
||||
else if (istype(target.s_store, /obj/item/weapon/tank))
|
||||
target.internal = target.s_store
|
||||
else if (istype(target.belt, /obj/item/weapon/tank))
|
||||
target.internal = target.belt
|
||||
if (target.internal)
|
||||
for(var/mob/M in viewers(target, 1))
|
||||
M.show_message("[target] is now running on internals.", 1)
|
||||
target.internal.add_fingerprint(source)
|
||||
if (target.internals)
|
||||
target.internals.icon_state = "internal1"
|
||||
if(slot_to_process)
|
||||
if(strip_item) //Stripping an item from the mob
|
||||
var/obj/item/W = strip_item
|
||||
if((W.flags & NODROP) || (W.flags & ABSTRACT)) //Just to be sure
|
||||
return
|
||||
target.unEquip(W)
|
||||
if (target.client)
|
||||
target.client.screen -= W
|
||||
if (W)
|
||||
W.loc = target.loc
|
||||
W.layer = initial(W.layer)
|
||||
W.dropped(target)
|
||||
W.add_fingerprint(source)
|
||||
if(slot_to_process == slot_l_store) //pockets! Needs to process the other one too. Snowflake code, wooo! It's not like anyone will rewrite this anytime soon. If I'm wrong then... CONGRATULATIONS! ;)
|
||||
if(target.r_store)
|
||||
target.unEquip(target.r_store) //At this stage l_store is already processed by the code above, we only need to process r_store.
|
||||
else
|
||||
if(item && target.has_organ_for_slot(slot_to_process)) //Placing an item on the mob
|
||||
if(item.mob_can_equip(target, slot_to_process, 0))
|
||||
source.unEquip(item)
|
||||
target.equip_to_slot_if_possible(item, slot_to_process, 0, 1, 1)
|
||||
item.dropped(source)
|
||||
source.update_icons()
|
||||
target.update_icons()
|
||||
|
||||
if(source && target)
|
||||
if(source.machine == target)
|
||||
target.show_inv(source)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/mob/proc/get_item_by_slot(slot_id)
|
||||
switch(slot_id)
|
||||
if(slot_l_hand)
|
||||
return l_hand
|
||||
if(slot_r_hand)
|
||||
return r_hand
|
||||
return null
|
||||
|
||||
/mob/living/carbon/get_item_by_slot(slot_id)
|
||||
switch(slot_id)
|
||||
if(slot_back)
|
||||
return back
|
||||
if(slot_wear_mask)
|
||||
return wear_mask
|
||||
if(slot_handcuffed)
|
||||
return handcuffed
|
||||
if(slot_legcuffed)
|
||||
return legcuffed
|
||||
if(slot_l_hand)
|
||||
return l_hand
|
||||
if(slot_r_hand)
|
||||
return r_hand
|
||||
return null
|
||||
|
||||
// Return the item currently in the slot ID
|
||||
/mob/living/carbon/human/get_item_by_slot(slot_id)
|
||||
switch(slot_id)
|
||||
@@ -861,6 +324,8 @@ It can still be worn/put on as normal.
|
||||
return belt
|
||||
if(slot_wear_id)
|
||||
return wear_id
|
||||
if(slot_wear_pda)
|
||||
return wear_pda
|
||||
if(slot_l_ear)
|
||||
return l_ear
|
||||
if(slot_r_ear)
|
||||
@@ -901,6 +366,7 @@ It can still be worn/put on as normal.
|
||||
shoes,
|
||||
belt,
|
||||
wear_id,
|
||||
wear_pda,
|
||||
l_store,
|
||||
r_store,
|
||||
w_uniform
|
||||
@@ -913,4 +379,219 @@ It can still be worn/put on as normal.
|
||||
glasses,
|
||||
r_ear,
|
||||
l_ear,
|
||||
)
|
||||
)
|
||||
|
||||
// humans have their pickpocket gloves, so they get no message when stealing things
|
||||
/mob/living/carbon/human/stripPanelUnequip(obj/item/what, mob/who, where)
|
||||
var/is_silent = 0
|
||||
var/obj/item/clothing/gloves/G = gloves
|
||||
if(istype(G))
|
||||
is_silent = G.pickpocket
|
||||
|
||||
..(what, who, where, silent = is_silent)
|
||||
|
||||
// humans have their pickpocket gloves, so they get no message when stealing things
|
||||
/mob/living/carbon/human/stripPanelEquip(obj/item/what, mob/who, where)
|
||||
var/is_silent = 0
|
||||
var/obj/item/clothing/gloves/G = gloves
|
||||
if(istype(G))
|
||||
is_silent = G.pickpocket
|
||||
|
||||
..(what, who, where, silent = is_silent)
|
||||
|
||||
/mob/living/carbon/human/can_equip(obj/item/I, slot, disable_warning = 0)
|
||||
switch(species.handle_can_equip(I, slot, disable_warning, src))
|
||||
if(1) return 1
|
||||
if(2) return 0 //if it returns 2, it wants no normal handling
|
||||
|
||||
if(istype(I, /obj/item/clothing/under) || istype(I, /obj/item/clothing/suit))
|
||||
if(FAT in mutations)
|
||||
//testing("[M] TOO FAT TO WEAR [src]!")
|
||||
if(!(I.flags & ONESIZEFITSALL))
|
||||
if(!disable_warning)
|
||||
src << "<span class='alert'>You're too fat to wear the [I].</span>"
|
||||
return 0
|
||||
|
||||
switch(slot)
|
||||
if(slot_l_hand)
|
||||
if(l_hand)
|
||||
return 0
|
||||
return 1
|
||||
if(slot_r_hand)
|
||||
if(r_hand)
|
||||
return 0
|
||||
return 1
|
||||
if(slot_wear_mask)
|
||||
if(wear_mask)
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_MASK))
|
||||
return 0
|
||||
return 1
|
||||
if(slot_back)
|
||||
if(back)
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_BACK))
|
||||
return 0
|
||||
return 1
|
||||
if(slot_wear_suit)
|
||||
if(wear_suit)
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_OCLOTHING))
|
||||
return 0
|
||||
return 1
|
||||
if(slot_gloves)
|
||||
if(gloves)
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_GLOVES))
|
||||
return 0
|
||||
return 1
|
||||
if(slot_shoes)
|
||||
if(shoes)
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_FEET))
|
||||
return 0
|
||||
return 1
|
||||
if(slot_belt)
|
||||
if(belt)
|
||||
return 0
|
||||
if(!w_uniform)
|
||||
if(!disable_warning)
|
||||
src << "<span class='alert'>You need a jumpsuit before you can attach this [name].</span>"
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_BELT))
|
||||
return
|
||||
return 1
|
||||
if(slot_glasses)
|
||||
if(glasses)
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_EYES))
|
||||
return 0
|
||||
return 1
|
||||
if(slot_head)
|
||||
if(head)
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_HEAD))
|
||||
return 0
|
||||
return 1
|
||||
if(slot_l_ear)
|
||||
if(l_ear)
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_EARS))
|
||||
return 0
|
||||
if((I.slot_flags & SLOT_TWOEARS) && r_ear )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_r_ear)
|
||||
if(r_ear)
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_EARS))
|
||||
return 0
|
||||
if((I.slot_flags & SLOT_TWOEARS) && l_ear)
|
||||
return 0
|
||||
return 1
|
||||
if(slot_w_uniform)
|
||||
if(w_uniform)
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_ICLOTHING))
|
||||
return 0
|
||||
return 1
|
||||
if(slot_wear_id)
|
||||
if(wear_id)
|
||||
return 0
|
||||
if(!w_uniform)
|
||||
if(!disable_warning)
|
||||
src << "<span class='alert'>You need a jumpsuit before you can attach this [name].</span>"
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_ID))
|
||||
return 0
|
||||
return 1
|
||||
if(slot_wear_pda)
|
||||
if(wear_pda)
|
||||
return 0
|
||||
if(!w_uniform)
|
||||
if(!disable_warning)
|
||||
src << "<span class='alert'>You need a jumpsuit before you can attach this [name].</span>"
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_PDA))
|
||||
return 0
|
||||
return 1
|
||||
if(slot_l_store)
|
||||
if(I.flags & NODROP) //Pockets aren't visible, so you can't move NODROP items into them.
|
||||
return 0
|
||||
if(l_store)
|
||||
return 0
|
||||
if(!w_uniform)
|
||||
if(!disable_warning)
|
||||
src << "<span class='alert'>You need a jumpsuit before you can attach this [name].</span>"
|
||||
return 0
|
||||
if(I.slot_flags & SLOT_DENYPOCKET)
|
||||
return
|
||||
if(I.w_class <= 2 || (I.slot_flags & SLOT_POCKET))
|
||||
return 1
|
||||
if(slot_r_store)
|
||||
if(I.flags & NODROP)
|
||||
return 0
|
||||
if(r_store)
|
||||
return 0
|
||||
if(!w_uniform)
|
||||
if(!disable_warning)
|
||||
src << "<span class='alert'>You need a jumpsuit before you can attach this [name].</span>"
|
||||
return 0
|
||||
if(I.slot_flags & SLOT_DENYPOCKET)
|
||||
return 0
|
||||
if(I.w_class <= 2 || (I.slot_flags & SLOT_POCKET))
|
||||
return 1
|
||||
return 0
|
||||
if(slot_s_store)
|
||||
if(I.flags & NODROP) //Suit storage NODROP items drop if you take a suit off, this is to prevent people exploiting this.
|
||||
return 0
|
||||
if(s_store)
|
||||
return 0
|
||||
if(!wear_suit)
|
||||
if(!disable_warning)
|
||||
src << "<span class='alert'>You need a suit before you can attach this [name].</span>"
|
||||
return 0
|
||||
if(!wear_suit.allowed)
|
||||
if(!disable_warning)
|
||||
src << "You somehow have a suit with no defined allowed items for suit storage, stop that."
|
||||
return 0
|
||||
if(I.w_class > 4)
|
||||
if(!disable_warning)
|
||||
src << "The [name] is too big to attach."
|
||||
return 0
|
||||
if(istype(I, /obj/item/device/pda) || istype(I, /obj/item/weapon/pen) || is_type_in_list(I, wear_suit.allowed))
|
||||
return 1
|
||||
return 0
|
||||
if(slot_handcuffed)
|
||||
if(handcuffed)
|
||||
return 0
|
||||
if(!istype(I, /obj/item/weapon/restraints/handcuffs))
|
||||
return 0
|
||||
return 1
|
||||
if(slot_legcuffed)
|
||||
if(legcuffed)
|
||||
return 0
|
||||
if(!istype(I, /obj/item/weapon/restraints/legcuffs))
|
||||
return 0
|
||||
return 1
|
||||
if(slot_in_backpack)
|
||||
if(back && istype(back, /obj/item/weapon/storage/backpack))
|
||||
var/obj/item/weapon/storage/backpack/B = back
|
||||
if(B.contents.len < B.storage_slots && I.w_class <= B.max_w_class)
|
||||
return 1
|
||||
return 0
|
||||
if(slot_tie)
|
||||
if(!w_uniform)
|
||||
if(!disable_warning)
|
||||
src << "<span class='warning'>You need a jumpsuit before you can attach this [name].</span>"
|
||||
return 0
|
||||
var/obj/item/clothing/under/uniform = w_uniform
|
||||
if(uniform.accessories.len && !uniform.can_attach_accessory(src))
|
||||
if(!disable_warning)
|
||||
src << "<span class='warning'>You already have an accessory of this type attached to your [uniform].</span>"
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_TIE))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
return 0 //Unsupported slot
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "fancy uniform"
|
||||
desc = "It looks like it was tailored for a monkey."
|
||||
icon_state = "punpun"
|
||||
_color = "punpun"
|
||||
item_color = "punpun"
|
||||
species_restricted = list("Monkey")
|
||||
|
||||
/mob/living/carbon/human/monkey/punpun/New()
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
desc = "a golem's skin"
|
||||
icon_state = "golem"
|
||||
item_state = "golem"
|
||||
_color = "golem"
|
||||
item_color = "golem"
|
||||
has_sensor = 0
|
||||
flags = ABSTRACT | NODROP
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
@@ -93,7 +93,7 @@
|
||||
/obj/item/clothing/head/space/golem
|
||||
icon_state = "golem"
|
||||
item_state = "dermal"
|
||||
_color = "dermal"
|
||||
item_color = "dermal"
|
||||
name = "golem's head"
|
||||
desc = "a golem's head"
|
||||
unacidable = 1
|
||||
|
||||
@@ -52,10 +52,46 @@ datum/species/monkey/get_random_name(var/gender)
|
||||
/datum/species/monkey/handle_dna(var/mob/living/carbon/human/H)
|
||||
H.dna.SetSEState(MONKEYBLOCK,1)
|
||||
|
||||
/datum/species/monkey/handle_can_equip(obj/item/I, slot, disable_warning = 0, mob/living/carbon/human/user)
|
||||
switch(slot)
|
||||
if(slot_l_hand)
|
||||
if(user.l_hand)
|
||||
return 2
|
||||
return 1
|
||||
if(slot_r_hand)
|
||||
if(user.r_hand)
|
||||
return 2
|
||||
return 1
|
||||
if(slot_wear_mask)
|
||||
if(user.wear_mask)
|
||||
return 2
|
||||
if(!(I.slot_flags & SLOT_MASK))
|
||||
return 2
|
||||
return 1
|
||||
if(slot_back)
|
||||
if(user.back)
|
||||
return 2
|
||||
if(!(I.slot_flags & SLOT_BACK))
|
||||
return 2
|
||||
return 1
|
||||
if(slot_handcuffed)
|
||||
if(user.handcuffed)
|
||||
return 2
|
||||
if(!istype(I, /obj/item/weapon/restraints/handcuffs))
|
||||
return 2
|
||||
return 1
|
||||
if(slot_in_backpack)
|
||||
if(user.back && istype(user.back, /obj/item/weapon/storage/backpack))
|
||||
var/obj/item/weapon/storage/backpack/B = user.back
|
||||
if(B.contents.len < B.storage_slots && I.w_class <= B.max_w_class)
|
||||
return 1
|
||||
return 2
|
||||
return 2
|
||||
|
||||
/datum/species/monkey/tajaran
|
||||
name = "Farwa"
|
||||
name_plural = "Farwa"
|
||||
|
||||
|
||||
icobase = 'icons/mob/human_races/monkeys/r_farwa.dmi'
|
||||
deform = 'icons/mob/human_races/monkeys/r_farwa.dmi'
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
//Used in icon caching.
|
||||
var/race_key = 0
|
||||
var/icon/icon_template
|
||||
|
||||
|
||||
var/is_small
|
||||
var/show_ssd = 1
|
||||
var/virus_immune
|
||||
@@ -103,7 +103,7 @@
|
||||
"brain" = /obj/item/organ/brain,
|
||||
"appendix" = /obj/item/organ/appendix,
|
||||
"eyes" = /obj/item/organ/eyes
|
||||
)
|
||||
)
|
||||
var/vision_organ // If set, this organ is required for vision. Defaults to "eyes" if the species has them.
|
||||
var/list/has_limbs = list(
|
||||
"chest" = list("path" = /obj/item/organ/external/chest),
|
||||
@@ -364,3 +364,6 @@
|
||||
/datum/unarmed_attack/claws/armalis
|
||||
attack_verb = list("slash", "claw")
|
||||
damage = 6 //they're huge! they should do a little more damage, i'd even go for 15-20 maybe...
|
||||
|
||||
/datum/species/proc/handle_can_equip(obj/item/I, slot, disable_warning = 0, mob/living/carbon/human/user)
|
||||
return 0
|
||||
@@ -515,7 +515,7 @@ var/global/list/damage_icon_parts = list()
|
||||
/mob/living/carbon/human/update_inv_w_uniform(var/update_icons=1)
|
||||
if(w_uniform && istype(w_uniform, /obj/item/clothing/under) )
|
||||
w_uniform.screen_loc = ui_iclothing
|
||||
var/t_color = w_uniform._color
|
||||
var/t_color = w_uniform.item_color
|
||||
if(!t_color) t_color = icon_state
|
||||
var/image/standing = image("icon_state" = "[t_color]_s")
|
||||
|
||||
@@ -541,7 +541,7 @@ var/global/list/damage_icon_parts = list()
|
||||
|
||||
if(w_uniform:accessories.len) //WE CHECKED THE TYPE ABOVE. THIS REALLY SHOULD BE FINE.
|
||||
for(var/obj/item/clothing/accessory/A in w_uniform:accessories)
|
||||
var/tie_color = A._color
|
||||
var/tie_color = A.item_color
|
||||
if(!tie_color) tie_color = A.icon_state
|
||||
standing.overlays += image("icon" = 'icons/mob/ties.dmi', "icon_state" = "[tie_color]")
|
||||
|
||||
@@ -692,15 +692,12 @@ var/global/list/damage_icon_parts = list()
|
||||
if(head)
|
||||
head.screen_loc = ui_head //TODO
|
||||
var/image/standing
|
||||
if(istype(head,/obj/item/clothing/head/kitty))
|
||||
standing = image("icon" = head:mob)
|
||||
if(head.icon_override)
|
||||
standing = image("icon" = head.icon_override, "icon_state" = "[head.icon_state]")
|
||||
else if(head.sprite_sheets && head.sprite_sheets[species.name])
|
||||
standing = image("icon" = head.sprite_sheets[species.name], "icon_state" = "[head.icon_state]")
|
||||
else
|
||||
if(head.icon_override)
|
||||
standing = image("icon" = head.icon_override, "icon_state" = "[head.icon_state]")
|
||||
else if(head.sprite_sheets && head.sprite_sheets[species.name])
|
||||
standing = image("icon" = head.sprite_sheets[species.name], "icon_state" = "[head.icon_state]")
|
||||
else
|
||||
standing = image("icon" = 'icons/mob/head.dmi', "icon_state" = "[head.icon_state]")
|
||||
standing = image("icon" = 'icons/mob/head.dmi', "icon_state" = "[head.icon_state]")
|
||||
|
||||
if(head.blood_DNA)
|
||||
var/image/bloodsies = image("icon" = species.blood_mask, "icon_state" = "helmetblood")
|
||||
|
||||
@@ -587,7 +587,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75
|
||||
throw_speed = 3
|
||||
throw_range = 6
|
||||
origin_tech = "biotech=4"
|
||||
_color = "grey"
|
||||
item_color = "grey"
|
||||
var/Uses = 1 // uses before it goes inert
|
||||
var/enhanced = 0 //has it been enhanced before?
|
||||
|
||||
@@ -612,87 +612,87 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75
|
||||
/obj/item/slime_extract/grey
|
||||
name = "grey slime extract"
|
||||
icon_state = "grey slime extract"
|
||||
_color = "grey"
|
||||
item_color = "grey"
|
||||
|
||||
/obj/item/slime_extract/gold
|
||||
name = "gold slime extract"
|
||||
icon_state = "gold slime extract"
|
||||
_color = "gold"
|
||||
item_color = "gold"
|
||||
|
||||
/obj/item/slime_extract/silver
|
||||
name = "silver slime extract"
|
||||
icon_state = "silver slime extract"
|
||||
_color = "silver"
|
||||
item_color = "silver"
|
||||
|
||||
/obj/item/slime_extract/metal
|
||||
name = "metal slime extract"
|
||||
icon_state = "metal slime extract"
|
||||
_color = "metal"
|
||||
item_color = "metal"
|
||||
|
||||
/obj/item/slime_extract/purple
|
||||
name = "purple slime extract"
|
||||
icon_state = "purple slime extract"
|
||||
_color = "purple"
|
||||
item_color = "purple"
|
||||
|
||||
/obj/item/slime_extract/darkpurple
|
||||
name = "dark purple slime extract"
|
||||
icon_state = "dark purple slime extract"
|
||||
_color = "darkpurple"
|
||||
item_color = "darkpurple"
|
||||
|
||||
/obj/item/slime_extract/orange
|
||||
name = "orange slime extract"
|
||||
icon_state = "orange slime extract"
|
||||
_color = "orange"
|
||||
item_color = "orange"
|
||||
|
||||
/obj/item/slime_extract/yellow
|
||||
name = "yellow slime extract"
|
||||
icon_state = "yellow slime extract"
|
||||
_color = "yellow"
|
||||
item_color = "yellow"
|
||||
|
||||
/obj/item/slime_extract/red
|
||||
name = "red slime extract"
|
||||
icon_state = "red slime extract"
|
||||
_color = "red"
|
||||
item_color = "red"
|
||||
|
||||
/obj/item/slime_extract/blue
|
||||
name = "blue slime extract"
|
||||
icon_state = "blue slime extract"
|
||||
_color = "blue"
|
||||
item_color = "blue"
|
||||
|
||||
/obj/item/slime_extract/darkblue
|
||||
name = "dark blue slime extract"
|
||||
icon_state = "dark blue slime extract"
|
||||
_color = "darkblue"
|
||||
item_color = "darkblue"
|
||||
|
||||
/obj/item/slime_extract/pink
|
||||
name = "pink slime extract"
|
||||
icon_state = "pink slime extract"
|
||||
_color = "pink"
|
||||
item_color = "pink"
|
||||
|
||||
/obj/item/slime_extract/green
|
||||
name = "green slime extract"
|
||||
icon_state = "green slime extract"
|
||||
_color = "green"
|
||||
item_color = "green"
|
||||
|
||||
/obj/item/slime_extract/lightpink
|
||||
name = "light pink slime extract"
|
||||
icon_state = "light pink slime extract"
|
||||
_color = "lightpink"
|
||||
item_color = "lightpink"
|
||||
|
||||
/obj/item/slime_extract/black
|
||||
name = "black slime extract"
|
||||
icon_state = "black slime extract"
|
||||
_color = "black"
|
||||
item_color = "black"
|
||||
|
||||
/obj/item/slime_extract/oil
|
||||
name = "oil slime extract"
|
||||
icon_state = "oil slime extract"
|
||||
_color = "oil"
|
||||
item_color = "oil"
|
||||
|
||||
/obj/item/slime_extract/adamantine
|
||||
name = "adamantine slime extract"
|
||||
icon_state = "adamantine slime extract"
|
||||
_color = "adamantine"
|
||||
item_color = "adamantine"
|
||||
|
||||
/obj/item/slime_extract/bluespace
|
||||
name = "bluespace slime extract"
|
||||
|
||||
@@ -890,6 +890,40 @@
|
||||
/mob/living/proc/can_use_vents()
|
||||
return "You can't fit into that vent."
|
||||
|
||||
// The src mob is trying to strip an item from someone
|
||||
// Override if a certain type of mob should be behave differently when stripping items (can't, for example)
|
||||
/mob/living/stripPanelUnequip(obj/item/what, mob/who, where, var/silent = 0)
|
||||
if(what.flags & NODROP)
|
||||
src << "<span class='warning'>You can't remove \the [what.name], it appears to be stuck!</span>"
|
||||
return
|
||||
if(!silent)
|
||||
who.visible_message("<span class='danger'>[src] tries to remove [who]'s [what.name].</span>", \
|
||||
"<span class='userdanger'>[src] tries to remove [who]'s [what.name].</span>")
|
||||
what.add_fingerprint(src)
|
||||
if(do_mob(src, who, what.strip_delay))
|
||||
if(what && what == who.get_item_by_slot(where) && Adjacent(who))
|
||||
who.unEquip(what)
|
||||
add_logs(who, src, "stripped", addition="of [what]")
|
||||
|
||||
// The src mob is trying to place an item on someone
|
||||
// Override if a certain mob should be behave differently when placing items (can't, for example)
|
||||
/mob/living/stripPanelEquip(obj/item/what, mob/who, where, var/silent = 0)
|
||||
what = src.get_active_hand()
|
||||
if(what && (what.flags & NODROP))
|
||||
src << "<span class='warning'>You can't put \the [what.name] on [who], it's stuck to your hand!</span>"
|
||||
return
|
||||
if(what)
|
||||
if(!what.mob_can_equip(who, where, 1))
|
||||
src << "<span class='warning'>\The [what.name] doesn't fit in that place!</span>"
|
||||
return
|
||||
if(!silent)
|
||||
visible_message("<span class='notice'>[src] tries to put [what] on [who].</span>")
|
||||
if(do_mob(src, who, what.put_on_delay))
|
||||
if(what && Adjacent(who))
|
||||
unEquip(what)
|
||||
who.equip_to_slot_if_possible(what, where, 0, 1)
|
||||
add_logs(who, src, "equipped", what)
|
||||
|
||||
|
||||
/mob/living/singularity_act()
|
||||
var/gain = 20
|
||||
|
||||
@@ -1,109 +0,0 @@
|
||||
#define BORG_CAMERA_BUFFER 30
|
||||
|
||||
//UPDATE TRIGGERS, when the chunk (and the surrounding chunks) should update.
|
||||
|
||||
// TURFS
|
||||
|
||||
/turf
|
||||
var/image/obscured
|
||||
|
||||
/turf/proc/visibilityChanged()
|
||||
if(ticker)
|
||||
cameranet.updateVisibility(src)
|
||||
|
||||
/turf/simulated/Del()
|
||||
visibilityChanged()
|
||||
..()
|
||||
|
||||
/turf/simulated/New()
|
||||
..()
|
||||
visibilityChanged()
|
||||
|
||||
|
||||
|
||||
// STRUCTURES
|
||||
|
||||
/obj/structure/Destroy()
|
||||
if(ticker)
|
||||
cameranet.updateVisibility(src)
|
||||
return ..()
|
||||
|
||||
/obj/structure/New()
|
||||
..()
|
||||
if(ticker)
|
||||
cameranet.updateVisibility(src)
|
||||
|
||||
// EFFECTS
|
||||
|
||||
/obj/effect/Destroy()
|
||||
if(ticker)
|
||||
cameranet.updateVisibility(src)
|
||||
return ..()
|
||||
|
||||
/obj/effect/New()
|
||||
..()
|
||||
if(ticker)
|
||||
cameranet.updateVisibility(src)
|
||||
|
||||
|
||||
// DOORS
|
||||
|
||||
// Simply updates the visibility of the area when it opens/closes/destroyed.
|
||||
/obj/machinery/door/proc/update_freelok_sight()
|
||||
// Glass door glass = 1
|
||||
// don't check then?
|
||||
if(!glass && cameranet)
|
||||
cameranet.updateVisibility(src, 0)
|
||||
|
||||
|
||||
// ROBOT MOVEMENT
|
||||
|
||||
// Update the portable camera everytime the Robot moves.
|
||||
// This might be laggy, comment it out if there are problems.
|
||||
/mob/living/silicon/robot/var/updating = 0
|
||||
|
||||
/mob/living/silicon/robot/Move()
|
||||
var/oldLoc = src.loc
|
||||
. = ..()
|
||||
if(.)
|
||||
if(src.camera && src.camera.network.len)
|
||||
if(!updating)
|
||||
updating = 1
|
||||
spawn(BORG_CAMERA_BUFFER)
|
||||
if(oldLoc != src.loc)
|
||||
cameranet.updatePortableCamera(src.camera)
|
||||
updating = 0
|
||||
|
||||
// CAMERA
|
||||
|
||||
// An addition to deactivate which removes/adds the camera from the chunk list based on if it works or not.
|
||||
|
||||
/obj/machinery/camera/deactivate(user as mob, var/choice = 1)
|
||||
..(user, choice)
|
||||
if(src.can_use())
|
||||
cameranet.addCamera(src)
|
||||
else
|
||||
src.set_light(0)
|
||||
cameranet.removeCamera(src)
|
||||
|
||||
/obj/machinery/camera/New()
|
||||
..()
|
||||
//Camera must be added to global list of all cameras no matter what...
|
||||
if(cameranet.cameras_unsorted || !ticker)
|
||||
cameranet.cameras += src
|
||||
cameranet.cameras_unsorted = 1
|
||||
else
|
||||
dd_insertObjectList(cameranet.cameras, src)
|
||||
|
||||
var/list/open_networks = difflist(network,restricted_camera_networks) //...but if all of camera's networks are restricted, it only works for specific camera consoles.
|
||||
if(open_networks.len) //If there is at least one open network, chunk is available for AI usage.
|
||||
cameranet.addCamera(src)
|
||||
|
||||
/obj/machinery/camera/Destroy()
|
||||
cameranet.cameras -= src
|
||||
var/list/open_networks = difflist(network,restricted_camera_networks)
|
||||
if(open_networks.len)
|
||||
cameranet.removeCamera(src)
|
||||
return ..()
|
||||
|
||||
#undef BORG_CAMERA_BUFFER
|
||||
@@ -284,9 +284,9 @@
|
||||
src << "<br><b>You are a maintenance drone, a tiny-brained robotic repair machine</b>."
|
||||
src << "You have no individual will, no personality, and no drives or urges other than your laws."
|
||||
src << "Use <b>;</b> to talk to other drones, and <b>say</b> to speak silently to your nearby fellows."
|
||||
src << "Remember, you are <b>lawed against interference with the crew</b>. Also remember, <b>you DO NOT take orders from the AI.</b>"
|
||||
src << "Remember, you are <b>lawed against interference with the crew</b>. Also remember, <b>you DO NOT take orders from the AI.</b>"
|
||||
src << "<b>Don't invade their worksites, don't steal their resources, don't tell them about the changeling in the toilets.</b>"
|
||||
src << "<b>If a crewmember has noticed you, <i>you are probably breaking your first law</i></b>."
|
||||
src << "<b>Make sure crew members do not notice you.</b>."
|
||||
|
||||
/*
|
||||
sprite["Default"] = "repairbot"
|
||||
|
||||
@@ -78,6 +78,8 @@ var/list/robot_verbs_default = list(
|
||||
var/lamp_intensity = 0 //Luminosity of the headlamp. 0 is off. Higher settings than the minimum require power.
|
||||
var/lamp_recharging = 0 //Flag for if the lamp is on cooldown after being forcibly disabled.
|
||||
|
||||
var/updating = 0 //portable camera camerachunk update
|
||||
|
||||
var/jetpackoverlay = 0
|
||||
var/magpulse = 0
|
||||
|
||||
@@ -386,8 +388,8 @@ var/list/robot_verbs_default = list(
|
||||
/mob/living/silicon/robot/verb/cmd_unequip_module()
|
||||
set name = "Unequip Module"
|
||||
set hidden = 1
|
||||
uneq_active()
|
||||
|
||||
uneq_active()
|
||||
|
||||
// this verb lets cyborgs see the stations manifest
|
||||
/mob/living/silicon/robot/verb/cmd_station_manifest()
|
||||
set category = "Robot Commands"
|
||||
@@ -753,7 +755,7 @@ var/list/robot_verbs_default = list(
|
||||
U.forceMove(src)
|
||||
else
|
||||
user << "<span class='danger'>Upgrade error.</span>"
|
||||
|
||||
|
||||
else
|
||||
spark_system.start()
|
||||
return ..()
|
||||
@@ -1132,10 +1134,18 @@ var/list/robot_verbs_default = list(
|
||||
|
||||
update_icons()
|
||||
|
||||
#define BORG_CAMERA_BUFFER 30
|
||||
/mob/living/silicon/robot/Move(a, b, flag)
|
||||
|
||||
var/oldLoc = src.loc
|
||||
. = ..()
|
||||
|
||||
if(.)
|
||||
if(src.camera)
|
||||
if(!updating)
|
||||
updating = 1
|
||||
spawn(BORG_CAMERA_BUFFER)
|
||||
if(oldLoc != src.loc)
|
||||
cameranet.updatePortableCamera(src.camera)
|
||||
updating = 0
|
||||
if(module)
|
||||
if(module.type == /obj/item/weapon/robot_module/janitor)
|
||||
var/turf/tile = loc
|
||||
@@ -1167,8 +1177,9 @@ var/list/robot_verbs_default = list(
|
||||
cleaned_human.shoes.clean_blood()
|
||||
cleaned_human.update_inv_shoes(0,0)
|
||||
cleaned_human.clean_blood()
|
||||
cleaned_human << "\red [src] cleans your face!"
|
||||
cleaned_human << "<span class='danger'>[src] cleans your face!</span>"
|
||||
return
|
||||
#undef BORG_CAMERA_BUFFER
|
||||
|
||||
/mob/living/silicon/robot/proc/self_destruct()
|
||||
if(emagged)
|
||||
@@ -1281,7 +1292,7 @@ var/list/robot_verbs_default = list(
|
||||
/mob/living/silicon/robot/deathsquad/init()
|
||||
laws = new /datum/ai_laws/deathsquad
|
||||
module = new /obj/item/weapon/robot_module/deathsquad(src)
|
||||
|
||||
|
||||
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
|
||||
radio = new /obj/item/device/radio/borg/deathsquad(src)
|
||||
radio.recalculateChannels()
|
||||
@@ -1295,7 +1306,7 @@ var/list/robot_verbs_default = list(
|
||||
var/list/borg_candidates = pollCandidates("Do you want to play as a Nanotrasen Combat borg?", poll_time = 300)
|
||||
if(borg_candidates.len > 0 && isnull(ckey))
|
||||
searching_for_ckey = 0
|
||||
var/mob/M = pick(borg_candidates)
|
||||
var/mob/M = pick(borg_candidates)
|
||||
M.mind.transfer_to(src)
|
||||
M.mind.assigned_role = "MODE"
|
||||
M.mind.special_role = "Death Commando"
|
||||
@@ -1304,10 +1315,10 @@ var/list/robot_verbs_default = list(
|
||||
else
|
||||
searching_for_ckey = 0
|
||||
user << "<span class='notice'>Unable to connect to Central Command. Please wait and try again later.</span>"
|
||||
return
|
||||
return
|
||||
else
|
||||
user << "<span class='warning'>[src] is already checking for possible borgs.</span>"
|
||||
return
|
||||
return
|
||||
|
||||
/mob/living/silicon/robot/syndicate
|
||||
icon_state = "syndie_bloodhound"
|
||||
@@ -1328,7 +1339,7 @@ var/list/robot_verbs_default = list(
|
||||
..()
|
||||
cell.maxcharge = 25000
|
||||
cell.charge = 25000
|
||||
|
||||
|
||||
/mob/living/silicon/robot/syndicate/init()
|
||||
laws = new /datum/ai_laws/syndicate_override
|
||||
module = new /obj/item/weapon/robot_module/syndicate(src)
|
||||
@@ -1336,13 +1347,13 @@ var/list/robot_verbs_default = list(
|
||||
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
|
||||
radio = new /obj/item/device/radio/borg/syndicate(src)
|
||||
radio.recalculateChannels()
|
||||
|
||||
|
||||
spawn(5)
|
||||
if(playstyle_string)
|
||||
src << playstyle_string
|
||||
|
||||
playsound(loc, 'sound/mecha/nominalsyndi.ogg', 75, 0)
|
||||
|
||||
|
||||
/mob/living/silicon/robot/syndicate/medical
|
||||
icon_state = "syndi-medi"
|
||||
designation = "Syndicate Medical"
|
||||
|
||||
@@ -279,6 +279,7 @@
|
||||
if(src.emag)
|
||||
var/obj/item/weapon/reagent_containers/food/drinks/cans/beer/B = src.emag
|
||||
B.reagents.add_reagent("beer2", 2)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/robot_module/butler/add_languages(var/mob/living/silicon/robot/R)
|
||||
//full set of languages
|
||||
|
||||
@@ -129,6 +129,9 @@
|
||||
switch(remove_from)
|
||||
if("head")
|
||||
if(inventory_head)
|
||||
if(inventory_head.flags & NODROP)
|
||||
usr << "<span = 'warning'>\The [inventory_head] is stuck too hard to [src] for you to remove!</span>"
|
||||
return
|
||||
name = real_name
|
||||
desc = initial(desc)
|
||||
speak = list("YAP", "Woof!", "Bark!", "AUUUUUU")
|
||||
@@ -145,6 +148,9 @@
|
||||
return
|
||||
if("back")
|
||||
if(inventory_back)
|
||||
if(inventory_back.flags & NODROP)
|
||||
usr << "<span = 'warning'>\The [inventory_back] is stuck too hard to [src] for you to remove!</span>"
|
||||
return
|
||||
inventory_back.loc = src.loc
|
||||
inventory_back = null
|
||||
regenerate_icons()
|
||||
@@ -669,4 +675,4 @@
|
||||
s.start()
|
||||
respawnable_list += src
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
@@ -218,18 +218,18 @@ var/global/chicken_count = 0
|
||||
attacktext = "kicks"
|
||||
health = 10
|
||||
var/eggsleft = 0
|
||||
var/_color
|
||||
var/chicken_color
|
||||
pass_flags = PASSTABLE | PASSMOB
|
||||
small = 1
|
||||
can_hide = 1
|
||||
|
||||
/mob/living/simple_animal/chicken/New()
|
||||
..()
|
||||
if(!_color)
|
||||
_color = pick( list("brown","black","white") )
|
||||
icon_state = "chicken_[_color]"
|
||||
icon_living = "chicken_[_color]"
|
||||
icon_dead = "chicken_[_color]_dead"
|
||||
if(!chicken_color)
|
||||
chicken_color = pick( list("brown","black","white") )
|
||||
icon_state = "chicken_[chicken_color]"
|
||||
icon_living = "chicken_[chicken_color]"
|
||||
icon_dead = "chicken_[chicken_color]_dead"
|
||||
pixel_x = rand(-6, 6)
|
||||
pixel_y = rand(0, 10)
|
||||
chicken_count += 1
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
density = 0
|
||||
ventcrawler = 2
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
|
||||
var/_color //brown, gray and white, leave blank for random
|
||||
var/mouse_color //brown, gray and white, leave blank for random
|
||||
layer = MOB_LAYER
|
||||
min_oxy = 16 //Require atleast 16kPA oxygen
|
||||
minbodytemp = 223 //Below -50 Degrees Celcius
|
||||
@@ -39,33 +39,33 @@
|
||||
|
||||
if(!ckey && stat == CONSCIOUS && prob(0.5))
|
||||
stat = UNCONSCIOUS
|
||||
icon_state = "mouse_[_color]_sleep"
|
||||
icon_state = "mouse_[mouse_color]_sleep"
|
||||
wander = 0
|
||||
speak_chance = 0
|
||||
//snuffles
|
||||
else if(stat == UNCONSCIOUS)
|
||||
if(ckey || prob(1))
|
||||
stat = CONSCIOUS
|
||||
icon_state = "mouse_[_color]"
|
||||
icon_state = "mouse_[mouse_color]"
|
||||
wander = 1
|
||||
else if(prob(5))
|
||||
emote("snuffles")
|
||||
|
||||
/mob/living/simple_animal/mouse/New()
|
||||
..()
|
||||
if(!_color)
|
||||
_color = pick( list("brown","gray","white") )
|
||||
icon_state = "mouse_[_color]"
|
||||
icon_living = "mouse_[_color]"
|
||||
icon_dead = "mouse_[_color]_dead"
|
||||
desc = "It's a small [_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself."
|
||||
if(!mouse_color)
|
||||
mouse_color = pick( list("brown","gray","white") )
|
||||
icon_state = "mouse_[mouse_color]"
|
||||
icon_living = "mouse_[mouse_color]"
|
||||
icon_dead = "mouse_[mouse_color]_dead"
|
||||
desc = "It's a small [mouse_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself."
|
||||
|
||||
|
||||
/mob/living/simple_animal/mouse/proc/splat()
|
||||
src.health = 0
|
||||
src.stat = DEAD
|
||||
src.icon_dead = "mouse_[_color]_splat"
|
||||
src.icon_state = "mouse_[_color]_splat"
|
||||
src.icon_dead = "mouse_[mouse_color]_splat"
|
||||
src.icon_state = "mouse_[mouse_color]_splat"
|
||||
layer = MOB_LAYER
|
||||
if(client)
|
||||
client.time_died_as_mouse = world.time
|
||||
@@ -116,15 +116,15 @@
|
||||
*/
|
||||
|
||||
/mob/living/simple_animal/mouse/white
|
||||
_color = "white"
|
||||
mouse_color = "white"
|
||||
icon_state = "mouse_white"
|
||||
|
||||
/mob/living/simple_animal/mouse/gray
|
||||
_color = "gray"
|
||||
mouse_color = "gray"
|
||||
icon_state = "mouse_gray"
|
||||
|
||||
/mob/living/simple_animal/mouse/brown
|
||||
_color = "brown"
|
||||
mouse_color = "brown"
|
||||
icon_state = "mouse_brown"
|
||||
|
||||
//TOM IS ALIVE! SQUEEEEEEEE~K :)
|
||||
|
||||
+37
-16
@@ -469,23 +469,18 @@ var/list/slot_equipment_priority = list( \
|
||||
return
|
||||
|
||||
|
||||
/mob/proc/show_inv(mob/user as mob)
|
||||
/mob/proc/show_inv(mob/user)
|
||||
user.set_machine(src)
|
||||
var/dat = {"
|
||||
<B><HR><FONT size=3>[name]</FONT></B>
|
||||
<BR><HR>
|
||||
<BR><B>Head(Mask):</B> <A href='?src=\ref[src];item=mask'>[(wear_mask ? wear_mask : "Nothing")]</A>
|
||||
<BR><B>Left Hand:</B> <A href='?src=\ref[src];item=l_hand'>[(l_hand && !(l_hand.flags & ABSTRACT)) ? l_hand : "Nothing"]</A>
|
||||
<BR><B>Right Hand:</B> <A href='?src=\ref[src];item=r_hand'>[(r_hand && !(r_hand.flags & ABSTRACT)) ? r_hand : "Nothing"]</A>
|
||||
<BR><B>Back:</B> <A href='?src=\ref[src];item=back'>[(back && !(back.flags & ABSTRACT)) ? back : "Nothing"]</A> [((istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/weapon/tank) && !( internal )) ? text(" <A href='?src=\ref[];item=internal'>Set Internal</A>", src) : "")]
|
||||
<BR>[(internal ? text("<A href='?src=\ref[src];item=internal'>Remove Internal</A>") : "")]
|
||||
<BR><A href='?src=\ref[src];item=pockets'>Empty Pockets</A>
|
||||
<BR><A href='?src=\ref[user];refresh=1'>Refresh</A>
|
||||
<HR>
|
||||
<B><FONT size=3>[name]</FONT></B>
|
||||
<HR>
|
||||
<BR><B>Left Hand:</B> <A href='?src=\ref[src];item=[slot_l_hand]'> [(l_hand&&!(l_hand.flags&ABSTRACT)) ? l_hand : "Nothing"]</A>
|
||||
<BR><B>Right Hand:</B> <A href='?src=\ref[src];item=[slot_r_hand]'> [(r_hand&&!(r_hand.flags&ABSTRACT)) ? r_hand : "Nothing"]</A>
|
||||
<BR><A href='?src=\ref[user];mach_close=mob\ref[src]'>Close</A>
|
||||
<BR>"}
|
||||
user << browse(dat, text("window=mob[];size=325x500", name))
|
||||
"}
|
||||
user << browse(dat, "window=mob\ref[src];size=325x500")
|
||||
onclose(user, "mob\ref[src]")
|
||||
return
|
||||
|
||||
//mob verbs are faster than object verbs. See http://www.byond.com/forum/?post=1326139&page=2#comment8198716 for why this isn't atom/verb/examine()
|
||||
/mob/verb/examinate(atom/A as mob|obj|turf in view())
|
||||
@@ -786,14 +781,42 @@ var/list/slot_equipment_priority = list( \
|
||||
unset_machine()
|
||||
src << browse(null, t1)
|
||||
|
||||
if(href_list["refresh"])
|
||||
if(machine && in_range(src, usr))
|
||||
show_inv(machine)
|
||||
|
||||
if(!usr.stat && usr.canmove && !usr.restrained() && in_range(src, usr))
|
||||
if(href_list["item"])
|
||||
var/slot = text2num(href_list["item"])
|
||||
var/obj/item/what = get_item_by_slot(slot)
|
||||
|
||||
if(what)
|
||||
usr.stripPanelUnequip(what,src,slot)
|
||||
else
|
||||
usr.stripPanelEquip(what,src,slot)
|
||||
|
||||
if(usr.machine == src)
|
||||
if(Adjacent(usr))
|
||||
show_inv(usr)
|
||||
else
|
||||
usr << browse(null,"window=mob\ref[src]")
|
||||
|
||||
if(href_list["flavor_more"])
|
||||
usr << browse(text("<HTML><HEAD><TITLE>[]</TITLE></HEAD><BODY><TT>[]</TT></BODY></HTML>", name, replacetext(flavor_text, "\n", "<BR>")), text("window=[];size=500x200", name))
|
||||
onclose(usr, "[name]")
|
||||
if(href_list["flavor_change"])
|
||||
update_flavor_text()
|
||||
|
||||
return
|
||||
|
||||
// ..()
|
||||
// The src mob is trying to strip an item from someone
|
||||
// Defined in living.dm
|
||||
/mob/proc/stripPanelUnequip(obj/item/what, mob/who)
|
||||
return
|
||||
|
||||
// The src mob is trying to place an item on someone
|
||||
// Defined in living.dm
|
||||
/mob/proc/stripPanelEquip(obj/item/what, mob/who)
|
||||
return
|
||||
|
||||
|
||||
@@ -1272,8 +1295,6 @@ mob/proc/yank_out_object()
|
||||
NPC.key = key
|
||||
spawn(5)
|
||||
respawnable_list += usr
|
||||
else
|
||||
// message_admins("Failed to check type")
|
||||
else
|
||||
usr << "You are not dead or you have given up your right to be respawned!"
|
||||
return
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
if(S.victim == mob)
|
||||
return
|
||||
|
||||
if(mob.stat==2) return
|
||||
if(mob.stat==DEAD) return
|
||||
|
||||
// handle possible spirit movement
|
||||
if(istype(mob,/mob/spirit))
|
||||
@@ -237,6 +237,7 @@
|
||||
return 0
|
||||
|
||||
move_delay = world.time//set move delay
|
||||
mob.last_movement = world.time
|
||||
mob.last_move_intent = world.time + 10
|
||||
switch(mob.m_intent)
|
||||
if("run")
|
||||
@@ -289,10 +290,8 @@
|
||||
|
||||
else if(mob.confused)
|
||||
step(mob, pick(cardinal))
|
||||
mob.last_movement = world.time
|
||||
else
|
||||
. = ..()
|
||||
mob.last_movement=world.time
|
||||
|
||||
for (var/obj/item/weapon/grab/G in mob)
|
||||
if (G.state == GRAB_NECK)
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
switch(polltype)
|
||||
//Polls that have enumerated options
|
||||
if("OPTION")
|
||||
if(POLLTYPE_OPTION)
|
||||
var/DBQuery/voted_query = dbcon.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[usr.ckey]'")
|
||||
voted_query.Execute()
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
src << browse(output,"window=playerpoll;size=500x250")
|
||||
|
||||
//Polls with a text input
|
||||
if("TEXT")
|
||||
if(POLLTYPE_TEXT)
|
||||
var/DBQuery/voted_query = dbcon.NewQuery("SELECT replytext FROM [format_table_name("poll_textreply")] WHERE pollid = [pollid] AND ckey = '[usr.ckey]'")
|
||||
voted_query.Execute()
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
src << browse(output,"window=playerpoll;size=500x500")
|
||||
|
||||
//Polls with a text input
|
||||
if("NUMVAL")
|
||||
if(POLLTYPE_RATING)
|
||||
var/DBQuery/voted_query = dbcon.NewQuery("SELECT o.text, v.rating FROM [format_table_name("poll_option")] o, erro_poll_vote v WHERE o.pollid = [pollid] AND v.ckey = '[usr.ckey]' AND o.id = v.optionid")
|
||||
voted_query.Execute()
|
||||
|
||||
@@ -228,7 +228,7 @@
|
||||
output += "</form>"
|
||||
|
||||
src << browse(output,"window=playerpoll;size=500x500")
|
||||
if("MULTICHOICE")
|
||||
if(POLLTYPE_MULTI)
|
||||
var/DBQuery/voted_query = dbcon.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[usr.ckey]'")
|
||||
voted_query.Execute()
|
||||
|
||||
@@ -308,7 +308,7 @@
|
||||
var/multiplechoiceoptions = 0
|
||||
|
||||
while(select_query.NextRow())
|
||||
if(select_query.item[4] != "OPTION" && select_query.item[4] != "MULTICHOICE")
|
||||
if(select_query.item[4] != POLLTYPE_OPTION && select_query.item[4] != POLLTYPE_MULTI)
|
||||
return
|
||||
validpoll = 1
|
||||
if(select_query.item[5])
|
||||
@@ -377,7 +377,7 @@
|
||||
var/validpoll = 0
|
||||
|
||||
while(select_query.NextRow())
|
||||
if(select_query.item[4] != "TEXT")
|
||||
if(select_query.item[4] != POLLTYPE_TEXT)
|
||||
return
|
||||
validpoll = 1
|
||||
break
|
||||
@@ -435,7 +435,7 @@
|
||||
var/validpoll = 0
|
||||
|
||||
while(select_query.NextRow())
|
||||
if(select_query.item[4] != "NUMVAL")
|
||||
if(select_query.item[4] != POLLTYPE_RATING)
|
||||
return
|
||||
validpoll = 1
|
||||
break
|
||||
|
||||
@@ -278,10 +278,6 @@
|
||||
var/list/mobtypes = typesof(/mob/living/simple_animal)
|
||||
var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes
|
||||
|
||||
if(!safe_animal(mobpath))
|
||||
usr << "\red Sorry but this mob type is currently unavailable."
|
||||
return
|
||||
|
||||
if(notransform)
|
||||
return
|
||||
for(var/obj/item/W in src)
|
||||
@@ -313,10 +309,6 @@
|
||||
var/list/mobtypes = typesof(/mob/living/simple_animal)
|
||||
var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes
|
||||
|
||||
if(!safe_animal(mobpath))
|
||||
usr << "\red Sorry but this mob type is currently unavailable."
|
||||
return
|
||||
|
||||
var/mob/new_mob = new mobpath(src.loc)
|
||||
|
||||
new_mob.key = key
|
||||
@@ -326,72 +318,10 @@
|
||||
|
||||
qdel(src)
|
||||
|
||||
/* Certain mob types have problems and should not be allowed to be controlled by players.
|
||||
*
|
||||
* This proc is here to force coders to manually place their mob in this list, hopefully tested.
|
||||
* This also gives a place to explain -why- players shouldnt be turn into certain mobs and hopefully someone can fix them.
|
||||
*/
|
||||
/mob/proc/safe_animal(var/MP)
|
||||
|
||||
//Bad mobs! - Remember to add a comment explaining what's wrong with the mob
|
||||
if(!MP)
|
||||
return 0 //Sanity, this should never happen.
|
||||
|
||||
if(ispath(MP, /mob/living/simple_animal/hostile/spaceWorm))
|
||||
return 0 //Unfinished. Very buggy, they seem to just spawn additional space worms everywhere and eating your own tail results in new worms spawning.
|
||||
|
||||
if(ispath(MP, /mob/living/simple_animal/construct/behemoth))
|
||||
return 0 //I think this may have been an unfinished WiP or something. These constructs should really have their own class simple_animal/construct/subtype
|
||||
|
||||
if(ispath(MP, /mob/living/simple_animal/construct/armoured))
|
||||
return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype
|
||||
|
||||
if(ispath(MP, /mob/living/simple_animal/construct/wraith))
|
||||
return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype
|
||||
|
||||
if(ispath(MP, /mob/living/simple_animal/construct/builder))
|
||||
return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype
|
||||
|
||||
//Good mobs!
|
||||
if(ispath(MP, /mob/living/simple_animal/pet/cat))
|
||||
return 1
|
||||
if(ispath(MP, /mob/living/simple_animal/pet/corgi))
|
||||
return 1
|
||||
if(ispath(MP, /mob/living/simple_animal/crab))
|
||||
return 1
|
||||
if(ispath(MP, /mob/living/simple_animal/hostile/carp))
|
||||
return 1
|
||||
if(ispath(MP, /mob/living/simple_animal/hostile/mushroom))
|
||||
return 1
|
||||
if(ispath(MP, /mob/living/simple_animal/shade))
|
||||
return 1
|
||||
if(ispath(MP, /mob/living/simple_animal/tomato))
|
||||
return 1
|
||||
if(ispath(MP, /mob/living/simple_animal/mouse))
|
||||
return 1 //It is impossible to pull up the player panel for mice (Fixed! - Nodrak)
|
||||
if(ispath(MP, /mob/living/simple_animal/hostile/bear))
|
||||
return 1 //Bears will auto-attack mobs, even if they're player controlled (Fixed! - Nodrak)
|
||||
if(ispath(MP, /mob/living/simple_animal/parrot))
|
||||
return 1 //Parrots are no longer unfinished! -Nodrak
|
||||
if(ispath(MP, /mob/living/simple_animal/pony))
|
||||
return 1 // ZOMG PONIES WHEEE
|
||||
if(ispath(MP, /mob/living/simple_animal/pet/fox))
|
||||
return 1
|
||||
if(ispath(MP, /mob/living/simple_animal/chick))
|
||||
return 1
|
||||
if(ispath(MP, /mob/living/simple_animal/pet/pug))
|
||||
return 1
|
||||
if(ispath(MP, /mob/living/simple_animal/butterfly))
|
||||
return 1
|
||||
//Not in here? Must be untested!
|
||||
return 0
|
||||
|
||||
|
||||
/mob/proc/safe_respawn(var/MP)
|
||||
if(!MP)
|
||||
return 0 //Sanity, this should never happen.
|
||||
return 0
|
||||
|
||||
//Animals!
|
||||
if(ispath(MP, /mob/living/simple_animal/pet/cat))
|
||||
return 1
|
||||
if(ispath(MP, /mob/living/simple_animal/pet/corgi))
|
||||
@@ -415,15 +345,10 @@
|
||||
if(ispath(MP, /mob/living/simple_animal/butterfly))
|
||||
return 1
|
||||
|
||||
//Antag Creatures!
|
||||
if(ispath(MP, /mob/living/simple_animal/borer) && !jobban_isbanned(src, "alien") && !jobban_isbanned(src, "Syndicate"))
|
||||
return 1
|
||||
if(ispath(MP, /mob/living/simple_animal/hostile/statue) && !jobban_isbanned(src, "Syndicate"))
|
||||
return 1
|
||||
|
||||
//Friendly Creatures!
|
||||
|
||||
if(ispath(MP, /mob/living/simple_animal/diona) && !jobban_isbanned(src, "Dionaea"))
|
||||
return 1
|
||||
|
||||
//Not in here? Must be untested!
|
||||
return 0
|
||||
|
||||
@@ -129,6 +129,7 @@
|
||||
w_class = 3
|
||||
body_part = HEAD
|
||||
parent_organ = "chest"
|
||||
var/can_intake_reagents = 1
|
||||
|
||||
/obj/item/organ/external/diona/head/removed()
|
||||
if(owner)
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
send_asset_list(user.client, S.assets)
|
||||
|
||||
var/data
|
||||
if(!(user.say_understands(null, all_languages["Galactic Common"]) && !forceshow) || forcestars) //assuming all paper is written in common is better than hardcoded type checks
|
||||
if((!user.say_understands(null, all_languages["Galactic Common"]) && !forceshow) || forcestars) //assuming all paper is written in common is better than hardcoded type checks
|
||||
data = "<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[stars(info)][stamps]</BODY></HTML>"
|
||||
if(view)
|
||||
usr << browse(data, "window=[name]")
|
||||
@@ -418,10 +418,11 @@
|
||||
B.update_icon()
|
||||
|
||||
else if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon))
|
||||
if ( istype(P, /obj/item/weapon/pen/robopen) && P:mode == 2 )
|
||||
P:RenamePaper(user,src)
|
||||
var/obj/item/weapon/pen/robopen/RP = P
|
||||
if(istype(P, /obj/item/weapon/pen/robopen) && RP.mode == 2)
|
||||
RP.RenamePaper(user,src)
|
||||
else
|
||||
show_content(user, forceshow = 1, infolinks = 1)
|
||||
show_content(user, infolinks = 1)
|
||||
//openhelp(user)
|
||||
return
|
||||
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
var/colour = "black" //what colour the ink is!
|
||||
pressure_resistance = 2
|
||||
|
||||
/obj/item/weapon/pen/suicide_act(mob/user)
|
||||
viewers(user) << "<span class='suicide'>[user] starts scribbling numbers over \himself with the [src.name]! It looks like \he's trying to commit sudoku.</span>"
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/pen/blue
|
||||
name = "blue-ink pen"
|
||||
@@ -143,4 +146,4 @@
|
||||
item_state = "edagger"
|
||||
else
|
||||
icon_state = initial(icon_state) //looks like a normal pen when off.
|
||||
item_state = initial(item_state)
|
||||
item_state = initial(item_state)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
materials = list(MAT_METAL=60)
|
||||
_color = "cargo"
|
||||
item_color = "cargo"
|
||||
pressure_resistance = 2
|
||||
attack_verb = list("stamped")
|
||||
|
||||
@@ -20,67 +20,67 @@
|
||||
/obj/item/weapon/stamp/qm
|
||||
name = "Quartermaster's rubber stamp"
|
||||
icon_state = "stamp-qm"
|
||||
_color = "qm"
|
||||
item_color = "qm"
|
||||
|
||||
/obj/item/weapon/stamp/law
|
||||
name = "Law office's rubber stamp"
|
||||
icon_state = "stamp-law"
|
||||
_color = "cargo"
|
||||
item_color = "cargo"
|
||||
|
||||
/obj/item/weapon/stamp/captain
|
||||
name = "captain's rubber stamp"
|
||||
icon_state = "stamp-cap"
|
||||
_color = "captain"
|
||||
item_color = "captain"
|
||||
|
||||
/obj/item/weapon/stamp/hop
|
||||
name = "head of personnel's rubber stamp"
|
||||
icon_state = "stamp-hop"
|
||||
_color = "hop"
|
||||
item_color = "hop"
|
||||
|
||||
/obj/item/weapon/stamp/hos
|
||||
name = "head of security's rubber stamp"
|
||||
icon_state = "stamp-hos"
|
||||
_color = "hosred"
|
||||
item_color = "hosred"
|
||||
|
||||
/obj/item/weapon/stamp/ce
|
||||
name = "chief engineer's rubber stamp"
|
||||
icon_state = "stamp-ce"
|
||||
_color = "chief"
|
||||
item_color = "chief"
|
||||
|
||||
/obj/item/weapon/stamp/rd
|
||||
name = "research director's rubber stamp"
|
||||
icon_state = "stamp-rd"
|
||||
_color = "director"
|
||||
item_color = "director"
|
||||
|
||||
/obj/item/weapon/stamp/cmo
|
||||
name = "chief medical officer's rubber stamp"
|
||||
icon_state = "stamp-cmo"
|
||||
_color = "medical"
|
||||
item_color = "medical"
|
||||
|
||||
/obj/item/weapon/stamp/granted
|
||||
name = "\improper GRANTED rubber stamp"
|
||||
icon_state = "stamp-ok"
|
||||
_color = "qm"
|
||||
item_color = "qm"
|
||||
|
||||
/obj/item/weapon/stamp/denied
|
||||
name = "\improper DENIED rubber stamp"
|
||||
icon_state = "stamp-deny"
|
||||
_color = "redcoat"
|
||||
item_color = "redcoat"
|
||||
|
||||
/obj/item/weapon/stamp/clown
|
||||
name = "clown's rubber stamp"
|
||||
icon_state = "stamp-clown"
|
||||
_color = "clown"
|
||||
item_color = "clown"
|
||||
|
||||
/obj/item/weapon/stamp/centcom
|
||||
name = "Nanotrasen Representative's rubber stamp"
|
||||
icon_state = "stamp-cent"
|
||||
_color = "centcom"
|
||||
item_color = "centcom"
|
||||
|
||||
/obj/item/weapon/stamp/syndicate
|
||||
name = "suspicious rubber stamp"
|
||||
icon_state = "stamp-syndicate"
|
||||
_color = "syndicate"
|
||||
item_color = "syndicate"
|
||||
|
||||
// Syndicate stamp to forge documents.
|
||||
|
||||
@@ -105,4 +105,4 @@
|
||||
if(chosen_stamp)
|
||||
name = chosen_stamp.name
|
||||
icon_state = chosen_stamp.icon_state
|
||||
_color = chosen_stamp._color
|
||||
item_color = chosen_stamp.item_color
|
||||
@@ -1,101 +0,0 @@
|
||||
/*
|
||||
/tg/station13 /atom/movable Pool:
|
||||
---------------------------------
|
||||
By RemieRichards
|
||||
Creation/Deletion is laggy, so let's reduce reuse and recycle!
|
||||
Locked to /atom/movable and it's subtypes due to Loc being a const var on /atom
|
||||
but being read&write on /movable due to how they... move.
|
||||
Usage:
|
||||
To get a object, just called PoolOrNew(type, list of args to pass to New)
|
||||
To put a object back in the pool, call place in pool.
|
||||
This will call destroy on the object, set its loc to null,
|
||||
and reset all of its vars to their default
|
||||
You can override your object's destroy to return QDEL_HINT_PLACEINPOOL
|
||||
to ensure its always placed in this pool (this will only be acted on if qdel calls destroy, and destroy will not get called twice)
|
||||
*/
|
||||
|
||||
var/global/list/GlobalPool = list()
|
||||
|
||||
//You'll be using this proc 90% of the time.
|
||||
//It grabs a type from the pool if it can
|
||||
//And if it can't, it creates one
|
||||
//The pool is flexible and will expand to fit
|
||||
//The new created atom when it eventually
|
||||
//Goes into the pool
|
||||
|
||||
//Second argument can be a new location
|
||||
//Or a list of arguments
|
||||
//Either way it gets passed to new
|
||||
|
||||
/proc/PoolOrNew(var/get_type,var/second_arg)
|
||||
if(!get_type)
|
||||
return
|
||||
|
||||
var/atom/movable/AM
|
||||
AM = GetFromPool(get_type,second_arg)
|
||||
|
||||
if(!AM)
|
||||
if(ispath(get_type))
|
||||
if(islist(second_arg))
|
||||
AM = new get_type (arglist(second_arg))
|
||||
else
|
||||
AM = new get_type (second_arg)
|
||||
|
||||
if(AM)
|
||||
return AM
|
||||
|
||||
|
||||
|
||||
/proc/GetFromPool(var/get_type,var/second_arg)
|
||||
if(!get_type)
|
||||
return 0
|
||||
|
||||
if(isnull(GlobalPool[get_type]))
|
||||
return 0
|
||||
|
||||
if(length(GlobalPool[get_type]) == 0)
|
||||
return 0
|
||||
|
||||
var/atom/movable/AM = pick_n_take(GlobalPool[get_type])
|
||||
if(AM)
|
||||
AM.ResetVars()
|
||||
if(islist(second_arg))
|
||||
AM.loc = second_arg[1]
|
||||
AM.New(arglist(second_arg))
|
||||
else
|
||||
AM.loc = second_arg
|
||||
AM.New(second_arg)
|
||||
return AM
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
/proc/PlaceInPool(var/atom/movable/AM, destroy = 1)
|
||||
if(!istype(AM))
|
||||
return
|
||||
|
||||
if(AM in GlobalPool[AM.type])
|
||||
return
|
||||
|
||||
if(!GlobalPool[AM.type])
|
||||
GlobalPool[AM.type] = list()
|
||||
|
||||
GlobalPool[AM.type] |= AM
|
||||
|
||||
if (destroy)
|
||||
AM.Destroy()
|
||||
|
||||
AM.ResetVars()
|
||||
|
||||
|
||||
|
||||
/atom/movable/proc/ResetVars()
|
||||
var/list/excluded = list("animate_movement", "loc", "locs", "parent_type", "vars", "verbs", "type")
|
||||
|
||||
for(var/V in vars)
|
||||
if(V in excluded)
|
||||
continue
|
||||
|
||||
vars[V] = initial(vars[V])
|
||||
|
||||
vars["loc"] = null
|
||||
@@ -0,0 +1,114 @@
|
||||
|
||||
/*
|
||||
/tg/station13 /datum Pool:
|
||||
---------------------------------
|
||||
By RemieRichards
|
||||
|
||||
Creation/Deletion is laggy, so let's reduce reuse and recycle!
|
||||
|
||||
Usage:
|
||||
|
||||
To get a object, just call
|
||||
- PoolOrNew(type, arg) if you only want to pass one argument to New(), usually loc
|
||||
- PoolOrNew(type, list) if you want to pass multiple arguments to New()
|
||||
|
||||
To put a object back in the pool, call PlaceInPool(object)
|
||||
This will call destroy on the object, set its loc to null,
|
||||
and reset all of its vars to their default
|
||||
|
||||
You can override your object's destroy to return QDEL_HINT_PLACEINPOOL
|
||||
to ensure its always placed in this pool (this will only be acted on if qdel calls destroy, and destroy will not get called twice)
|
||||
|
||||
*/
|
||||
|
||||
var/global/list/GlobalPool = list()
|
||||
|
||||
//You'll be using this proc 90% of the time.
|
||||
//It grabs a type from the pool if it can
|
||||
//And if it can't, it creates one
|
||||
//The pool is flexible and will expand to fit
|
||||
//The new created atom when it eventually
|
||||
//Goes into the pool
|
||||
|
||||
//Second argument can be a single arg
|
||||
//Or a list of arguments
|
||||
//Either way it gets passed to new
|
||||
|
||||
/proc/PoolOrNew(get_type,second_arg)
|
||||
if(!get_type)
|
||||
return
|
||||
|
||||
. = GetFromPool(get_type,second_arg)
|
||||
|
||||
if(!.)
|
||||
if(ispath(get_type))
|
||||
if(islist(second_arg))
|
||||
. = new get_type (arglist(second_arg))
|
||||
else
|
||||
. = new get_type (second_arg)
|
||||
|
||||
|
||||
/proc/GetFromPool(get_type,second_arg)
|
||||
if(!get_type)
|
||||
return
|
||||
|
||||
if(isnull(GlobalPool[get_type]))
|
||||
return
|
||||
|
||||
if(length(GlobalPool[get_type]) == 0)
|
||||
return
|
||||
|
||||
var/datum/pooled = pop(GlobalPool[get_type])
|
||||
if(pooled)
|
||||
var/atom/movable/AM
|
||||
if(istype(pooled, /atom/movable))
|
||||
AM = pooled
|
||||
|
||||
if(islist(second_arg))
|
||||
if(AM)
|
||||
AM.loc = second_arg[1] //we need to do loc setting explicetly before even calling New() to replicate new()'s behavior
|
||||
pooled.New(arglist(second_arg))
|
||||
|
||||
else
|
||||
if(AM)
|
||||
AM.loc = second_arg
|
||||
pooled.New(second_arg)
|
||||
|
||||
return pooled
|
||||
|
||||
|
||||
/proc/PlaceInPool(datum/diver, destroy = 1)
|
||||
if(!istype(diver))
|
||||
return
|
||||
|
||||
if(diver in GlobalPool[diver.type])
|
||||
return
|
||||
|
||||
if(!GlobalPool[diver.type])
|
||||
GlobalPool[diver.type] = list()
|
||||
|
||||
GlobalPool[diver.type] |= diver
|
||||
|
||||
if (destroy)
|
||||
diver.Destroy()
|
||||
|
||||
diver.ResetVars()
|
||||
|
||||
|
||||
/datum/proc/ResetVars()
|
||||
var/list/excluded = list("animate_movement", "contents", "loc", "locs", "parent_type", "vars", "verbs", "type")
|
||||
|
||||
for(var/V in vars)
|
||||
if(V in excluded)
|
||||
continue
|
||||
|
||||
vars[V] = initial(vars[V])
|
||||
|
||||
/atom/movable/ResetVars()
|
||||
..()
|
||||
loc = null
|
||||
contents = initial(contents) //something is really wrong if this object still has stuff in it by this point
|
||||
|
||||
/image/ResetVars()
|
||||
..()
|
||||
loc = null
|
||||
@@ -160,6 +160,7 @@
|
||||
wires = null
|
||||
if(cell)
|
||||
qdel(cell) // qdel
|
||||
cell = null
|
||||
if(terminal)
|
||||
disconnect_terminal()
|
||||
return ..()
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
var/mob/living/M = loc
|
||||
if(M == T) return
|
||||
if(!istype(M)) return
|
||||
if(src != M.equipped())
|
||||
if(src != M.get_active_hand())
|
||||
stop_aim()
|
||||
return
|
||||
M.last_move_intent = world.time
|
||||
|
||||
@@ -191,7 +191,7 @@
|
||||
if(href_list["ejectBeaker"])
|
||||
if(beaker)
|
||||
var/obj/item/weapon/reagent_containers/glass/B = beaker
|
||||
B.loc = loc
|
||||
B.forceMove(loc)
|
||||
beaker = null
|
||||
overlays.Cut()
|
||||
add_fingerprint(usr)
|
||||
@@ -202,33 +202,35 @@
|
||||
return
|
||||
|
||||
if(broken_requirements.len && B.type == broken_requirements[1])
|
||||
broken_requirements -= broken_requirements[1]
|
||||
user << "<span class='notice'>You fix [src].</span>"
|
||||
if(istype(B,/obj/item/stack))
|
||||
var/obj/item/stack/S = B
|
||||
S.use(1)
|
||||
else
|
||||
user.drop_item()
|
||||
if(!user.drop_item())
|
||||
user << "<span class='warning'>\The [B] is stuck to you!</span>"
|
||||
return
|
||||
qdel(B)
|
||||
broken_requirements -= broken_requirements[1]
|
||||
user << "<span class='notice'>You fix [src].</span>"
|
||||
return
|
||||
|
||||
if(src.beaker)
|
||||
user << "Something is already loaded into the machine."
|
||||
user << "<span class='warning'>Something is already loaded into the machine.</span>"
|
||||
return
|
||||
|
||||
if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B, /obj/item/weapon/reagent_containers/food/drinks))
|
||||
src.beaker = B
|
||||
if(user.drop_item())
|
||||
B.forceMove(src)
|
||||
user << "You set [B] on the machine."
|
||||
nanomanager.update_uis(src) // update all UIs attached to src
|
||||
if(!icon_beaker)
|
||||
icon_beaker = image('icons/obj/chemical.dmi', src, "disp_beaker") //randomize beaker overlay position.
|
||||
icon_beaker.pixel_x = rand(-10,5)
|
||||
overlays += icon_beaker
|
||||
if(!user.drop_item())
|
||||
user << "<span class='warning'>\The [B] is stuck to you!</span>"
|
||||
return
|
||||
else
|
||||
user << "\The [B] is stuck to you!"
|
||||
B.forceMove(src)
|
||||
user << "<span class='notice'>You set [B] on the machine.</span>"
|
||||
nanomanager.update_uis(src) // update all UIs attached to src
|
||||
if(!icon_beaker)
|
||||
icon_beaker = image('icons/obj/chemical.dmi', src, "disp_beaker") //randomize beaker overlay position.
|
||||
icon_beaker.pixel_x = rand(-10,5)
|
||||
overlays += icon_beaker
|
||||
return
|
||||
|
||||
/obj/machinery/chem_dispenser/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob, params)
|
||||
..()
|
||||
@@ -358,16 +360,16 @@
|
||||
playsound(src, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if(anchored)
|
||||
anchored = 0
|
||||
user << "<span class='caution'>The [src] can now be moved.</span>"
|
||||
user << "<span class='caution'>\The [src] can now be moved.</span>"
|
||||
else if(!anchored)
|
||||
anchored = 1
|
||||
user << "<span class='caution'>The [src] is now secured.</span>"
|
||||
user << "<span class='caution'>\The [src] is now secured.</span>"
|
||||
|
||||
if(panel_open)
|
||||
if(istype(I, /obj/item/weapon/crowbar))
|
||||
if(beaker)
|
||||
var/obj/item/weapon/reagent_containers/glass/B = beaker
|
||||
B.loc = loc
|
||||
B.forceMove(loc)
|
||||
beaker = null
|
||||
default_deconstruction_crowbar(I)
|
||||
return 1
|
||||
@@ -427,25 +429,29 @@
|
||||
if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass))
|
||||
|
||||
if(src.beaker)
|
||||
user << "A beaker is already loaded into the machine."
|
||||
user << "<span class='warning'>A beaker is already loaded into the machine.</span>"
|
||||
return
|
||||
if(!user.drop_item())
|
||||
user << "<span class='warning'>\The [B] is stuck to you!</span>"
|
||||
return
|
||||
src.beaker = B
|
||||
user.drop_item()
|
||||
B.loc = src
|
||||
user << "You add the beaker to the machine!"
|
||||
B.forceMove(src)
|
||||
user << "<span class='notice'>You add the beaker to the machine!</span>"
|
||||
src.updateUsrDialog()
|
||||
icon_state = "mixer1"
|
||||
|
||||
else if(istype(B, /obj/item/weapon/storage/pill_bottle))
|
||||
|
||||
if(src.loaded_pill_bottle)
|
||||
user << "A pill bottle is already loaded into the machine."
|
||||
user << "<span class='warning'>A pill bottle is already loaded into the machine.</span>"
|
||||
return
|
||||
|
||||
if(!user.drop_item())
|
||||
user << "<span class='warning'>\The [B] is stuck to you!</span>"
|
||||
return
|
||||
src.loaded_pill_bottle = B
|
||||
user.drop_item()
|
||||
B.loc = src
|
||||
user << "You add the pill bottle into the dispenser slot!"
|
||||
B.forceMove(src)
|
||||
user << "<span class='notice'>You add the pill bottle into the dispenser slot!</span>"
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
@@ -459,7 +465,7 @@
|
||||
|
||||
if (href_list["ejectp"])
|
||||
if(loaded_pill_bottle)
|
||||
loaded_pill_bottle.loc = src.loc
|
||||
loaded_pill_bottle.forceMove(src.loc)
|
||||
loaded_pill_bottle = null
|
||||
else if(href_list["close"])
|
||||
usr << browse(null, "window=chem_master")
|
||||
@@ -579,7 +585,7 @@
|
||||
reagents.trans_to(P,amount_per_pill)
|
||||
if(src.loaded_pill_bottle)
|
||||
if(loaded_pill_bottle.contents.len < loaded_pill_bottle.storage_slots)
|
||||
P.loc = loaded_pill_bottle
|
||||
P.forceMove(loaded_pill_bottle)
|
||||
src.updateUsrDialog()
|
||||
else
|
||||
var/name = reject_bad_text(input(usr,"Name:","Name your bag!",reagents.get_master_reagent_name()))
|
||||
@@ -816,15 +822,17 @@
|
||||
if (beaker)
|
||||
return 1
|
||||
else
|
||||
if(!user.drop_item())
|
||||
user << "<span class='warning'>\The [O] is stuck to you!</span>"
|
||||
return
|
||||
src.beaker = O
|
||||
user.drop_item()
|
||||
O.loc = src
|
||||
O.forceMove(src)
|
||||
update_icon()
|
||||
src.updateUsrDialog()
|
||||
return 0
|
||||
|
||||
if(holdingitems && holdingitems.len >= limit)
|
||||
usr << "The machine cannot hold anymore items."
|
||||
usr << "<span class='warning'>The machine cannot hold anymore items.</span>"
|
||||
return 1
|
||||
|
||||
//Fill machine with the plantbag!
|
||||
@@ -832,25 +840,25 @@
|
||||
|
||||
for (var/obj/item/weapon/reagent_containers/food/snacks/grown/G in O.contents)
|
||||
O.contents -= G
|
||||
G.loc = src
|
||||
G.forceMove(src)
|
||||
holdingitems += G
|
||||
if(holdingitems && holdingitems.len >= limit) //Sanity checking so the blender doesn't overfill
|
||||
user << "You fill the All-In-One grinder to the brim."
|
||||
user << "<span class='notice>You fill the All-In-One grinder to the brim.</span>"
|
||||
break
|
||||
|
||||
if(!O.contents.len)
|
||||
user << "You empty the plant bag into the All-In-One grinder."
|
||||
user << "<span class='notice'>You empty the plant bag into the All-In-One grinder.</span>"
|
||||
|
||||
src.updateUsrDialog()
|
||||
return 0
|
||||
|
||||
|
||||
if (!is_type_in_list(O, blend_items) && !is_type_in_list(O, juice_items))
|
||||
user << "Cannot refine into a reagent."
|
||||
user << "<span class='warning'>Cannot refine into a reagent.</span>"
|
||||
return 1
|
||||
|
||||
user.unEquip(O)
|
||||
O.loc = src
|
||||
O.forceMove(src)
|
||||
holdingitems += O
|
||||
src.updateUsrDialog()
|
||||
return 0
|
||||
@@ -929,7 +937,7 @@
|
||||
return
|
||||
if (!beaker)
|
||||
return
|
||||
beaker.loc = src.loc
|
||||
beaker.forceMove(src.loc)
|
||||
beaker = null
|
||||
update_icon()
|
||||
|
||||
@@ -941,7 +949,7 @@
|
||||
return
|
||||
|
||||
for(var/obj/item/O in holdingitems)
|
||||
O.loc = src.loc
|
||||
O.forceMove(src.loc)
|
||||
holdingitems -= O
|
||||
holdingitems = list()
|
||||
|
||||
@@ -1146,4 +1154,4 @@
|
||||
var/amount = O.reagents.total_volume
|
||||
O.reagents.trans_to(beaker, amount)
|
||||
if(!O.reagents.total_volume)
|
||||
remove_object(O)
|
||||
remove_object(O)
|
||||
@@ -60,11 +60,11 @@
|
||||
/obj/item/weapon/gun/dartgun/examine(mob/user)
|
||||
if(..(user, 2))
|
||||
if(beakers.len)
|
||||
user << "\blue [src] contains:"
|
||||
user << "<span class='notice>[src] contains:</span>"
|
||||
for(var/obj/item/weapon/reagent_containers/glass/beaker/B in beakers)
|
||||
if(B.reagents && B.reagents.reagent_list.len)
|
||||
for(var/datum/reagent/R in B.reagents.reagent_list)
|
||||
user << "\blue [R.volume] units of [R.name]"
|
||||
user << "<span class='notice>[R.volume] units of [R.name]</span>"
|
||||
|
||||
/obj/item/weapon/gun/dartgun/attackby(obj/item/I as obj, mob/user as mob, params)
|
||||
if(istype(I, /obj/item/weapon/dart_cartridge))
|
||||
@@ -72,34 +72,36 @@
|
||||
var/obj/item/weapon/dart_cartridge/D = I
|
||||
|
||||
if(!D.darts)
|
||||
user << "\blue [D] is empty."
|
||||
user << "<span class='warning'>[D] is empty.</span>"
|
||||
return 0
|
||||
|
||||
if(cartridge)
|
||||
if(cartridge.darts <= 0)
|
||||
src.remove_cartridge()
|
||||
else
|
||||
user << "\blue There's already a cartridge in [src]."
|
||||
user << "<span class='warning'>There's already a cartridge in [src].</span>"
|
||||
return 0
|
||||
|
||||
user.drop_item()
|
||||
cartridge = D
|
||||
D.loc = src
|
||||
user << "\blue You slot [D] into [src]."
|
||||
D.forceMove(src)
|
||||
user << "<span class='notice'>You slot [D] into [src].</span>"
|
||||
update_icon()
|
||||
return
|
||||
if(istype(I, /obj/item/weapon/reagent_containers/glass))
|
||||
if(!istype(I, container_type))
|
||||
user << "\blue [I] doesn't seem to fit into [src]."
|
||||
user << "<span class='warning'>[I] doesn't seem to fit into [src].</span>"
|
||||
return
|
||||
if(beakers.len >= max_beakers)
|
||||
user << "\blue [src] already has [max_beakers] beakers in it - another one isn't going to fit!"
|
||||
user << "<span class='warning'>[src] already has [max_beakers] beakers in it - another one isn't going to fit!</span>"
|
||||
return
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B = I
|
||||
user.drop_item()
|
||||
B.loc = src
|
||||
if(!user.drop_item())
|
||||
user << "<span class='warning'>\The [B] is stuck to you!</span>"
|
||||
return
|
||||
B.forceMove(src)
|
||||
beakers += B
|
||||
user << "\blue You slot [B] into [src]."
|
||||
user << "<span class='notice>You slot [B] into [src].</span>"
|
||||
src.updateUsrDialog()
|
||||
|
||||
/obj/item/weapon/gun/dartgun/can_fire()
|
||||
@@ -113,9 +115,9 @@
|
||||
|
||||
/obj/item/weapon/gun/dartgun/proc/remove_cartridge()
|
||||
if(cartridge)
|
||||
usr << "\blue You pop the cartridge out of [src]."
|
||||
usr << "<span class='notice'>You pop the cartridge out of [src].</span>"
|
||||
var/obj/item/weapon/dart_cartridge/C = cartridge
|
||||
C.loc = get_turf(src)
|
||||
C.forceMove(get_turf(src))
|
||||
C.update_icon()
|
||||
cartridge = null
|
||||
src.update_icon()
|
||||
@@ -143,10 +145,10 @@
|
||||
var/obj/effect/syringe_gun_dummy/D = new/obj/effect/syringe_gun_dummy(get_turf(src))
|
||||
var/obj/item/weapon/reagent_containers/syringe/S = get_mixed_syringe()
|
||||
if(!S)
|
||||
user << "\red There are no darts in [src]!"
|
||||
user << "<span class='warning'>There are no darts in [src]!</span>"
|
||||
return
|
||||
if(!S.reagents)
|
||||
user << "\red There are no reagents available!"
|
||||
user << "<span class='warning'>There are no reagents available!</span>"
|
||||
return
|
||||
cartridge.darts--
|
||||
src.update_icon()
|
||||
@@ -269,10 +271,10 @@
|
||||
if(index <= beakers.len)
|
||||
if(beakers[index])
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B = beakers[index]
|
||||
usr << "You remove [B] from [src]."
|
||||
usr << "<span class='notice'>You remove [B] from [src].</span>"
|
||||
mixing -= B
|
||||
beakers -= B
|
||||
B.loc = get_turf(src)
|
||||
B.forceMove(get_turf(src))
|
||||
else if (href_list["eject_cart"])
|
||||
remove_cartridge()
|
||||
src.updateUsrDialog()
|
||||
@@ -282,7 +284,7 @@
|
||||
if(cartridge)
|
||||
spawn(0) fire_dart(target,user)
|
||||
else
|
||||
usr << "\red [src] is empty."
|
||||
usr << "<span class='warning'>[src] is empty.</span>"
|
||||
|
||||
|
||||
/obj/item/weapon/gun/dartgun/vox
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
/obj/machinery/chem_heater/proc/eject_beaker()
|
||||
if(beaker)
|
||||
beaker.loc = get_turf(src)
|
||||
beaker.forceMove(get_turf(src))
|
||||
beaker.reagents.handle_reactions()
|
||||
beaker = null
|
||||
icon_state = "mixer0b"
|
||||
@@ -79,7 +79,7 @@
|
||||
|
||||
if(user.drop_item())
|
||||
beaker = I
|
||||
I.loc = src
|
||||
I.forceMove(src)
|
||||
user << "<span class='notice'>You add the beaker to the machine!</span>"
|
||||
icon_state = "mixer1b"
|
||||
nanomanager.update_uis(src)
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
var/charge_cost = 50
|
||||
var/charge_tick = 0
|
||||
var/recharge_time = 5 //Time it takes for shots to recharge (in seconds)
|
||||
var/bypass_protection = 0 //If the hypospray can go through armor or thick material
|
||||
|
||||
var/list/datum/reagents/reagent_list = list()
|
||||
var/list/reagent_ids = list("salglu_solution", "epinephrine", "spaceacillin", "charcoal")
|
||||
@@ -30,6 +31,7 @@
|
||||
charge_cost = 20
|
||||
recharge_time = 2
|
||||
reagent_ids = list("syndicate_nanites", "potass_iodide", "ether")
|
||||
bypass_protection = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/New()
|
||||
..()
|
||||
@@ -74,7 +76,7 @@
|
||||
return
|
||||
if (!istype(M))
|
||||
return
|
||||
if (R.total_volume && M.can_inject(user,1))
|
||||
if (R.total_volume && M.can_inject(user, 1, penetrate_thick = bypass_protection))
|
||||
user << "<span class='notice'>You inject [M] with the injector.</span>"
|
||||
M << "<span class='notice'>You feel a tiny prick!</span>"
|
||||
|
||||
|
||||
@@ -69,11 +69,12 @@
|
||||
reagents.trans_to(M, gulp_size)
|
||||
|
||||
if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell
|
||||
var/mob/living/silicon/robot/bro = user
|
||||
bro.cell.use(30)
|
||||
var/mob/living/silicon/robot/borg = user
|
||||
borg.cell.use(30)
|
||||
var/refill = R.get_master_reagent_id()
|
||||
spawn(600)
|
||||
R.add_reagent(refill, fillevel)
|
||||
if(refill in drinks) // Only synthesize drinks
|
||||
spawn(600)
|
||||
R.add_reagent(refill, fillevel)
|
||||
|
||||
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
|
||||
return 1
|
||||
@@ -125,15 +126,16 @@
|
||||
user << "\blue You transfer [trans] units of the solution to [target]."
|
||||
|
||||
if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell
|
||||
var/mob/living/silicon/robot/bro = user
|
||||
var/chargeAmount = max(30,4*trans)
|
||||
bro.cell.use(chargeAmount)
|
||||
user << "Now synthesizing [trans] units of [refillName]..."
|
||||
if(refill in drinks) // Only synthesize drinks
|
||||
var/mob/living/silicon/robot/bro = user
|
||||
var/chargeAmount = max(30,4*trans)
|
||||
bro.cell.use(chargeAmount)
|
||||
user << "Now synthesizing [trans] units of [refillName]..."
|
||||
|
||||
|
||||
spawn(300)
|
||||
reagents.add_reagent(refill, trans)
|
||||
user << "Cyborg [src] refilled."
|
||||
spawn(300)
|
||||
reagents.add_reagent(refill, trans)
|
||||
user << "Cyborg [src] refilled."
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -567,41 +567,41 @@
|
||||
|
||||
usr << "\blue You color \the [src] [clr]"
|
||||
icon_state = "egg-[clr]"
|
||||
_color = clr
|
||||
item_color = clr
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/blue
|
||||
icon_state = "egg-blue"
|
||||
_color = "blue"
|
||||
item_color = "blue"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/green
|
||||
icon_state = "egg-green"
|
||||
_color = "green"
|
||||
item_color = "green"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/mime
|
||||
icon_state = "egg-mime"
|
||||
_color = "mime"
|
||||
item_color = "mime"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/orange
|
||||
icon_state = "egg-orange"
|
||||
_color = "orange"
|
||||
item_color = "orange"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/purple
|
||||
icon_state = "egg-purple"
|
||||
_color = "purple"
|
||||
item_color = "purple"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/rainbow
|
||||
icon_state = "egg-rainbow"
|
||||
_color = "rainbow"
|
||||
item_color = "rainbow"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/red
|
||||
icon_state = "egg-red"
|
||||
_color = "red"
|
||||
item_color = "red"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/yellow
|
||||
icon_state = "egg-yellow"
|
||||
_color = "yellow"
|
||||
item_color = "yellow"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/friedegg
|
||||
name = "Fried egg"
|
||||
|
||||
@@ -14,11 +14,10 @@
|
||||
icon_state = "bottle16"
|
||||
reagent = "epinephrine"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("epinephrine", 60)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/robot/epinephrine/New()
|
||||
..()
|
||||
reagents.add_reagent("epinephrine", 60)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/robot/charcoal
|
||||
name = "internal charcoal bottle"
|
||||
@@ -27,7 +26,7 @@
|
||||
icon_state = "bottle17"
|
||||
reagent = "charcoal"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("charcoal", 60)
|
||||
return
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/robot/charcoal/New()
|
||||
..()
|
||||
reagents.add_reagent("charcoal", 60)
|
||||
return
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "train"
|
||||
dir = 4
|
||||
|
||||
move_delay = 1
|
||||
move_delay = 2
|
||||
|
||||
health = 100
|
||||
maxhealth = 100
|
||||
|
||||
@@ -13,14 +13,7 @@
|
||||
|
||||
var/car_limit = 3 //how many cars an engine can pull before performance degrades
|
||||
active_engines = 1
|
||||
var/obj/item/weapon/key/ambulance_train/key
|
||||
|
||||
/obj/item/weapon/key/ambulance_train
|
||||
name = "ambulance key"
|
||||
desc = "A keyring with a small steel key, and tag with a red cross on it."
|
||||
icon = 'icons/obj/vehicles.dmi'
|
||||
icon_state = "keydoc"
|
||||
w_class = 1
|
||||
var/obj/item/key/ambulance/key
|
||||
|
||||
/obj/vehicle/train/ambulance/trolley
|
||||
name = "ambulance train trolley"
|
||||
@@ -56,7 +49,7 @@
|
||||
..()
|
||||
|
||||
/obj/vehicle/train/ambulance/engine/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/key/ambulance_train))
|
||||
if(istype(W, /obj/item/key/ambulance))
|
||||
if(!key)
|
||||
user.drop_item()
|
||||
key = W
|
||||
@@ -174,7 +167,6 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/vehicle/train/ambulance/engine/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
user << "The power light is [on ? "on" : "off"].\nThere are[key ? "" : " no"] keys in the ignition."
|
||||
@@ -287,5 +279,5 @@
|
||||
else
|
||||
move_delay = max(0, (-car_limit * active_engines) + train_length - active_engines) //limits base overweight so you cant overspeed trains
|
||||
move_delay *= (1 / max(1, active_engines)) * 2 //overweight penalty (scaled by the number of engines)
|
||||
move_delay += config.run_speed //base reference speed
|
||||
move_delay += 1+config.run_speed //base reference speed
|
||||
move_delay *= 1.05
|
||||
|
||||
@@ -18,9 +18,12 @@
|
||||
user << "\The [src] is already loaded."
|
||||
return
|
||||
|
||||
if(!user.drop_item())
|
||||
user << "<span class='warning'>\The [O] is stuck to you!</span>"
|
||||
return
|
||||
|
||||
sample = O
|
||||
user.drop_item()
|
||||
O.loc = src
|
||||
O.forceMove(src)
|
||||
|
||||
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
|
||||
nanomanager.update_uis(src)
|
||||
@@ -140,7 +143,7 @@
|
||||
|
||||
if("sample")
|
||||
if(sample)
|
||||
sample.loc = src.loc
|
||||
sample.forceMove(src.loc)
|
||||
sample = null
|
||||
return 1
|
||||
|
||||
@@ -210,4 +213,4 @@
|
||||
<u>Additional Notes:</u> <field>
|
||||
"}
|
||||
|
||||
state("The nearby computer prints out a pathology report.")
|
||||
state("The nearby computer prints out a pathology report.")
|
||||
@@ -11,14 +11,13 @@
|
||||
/obj/machinery/computer/curer/attackby(var/obj/I as obj, var/mob/user as mob, params)
|
||||
if(istype(I,/obj/item/weapon/reagent_containers))
|
||||
var/mob/living/carbon/C = user
|
||||
if(!container)
|
||||
if(!container && C.drop_item())
|
||||
container = I
|
||||
C.drop_item()
|
||||
I.loc = src
|
||||
I.forceMove(src)
|
||||
return
|
||||
if(istype(I,/obj/item/weapon/virusdish))
|
||||
if(virusing)
|
||||
user << "<b>The pathogen materializer is still recharging.."
|
||||
user << "<b>The pathogen materializer is still recharging..</b>"
|
||||
return
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/product = new(src.loc)
|
||||
|
||||
@@ -88,7 +87,7 @@
|
||||
if (href_list["antibody"])
|
||||
curing = 10
|
||||
else if(href_list["eject"])
|
||||
container.loc = src.loc
|
||||
container.forceMove(src.loc)
|
||||
container = null
|
||||
|
||||
src.add_fingerprint(usr)
|
||||
@@ -105,4 +104,4 @@
|
||||
data["antibodies"] = B.data["antibodies"]
|
||||
product.reagents.add_reagent("antibodies",30,data)
|
||||
|
||||
state("\The [src.name] buzzes", "blue")
|
||||
state("\The [src.name] buzzes", "blue")
|
||||
@@ -18,12 +18,15 @@
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/syringe))
|
||||
|
||||
if(beaker)
|
||||
user << "\The [src] is already loaded."
|
||||
user << "<span class='warning'>\The [src] is already loaded.</span>"
|
||||
return
|
||||
|
||||
if(!user.drop_item())
|
||||
user << "<span class='warning'>\The [O] is stuck to you!</span>"
|
||||
return
|
||||
|
||||
beaker = O
|
||||
user.drop_item()
|
||||
O.loc = src
|
||||
O.forceMove(src)
|
||||
|
||||
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
|
||||
nanomanager.update_uis(src)
|
||||
@@ -37,9 +40,11 @@
|
||||
user << "The dish tray is aleady full!"
|
||||
return
|
||||
|
||||
if(!user.drop_item())
|
||||
user << "<span class='warning'>\The [O] is stuck to you!</span>"
|
||||
return
|
||||
dish = O
|
||||
user.drop_item()
|
||||
O.loc = src
|
||||
O.forceMove(src)
|
||||
|
||||
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
|
||||
nanomanager.update_uis(src)
|
||||
@@ -152,7 +157,7 @@
|
||||
|
||||
if (href_list["ejectchem"])
|
||||
if(beaker)
|
||||
beaker.loc = src.loc
|
||||
beaker.forceMove(src.loc)
|
||||
beaker = null
|
||||
return 1
|
||||
|
||||
@@ -164,7 +169,7 @@
|
||||
|
||||
if (href_list["ejectdish"])
|
||||
if(dish)
|
||||
dish.loc = src.loc
|
||||
dish.forceMove(src.loc)
|
||||
dish = null
|
||||
return 1
|
||||
|
||||
@@ -200,4 +205,4 @@
|
||||
ping("\The [src] pings, \"Injection complete.\"")
|
||||
return 1
|
||||
|
||||
return 0
|
||||
return 0
|
||||
Reference in New Issue
Block a user