Merge remote-tracking branch 'upstream/master' into third_times_the_charm_questionmark

Conflicts:
	code/game/objects/items.dm
This commit is contained in:
Tigercat2000
2015-10-08 11:16:30 -07:00
180 changed files with 3562 additions and 5061 deletions
+5 -4
View File
@@ -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> | "
+64 -27
View File
@@ -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
+1 -1
View File
@@ -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
+17 -20
View File
@@ -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)
+58 -58
View File
@@ -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")
+23 -23
View File
@@ -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>"
+23 -23
View File
@@ -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"
+8 -8
View File
@@ -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
+25 -17
View File
@@ -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
+16 -16
View File
@@ -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"
+18 -18
View File
@@ -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)
+6 -6
View File
@@ -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"
+10 -10
View File
@@ -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',
+5 -5
View File
@@ -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
+13 -13
View File
@@ -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
+8 -8
View File
@@ -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()
+4 -4
View File
@@ -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.
+27 -27
View File
@@ -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
+24 -24
View File
@@ -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"
+21 -21
View File
@@ -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 -14
View File
@@ -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
+94 -94
View File
@@ -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"
+14 -14
View File
@@ -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
+5 -5
View File
@@ -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"
+2 -2
View File
@@ -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
+9 -9
View File
@@ -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
+2 -2
View File
@@ -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]
-5
View File
@@ -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=""
+6 -4
View File
@@ -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
View File
@@ -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)
+66 -17
View File
@@ -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 = ""
+166 -132
View File
@@ -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>&nbsp;</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 += "&nbsp;<A href='?src=\ref[src];internal=[slot_back]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
dat += "</td></tr><tr><td>&nbsp;</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>&nbsp;</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>&nbsp;&#8627;<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 += "&nbsp;<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>&nbsp;&#8627;<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>&nbsp;&#8627;<B>Pockets:</B></font></td></tr>"
dat += "<tr><td><font color=grey>&nbsp;&#8627;<B>ID:</B></font></td></tr>"
dat += "<tr><td><font color=grey>&nbsp;&#8627;<B>Belt:</B></font></td></tr>"
dat += "<tr><td><font color=grey>&nbsp;&#8627;<B>Suit Sensors:</B></font></td></tr>"
dat += "<tr><td><font color=grey>&nbsp;&#8627;<B>PDA:</B></font></td></tr>"
else
dat += "<tr><td>&nbsp;&#8627;<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 += "&nbsp;<A href='?src=\ref[src];internal=[slot_belt]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
dat += "</td></tr>"
dat += "<tr><td>&nbsp;&#8627;<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 += "&nbsp;<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>&nbsp;&#8627;<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>&nbsp;&#8627;<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>&nbsp;&#8627;<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>&nbsp;&#8627;<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
+248 -567
View File
@@ -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
+1 -1
View File
@@ -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"
+34
View File
@@ -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"
+24 -13
View File
@@ -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
View File
@@ -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
+2 -3
View File
@@ -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)
+7 -7
View File
@@ -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
+2 -77
View File
@@ -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
+1
View File
@@ -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)
+5 -4
View File
@@ -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
+4 -1
View File
@@ -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)
+15 -15
View File
@@ -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
-101
View File
@@ -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
+114
View File
@@ -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
+1
View File
@@ -160,6 +160,7 @@
wires = null
if(cell)
qdel(cell) // qdel
cell = null
if(terminal)
disconnect_terminal()
return ..()
+1 -1
View File
@@ -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
+47 -39
View File
@@ -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)
+20 -18
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -2,7 +2,7 @@
name = "train"
dir = 4
move_delay = 1
move_delay = 2
health = 100
maxhealth = 100
+3 -11
View File
@@ -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
+7 -4
View File
@@ -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.")
+5 -6
View File
@@ -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")
+13 -8
View File
@@ -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