mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 16:18:01 +01:00
Merge branch 'master' of https://github.com/tgstation/tgstation into alchemy_pt_1
# Conflicts: # code/game/objects/items/weapons/storage/bags.dm # code/modules/mining/lavaland/ash_flora.dm
This commit is contained in:
@@ -34,7 +34,7 @@ var/global/BSACooldown = 0
|
||||
body += " played by <b>[M.client]</b> "
|
||||
body += "\[<A href='?_src_=holder;editrights=rank;ckey=[M.ckey]'>[M.client.holder ? M.client.holder.rank : "Player"]</A>\]"
|
||||
|
||||
if(istype(M, /mob/new_player))
|
||||
if(isnewplayer(M))
|
||||
body += " <B>Hasn't Entered Game</B> "
|
||||
else
|
||||
body += " \[<A href='?_src_=holder;revive=\ref[M]'>Heal</A>\] "
|
||||
@@ -91,7 +91,7 @@ var/global/BSACooldown = 0
|
||||
body += "<A href='?_src_=holder;subtlemessage=\ref[M]'>Subtle message</A>"
|
||||
|
||||
if (M.client)
|
||||
if(!istype(M, /mob/new_player))
|
||||
if(!isnewplayer(M))
|
||||
body += "<br><br>"
|
||||
body += "<b>Transformation:</b>"
|
||||
body += "<br>"
|
||||
@@ -688,7 +688,7 @@ var/global/BSACooldown = 0
|
||||
ai_number++
|
||||
if(isAI(S))
|
||||
usr << "<b>AI [key_name(S, usr)]'s laws:</b>"
|
||||
else if(isrobot(S))
|
||||
else if(iscyborg(S))
|
||||
var/mob/living/silicon/robot/R = S
|
||||
usr << "<b>CYBORG [key_name(S, usr)] [R.connected_ai?"(Slaved to: [R.connected_ai])":"(Independant)"]: laws:</b>"
|
||||
else if (ispAI(S))
|
||||
@@ -773,8 +773,8 @@ var/global/BSACooldown = 0
|
||||
/proc/kick_clients_in_lobby(message, kick_only_afk = 0)
|
||||
var/list/kicked_client_names = list()
|
||||
for(var/client/C in clients)
|
||||
if(istype(C.mob, /mob/new_player))
|
||||
if(kick_only_afk && !C.is_afk()) //Ignore clients who are not afk
|
||||
if(isnewplayer(C.mob))
|
||||
if(kick_only_afk && !C.is_afk()) //Ignore clients who are not afk
|
||||
continue
|
||||
if(message)
|
||||
C << message
|
||||
|
||||
@@ -122,7 +122,8 @@ var/list/admin_verbs_server = list(
|
||||
/client/proc/forcerandomrotate,
|
||||
/client/proc/adminchangemap,
|
||||
#endif
|
||||
/client/proc/panicbunker
|
||||
/client/proc/panicbunker,
|
||||
/client/proc/toggle_hub
|
||||
|
||||
)
|
||||
var/list/admin_verbs_debug = list(
|
||||
@@ -358,7 +359,7 @@ var/list/admin_verbs_hideable = list(
|
||||
set name = "Aghost"
|
||||
if(!holder)
|
||||
return
|
||||
if(istype(mob,/mob/dead/observer))
|
||||
if(isobserver(mob))
|
||||
//re-enter
|
||||
var/mob/dead/observer/ghost = mob
|
||||
if(!ghost.mind || !ghost.mind.current) //won't do anything if there is no body
|
||||
@@ -369,7 +370,7 @@ var/list/admin_verbs_hideable = list(
|
||||
ghost.can_reenter_corpse = 1 //force re-entering even when otherwise not possible
|
||||
ghost.reenter_corpse()
|
||||
feedback_add_details("admin_verb","P") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
else if(istype(mob,/mob/new_player))
|
||||
else if(isnewplayer(mob))
|
||||
src << "<font color='red'>Error: Aghost: Can't admin-ghost whilst in the lobby. Join or Observe first.</font>"
|
||||
else
|
||||
//ghostize
|
||||
|
||||
@@ -53,9 +53,9 @@
|
||||
if (query.NextRow())
|
||||
res.cache = TRUE
|
||||
res.cachedate = query.item[1]
|
||||
res.intel = query.item[2]
|
||||
res.cacheminutesago = query.item[3]
|
||||
res.cacherealtime = world.realtime - (query.item[3]*10*60)
|
||||
res.intel = text2num(query.item[2])
|
||||
res.cacheminutesago = text2num(query.item[3])
|
||||
res.cacherealtime = world.realtime - (text2num(query.item[3])*10*60)
|
||||
SSipintel.cache[ip] = res
|
||||
return
|
||||
res.intel = ip_intel_query(ip)
|
||||
|
||||
@@ -244,7 +244,7 @@
|
||||
M_job = "AI"
|
||||
else if(ispAI(M))
|
||||
M_job = "pAI"
|
||||
else if(isrobot(M))
|
||||
else if(iscyborg(M))
|
||||
M_job = "Cyborg"
|
||||
else
|
||||
M_job = "Silicon-based"
|
||||
@@ -260,7 +260,7 @@
|
||||
else
|
||||
M_job = "Living"
|
||||
|
||||
else if(istype(M,/mob/new_player))
|
||||
else if(isnewplayer(M))
|
||||
M_job = "New player"
|
||||
|
||||
else if(isobserver(M))
|
||||
@@ -356,11 +356,11 @@
|
||||
for(var/obj/item/weapon/disk/nuclear/N in poi_list)
|
||||
dat += "<tr><td>[N.name], "
|
||||
var/atom/disk_loc = N.loc
|
||||
while(!istype(disk_loc, /turf))
|
||||
if(istype(disk_loc, /mob))
|
||||
while(!isturf(disk_loc))
|
||||
if(ismob(disk_loc))
|
||||
var/mob/M = disk_loc
|
||||
dat += "carried by <a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a> "
|
||||
if(istype(disk_loc, /obj))
|
||||
if(isobj(disk_loc))
|
||||
var/obj/O = disk_loc
|
||||
dat += "in \a [O.name] "
|
||||
disk_loc = disk_loc.loc
|
||||
|
||||
@@ -389,7 +389,7 @@
|
||||
feedback_add_details("admin_secrets_fun_used","BO")
|
||||
message_admins("[key_name_admin(usr)] broke all lights")
|
||||
for(var/obj/machinery/light/L in machines)
|
||||
L.broken()
|
||||
L.break_light_tube()
|
||||
|
||||
if("anime")
|
||||
if(!check_rights(R_FUN))
|
||||
|
||||
@@ -1339,7 +1339,7 @@
|
||||
if(!ismob(M))
|
||||
usr << "This can only be used on instances of type /mob."
|
||||
return
|
||||
if(istype(M, /mob/living/silicon/ai))
|
||||
if(isAI(M))
|
||||
usr << "This cannot be used on instances of type /mob/living/silicon/ai."
|
||||
return
|
||||
|
||||
@@ -1387,7 +1387,7 @@
|
||||
if(!ismob(M))
|
||||
usr << "This can only be used on instances of type /mob."
|
||||
return
|
||||
if(istype(M, /mob/living/silicon/ai))
|
||||
if(isAI(M))
|
||||
usr << "This cannot be used on instances of type /mob/living/silicon/ai."
|
||||
return
|
||||
|
||||
@@ -1417,7 +1417,7 @@
|
||||
if(!ismob(M))
|
||||
usr << "This can only be used on instances of type /mob."
|
||||
return
|
||||
if(istype(M, /mob/living/silicon/ai))
|
||||
if(isAI(M))
|
||||
usr << "This cannot be used on instances of type /mob/living/silicon/ai."
|
||||
return
|
||||
|
||||
@@ -1447,7 +1447,7 @@
|
||||
if(!ismob(M))
|
||||
usr << "This can only be used on instances of type /mob."
|
||||
return
|
||||
if(istype(M, /mob/living/silicon/ai))
|
||||
if(isAI(M))
|
||||
usr << "This cannot be used on instances of type /mob/living/silicon/ai."
|
||||
return
|
||||
|
||||
@@ -1470,7 +1470,7 @@
|
||||
if(!ismob(M))
|
||||
usr << "This can only be used on instances of type /mob."
|
||||
return
|
||||
if(istype(M, /mob/living/silicon/ai))
|
||||
if(isAI(M))
|
||||
usr << "This cannot be used on instances of type /mob/living/silicon/ai."
|
||||
return
|
||||
|
||||
@@ -1481,7 +1481,7 @@
|
||||
I.layer = initial(I.layer)
|
||||
I.dropped(M)
|
||||
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/observer = M
|
||||
observer.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(observer), slot_w_uniform)
|
||||
observer.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(observer), slot_shoes)
|
||||
@@ -1569,7 +1569,7 @@
|
||||
return
|
||||
|
||||
var/mob/M = locate(href_list["makeanimal"])
|
||||
if(istype(M, /mob/new_player))
|
||||
if(isnewplayer(M))
|
||||
usr << "This cannot be used on instances of type /mob/new_player."
|
||||
return
|
||||
|
||||
@@ -1929,7 +1929,7 @@
|
||||
|
||||
switch(where)
|
||||
if("inhand")
|
||||
if (!iscarbon(usr) && !isrobot(usr))
|
||||
if (!iscarbon(usr) && !iscyborg(usr))
|
||||
usr << "Can only spawn in hand when you're a carbon mob or cyborg."
|
||||
where = "onfloor"
|
||||
target = usr
|
||||
@@ -1972,7 +1972,7 @@
|
||||
var/mob/living/L = usr
|
||||
var/obj/item/I = O
|
||||
L.put_in_hands(I)
|
||||
if(isrobot(L))
|
||||
if(iscyborg(L))
|
||||
var/mob/living/silicon/robot/R = L
|
||||
if(R.module)
|
||||
R.module.add_module(I)
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
vals += v
|
||||
vals[v] = SDQL_expression(d, set_list[v])
|
||||
|
||||
if(istype(d, /turf))
|
||||
if(isturf(d))
|
||||
for(var/v in vals)
|
||||
if(v == "x" || v == "y" || v == "z")
|
||||
continue
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
var/list/client/targets[0]
|
||||
for(var/client/T)
|
||||
if(T.mob)
|
||||
if(istype(T.mob, /mob/new_player))
|
||||
if(isnewplayer(T.mob))
|
||||
targets["(New Player) - [T]"] = T
|
||||
else if(istype(T.mob, /mob/dead/observer))
|
||||
else if(isobserver(T.mob))
|
||||
targets["[T.mob.name](Ghost) - [T]"] = T
|
||||
else
|
||||
targets["[T.mob.real_name](as [T.mob.name]) - [T]"] = T
|
||||
|
||||
@@ -242,34 +242,34 @@
|
||||
. = 1
|
||||
switch(mode)
|
||||
if(BASIC_BUILDMODE)
|
||||
if(istype(object,/turf) && left_click && !alt_click && !ctrl_click)
|
||||
if(isturf(object) && left_click && !alt_click && !ctrl_click)
|
||||
var/turf/T = object
|
||||
if(istype(object,/turf/open/space))
|
||||
if(isspaceturf(object))
|
||||
T.ChangeTurf(/turf/open/floor/plasteel)
|
||||
else if(istype(object,/turf/open/floor))
|
||||
else if(isfloorturf(object))
|
||||
T.ChangeTurf(/turf/closed/wall)
|
||||
else if(istype(object,/turf/closed/wall))
|
||||
else if(iswallturf(object))
|
||||
T.ChangeTurf(/turf/closed/wall/r_wall)
|
||||
log_admin("Build Mode: [key_name(user)] built [T] at ([T.x],[T.y],[T.z])")
|
||||
return
|
||||
else if(right_click)
|
||||
log_admin("Build Mode: [key_name(user)] deleted [object] at ([object.x],[object.y],[object.z])")
|
||||
if(istype(object,/turf/closed/wall))
|
||||
if(iswallturf(object))
|
||||
var/turf/T = object
|
||||
T.ChangeTurf(/turf/open/floor/plasteel)
|
||||
else if(istype(object,/turf/open/floor))
|
||||
else if(isfloorturf(object))
|
||||
var/turf/T = object
|
||||
T.ChangeTurf(/turf/open/space)
|
||||
else if(istype(object,/turf/closed/wall/r_wall))
|
||||
var/turf/T = object
|
||||
T.ChangeTurf(/turf/closed/wall)
|
||||
else if(istype(object,/obj))
|
||||
else if(isobj(object))
|
||||
qdel(object)
|
||||
return
|
||||
else if(istype(object,/turf) && alt_click && left_click)
|
||||
else if(isturf(object) && alt_click && left_click)
|
||||
log_admin("Build Mode: [key_name(user)] built an airlock at ([object.x],[object.y],[object.z])")
|
||||
new/obj/machinery/door/airlock(get_turf(object))
|
||||
else if(istype(object,/turf) && ctrl_click && left_click)
|
||||
else if(isturf(object) && ctrl_click && left_click)
|
||||
switch(build_dir)
|
||||
if(NORTH)
|
||||
var/obj/structure/window/reinforced/WIN = new/obj/structure/window/reinforced(get_turf(object))
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
var/rendered = "<span class='game deadsay'><span class='prefix'>DEAD:</span> <span class='name'>ADMIN([src.holder.fakekey ? pick(nicknames) : src.key])</span> says, <span class='message'>\"[msg]\"</span></span>"
|
||||
|
||||
for (var/mob/M in player_list)
|
||||
if (istype(M, /mob/new_player))
|
||||
if(isnewplayer(M))
|
||||
continue
|
||||
if (M.stat == DEAD || (M.client && M.client.holder && (M.client.prefs.chat_toggles & CHAT_DEAD))) //admins can toggle deadchat on and off. This is a proc in admin.dm and is only give to Administrators and above
|
||||
M.show_message(rendered, 2)
|
||||
|
||||
@@ -220,7 +220,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
return
|
||||
var/turf/T = mob.loc
|
||||
|
||||
if (!( istype(T, /turf) ))
|
||||
if(!isturf(T))
|
||||
return
|
||||
|
||||
var/datum/gas_mixture/env = T.return_air()
|
||||
@@ -241,7 +241,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
if(!ticker || !ticker.mode)
|
||||
alert("Wait until the game starts")
|
||||
return
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
if(ishuman(M))
|
||||
log_admin("[key_name(src)] has robotized [M.key].")
|
||||
var/mob/living/carbon/human/H = M
|
||||
spawn(0)
|
||||
@@ -257,7 +257,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
if(!ticker || !ticker.mode)
|
||||
alert("Wait until the game starts")
|
||||
return
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
if(ishuman(M))
|
||||
log_admin("[key_name(src)] has blobized [M.key].")
|
||||
var/mob/living/carbon/human/H = M
|
||||
spawn(0)
|
||||
@@ -280,7 +280,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
alert("That mob doesn't seem to exist, close the panel and try again.")
|
||||
return
|
||||
|
||||
if(istype(M, /mob/new_player))
|
||||
if(isnewplayer(M))
|
||||
alert("The mob must not be a new_player.")
|
||||
return
|
||||
|
||||
@@ -301,7 +301,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
var/mob/choice = input("Choose a player to play the pAI", "Spawn pAI") in available
|
||||
if(!choice)
|
||||
return 0
|
||||
if(!istype(choice, /mob/dead/observer))
|
||||
if(!isobserver(choice))
|
||||
var/confirm = input("[choice.key] isn't ghosting right now. Are you sure you want to yank him out of them out of their body and place them in this pAI?", "Spawn pAI Confirmation", "No") in list("Yes", "No")
|
||||
if(confirm != "Yes")
|
||||
return 0
|
||||
@@ -427,7 +427,7 @@ var/global/list/g_fancy_list_of_types = null
|
||||
if(!ticker || !ticker.mode)
|
||||
alert("Wait until the game starts")
|
||||
return
|
||||
if (istype(M, /mob/living/carbon/human))
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/worn = H.wear_id
|
||||
var/obj/item/weapon/card/id/id = null
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
var/datum/gas_mixture/GM = target.return_air()
|
||||
var/list/GM_gases
|
||||
var/burning = 0
|
||||
if(istype(target, /turf/open))
|
||||
if(isopenturf(target))
|
||||
var/turf/open/T = target
|
||||
if(T.active_hotspot)
|
||||
burning = 1
|
||||
|
||||
@@ -141,38 +141,38 @@
|
||||
if("restore to default")
|
||||
O.vars[variable] = initial(O.vars[variable])
|
||||
if(method)
|
||||
if(istype(O, /mob))
|
||||
if(ismob(O))
|
||||
for(var/mob/M in mob_list)
|
||||
if ( istype(M , O.type) )
|
||||
M.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /obj))
|
||||
else if(isobj(O))
|
||||
for(var/obj/A in world)
|
||||
if ( istype(A , O.type) )
|
||||
A.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /turf))
|
||||
else if(isturf(O))
|
||||
for(var/turf/A in world)
|
||||
if ( istype(A , O.type) )
|
||||
A.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else
|
||||
if(istype(O, /mob))
|
||||
if(ismob(O))
|
||||
for(var/mob/M in mob_list)
|
||||
if (M.type == O.type)
|
||||
M.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /obj))
|
||||
else if(isobj(O))
|
||||
for(var/obj/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /turf))
|
||||
else if(isturf(O))
|
||||
for(var/turf/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
@@ -212,7 +212,7 @@
|
||||
|
||||
//Convert the string vars for anything that's not O
|
||||
if(method)
|
||||
if(istype(O, /mob))
|
||||
if(ismob(O))
|
||||
for(var/mob/M in mob_list)
|
||||
if ( istype(M , O.type) )
|
||||
new_value = pre_processing //reset new_value, ready to convert it uniquely for the next iteration
|
||||
@@ -227,7 +227,7 @@
|
||||
M.vars[variable] = new_value
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /obj))
|
||||
else if(isobj(O))
|
||||
for(var/obj/A in world)
|
||||
if ( istype(A , O.type) )
|
||||
new_value = pre_processing
|
||||
@@ -242,7 +242,7 @@
|
||||
A.vars[variable] = new_value
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /turf))
|
||||
else if(isturf(O))
|
||||
for(var/turf/A in world)
|
||||
if ( istype(A , O.type) )
|
||||
new_value = pre_processing
|
||||
@@ -257,7 +257,7 @@
|
||||
A.vars[variable] = new_value
|
||||
CHECK_TICK
|
||||
else
|
||||
if(istype(O, /mob))
|
||||
if(ismob(O))
|
||||
for(var/mob/M in mob_list)
|
||||
if (M.type == O.type)
|
||||
new_value = pre_processing
|
||||
@@ -272,7 +272,7 @@
|
||||
M.vars[variable] = new_value
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /obj))
|
||||
else if(isobj(O))
|
||||
for(var/obj/A in world)
|
||||
if (A.type == O.type)
|
||||
new_value = pre_processing
|
||||
@@ -287,7 +287,7 @@
|
||||
A.vars[variable] = new_value
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /turf))
|
||||
else if(isturf(O))
|
||||
for(var/turf/A in world)
|
||||
if (A.type == O.type)
|
||||
new_value = pre_processing
|
||||
@@ -313,7 +313,7 @@
|
||||
O.vars[variable] = new_value
|
||||
|
||||
if(method)
|
||||
if(istype(O, /mob))
|
||||
if(ismob(O))
|
||||
for(var/mob/M in mob_list)
|
||||
if ( istype(M , O.type) )
|
||||
if(variable=="luminosity")
|
||||
@@ -322,7 +322,7 @@
|
||||
M.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /obj))
|
||||
else if(isobj(O))
|
||||
for(var/obj/A in world)
|
||||
if ( istype(A , O.type) )
|
||||
if(variable=="luminosity")
|
||||
@@ -331,7 +331,7 @@
|
||||
A.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /turf))
|
||||
else if(isturf(O))
|
||||
for(var/turf/A in world)
|
||||
if ( istype(A , O.type) )
|
||||
if(variable=="luminosity")
|
||||
@@ -341,7 +341,7 @@
|
||||
CHECK_TICK
|
||||
|
||||
else
|
||||
if(istype(O, /mob))
|
||||
if(ismob(O))
|
||||
for(var/mob/M in mob_list)
|
||||
if (M.type == O.type)
|
||||
if(variable=="luminosity")
|
||||
@@ -350,7 +350,7 @@
|
||||
M.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /obj))
|
||||
else if(isobj(O))
|
||||
for(var/obj/A in world)
|
||||
if (A.type == O.type)
|
||||
if(variable=="luminosity")
|
||||
@@ -359,7 +359,7 @@
|
||||
A.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /turf))
|
||||
else if(isturf(O))
|
||||
for(var/turf/A in world)
|
||||
if (A.type == O.type)
|
||||
if(variable=="luminosity")
|
||||
@@ -374,38 +374,38 @@
|
||||
if(new_value == null) return
|
||||
O.vars[variable] = new_value
|
||||
if(method)
|
||||
if(istype(O, /mob))
|
||||
if(ismob(O))
|
||||
for(var/mob/M in mob_list)
|
||||
if ( istype(M , O.type) )
|
||||
M.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /obj))
|
||||
else if(isobj(O))
|
||||
for(var/obj/A in world)
|
||||
if ( istype(A , O.type) )
|
||||
A.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /turf))
|
||||
else if(isturf(O))
|
||||
for(var/turf/A in world)
|
||||
if ( istype(A , O.type) )
|
||||
A.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else
|
||||
if(istype(O, /mob))
|
||||
if(ismob(O))
|
||||
for(var/mob/M in mob_list)
|
||||
if (M.type == O.type)
|
||||
M.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /obj))
|
||||
else if(isobj(O))
|
||||
for(var/obj/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /turf))
|
||||
else if(isturf(O))
|
||||
for(var/turf/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
@@ -417,37 +417,37 @@
|
||||
O.vars[variable] = new_value
|
||||
|
||||
if(method)
|
||||
if(istype(O, /mob))
|
||||
if(ismob(O))
|
||||
for(var/mob/M in mob_list)
|
||||
if ( istype(M , O.type) )
|
||||
M.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O.type, /obj))
|
||||
else if(isobj(O))
|
||||
for(var/obj/A in world)
|
||||
if ( istype(A , O.type) )
|
||||
A.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O.type, /turf))
|
||||
else if(isturf(O))
|
||||
for(var/turf/A in world)
|
||||
if ( istype(A , O.type) )
|
||||
A.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
else
|
||||
if(istype(O, /mob))
|
||||
if(ismob(O))
|
||||
for(var/mob/M in mob_list)
|
||||
if (M.type == O.type)
|
||||
M.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /obj))
|
||||
else if(isobj(O))
|
||||
for(var/obj/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /turf))
|
||||
else if(isturf(O))
|
||||
for(var/turf/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
@@ -458,76 +458,76 @@
|
||||
if(new_value == null) return
|
||||
O.vars[variable] = new_value
|
||||
if(method)
|
||||
if(istype(O, /mob))
|
||||
if(ismob(O))
|
||||
for(var/mob/M in mob_list)
|
||||
if ( istype(M , O.type) )
|
||||
M.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /obj))
|
||||
else if(isobj(O))
|
||||
for(var/obj/A in world)
|
||||
if ( istype(A , O.type) )
|
||||
A.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /turf))
|
||||
else if(isturf(O))
|
||||
for(var/turf/A in world)
|
||||
if ( istype(A , O.type) )
|
||||
A.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else
|
||||
if(istype(O, /mob))
|
||||
if(ismob(O))
|
||||
for(var/mob/M in mob_list)
|
||||
if (M.type == O.type)
|
||||
M.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /obj))
|
||||
else if(isobj(O))
|
||||
for(var/obj/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /turf))
|
||||
else if(isturf(O))
|
||||
for(var/turf/A in world)
|
||||
if (A.type == O.type)
|
||||
A.vars[variable] = O.vars[variable]
|
||||
CHECK_TICK
|
||||
|
||||
if(method)
|
||||
if(istype(O,/mob))
|
||||
if(ismob(O))
|
||||
for(var/mob/M in mob_list)
|
||||
if(istype(M,O.type))
|
||||
M.on_varedit(variable)
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O,/obj))
|
||||
else if(isobj(O))
|
||||
for(var/obj/A in world)
|
||||
if(istype(A,O.type))
|
||||
A.on_varedit(variable)
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O,/turf))
|
||||
else if(isturf(O))
|
||||
for(var/turf/A in block(locate(1,1,1),locate(world.maxx,world.maxy,world.maxz)))
|
||||
if(istype(A,O.type))
|
||||
A.on_varedit(variable)
|
||||
CHECK_TICK
|
||||
|
||||
else
|
||||
if(istype(O, /mob))
|
||||
if(ismob(O))
|
||||
for(var/mob/M in mob_list)
|
||||
if(M.type == O.type)
|
||||
M.on_varedit(variable)
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /obj))
|
||||
else if(isobj(O))
|
||||
for(var/obj/A in world)
|
||||
if(A.type == O.type)
|
||||
A.on_varedit(variable)
|
||||
CHECK_TICK
|
||||
|
||||
else if(istype(O, /turf))
|
||||
else if(isturf(O))
|
||||
for(var/turf/A in world)
|
||||
if(A.type == O.type)
|
||||
A.on_varedit(variable)
|
||||
|
||||
@@ -594,7 +594,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
log_admin("[key_name(usr)] has gibbed [key_name(M)]")
|
||||
message_admins("[key_name_admin(usr)] has gibbed [key_name_admin(M)]")
|
||||
|
||||
if(istype(M, /mob/dead/observer))
|
||||
if(isobserver(M))
|
||||
new /obj/effect/gibspawner/generic(M.loc, M.viruses)
|
||||
return
|
||||
if(confirm == "Yes")
|
||||
@@ -1153,3 +1153,17 @@ var/list/datum/outfit/custom_outfits = list() //Admin created outfits
|
||||
dat += "[S.name] - <a href='?src=\ref[S];announce=1'>Announce</a> | <a href='?src=\ref[S];remove=1'>Remove</a><br>"
|
||||
dat += "<br><a href='?src=\ref[src];add_station_goal=1'>Add New Goal</a>"
|
||||
usr << browse(dat, "window=goals;size=400x400")
|
||||
|
||||
|
||||
/client/proc/toggle_hub()
|
||||
set category = "Server"
|
||||
set name = "Toggle Hub"
|
||||
|
||||
world.visibility = (!world.visibility)
|
||||
|
||||
log_admin("[key_name(usr)] has toggled the server's hub status for the round, it is now [(world.visibility?"on":"off")] the hub.")
|
||||
message_admins("[key_name_admin(usr)] has toggled the server's hub status for the round, it is now [(world.visibility?"on":"off")] the hub.")
|
||||
if (world.visibility && !world.reachable)
|
||||
message_admins("WARNING: The server will not show up on the hub because byond is detecting that a filewall is blocking incoming connections.")
|
||||
|
||||
feedback_add_details("admin_verb","HUB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -59,7 +59,7 @@
|
||||
affecting = H.get_bodypart(type)
|
||||
H.Stun(3)
|
||||
if(affecting)
|
||||
if(affecting.take_damage(1, 0))
|
||||
if(affecting.receive_damage(1, 0))
|
||||
H.update_damage_overlays()
|
||||
else if(ismouse(target))
|
||||
var/mob/living/simple_animal/mouse/M = target
|
||||
|
||||
@@ -69,6 +69,8 @@
|
||||
if(!istype(location) || !(location.air))
|
||||
return 0
|
||||
|
||||
location.active_hotspot = src
|
||||
|
||||
if(volume > CELL_VOLUME*0.95)
|
||||
bypassing = 1
|
||||
else
|
||||
@@ -87,9 +89,9 @@
|
||||
location.assume_air(affected)
|
||||
|
||||
for(var/A in loc)
|
||||
var/atom/item = A
|
||||
if(item && item != src) // It's possible that the item is deleted in temperature_expose
|
||||
item.fire_act(null, temperature, volume)
|
||||
var/atom/AT = A
|
||||
if(AT && AT != src) // It's possible that the item is deleted in temperature_expose
|
||||
AT.fire_act(temperature, volume)
|
||||
return 0
|
||||
|
||||
|
||||
@@ -148,7 +150,7 @@
|
||||
SetLuminosity(0)
|
||||
SSair.hotspots -= src
|
||||
DestroyTurf()
|
||||
if(istype(loc, /turf))
|
||||
if(isturf(loc))
|
||||
var/turf/open/T = loc
|
||||
if(T.active_hotspot == src)
|
||||
T.active_hotspot = null
|
||||
@@ -157,8 +159,7 @@
|
||||
return QDEL_HINT_PUTINPOOL
|
||||
|
||||
/obj/effect/hotspot/proc/DestroyTurf()
|
||||
|
||||
if(istype(loc, /turf))
|
||||
if(isturf(loc))
|
||||
var/turf/T = loc
|
||||
if(T.to_be_destroyed)
|
||||
var/chance_of_deletion
|
||||
@@ -175,4 +176,4 @@
|
||||
/obj/effect/hotspot/Crossed(mob/living/L)
|
||||
..()
|
||||
if(isliving(L))
|
||||
L.fire_act()
|
||||
L.fire_act(temperature, volume)
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
return adjacent_turfs
|
||||
|
||||
/atom/proc/air_update_turf(command = 0)
|
||||
if(!istype(loc,/turf) && command)
|
||||
if(!isturf(loc) && command)
|
||||
return
|
||||
var/turf/T = get_turf(loc)
|
||||
T.air_update_turf(command)
|
||||
@@ -103,7 +103,7 @@
|
||||
SSair.add_to_active(src,command)
|
||||
|
||||
/atom/movable/proc/move_update_air(turf/T)
|
||||
if(istype(T,/turf))
|
||||
if(isturf(T))
|
||||
T.air_update_turf(1)
|
||||
air_update_turf(1)
|
||||
|
||||
|
||||
@@ -55,6 +55,11 @@
|
||||
active_power_usage = 8
|
||||
power_channel = ENVIRON
|
||||
req_access = list(access_atmospherics)
|
||||
obj_integrity = 250
|
||||
max_integrity = 250
|
||||
integrity_failure = 80
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 90, acid = 30)
|
||||
resistance_flags = 0
|
||||
|
||||
var/danger_level = 0
|
||||
var/mode = AALARM_MODE_SCRUBBING
|
||||
@@ -628,8 +633,7 @@
|
||||
if(istype(W, /obj/item/weapon/wirecutters) && panel_open && wires.is_all_cut())
|
||||
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
|
||||
user << "<span class='notice'>You cut the final wires.</span>"
|
||||
var/obj/item/stack/cable_coil/cable = new /obj/item/stack/cable_coil(loc)
|
||||
cable.amount = 5
|
||||
new /obj/item/stack/cable_coil(loc, 5)
|
||||
buildstage = 1
|
||||
update_icon()
|
||||
return
|
||||
@@ -713,4 +717,17 @@
|
||||
return
|
||||
emagged = TRUE
|
||||
visible_message("<span class='warning'>Sparks fly out of the [src]!</span>", "<span class='notice'>You emag the [src], disabling its safeties.</span>")
|
||||
playsound(src.loc, 'sound/effects/sparks4.ogg', 50, 1)
|
||||
playsound(src.loc, 'sound/effects/sparks4.ogg', 50, 1)
|
||||
|
||||
/obj/machinery/airalarm/obj_break(damage_flag)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/airalarm/deconstruct(disassembled = TRUE)
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
new /obj/item/stack/sheet/metal(loc, 2)
|
||||
var/obj/item/I = new /obj/item/weapon/electronics/airalarm(loc)
|
||||
if(!disassembled)
|
||||
I.obj_integrity = I.max_integrity * 0.5
|
||||
new /obj/item/stack/cable_coil(loc, 3)
|
||||
qdel(src)
|
||||
@@ -16,6 +16,10 @@ Pipelines + Other Objects -> Pipe network
|
||||
power_channel = ENVIRON
|
||||
on_blueprints = TRUE
|
||||
layer = GAS_PIPE_LAYER //under wires
|
||||
armor = list(melee = 25, bullet = 10, laser = 10, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 100, acid = 70)
|
||||
resistance_flags = FIRE_PROOF
|
||||
obj_integrity = 200
|
||||
max_integrity = 200
|
||||
var/nodealert = 0
|
||||
var/can_unwrench = 0
|
||||
var/initialize_directions = 0
|
||||
@@ -152,11 +156,10 @@ Pipelines + Other Objects -> Pipe network
|
||||
//You unwrenched a pipe full of pressure? Let's splat you into the wall, silly.
|
||||
if(unsafe_wrenching)
|
||||
unsafe_pressure_release(user, internal_pressure)
|
||||
Deconstruct()
|
||||
deconstruct(TRUE)
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/proc/can_unwrench(mob/user)
|
||||
return can_unwrench
|
||||
|
||||
@@ -179,13 +182,16 @@ Pipelines + Other Objects -> Pipe network
|
||||
user.visible_message("<span class='danger'>[user] is sent flying by pressure!</span>","<span class='userdanger'>The pressure sends you flying!</span>")
|
||||
user.throw_at(target, range, speed)
|
||||
|
||||
/obj/machinery/atmospherics/Deconstruct()
|
||||
if(can_unwrench)
|
||||
stored.loc = src.loc
|
||||
transfer_fingerprints_to(stored)
|
||||
stored = null
|
||||
|
||||
qdel(src)
|
||||
/obj/machinery/atmospherics/deconstruct(disassembled = TRUE)
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
if(can_unwrench)
|
||||
if(stored)
|
||||
stored.forceMove(loc)
|
||||
if(!disassembled)
|
||||
stored.obj_integrity = stored.max_integrity * 0.5
|
||||
transfer_fingerprints_to(stored)
|
||||
stored = null
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/proc/getpipeimage(iconset, iconstate, direction, col=rgb(255,255,255))
|
||||
|
||||
@@ -226,7 +232,7 @@ Pipelines + Other Objects -> Pipe network
|
||||
|
||||
/obj/machinery/atmospherics/singularity_pull(S, current_size)
|
||||
if(current_size >= STAGE_FIVE)
|
||||
Deconstruct()
|
||||
deconstruct(FALSE)
|
||||
|
||||
|
||||
//Find a connecting /obj/machinery/atmospherics in specified direction
|
||||
@@ -288,3 +294,9 @@ Pipelines + Other Objects -> Pipe network
|
||||
//Used for certain children of obj/machinery/atmospherics to not show pipe vision when mob is inside it.
|
||||
/obj/machinery/atmospherics/proc/can_see_pipes()
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/fire_act(exposed_temperature, exposed_volume)
|
||||
var/turf/T = src.loc
|
||||
if(T && T.intact && level == 1) //protected from fire when hidden behind a floor.
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
icon_state = "cell-off"
|
||||
density = 1
|
||||
anchored = 1
|
||||
obj_integrity = 350
|
||||
max_integrity = 350
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 30, acid = 30)
|
||||
|
||||
var/on = FALSE
|
||||
state_open = FALSE
|
||||
@@ -50,9 +53,16 @@
|
||||
conduction_coefficient = initial(conduction_coefficient) * C
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/Destroy()
|
||||
beaker = null
|
||||
if(beaker)
|
||||
qdel(beaker)
|
||||
beaker = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/on_deconstruction()
|
||||
if(beaker)
|
||||
beaker.forceMove(loc)
|
||||
beaker = null
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/update_icon()
|
||||
if(panel_open)
|
||||
icon_state = "cell-o"
|
||||
@@ -137,7 +147,7 @@
|
||||
on = FALSE
|
||||
..()
|
||||
if(beaker)
|
||||
beaker.loc = src
|
||||
beaker.forceMove(src)
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/close_machine(mob/living/carbon/user)
|
||||
if((isnull(user) || istype(user)) && state_open && !panel_open)
|
||||
@@ -253,7 +263,7 @@
|
||||
. = TRUE
|
||||
if("ejectbeaker")
|
||||
if(beaker)
|
||||
beaker.loc = loc
|
||||
beaker.forceMove(loc)
|
||||
beaker = null
|
||||
. = TRUE
|
||||
update_icon()
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
icon_state = "generic"
|
||||
name = "pressure tank"
|
||||
desc = "A large vessel containing pressurized gas."
|
||||
obj_integrity = 800
|
||||
max_integrity = 800
|
||||
var/volume = 10000 //in liters, 1 meters by 1 meters by 2 meters
|
||||
density = 1
|
||||
var/gas_type = 0
|
||||
@@ -46,4 +48,4 @@
|
||||
var/datum/gas_mixture/air_contents = AIR1
|
||||
air_contents.assert_gases("o2", "n2")
|
||||
air_contents.gases["o2"][MOLES] = AIR_CONTENTS * 0.2
|
||||
air_contents.gases["n2"][MOLES] = AIR_CONTENTS * 0.8
|
||||
air_contents.gases["n2"][MOLES] = AIR_CONTENTS * 0.8
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
var/icon_state_open = "cold_off"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
obj_integrity = 300
|
||||
max_integrity = 300
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 80, acid = 30)
|
||||
|
||||
var/on = FALSE
|
||||
var/min_temperature = 0
|
||||
|
||||
@@ -144,7 +144,7 @@ var/pipenetwarnings = 10
|
||||
var/target_temperature
|
||||
var/target_heat_capacity
|
||||
|
||||
if(istype(target, /turf/open))
|
||||
if(isopenturf(target))
|
||||
|
||||
var/turf/open/modeled_location = target
|
||||
target_temperature = modeled_location.GetTemperature()
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
use_power = 1
|
||||
idle_power_usage = 2
|
||||
active_power_usage = 4
|
||||
obj_integrity = 150
|
||||
max_integrity = 150
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 40, acid = 0)
|
||||
|
||||
|
||||
/obj/machinery/meter/New()
|
||||
..()
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
/obj/machinery/zvent/process_atmos()
|
||||
|
||||
//all this object does, is make its turf share air with the ones above and below it, if they have a vent too.
|
||||
if (istype(loc,/turf)) //if we're not on a valid turf, forget it
|
||||
if(isturf(loc)) //if we're not on a valid turf, forget it
|
||||
for (var/new_z in list(-1,1)) //change this list if a fancier system of z-levels gets implemented
|
||||
var/turf/open/zturf_conn = locate(x,y,z+new_z)
|
||||
if (istype(zturf_conn))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging
|
||||
icon = 'icons/obj/atmospherics/pipes/heat.dmi'
|
||||
level = 2
|
||||
var/initialize_directions_he
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/hide(i)
|
||||
if(level == 1 && istype(loc, /turf))
|
||||
if(level == 1 && isturf(loc))
|
||||
invisibility = i ? INVISIBILITY_MAXIMUM : 0
|
||||
update_icon()
|
||||
|
||||
@@ -97,4 +97,9 @@
|
||||
N.update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/returnPipenets()
|
||||
. = list(parent)
|
||||
. = list(parent)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
|
||||
if(damage_flag == "melee" && damage_amount < 12)
|
||||
return 0
|
||||
. = ..()
|
||||
|
||||
@@ -17,8 +17,10 @@
|
||||
var/gas_type = ""
|
||||
var/release_pressure = ONE_ATMOSPHERE
|
||||
|
||||
armor = list(melee = 50, bullet = 50, laser = 50, energy = 100, bomb = 10, bio = 100, rad = 100, fire = 10, acid = 0)
|
||||
var/health = 100
|
||||
armor = list(melee = 50, bullet = 50, laser = 50, energy = 100, bomb = 10, bio = 100, rad = 100, fire = 80, acid = 50)
|
||||
obj_integrity = 250
|
||||
max_integrity = 250
|
||||
integrity_failure = 100
|
||||
pressure_resistance = 7 * ONE_ATMOSPHERE
|
||||
var/temperature_resistance = 1000 + T0C
|
||||
var/starter_temp
|
||||
@@ -182,40 +184,56 @@
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
if(exposed_temperature > temperature_resistance)
|
||||
take_damage(5, BRUTE, 0)
|
||||
take_damage(5, BURN, 0)
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/take_damage(damage, damage_type = BRUTE, sound_effect = 1)
|
||||
switch(damage_type)
|
||||
if(BRUTE)
|
||||
if(sound_effect)
|
||||
if(damage)
|
||||
playsound(loc, 'sound/weapons/smash.ogg', 50, 1)
|
||||
else
|
||||
playsound(loc, 'sound/weapons/tap.ogg', 50, 1)
|
||||
if(BURN)
|
||||
if(sound_effect)
|
||||
playsound(src.loc, 'sound/items/Welder.ogg', 100, 1)
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/deconstruct(disassembled = TRUE)
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
if(!(stat & BROKEN))
|
||||
canister_break()
|
||||
if(disassembled)
|
||||
new /obj/item/stack/sheet/metal (loc, 10)
|
||||
else
|
||||
return
|
||||
if(stat & BROKEN)
|
||||
new /obj/item/stack/sheet/metal (loc, 5)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(user.a_intent != "harm" && istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(stat & BROKEN)
|
||||
if(!WT.remove_fuel(0, user))
|
||||
return
|
||||
playsound(loc, 'sound/items/Welder.ogg', 40, 1)
|
||||
user << "<span class='notice'>You begin cutting [src] apart...</span>"
|
||||
if(do_after(user, 30, target = src))
|
||||
deconstruct(TRUE)
|
||||
else
|
||||
user << "<span class='notice'>You cannot slice [src] apart when it isn't broken.</span>"
|
||||
return 1
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/obj_break(damage_flag)
|
||||
if((stat & BROKEN) || (flags & NODECONSTRUCT))
|
||||
return
|
||||
health = max( health - damage, 0)
|
||||
if(!health)
|
||||
disconnect()
|
||||
var/datum/gas_mixture/expelled_gas = air_contents.remove(air_contents.total_moles())
|
||||
var/turf/T = get_turf(src)
|
||||
T.assume_air(expelled_gas)
|
||||
air_update_turf()
|
||||
canister_break()
|
||||
|
||||
stat |= BROKEN
|
||||
density = 0
|
||||
playsound(src.loc, 'sound/effects/spray.ogg', 10, 1, -3)
|
||||
update_icon()
|
||||
investigate_log("was destroyed.", "atmos")
|
||||
/obj/machinery/portable_atmospherics/canister/proc/canister_break()
|
||||
disconnect()
|
||||
var/datum/gas_mixture/expelled_gas = air_contents.remove(air_contents.total_moles())
|
||||
var/turf/T = get_turf(src)
|
||||
T.assume_air(expelled_gas)
|
||||
air_update_turf()
|
||||
|
||||
if(holding)
|
||||
holding.loc = T
|
||||
holding = null
|
||||
stat |= BROKEN
|
||||
density = 0
|
||||
playsound(src.loc, 'sound/effects/spray.ogg', 10, 1, -3)
|
||||
update_icon()
|
||||
investigate_log("was destroyed.", "atmos")
|
||||
|
||||
if(holding)
|
||||
holding.forceMove(T)
|
||||
holding = null
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/process_atmos()
|
||||
..()
|
||||
@@ -236,39 +254,6 @@
|
||||
air_update_turf() // Update the environment if needed.
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/blob_act(obj/structure/blob/B)
|
||||
take_damage(100, BRUTE, 0)
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/burn()
|
||||
take_damage(health, BURN, 1)
|
||||
..()
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/bullet_act(obj/item/projectile/P)
|
||||
. = ..()
|
||||
take_damage(P.damage / 2, P.damage_type, 0)
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/ex_act(severity, target)
|
||||
switch(severity)
|
||||
if(1)
|
||||
if((stat & BROKEN) || prob(30))
|
||||
qdel(src)
|
||||
else
|
||||
take_damage(100, BRUTE, 0)
|
||||
if(2)
|
||||
if(stat & BROKEN)
|
||||
qdel(src)
|
||||
else
|
||||
take_damage(rand(40, 110), BRUTE, 0)
|
||||
if(3)
|
||||
take_damage(rand(15, 40), BRUTE, 0)
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/attacked_by(obj/item/I, mob/user)
|
||||
if(I.force)
|
||||
user.visible_message("<span class='danger'>[user] has hit [src] with [I]!</span>", "<span class='danger'>You hit [src] with [I]!</span>")
|
||||
investigate_log("was smacked with \a [I] by [key_name(user)].", "atmos")
|
||||
add_fingerprint(user)
|
||||
take_damage(I.force, I.damtype, 1)
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
|
||||
datum/tgui/master_ui = null, datum/ui_state/state = physical_state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
name = "portable_atmospherics"
|
||||
icon = 'icons/obj/atmos.dmi'
|
||||
use_power = 0
|
||||
obj_integrity = 250
|
||||
max_integrity = 250
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 60, acid = 30)
|
||||
|
||||
|
||||
var/datum/gas_mixture/air_contents
|
||||
var/obj/machinery/atmospherics/components/unary/portables_connector/connected_port
|
||||
@@ -106,4 +110,12 @@
|
||||
else if(istype(W, /obj/item/device/analyzer) && Adjacent(user))
|
||||
atmosanalyzer_scan(air_contents, user)
|
||||
else
|
||||
return ..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/portable_atmospherics/attacked_by(obj/item/I, mob/user)
|
||||
if(I.force < 10 && !(stat & BROKEN))
|
||||
take_damage(0)
|
||||
else
|
||||
investigate_log("was smacked with \a [I] by [key_name(user)].", "atmos")
|
||||
add_fingerprint(user)
|
||||
..()
|
||||
@@ -12,8 +12,8 @@
|
||||
anchored = 1
|
||||
|
||||
/obj/machinery/artillerycontrol/process()
|
||||
if(src.reload<ARTILLERY_RELOAD_TIME)
|
||||
src.reload++
|
||||
if(reload < ARTILLERY_RELOAD_TIME)
|
||||
reload++
|
||||
|
||||
/obj/structure/artilleryplaceholder
|
||||
name = "artillery"
|
||||
@@ -39,11 +39,13 @@
|
||||
if(..())
|
||||
return
|
||||
var/A
|
||||
A = input("Area to jump bombard", "Open Fire", A) in teleportlocs
|
||||
A = input("Area to bombard", "Open Fire", A) in teleportlocs
|
||||
var/area/thearea = teleportlocs[A]
|
||||
if (usr.stat || usr.restrained()) return
|
||||
if(src.reload < ARTILLERY_RELOAD_TIME) return
|
||||
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||
if(usr.stat || usr.restrained())
|
||||
return
|
||||
if(src.reload < ARTILLERY_RELOAD_TIME)
|
||||
return
|
||||
if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr))
|
||||
priority_announce("Bluespace artillery fire detected. Brace for impact.")
|
||||
message_admins("[key_name_admin(usr)] has launched an artillery strike.")
|
||||
var/list/L = list()
|
||||
|
||||
@@ -7,7 +7,7 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
|
||||
icon_state = "off"
|
||||
density = 1
|
||||
anchored = 1
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
var/active = 0
|
||||
|
||||
|
||||
|
||||
@@ -57,17 +57,22 @@
|
||||
icon = 'icons/obj/cult.dmi'
|
||||
icon_state = "forge"
|
||||
anchored = 1
|
||||
var/health = 200
|
||||
obj_integrity = 200
|
||||
max_integrity = 200
|
||||
var/mob/living/current_wizard = null
|
||||
var/next_check = 0
|
||||
var/cooldown = 600
|
||||
var/faction = "wizard"
|
||||
var/broken = 0
|
||||
var/braindead_check = 0
|
||||
|
||||
/obj/structure/academy_wizard_spawner/New()
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/structure/academy_wizard_spawner/Destroy()
|
||||
if(!broken)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/structure/academy_wizard_spawner/process()
|
||||
if(next_check < world.time)
|
||||
if(!current_wizard)
|
||||
@@ -127,28 +132,12 @@
|
||||
|
||||
give_control()
|
||||
|
||||
/obj/structure/academy_wizard_spawner/proc/update_status()
|
||||
if(health<0)
|
||||
/obj/structure/academy_wizard_spawner/deconstruct(disassembled = TRUE)
|
||||
if(!broken)
|
||||
broken = 1
|
||||
visible_message("<span class='warning'>[src] breaks down!</span>")
|
||||
icon_state = "forge_off"
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
broken = 1
|
||||
|
||||
/obj/structure/academy_wizard_spawner/attackby(obj/item/weapon/W, mob/living/user, params)
|
||||
add_fingerprint(user)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
if(!broken)
|
||||
health -= W.force
|
||||
update_status()
|
||||
..()
|
||||
|
||||
/obj/structure/academy_wizard_spawner/bullet_act(obj/item/projectile/Proj)
|
||||
if(!broken)
|
||||
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
|
||||
health -= Proj.damage
|
||||
update_status()
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/outfit/wizard/academy
|
||||
name = "Academy Wizard"
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
active = FALSE
|
||||
toggleFirepit()
|
||||
|
||||
/obj/structure/firepit/fire_act()
|
||||
/obj/structure/firepit/fire_act(exposed_temperature, exposed_volume)
|
||||
if(!active)
|
||||
active = TRUE
|
||||
toggleFirepit()
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
icon_state = "emitter"
|
||||
anchored = 1
|
||||
density = 1
|
||||
resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF
|
||||
|
||||
use_power = 0
|
||||
idle_power_usage = 0
|
||||
|
||||
@@ -175,7 +175,7 @@ var/sc_safecode5 = "[rand(0,9)]"
|
||||
/obj/singularity/narsie/sc_Narsie/consume(atom/A)
|
||||
if(is_type_in_list(A, uneatable))
|
||||
return 0
|
||||
if (istype(A,/mob/living))
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
L.gib()
|
||||
else if(istype(A,/obj/))
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
user << "The Wish Granter lies silent."
|
||||
return
|
||||
|
||||
else if(!istype(user, /mob/living/carbon/human))
|
||||
else if(!ishuman(user))
|
||||
user << "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's."
|
||||
return
|
||||
|
||||
@@ -121,15 +121,15 @@
|
||||
icon_state = "blobpod"
|
||||
var/triggered = 0
|
||||
|
||||
/obj/effect/meatgrinder/Crossed(AM as mob|obj)
|
||||
/obj/effect/meatgrinder/Crossed(AM)
|
||||
Bumped(AM)
|
||||
|
||||
/obj/effect/meatgrinder/Bumped(mob/M as mob|obj)
|
||||
/obj/effect/meatgrinder/Bumped(mob/M)
|
||||
|
||||
if(triggered)
|
||||
return
|
||||
|
||||
if(istype(M, /mob/living/carbon/human) && M.stat != DEAD && M.ckey)
|
||||
if(ishuman(M) && M.stat != DEAD && M.ckey)
|
||||
for(var/mob/O in viewers(world.view, src.loc))
|
||||
visible_message("<span class='warning'>[M] triggered the [src]!</span>")
|
||||
triggered = 1
|
||||
|
||||
@@ -147,11 +147,11 @@
|
||||
prefs.save_preferences()
|
||||
if(prefs.toggles & SOUND_LOBBY)
|
||||
src << "You will now hear music in the game lobby."
|
||||
if(istype(mob, /mob/new_player))
|
||||
if(isnewplayer(mob))
|
||||
playtitlemusic()
|
||||
else
|
||||
src << "You will no longer hear music in the game lobby."
|
||||
if(istype(mob, /mob/new_player))
|
||||
if(isnewplayer(mob))
|
||||
mob.stopLobbySound()
|
||||
feedback_add_details("admin_verb","TLobby") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -244,7 +244,7 @@ var/global/list/ghost_forms = list("ghost","ghostking","ghostian2","skeleghost",
|
||||
if(new_form)
|
||||
prefs.ghost_form = new_form
|
||||
prefs.save_preferences()
|
||||
if(istype(mob,/mob/dead/observer))
|
||||
if(isobserver(mob))
|
||||
var/mob/dead/observer/O = mob
|
||||
O.update_icon(new_form)
|
||||
|
||||
@@ -258,7 +258,7 @@ var/global/list/ghost_orbits = list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS
|
||||
if(new_orbit)
|
||||
prefs.ghost_orbit = new_orbit
|
||||
prefs.save_preferences()
|
||||
if(istype(mob, /mob/dead/observer))
|
||||
if(isobserver(mob))
|
||||
var/mob/dead/observer/O = mob
|
||||
O.ghost_orbit = new_orbit
|
||||
|
||||
@@ -273,7 +273,7 @@ var/global/list/ghost_orbits = list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS
|
||||
if("default sprites")
|
||||
prefs.ghost_accs = GHOST_ACCS_NONE
|
||||
prefs.save_preferences()
|
||||
if(istype(mob, /mob/dead/observer))
|
||||
if(isobserver(mob))
|
||||
var/mob/dead/observer/O = mob
|
||||
O.update_icon()
|
||||
|
||||
@@ -306,7 +306,7 @@ var/global/list/ghost_orbits = list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS
|
||||
if("White Ghost")
|
||||
prefs.ghost_others = GHOST_OTHERS_SIMPLE
|
||||
prefs.save_preferences()
|
||||
if(istype(mob, /mob/dead/observer))
|
||||
if(isobserver(mob))
|
||||
var/mob/dead/observer/O = mob
|
||||
O.updateghostsight()
|
||||
|
||||
@@ -334,7 +334,7 @@ var/global/list/ghost_orbits = list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS
|
||||
prefs.ghost_hud = !prefs.ghost_hud
|
||||
src << "Ghost HUD will now be [prefs.ghost_hud ? "visible" : "hidden"]."
|
||||
prefs.save_preferences()
|
||||
if(istype(mob,/mob/dead/observer))
|
||||
if(isobserver(mob))
|
||||
mob.hud_used.show_hud()
|
||||
|
||||
/client/verb/toggle_inquisition() // warning: unexpected inquisition
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
|
||||
if(isobserver(C.mob))
|
||||
msg += " - Observing"
|
||||
else if(istype(C.mob,/mob/new_player))
|
||||
else if(isnewplayer(C.mob))
|
||||
msg += " - Lobby"
|
||||
else
|
||||
msg += " - Playing"
|
||||
|
||||
@@ -159,8 +159,8 @@
|
||||
origin_tech = "syndicate=2"
|
||||
sensor_mode = 0 //Hey who's this guy on the Syndicate Shuttle??
|
||||
random_sensor = 0
|
||||
resistance_flags = FIRE_PROOF
|
||||
armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
resistance_flags = 0
|
||||
armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
|
||||
|
||||
/obj/item/clothing/under/chameleon/New()
|
||||
..()
|
||||
@@ -176,8 +176,8 @@
|
||||
item_state = "armor"
|
||||
blood_overlay_type = "armor"
|
||||
origin_tech = "syndicate=2"
|
||||
resistance_flags = FIRE_PROOF
|
||||
armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
resistance_flags = 0
|
||||
armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
|
||||
|
||||
/obj/item/clothing/suit/chameleon/New()
|
||||
..()
|
||||
@@ -192,8 +192,8 @@
|
||||
icon_state = "meson"
|
||||
item_state = "meson"
|
||||
origin_tech = "syndicate=2"
|
||||
resistance_flags = FIRE_PROOF
|
||||
armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
resistance_flags = 0
|
||||
armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
|
||||
|
||||
/obj/item/clothing/glasses/chameleon/New()
|
||||
..()
|
||||
@@ -208,8 +208,8 @@
|
||||
icon_state = "yellow"
|
||||
item_state = "ygloves"
|
||||
|
||||
resistance_flags = FIRE_PROOF
|
||||
armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
resistance_flags = 0
|
||||
armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
|
||||
|
||||
/obj/item/clothing/gloves/chameleon/New()
|
||||
..()
|
||||
@@ -224,8 +224,8 @@
|
||||
icon_state = "greysoft"
|
||||
item_color = "grey"
|
||||
|
||||
resistance_flags = FIRE_PROOF
|
||||
armor = list(melee = 5, bullet = 5, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
resistance_flags = 0
|
||||
armor = list(melee = 5, bullet = 5, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
|
||||
|
||||
var/datum/action/item_action/chameleon/change/chameleon_action = null
|
||||
|
||||
@@ -256,8 +256,8 @@
|
||||
desc = "A face-covering mask that can be connected to an air supply. While good for concealing your identity, it isn't good for blocking gas flow." //More accurate
|
||||
icon_state = "gas_alt"
|
||||
item_state = "gas_alt"
|
||||
resistance_flags = FIRE_PROOF
|
||||
armor = list(melee = 5, bullet = 5, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
resistance_flags = 0
|
||||
armor = list(melee = 5, bullet = 5, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
|
||||
|
||||
flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR
|
||||
@@ -307,9 +307,9 @@
|
||||
permeability_coefficient = 0.05
|
||||
flags = NOSLIP
|
||||
origin_tech = "syndicate=2"
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
pockets = /obj/item/weapon/storage/internal/pocket/shoes
|
||||
armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
|
||||
|
||||
/obj/item/clothing/shoes/chameleon/New()
|
||||
..()
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
/obj/item/clothing
|
||||
name = "clothing"
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
obj_integrity = 150
|
||||
max_integrity = 150
|
||||
integrity_failure = 80
|
||||
var/damaged_clothes = 0 //similar to machine's BROKEN stat and structure's broken var
|
||||
var/flash_protect = 0 //Malk: What level of bright light protection item has. 1 = Flashers, Flashes, & Flashbangs | 2 = Welding | -1 = OH GOD WELDING BURNT OUT MY RETINAS
|
||||
var/tint = 0 //Malk: Sets the item's level of visual impairment tint, normally set to the same as flash_protect
|
||||
var/up = 0 // but seperated to allow items to protect but not impair vision, like space helmets
|
||||
@@ -59,6 +63,13 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/attackby(obj/item/W, mob/user, params)
|
||||
if(damaged_clothes && istype(W, /obj/item/stack/sheet/cloth))
|
||||
var/obj/item/stack/sheet/cloth/C = W
|
||||
C.use(1)
|
||||
update_clothes_damaged_state(FALSE)
|
||||
obj_integrity = max_integrity
|
||||
user << "<span class='notice'>You fix the damages on [src] with [C].</span>"
|
||||
return 1
|
||||
if(pockets)
|
||||
return pockets.attackby(W, user, params)
|
||||
else
|
||||
@@ -110,6 +121,34 @@
|
||||
user.vars[variable] = user_vars_to_edit[variable]
|
||||
|
||||
|
||||
/obj/item/clothing/examine(mob/user)
|
||||
..()
|
||||
if(damaged_clothes)
|
||||
user << "<span class='warning'>It looks damaged!</span>"
|
||||
|
||||
/obj/item/clothing/obj_break(damage_flag)
|
||||
if(!damaged_clothes)
|
||||
update_clothes_damaged_state(TRUE)
|
||||
|
||||
var/list/damaged_clothes_icons = list()
|
||||
|
||||
/obj/item/clothing/proc/update_clothes_damaged_state(damaging = TRUE)
|
||||
var/index = "\ref[initial(icon)]-[initial(icon_state)]"
|
||||
if(damaging)
|
||||
damaged_clothes = 1
|
||||
var/icon/damaged_clothes_icon = damaged_clothes_icons[index]
|
||||
if(!damaged_clothes_icon)
|
||||
damaged_clothes_icon = icon(initial(icon), initial(icon_state), , 1) //we only want to apply damaged effect to the initial icon_state for each object
|
||||
damaged_clothes_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent)
|
||||
damaged_clothes_icon.Blend(icon('icons/effects/item_damage.dmi', "itemdamaged"), ICON_MULTIPLY) //adds damage effect and the remaining white areas become transparant
|
||||
damaged_clothes_icon = fcopy_rsc(damaged_clothes_icon)
|
||||
damaged_clothes_icons[index] = damaged_clothes_icon
|
||||
add_overlay(damaged_clothes_icon, 1)
|
||||
else
|
||||
damaged_clothes = 0
|
||||
overlays -= damaged_clothes_icons[index]
|
||||
priority_overlays -= damaged_clothes_icons[index]
|
||||
|
||||
|
||||
//Ears: currently only used for headsets and earmuffs
|
||||
/obj/item/clothing/ears
|
||||
@@ -117,7 +156,7 @@
|
||||
w_class = 1
|
||||
throwforce = 0
|
||||
slot_flags = SLOT_EARS
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/ears/earmuffs
|
||||
name = "earmuffs"
|
||||
@@ -127,7 +166,7 @@
|
||||
flags = EARBANGPROTECT
|
||||
strip_delay = 15
|
||||
put_on_delay = 25
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
//Glasses
|
||||
/obj/item/clothing/glasses
|
||||
@@ -145,7 +184,7 @@
|
||||
var/vision_correction = 0 //does wearing these glasses correct some of our vision defects?
|
||||
strip_delay = 20
|
||||
put_on_delay = 25
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
/*
|
||||
SEE_SELF // can see self, no matter what
|
||||
SEE_MOBS // can see all mobs, no matter what
|
||||
@@ -175,9 +214,17 @@ BLIND // can't see anything
|
||||
/obj/item/clothing/gloves/worn_overlays(isinhands = FALSE)
|
||||
. = list()
|
||||
if(!isinhands)
|
||||
if(damaged_clothes)
|
||||
. += image("icon"='icons/effects/item_damage.dmi', "icon_state"="damagedgloves")
|
||||
if(blood_DNA)
|
||||
. += image("icon"='icons/effects/blood.dmi', "icon_state"="bloodyhands")
|
||||
|
||||
/obj/item/clothing/gloves/update_clothes_damaged_state(damaging = TRUE)
|
||||
..()
|
||||
if(ismob(loc))
|
||||
var/mob/M = loc
|
||||
M.update_inv_gloves()
|
||||
|
||||
// Called just before an attack_hand(), in mob/UnarmedAttack()
|
||||
/obj/item/clothing/gloves/proc/Touch(atom/A, proximity)
|
||||
return 0 // return 1 to cancel attack_hand()
|
||||
@@ -195,9 +242,18 @@ BLIND // can't see anything
|
||||
/obj/item/clothing/head/worn_overlays(isinhands = FALSE)
|
||||
. = list()
|
||||
if(!isinhands)
|
||||
if(damaged_clothes)
|
||||
. += image("icon"='icons/effects/item_damage.dmi', "icon_state"="damagedhelmet")
|
||||
if(blood_DNA)
|
||||
. += image("icon"='icons/effects/blood.dmi', "icon_state"="helmetblood")
|
||||
|
||||
/obj/item/clothing/head/update_clothes_damaged_state(damaging = TRUE)
|
||||
..()
|
||||
if(ismob(loc))
|
||||
var/mob/M = loc
|
||||
M.update_inv_head()
|
||||
|
||||
|
||||
//Mask
|
||||
/obj/item/clothing/mask
|
||||
name = "mask"
|
||||
@@ -213,8 +269,18 @@ BLIND // can't see anything
|
||||
/obj/item/clothing/mask/worn_overlays(isinhands = FALSE)
|
||||
. = list()
|
||||
if(!isinhands)
|
||||
if(blood_DNA && (body_parts_covered & HEAD))
|
||||
. += image("icon"='icons/effects/blood.dmi', "icon_state"="maskblood")
|
||||
if(body_parts_covered & HEAD)
|
||||
if(damaged_clothes)
|
||||
. += image("icon"='icons/effects/item_damage.dmi', "icon_state"="damagedmask")
|
||||
if(blood_DNA)
|
||||
. += image("icon"='icons/effects/blood.dmi', "icon_state"="maskblood")
|
||||
|
||||
/obj/item/clothing/mask/update_clothes_damaged_state(damaging = TRUE)
|
||||
..()
|
||||
if(ismob(loc))
|
||||
var/mob/M = loc
|
||||
M.update_inv_wear_mask()
|
||||
|
||||
|
||||
//Override this to modify speech like luchador masks.
|
||||
/obj/item/clothing/mask/proc/speechModification(message)
|
||||
@@ -276,9 +342,16 @@ BLIND // can't see anything
|
||||
else
|
||||
bloody = bloody_shoes[BLOOD_STATE_HUMAN]
|
||||
|
||||
if(damaged_clothes)
|
||||
. += image("icon"='icons/effects/item_damage.dmi', "icon_state"="damagedshoe")
|
||||
if(bloody)
|
||||
. += image("icon"='icons/effects/blood.dmi', "icon_state"="shoeblood")
|
||||
|
||||
/obj/item/clothing/shoes/update_clothes_damaged_state(damaging = TRUE)
|
||||
..()
|
||||
if(ismob(loc))
|
||||
var/mob/M = loc
|
||||
M.update_inv_shoes()
|
||||
|
||||
/obj/item/clothing/shoes/clean_blood()
|
||||
..()
|
||||
@@ -306,9 +379,17 @@ BLIND // can't see anything
|
||||
/obj/item/clothing/suit/worn_overlays(isinhands = FALSE)
|
||||
. = list()
|
||||
if(!isinhands)
|
||||
if(damaged_clothes)
|
||||
. += image("icon"='icons/effects/item_damage.dmi', "icon_state"="damaged[blood_overlay_type]")
|
||||
if(blood_DNA)
|
||||
. += image("icon"='icons/effects/blood.dmi', "icon_state"="[blood_overlay_type]blood")
|
||||
|
||||
/obj/item/clothing/suit/update_clothes_damaged_state(damaging = TRUE)
|
||||
..()
|
||||
if(ismob(loc))
|
||||
var/mob/M = loc
|
||||
M.update_inv_wear_suit()
|
||||
|
||||
//Spacesuit
|
||||
//Note: Everything in modules/clothing/spacesuits should have the entire suit grouped together.
|
||||
// Meaning the the suit is defined directly after the corrisponding helmet. Just like below!
|
||||
@@ -319,7 +400,7 @@ BLIND // can't see anything
|
||||
flags = STOPSPRESSUREDMAGE | THICKMATERIAL
|
||||
item_state = "spaceold"
|
||||
permeability_coefficient = 0.01
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50, fire = 0, acid = 70)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50, fire = 80, acid = 70)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
|
||||
@@ -329,7 +410,7 @@ BLIND // can't see anything
|
||||
strip_delay = 50
|
||||
put_on_delay = 50
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/suit/space
|
||||
name = "space suit"
|
||||
@@ -343,7 +424,7 @@ BLIND // can't see anything
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals)
|
||||
slowdown = 1
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50, fire = 0, acid = 70)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50, fire = 80, acid = 70)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
|
||||
@@ -351,7 +432,7 @@ BLIND // can't see anything
|
||||
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
|
||||
strip_delay = 80
|
||||
put_on_delay = 80
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
//Under clothing
|
||||
|
||||
@@ -376,6 +457,9 @@ BLIND // can't see anything
|
||||
. = list()
|
||||
|
||||
if(!isinhands)
|
||||
|
||||
if(damaged_clothes)
|
||||
. += image("icon"='icons/effects/item_damage.dmi', "icon_state"="damageduniform")
|
||||
if(blood_DNA)
|
||||
. += image("icon"='icons/effects/blood.dmi', "icon_state"="uniformblood")
|
||||
if(hastie)
|
||||
@@ -387,6 +471,11 @@ BLIND // can't see anything
|
||||
tI.color = hastie.color
|
||||
. += tI
|
||||
|
||||
/obj/item/clothing/under/update_clothes_damaged_state(damaging = TRUE)
|
||||
..()
|
||||
if(ismob(loc))
|
||||
var/mob/M = loc
|
||||
M.update_inv_w_uniform()
|
||||
|
||||
/obj/item/clothing/under/New()
|
||||
if(random_sensor)
|
||||
@@ -409,6 +498,13 @@ BLIND // can't see anything
|
||||
adjusted = DIGITIGRADE_STYLE
|
||||
H.update_inv_w_uniform()
|
||||
|
||||
if(hastie)
|
||||
hastie.on_uniform_equip(src, user)
|
||||
|
||||
/obj/item/clothing/under/dropped(mob/user)
|
||||
if(hastie)
|
||||
hastie.on_uniform_dropped(src, user)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/under/attackby(obj/item/I, mob/user, params)
|
||||
if(!attachTie(I, user))
|
||||
@@ -430,7 +526,7 @@ BLIND // can't see anything
|
||||
if(user && notifyAttach)
|
||||
user << "<span class='notice'>You attach [I] to [src].</span>"
|
||||
|
||||
if(istype(loc, /mob/living/carbon/human))
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/H = loc
|
||||
H.update_inv_w_uniform()
|
||||
|
||||
@@ -450,14 +546,18 @@ BLIND // can't see anything
|
||||
else
|
||||
user << "<span class='notice'>You detach [T] from [src] and it falls on the floor.</span>"
|
||||
|
||||
if(istype(loc, /mob/living/carbon/human))
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/H = loc
|
||||
H.update_inv_w_uniform()
|
||||
|
||||
|
||||
/obj/item/clothing/under/examine(mob/user)
|
||||
..()
|
||||
switch(src.sensor_mode)
|
||||
if(adjusted == ALT_STYLE)
|
||||
user << "Alt-click on [src] to wear it normally."
|
||||
else
|
||||
user << "Alt-click on [src] to wear it casually."
|
||||
switch(sensor_mode)
|
||||
if(0)
|
||||
user << "Its sensors appear to be disabled."
|
||||
if(1)
|
||||
@@ -510,7 +610,7 @@ BLIND // can't see anything
|
||||
if(3)
|
||||
usr << "<span class='notice'>Your suit will now report your exact vital lifesigns as well as your coordinate position.</span>"
|
||||
|
||||
if(istype(loc,/mob/living/carbon/human))
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/H = loc
|
||||
if(H.w_uniform == src)
|
||||
H.update_suit_sensors()
|
||||
@@ -566,13 +666,6 @@ BLIND // can't see anything
|
||||
body_parts_covered |= CHEST
|
||||
return adjusted
|
||||
|
||||
/obj/item/clothing/under/examine(mob/user)
|
||||
..()
|
||||
if(src.adjusted == ALT_STYLE)
|
||||
user << "Alt-click on [src] to wear it normally."
|
||||
else
|
||||
user << "Alt-click on [src] to wear it casually."
|
||||
|
||||
/obj/item/clothing/proc/weldingvisortoggle() //Malk: proc to toggle welding visors on helmets, masks, goggles, etc.
|
||||
if(!can_use(usr))
|
||||
return
|
||||
@@ -598,3 +691,14 @@ BLIND // can't see anything
|
||||
if(!user.incapacitated())
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
/obj/item/clothing/obj_destruction(damage_flag)
|
||||
if(damage_flag == "bomb" || damage_flag == "melee")
|
||||
var/turf/T = get_turf(src)
|
||||
spawn(1) //so the shred survives potential turf change from the explosion.
|
||||
var/obj/effect/decal/cleanable/shreds/Shreds = new(T)
|
||||
Shreds.desc = "The sad remains of what used to be [name]."
|
||||
deconstruct(FALSE)
|
||||
else
|
||||
..()
|
||||
@@ -42,7 +42,7 @@
|
||||
if(!mode)
|
||||
return
|
||||
|
||||
if(!istype(loc,/mob/living/carbon/human))
|
||||
if(!ishuman(loc))
|
||||
invis_update()
|
||||
return
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
O.invisibility = INVISIBILITY_MAXIMUM
|
||||
|
||||
/obj/item/clothing/glasses/meson/engine/proc/t_ray_on()
|
||||
if(!istype(loc,/mob/living/carbon/human))
|
||||
if(!ishuman(loc))
|
||||
return 0
|
||||
|
||||
var/mob/living/carbon/human/user = loc
|
||||
|
||||
@@ -56,7 +56,8 @@
|
||||
scan_reagents = 1 //You can see reagents while wearing science goggles
|
||||
actions_types = list(/datum/action/item_action/toggle_research_scanner)
|
||||
glass_colour_type = /datum/client_colour/glass_colour/purple
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
resistance_flags = ACID_PROOF
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 100)
|
||||
|
||||
/obj/item/clothing/glasses/science/item_action_slot_check(slot)
|
||||
if(slot == slot_glasses)
|
||||
@@ -127,11 +128,7 @@
|
||||
icon_state = "hipster_glasses"
|
||||
item_state = "hipster_glasses"
|
||||
|
||||
/obj/item/clothing/glasses/gglasses
|
||||
name = "Green Glasses"
|
||||
desc = "Forest green glasses, like the kind you'd wear when hatching a nasty scheme."
|
||||
icon_state = "gglasses"
|
||||
item_state = "gglasses"
|
||||
//Here lies green glasses, so ugly they died. RIP
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses
|
||||
desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes."
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
item_color="yellow"
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/gloves/color/fyellow //Cheap Chinese Crap
|
||||
desc = "These gloves are cheap knockoffs of the coveted ones - no way this can end badly."
|
||||
@@ -16,7 +16,7 @@
|
||||
siemens_coefficient = 1 //Set to a default of 1, gets overridden in New()
|
||||
permeability_coefficient = 0.05
|
||||
item_color="yellow"
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/gloves/color/fyellow/New()
|
||||
..()
|
||||
@@ -32,7 +32,7 @@
|
||||
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
|
||||
heat_protection = HANDS
|
||||
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
var/can_be_cut = 1
|
||||
|
||||
/obj/item/clothing/gloves/color/black/hos
|
||||
@@ -70,7 +70,7 @@
|
||||
desc = "These gloves will protect the wearer from electric shock."
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/gloves/color/rainbow
|
||||
name = "rainbow gloves"
|
||||
@@ -146,6 +146,7 @@
|
||||
heat_protection = HANDS
|
||||
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
|
||||
strip_delay = 60
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 70, acid = 50)
|
||||
|
||||
/obj/item/clothing/gloves/color/latex
|
||||
name = "latex gloves"
|
||||
@@ -156,7 +157,7 @@
|
||||
permeability_coefficient = 0.01
|
||||
item_color="white"
|
||||
transfer_prints = TRUE
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/gloves/color/latex/nitrile
|
||||
name = "nitrile gloves"
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
|
||||
heat_protection = HANDS
|
||||
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 30)
|
||||
resistance_flags = 0
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 70, acid = 30)
|
||||
|
||||
/obj/item/clothing/gloves/combat
|
||||
name = "combat gloves"
|
||||
@@ -36,8 +36,8 @@
|
||||
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
|
||||
heat_protection = HANDS
|
||||
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 50)
|
||||
resistance_flags = 0
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 50)
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/bracer
|
||||
@@ -53,5 +53,5 @@
|
||||
cold_protection = ARMS
|
||||
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
|
||||
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
armor = list(melee = 15, bullet = 35, laser = 35, energy = 20, bomb = 35, bio = 35, rad = 35, fire = 0, acid = 0)
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
desc = "A collectable welding helmet. Now with 80% less lead! Not for actual welding. Any welding done while wearing this helmet is done so at the owner's own risk!"
|
||||
icon_state = "welding"
|
||||
item_state = "welding"
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/head/collectable/slime
|
||||
name = "collectable slime hat"
|
||||
@@ -137,11 +137,11 @@
|
||||
desc = "Go Red! I mean Green! I mean Red! No Green!"
|
||||
icon_state = "thunderdome"
|
||||
item_state = "thunderdome"
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/head/collectable/swat
|
||||
name = "collectable SWAT helmet"
|
||||
desc = "That's not real blood. That's red paint." //Reference to the actual description
|
||||
icon_state = "swat"
|
||||
item_state = "swat"
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
var/brightness_on = 4 //luminosity when on
|
||||
var/on = 0
|
||||
item_color = "yellow" //Determines used sprites: hardhat[on]_[item_color] and hardhat[on]_[item_color]2 (lying down sprite)
|
||||
armor = list(melee = 15, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20, fire = 0, acid = 50)
|
||||
armor = list(melee = 15, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20, fire = 100, acid = 50)
|
||||
flags_inv = 0
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet_light)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
icon_state = "helmet"
|
||||
flags = HEADBANGPROTECT
|
||||
item_state = "helmet"
|
||||
armor = list(melee = 40, bullet = 30, laser = 30,energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50)
|
||||
armor = list(melee = 40, bullet = 30, laser = 30,energy = 10, bomb = 25, bio = 0, rad = 0, fire = 50, acid = 50)
|
||||
flags_inv = HIDEEARS
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT
|
||||
strip_delay = 60
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
flags_cover = HEADCOVERSEYES
|
||||
|
||||
dog_fashion = /datum/dog_fashion/head/helmet
|
||||
@@ -20,9 +20,6 @@
|
||||
/obj/item/clothing/head/helmet/New()
|
||||
..()
|
||||
|
||||
/obj/item/clothing/head/helmet/emp_act(severity)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/head/helmet/sec
|
||||
can_flashlight = 1
|
||||
|
||||
@@ -31,7 +28,7 @@
|
||||
desc = "A bulletproof combat helmet that excels in protecting the wearer against traditional projectile weaponry and explosives to a minor extent."
|
||||
icon_state = "helmetalt"
|
||||
item_state = "helmetalt"
|
||||
armor = list(melee = 15, bullet = 40, laser = 10, energy = 10, bomb = 40, bio = 0, rad = 0, fire = 0, acid = 50)
|
||||
armor = list(melee = 15, bullet = 40, laser = 10, energy = 10, bomb = 40, bio = 0, rad = 0, fire = 50, acid = 50)
|
||||
can_flashlight = 1
|
||||
dog_fashion = null
|
||||
|
||||
@@ -48,7 +45,7 @@
|
||||
alt_toggle_message = "You push the visor up on"
|
||||
can_toggle = 1
|
||||
flags = HEADBANGPROTECT
|
||||
armor = list(melee = 41, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0, fire = 0, acid = 50)
|
||||
armor = list(melee = 41, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0, fire = 50, acid = 50)
|
||||
flags_inv = HIDEEARS|HIDEFACE
|
||||
strip_delay = 80
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
@@ -102,7 +99,7 @@
|
||||
desc = "An extremely robust, space-worthy helmet in a nefarious red and black stripe pattern."
|
||||
icon_state = "swatsyndie"
|
||||
item_state = "swatsyndie"
|
||||
armor = list(melee = 40, bullet = 30, laser = 30,energy = 30, bomb = 50, bio = 90, rad = 20, fire = 20, acid = 50)
|
||||
armor = list(melee = 40, bullet = 30, laser = 30,energy = 30, bomb = 50, bio = 90, rad = 20, fire = 50, acid = 50)
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
|
||||
heat_protection = HEAD
|
||||
@@ -123,7 +120,7 @@
|
||||
flags_inv = HIDEEARS|HIDEHAIR
|
||||
icon_state = "thunderdome"
|
||||
item_state = "thunderdome"
|
||||
armor = list(melee = 40, bullet = 30, laser = 25,energy = 10, bomb = 25, bio = 10, rad = 0, fire = 0, acid = 50)
|
||||
armor = list(melee = 40, bullet = 30, laser = 25,energy = 10, bomb = 25, bio = 10, rad = 0, fire = 50, acid = 50)
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
|
||||
heat_protection = HEAD
|
||||
@@ -136,7 +133,8 @@
|
||||
desc = "An ancient helmet made of bronze and leather."
|
||||
flags_inv = HIDEEARS|HIDEHAIR
|
||||
flags_cover = HEADCOVERSEYES
|
||||
armor = list(melee = 25, bullet = 0, laser = 25, energy = 10, bomb = 10, bio = 0, rad = 0, fire = 0, acid = 50)
|
||||
armor = list(melee = 25, bullet = 0, laser = 25, energy = 10, bomb = 10, bio = 0, rad = 0, fire = 100, acid = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
icon_state = "roman"
|
||||
item_state = "roman"
|
||||
strip_delay = 100
|
||||
@@ -212,7 +210,7 @@
|
||||
desc = "An intimidating tribal helmet, it doesn't look very comfortable."
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
flags_cover = HEADCOVERSEYES
|
||||
armor = list(melee = 25, bullet = 25, laser = 25, energy = 10, bomb = 10, bio = 5, rad = 20, fire = 20, acid = 20)
|
||||
armor = list(melee = 25, bullet = 25, laser = 25, energy = 10, bomb = 10, bio = 5, rad = 20, fire = 40, acid = 20)
|
||||
icon_state = "skull"
|
||||
item_state = "skull"
|
||||
strip_delay = 100
|
||||
@@ -230,7 +228,7 @@
|
||||
|
||||
icon_state = state
|
||||
|
||||
if(istype(loc, /mob/living/carbon/human))
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/H = loc
|
||||
H.update_inv_head()
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
icon_state = "captain"
|
||||
item_state = "that"
|
||||
flags_inv = 0
|
||||
armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50)
|
||||
armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 50, acid = 50)
|
||||
strip_delay = 60
|
||||
dog_fashion = /datum/dog_fashion/head/captain
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
name = "head of personnel's cap"
|
||||
icon_state = "hopcap"
|
||||
desc = "The symbol of true bureaucratic micromanagement."
|
||||
armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50)
|
||||
armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 50, acid = 50)
|
||||
dog_fashion = /datum/dog_fashion/head/hop
|
||||
|
||||
//Chaplain
|
||||
@@ -59,7 +59,7 @@
|
||||
name = "detective's fedora"
|
||||
desc = "There's only one man who can sniff out the dirty stench of crime, and he's likely wearing this hat."
|
||||
icon_state = "detective"
|
||||
armor = list(melee = 25, bullet = 5, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 50)
|
||||
armor = list(melee = 25, bullet = 5, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0, fire = 30, acid = 50)
|
||||
var/candy_cooldown = 0
|
||||
pockets = /obj/item/weapon/storage/internal/pocket/small/detective
|
||||
dog_fashion = /datum/dog_fashion/head/detective
|
||||
@@ -96,7 +96,7 @@
|
||||
name = "head of security cap"
|
||||
desc = "The robust standard-issue cap of the Head of Security. For showing the officers who's in charge."
|
||||
icon_state = "hoscap"
|
||||
armor = list(melee = 40, bullet = 30, laser = 25, energy = 10, bomb = 25, bio = 10, rad = 0, fire = 0, acid = 60)
|
||||
armor = list(melee = 40, bullet = 30, laser = 25, energy = 10, bomb = 25, bio = 10, rad = 0, fire = 50, acid = 60)
|
||||
strip_delay = 80
|
||||
|
||||
/obj/item/clothing/head/HoS/beret
|
||||
@@ -108,7 +108,7 @@
|
||||
name = "warden's police hat"
|
||||
desc = "It's a special armored hat issued to the Warden of a security force. Protects the head from impacts."
|
||||
icon_state = "policehelm"
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 60)
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 30, acid = 60)
|
||||
strip_delay = 60
|
||||
dog_fashion = /datum/dog_fashion/head/warden
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
name = "security beret"
|
||||
desc = "A robust beret with the security insignia emblazoned on it. Uses reinforced fabric to offer sufficent protection."
|
||||
icon_state = "beret_badge"
|
||||
armor = list(melee = 40, bullet = 30, laser = 30,energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50)
|
||||
armor = list(melee = 40, bullet = 30, laser = 30,energy = 10, bomb = 25, bio = 0, rad = 0, fire = 20, acid = 50)
|
||||
strip_delay = 60
|
||||
dog_fashion = null
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
name = "warden's beret"
|
||||
desc = "A special beret with the Warden's insignia emblazoned on it. For wardens with class."
|
||||
icon_state = "wardenberet"
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50)
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 30, acid = 50)
|
||||
strip_delay = 60
|
||||
|
||||
/obj/item/clothing/head/beret/sec/navyofficer
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
desc = "It's good to be emperor."
|
||||
item_state = "that"
|
||||
flags_inv = 0
|
||||
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50)
|
||||
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 50, acid = 50)
|
||||
strip_delay = 80
|
||||
|
||||
/obj/item/clothing/head/powdered_wig
|
||||
@@ -222,7 +222,7 @@
|
||||
throw_range = 5
|
||||
w_class = 2
|
||||
attack_verb = list("warned", "cautioned", "smashed")
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/head/santa
|
||||
name = "santa hat"
|
||||
@@ -264,7 +264,8 @@
|
||||
name = "crown"
|
||||
desc = "A crown fit for a king, a petty king maybe."
|
||||
icon_state = "crown"
|
||||
armor = list(melee = 15, bullet = 0, laser = 0,energy = 15, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 50)
|
||||
armor = list(melee = 15, bullet = 0, laser = 0,energy = 15, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/head/crown/fancy
|
||||
name = "magnificent crown"
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// var/up = 0
|
||||
flash_protect = 2
|
||||
tint = 2
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 60)
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 60)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
visor_flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
@@ -63,7 +63,7 @@
|
||||
if(M.is_holding(src) || M.head == src)
|
||||
location = M.loc
|
||||
|
||||
if (istype(location, /turf))
|
||||
if(isturf(location))
|
||||
location.hotspot_expose(700, 1)
|
||||
|
||||
/obj/item/clothing/head/hardhat/cakehat/turn_on()
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
desc = "It's a robust baseball hat in tasteful red colour."
|
||||
icon_state = "secsoft"
|
||||
item_color = "sec"
|
||||
armor = list(melee = 30, bullet = 25, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50)
|
||||
armor = list(melee = 30, bullet = 25, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 20, acid = 50)
|
||||
strip_delay = 60
|
||||
dog_fashion = null
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
actions_types = list(/datum/action/item_action/adjust)
|
||||
flags_cover = MASKCOVERSMOUTH
|
||||
visor_flags_cover = MASKCOVERSMOUTH
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/mask/breath/attack_self(mob/user)
|
||||
adjustmask(user)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
// **** Welding gas mask ****
|
||||
|
||||
@@ -20,13 +20,14 @@
|
||||
materials = list(MAT_METAL=4000, MAT_GLASS=2000)
|
||||
flash_protect = 2
|
||||
tint = 2
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 55)
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 55)
|
||||
origin_tech = "materials=2;engineering=3"
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE
|
||||
flags_cover = MASKCOVERSEYES
|
||||
visor_flags_inv = HIDEEYES
|
||||
visor_flags_cover = MASKCOVERSEYES
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/mask/gas/welding/attack_self()
|
||||
toggle()
|
||||
@@ -61,7 +62,7 @@
|
||||
icon_state = "clown"
|
||||
item_state = "clown_hat"
|
||||
flags_cover = MASKCOVERSEYES
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
actions_types = list(/datum/action/item_action/adjust)
|
||||
dog_fashion = /datum/dog_fashion/head/clown
|
||||
|
||||
@@ -93,7 +94,7 @@
|
||||
icon_state = "sexyclown"
|
||||
item_state = "sexyclown"
|
||||
flags_cover = MASKCOVERSEYES
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/clothing/mask/gas/mime
|
||||
name = "mime mask"
|
||||
@@ -102,7 +103,7 @@
|
||||
icon_state = "mime"
|
||||
item_state = "mime"
|
||||
flags_cover = MASKCOVERSEYES
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
actions_types = list(/datum/action/item_action/adjust)
|
||||
|
||||
/obj/item/clothing/mask/gas/mime/attack_self(mob/user)
|
||||
@@ -132,7 +133,7 @@
|
||||
icon_state = "monkeymask"
|
||||
item_state = "monkeymask"
|
||||
flags_cover = MASKCOVERSEYES
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/clothing/mask/gas/sexymime
|
||||
name = "sexy mime mask"
|
||||
@@ -141,7 +142,7 @@
|
||||
icon_state = "sexymime"
|
||||
item_state = "sexymime"
|
||||
flags_cover = MASKCOVERSEYES
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/clothing/mask/gas/death_commando
|
||||
name = "Death Commando Mask"
|
||||
@@ -152,7 +153,7 @@
|
||||
name = "cyborg visor"
|
||||
desc = "Beep boop."
|
||||
icon_state = "death"
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/clothing/mask/gas/owl_mask
|
||||
name = "owl mask"
|
||||
@@ -160,7 +161,7 @@
|
||||
icon_state = "owl"
|
||||
flags = MASKINTERNALS
|
||||
flags_cover = MASKCOVERSEYES
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/clothing/mask/gas/carp
|
||||
name = "carp mask"
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
set category = "Object"
|
||||
set name = "HALT"
|
||||
set src in usr
|
||||
if(!istype(usr, /mob/living))
|
||||
if(!isliving(usr))
|
||||
return
|
||||
if(!can_use(usr))
|
||||
return
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
visor_flags_cover = MASKCOVERSMOUTH
|
||||
gas_transfer_coefficient = 0.90
|
||||
permeability_coefficient = 0.01
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 25, rad = 0)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 25, rad = 0, fire = 0, acid = 0)
|
||||
actions_types = list(/datum/action/item_action/adjust)
|
||||
|
||||
/obj/item/clothing/mask/surgical/attack_self(mob/user)
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
desc = "High speed, low drag combat boots."
|
||||
icon_state = "jackboots"
|
||||
item_state = "jackboots"
|
||||
armor = list(melee = 25, bullet = 25, laser = 25, energy = 25, bomb = 50, bio = 10, rad = 0, fire = 0, acid = 50)
|
||||
armor = list(melee = 25, bullet = 25, laser = 25, energy = 25, bomb = 50, bio = 10, rad = 0, fire = 70, acid = 50)
|
||||
strip_delay = 70
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
pockets = /obj/item/weapon/storage/internal/pocket/shoes
|
||||
|
||||
/obj/item/clothing/shoes/combat/swat //overpowered boots for death squads
|
||||
@@ -27,7 +27,7 @@
|
||||
desc = "High speed, no drag combat boots."
|
||||
permeability_coefficient = 0.01
|
||||
flags = NOSLIP
|
||||
armor = list(melee = 40, bullet = 30, laser = 25, energy = 25, bomb = 50, bio = 30, rad = 30, fire = 0, acid = 50)
|
||||
armor = list(melee = 40, bullet = 30, laser = 25, energy = 25, bomb = 50, bio = 30, rad = 30, fire = 90, acid = 50)
|
||||
|
||||
/obj/item/clothing/shoes/sandal
|
||||
desc = "A pair of rather plain, wooden sandals."
|
||||
@@ -51,8 +51,8 @@
|
||||
slowdown = SHOES_SLOWDOWN+1
|
||||
strip_delay = 50
|
||||
put_on_delay = 50
|
||||
resistance_flags = FIRE_PROOF
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 75)
|
||||
resistance_flags = 0
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 40, acid = 75)
|
||||
|
||||
/obj/item/clothing/shoes/galoshes/dry
|
||||
name = "absorbent galoshes"
|
||||
@@ -90,7 +90,7 @@
|
||||
item_color = "hosred"
|
||||
strip_delay = 50
|
||||
put_on_delay = 50
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
pockets = /obj/item/weapon/storage/internal/pocket/shoes
|
||||
|
||||
/obj/item/clothing/shoes/jackboots/fast
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
icon_state = "chronohelmet"
|
||||
item_state = "chronohelmet"
|
||||
slowdown = 1
|
||||
armor = list(melee = 60, bullet = 30/*bullet through the visor*/, laser = 60, energy = 60, bomb = 30, bio = 90, rad = 90, fire = 95, acid = 95)
|
||||
armor = list(melee = 60, bullet = 30/*bullet through the visor*/, laser = 60, energy = 60, bomb = 30, bio = 90, rad = 90, fire = 100, acid = 100)
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
var/obj/item/clothing/suit/space/chronos/suit = null
|
||||
|
||||
/obj/item/clothing/head/helmet/space/chronos/dropped()
|
||||
@@ -23,7 +24,8 @@
|
||||
icon_state = "chronosuit"
|
||||
item_state = "chronosuit"
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 30, bio = 90, rad = 90, fire = 95, acid = 95)
|
||||
armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 30, bio = 90, rad = 90, fire = 100, acid = 1000)
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
var/list/chronosafe_items = list(/obj/item/weapon/chrono_eraser, /obj/item/weapon/gun/energy/chrono_gun)
|
||||
var/list/hands_nodrop = list()
|
||||
var/obj/item/clothing/head/helmet/space/chronos/helmet = null
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding."
|
||||
icon_state = "hardsuit0-engineering"
|
||||
item_state = "eng_helm"
|
||||
obj_integrity = 200
|
||||
max_integrity = 200
|
||||
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 50, acid = 75)
|
||||
var/basestate = "hardsuit"
|
||||
var/brightness_on = 4 //luminosity when on
|
||||
@@ -80,6 +82,7 @@
|
||||
var/helmettype = /obj/item/clothing/head/helmet/space/hardsuit
|
||||
var/obj/item/weapon/tank/jetpack/suit/jetpack = null
|
||||
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/New()
|
||||
if(jetpack && ispath(jetpack))
|
||||
jetpack = new jetpack(src)
|
||||
@@ -142,16 +145,18 @@
|
||||
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding."
|
||||
icon_state = "hardsuit0-engineering"
|
||||
item_state = "eng_helm"
|
||||
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 50, acid = 75)
|
||||
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 100, acid = 75)
|
||||
item_color = "engineering"
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/engine
|
||||
name = "engineering hardsuit"
|
||||
desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding."
|
||||
icon_state = "hardsuit-engineering"
|
||||
item_state = "eng_hardsuit"
|
||||
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 50, acid = 75)
|
||||
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 100, acid = 75)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
//Atmospherics
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/engine/atmos
|
||||
@@ -319,7 +324,7 @@
|
||||
alt_desc = "An elite version of the syndicate helmet, with improved armour and fire shielding. It is in combat mode. Property of Gorlex Marauders."
|
||||
icon_state = "hardsuit0-syndielite"
|
||||
item_color = "syndielite"
|
||||
armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70, fire = 95, acid = 100)
|
||||
armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70, fire = 100, acid = 100)
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
|
||||
visor_flags_inv = 0
|
||||
@@ -335,7 +340,7 @@
|
||||
icon_state = "hardsuit0-syndielite"
|
||||
item_color = "syndielite"
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite
|
||||
armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70, fire = 95, acid = 100)
|
||||
armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70, fire = 100, acid = 100)
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
@@ -414,7 +419,7 @@
|
||||
desc = "A prototype helmet designed for research in a hazardous, low pressure environment. Scientific data flashes across the visor."
|
||||
icon_state = "hardsuit0-rd"
|
||||
item_color = "rd"
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
resistance_flags = ACID_PROOF
|
||||
var/onboard_hud_enabled = 0 //stops conflicts with another diag HUD
|
||||
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
|
||||
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 100, bio = 100, rad = 60, fire = 60, acid = 80)
|
||||
@@ -495,7 +500,8 @@
|
||||
icon_state = "capspace"
|
||||
item_state = "capspacehelmet"
|
||||
desc = "A special hardsuit helmet designed for only the most fashionable of military figureheads."
|
||||
armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 95)
|
||||
armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 100)
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/captain/attack_self()
|
||||
@@ -507,7 +513,8 @@
|
||||
icon_state = "caparmor"
|
||||
item_state = "capspacesuit"
|
||||
allowed = list(/obj/item/weapon/tank/internals, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs)
|
||||
armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 95)
|
||||
armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 100)
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/captain
|
||||
|
||||
//Clown
|
||||
@@ -545,7 +552,7 @@
|
||||
icon_state = "hardsuit-hos"
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/gun,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs)
|
||||
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50, fire = 95, acid = 100)
|
||||
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50, fire = 100, acid = 100)
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
var/current_charges = 3
|
||||
var/max_charges = 3 //How many charges total the shielding has
|
||||
@@ -585,7 +592,7 @@
|
||||
playsound(loc, 'sound/machines/ding.ogg', 50, 1)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
shield_state = "[shield_on]"
|
||||
if(istype(loc, /mob/living/carbon/human))
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/C = loc
|
||||
C.update_inv_wear_suit()
|
||||
|
||||
@@ -662,7 +669,7 @@
|
||||
icon_state = "hardsuit1-syndi"
|
||||
item_state = "syndie_hardsuit"
|
||||
item_color = "syndi"
|
||||
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 95, acid = 100)
|
||||
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 100, acid = 100)
|
||||
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/internals)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi
|
||||
slowdown = 0
|
||||
@@ -678,7 +685,7 @@
|
||||
icon_state = "hardsuit1-syndi"
|
||||
item_state = "syndie_helm"
|
||||
item_color = "syndi"
|
||||
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 95, acid = 100)
|
||||
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 100, acid = 100)
|
||||
|
||||
///SWAT version
|
||||
/obj/item/clothing/suit/space/hardsuit/shielded/swat
|
||||
@@ -690,10 +697,9 @@
|
||||
max_charges = 4
|
||||
current_charges = 4
|
||||
recharge_delay = 15
|
||||
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 95, acid = 95)
|
||||
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100)
|
||||
strip_delay = 130
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/swat
|
||||
dog_fashion = /datum/dog_fashion/back/deathsquad
|
||||
|
||||
@@ -703,8 +709,7 @@
|
||||
icon_state = "deathsquad"
|
||||
item_state = "deathsquad"
|
||||
item_color = "syndi"
|
||||
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 95, acid = 95)
|
||||
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100)
|
||||
strip_delay = 130
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
|
||||
resistance_flags = ACID_PROOF
|
||||
actions_types = list()
|
||||
@@ -49,7 +49,7 @@ Contains:
|
||||
icon_state = "heavy"
|
||||
item_state = "swat_suit"
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals,/obj/item/weapon/kitchen/knife/combat)
|
||||
armor = list(melee = 40, bullet = 30, laser = 30,energy = 30, bomb = 50, bio = 90, rad = 20, fire = 60, acid = 75)
|
||||
armor = list(melee = 40, bullet = 30, laser = 30,energy = 30, bomb = 50, bio = 90, rad = 20, fire = 100, acid = 100)
|
||||
strip_delay = 120
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
|
||||
@@ -59,7 +59,7 @@ Contains:
|
||||
icon_state = "beret_badge"
|
||||
flags = STOPSPRESSUREDMAGE
|
||||
flags_inv = 0
|
||||
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 80, acid = 80)
|
||||
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100)
|
||||
strip_delay = 130
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
@@ -74,7 +74,7 @@ Contains:
|
||||
flags_inv = 0
|
||||
w_class = 3
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals)
|
||||
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 80, acid = 80)
|
||||
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100)
|
||||
strip_delay = 130
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
name = "plasmaman suit"
|
||||
desc = "A special containment suit designed to protect a plasmaman's volatile body from outside exposure and quickly extinguish it in emergencies."
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_casing,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 0, fire = 95, acid = 75)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 0, fire = 100, acid = 75)
|
||||
resistance_flags = FIRE_PROOF
|
||||
icon_state = "plasmaman_suit"
|
||||
item_state = "plasmaman_suit"
|
||||
var/next_extinguish = 0
|
||||
@@ -41,5 +42,7 @@
|
||||
item_color = "plasma" //needed for the helmet lighting
|
||||
item_state = "plasmaman-helm"
|
||||
strip_delay = 80
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 0, fire = 100, acid = 75)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
|
||||
|
||||
@@ -7,8 +7,10 @@
|
||||
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
|
||||
strip_delay = 60
|
||||
put_on_delay = 40
|
||||
resistance_flags = FIRE_PROOF
|
||||
armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50)
|
||||
obj_integrity = 200
|
||||
max_integrity = 200
|
||||
resistance_flags = 0
|
||||
armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 50, acid = 50)
|
||||
|
||||
/obj/item/clothing/suit/armor/vest
|
||||
name = "armor"
|
||||
@@ -16,7 +18,7 @@
|
||||
icon_state = "armoralt"
|
||||
item_state = "armoralt"
|
||||
blood_overlay_type = "armor"
|
||||
armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 75)
|
||||
armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 50, acid = 75)
|
||||
dog_fashion = /datum/dog_fashion/back
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/alt
|
||||
@@ -34,7 +36,7 @@
|
||||
icon_state = "hos"
|
||||
item_state = "greatcoat"
|
||||
body_parts_covered = CHEST|GROIN|ARMS|LEGS
|
||||
armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 90)
|
||||
armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 70, acid = 90)
|
||||
cold_protection = CHEST|GROIN|LEGS|ARMS
|
||||
heat_protection = CHEST|GROIN|LEGS|ARMS
|
||||
strip_delay = 80
|
||||
@@ -56,7 +58,7 @@
|
||||
cold_protection = CHEST|GROIN|ARMS|HANDS
|
||||
heat_protection = CHEST|GROIN|ARMS|HANDS
|
||||
strip_delay = 70
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
dog_fashion = null
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/warden/alt
|
||||
@@ -80,8 +82,9 @@
|
||||
icon_state = "capcarapace"
|
||||
item_state = "armor"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
armor = list(melee = 50, bullet = 40, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 90, acid = 90)
|
||||
armor = list(melee = 50, bullet = 40, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 100, acid = 90)
|
||||
dog_fashion = null
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/capcarapace/alt
|
||||
name = "captain's parade jacket"
|
||||
@@ -127,7 +130,8 @@
|
||||
icon_state = "armor_reflec"
|
||||
item_state = "armor_reflec"
|
||||
blood_overlay_type = "armor"
|
||||
armor = list(melee = 10, bullet = 10, laser = 60, energy = 50, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 50)
|
||||
armor = list(melee = 10, bullet = 10, laser = 60, energy = 50, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
var/hit_reflect_chance = 40
|
||||
|
||||
/obj/item/clothing/suit/armor/laserproof/IsReflect(def_zone)
|
||||
@@ -141,7 +145,7 @@
|
||||
desc = "An armored vest with a detective's badge on it."
|
||||
icon_state = "detective-armor"
|
||||
allowed = list(/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/device/flashlight,/obj/item/weapon/gun/energy,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/device/detective_scanner,/obj/item/device/taperecorder,/obj/item/weapon/melee/classic_baton/telescopic)
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
dog_fashion = null
|
||||
|
||||
|
||||
@@ -155,7 +159,7 @@
|
||||
icon_state = "reactiveoff"
|
||||
item_state = "reactiveoff"
|
||||
blood_overlay_type = "armor"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 80)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100)
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
hit_reaction_chance = 50
|
||||
@@ -341,7 +345,7 @@
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
|
||||
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 95, acid = 95)
|
||||
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 90, acid = 90)
|
||||
|
||||
/obj/item/clothing/suit/armor/heavy
|
||||
name = "heavy armor"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
flags = THICKMATERIAL
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20, fire = 30, acid = 100)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
resistance_flags = ACID_PROOF
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
|
||||
/obj/item/clothing/suit/bio_suit
|
||||
@@ -26,7 +26,7 @@
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
strip_delay = 70
|
||||
put_on_delay = 70
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
resistance_flags = ACID_PROOF
|
||||
|
||||
//Standard biosuit, orange stripe
|
||||
/obj/item/clothing/head/bio_hood/general
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
icon_state = "dragon"
|
||||
desc = "A suit of armour fashioned from the remains of an ash drake. "
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/weapon/gun/energy/kinetic_accelerator, /obj/item/weapon/pickaxe, /obj/item/weapon/twohanded/spear)
|
||||
armor = list(melee = 70, bullet = 30, laser = 50, energy = 40, bomb = 70, bio = 60, rad = 50, fire = 50, acid = 100)
|
||||
armor = list(melee = 70, bullet = 30, laser = 50, energy = 40, bomb = 70, bio = 60, rad = 50, fire = 100, acid = 100)
|
||||
hooded = 1
|
||||
hoodtype = /obj/item/clothing/head/cloakhood/drake
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
@@ -78,7 +78,7 @@
|
||||
name = "drake helm"
|
||||
icon_state = "dragon"
|
||||
desc = "The skull of a dragon."
|
||||
armor = list(melee = 70, bullet = 30, laser = 50, energy = 40, bomb = 70, bio = 60, rad = 50, fire = 50, acid = 100)
|
||||
armor = list(melee = 70, bullet = 30, laser = 50, energy = 40, bomb = 70, bio = 60, rad = 50, fire = 100, acid = 100)
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
item_state = "hazard"
|
||||
blood_overlay_type = "armor"
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/device/t_scanner,/obj/item/device/radio)
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
//Lawyer
|
||||
/obj/item/clothing/suit/toggle/lawyer
|
||||
name = "blue suit jacket"
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
blood_overlay_type = "armor"
|
||||
body_parts_covered = CHEST
|
||||
allowed = list (/obj/item/weapon/gun/energy/laser/bluetag)
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/suit/redtag
|
||||
name = "red laser tag armor"
|
||||
@@ -26,7 +26,7 @@
|
||||
blood_overlay_type = "armor"
|
||||
body_parts_covered = CHEST
|
||||
allowed = list (/obj/item/weapon/gun/energy/laser/redtag)
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/*
|
||||
* Costume
|
||||
@@ -89,7 +89,7 @@
|
||||
w_class = 3
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/suit/hastur
|
||||
name = "\improper Hastur's robe"
|
||||
@@ -342,7 +342,7 @@
|
||||
desc = "Pompadour not included."
|
||||
icon_state = "leatherjacket"
|
||||
item_state = "hostrench"
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/weapon/gun/projectile/automatic/pistol,/obj/item/weapon/gun/projectile/revolver,/obj/item/weapon/gun/projectile/revolver/detective,/obj/item/device/radio)
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
desc = "Use in case of bomb."
|
||||
icon_state = "bombsuit"
|
||||
flags = THICKMATERIAL
|
||||
armor = list(melee = 20, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0, fire = 25, acid = 50)
|
||||
armor = list(melee = 20, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0, fire = 80, acid = 50)
|
||||
flags_inv = HIDEFACE|HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT
|
||||
@@ -66,7 +66,7 @@
|
||||
strip_delay = 70
|
||||
put_on_delay = 70
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
|
||||
/obj/item/clothing/suit/bomb_suit
|
||||
@@ -80,7 +80,7 @@
|
||||
flags = THICKMATERIAL
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
slowdown = 2
|
||||
armor = list(melee = 20, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0, fire = 25, acid = 50)
|
||||
armor = list(melee = 20, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0, fire = 80, acid = 50)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
|
||||
@@ -88,7 +88,7 @@
|
||||
min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT
|
||||
strip_delay = 70
|
||||
put_on_delay = 70
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
|
||||
/obj/item/clothing/head/bomb_hood/security
|
||||
@@ -114,7 +114,7 @@
|
||||
strip_delay = 60
|
||||
put_on_delay = 60
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/suit/radiation
|
||||
name = "radiation suit"
|
||||
@@ -132,4 +132,4 @@
|
||||
strip_delay = 60
|
||||
put_on_delay = 60
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
gas_transfer_coefficient = 1
|
||||
permeability_coefficient = 1
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
dog_fashion = /datum/dog_fashion/head/blue_wizard
|
||||
|
||||
/obj/item/clothing/head/wizard/marisa
|
||||
@@ -124,7 +124,7 @@
|
||||
gas_transfer_coefficient = 1
|
||||
permeability_coefficient = 1
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/clothing/head/wizard/marisa/fake
|
||||
name = "witch hat"
|
||||
@@ -133,7 +133,7 @@
|
||||
gas_transfer_coefficient = 1
|
||||
permeability_coefficient = 1
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/marisa/fake
|
||||
name = "witch robe"
|
||||
@@ -143,7 +143,7 @@
|
||||
gas_transfer_coefficient = 1
|
||||
permeability_coefficient = 1
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/paper
|
||||
name = "papier-mâché robe"
|
||||
@@ -162,7 +162,7 @@
|
||||
set category = "Object"
|
||||
set name = "Summon Stick Minions"
|
||||
set src in usr
|
||||
if(!istype(usr, /mob/living))
|
||||
if(!isliving(usr))
|
||||
return
|
||||
if(!robe_charge)
|
||||
usr << "<span class='warning'>\The robe's internal magic supply is still recharging!</span>"
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
icon_state = "black"
|
||||
item_state = "bl_suit"
|
||||
item_color = "black"
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/under/color/grey
|
||||
name = "grey jumpsuit"
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
icon_state = "chiefengineer"
|
||||
item_state = "gy_suit"
|
||||
item_color = "chief"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10, fire = 40, acid = 40)
|
||||
resistance_flags = FIRE_PROOF
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10, fire = 80, acid = 40)
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/under/rank/atmospheric_technician
|
||||
desc = "It's a jumpsuit worn by atmospheric technicians."
|
||||
@@ -14,7 +14,7 @@
|
||||
icon_state = "atmos"
|
||||
item_state = "atmos_suit"
|
||||
item_color = "atmos"
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/under/rank/engineer
|
||||
desc = "It's an orange high visibility jumpsuit worn by engineers. It has minor radiation shielding."
|
||||
@@ -22,11 +22,13 @@
|
||||
icon_state = "engine"
|
||||
item_state = "engi_suit"
|
||||
item_color = "engine"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10, fire = 30, acid = 20)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10, fire = 60, acid = 20)
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/under/rank/roboticist
|
||||
desc = "It's a slimming black with reinforced seams; great for industrial work."
|
||||
name = "roboticist's jumpsuit"
|
||||
icon_state = "robotics"
|
||||
item_state = "robotics"
|
||||
item_color = "robotics"
|
||||
item_color = "robotics"
|
||||
resistance_flags = 0
|
||||
@@ -37,7 +37,7 @@
|
||||
item_state = "armor"
|
||||
can_adjust = 0
|
||||
strip_delay = 100
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/under/waiter
|
||||
name = "waiter's outfit"
|
||||
@@ -125,7 +125,7 @@
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
|
||||
can_adjust = 0
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/under/acj
|
||||
name = "administrative cybernetic jumpsuit"
|
||||
@@ -378,7 +378,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
fitted = NO_FEMALE_UNIFORM
|
||||
can_adjust = 0
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/clothing/under/sundress
|
||||
name = "sundress"
|
||||
|
||||
@@ -37,4 +37,4 @@
|
||||
item_color = "trackpants"
|
||||
can_adjust = 0
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
@@ -48,7 +48,11 @@
|
||||
U.cut_overlays()
|
||||
U.hastie = null
|
||||
|
||||
/obj/item/clothing/tie/proc/on_uniform_equip(obj/item/clothing/under/U)
|
||||
return
|
||||
|
||||
/obj/item/clothing/tie/proc/on_uniform_dropped(obj/item/clothing/under/U)
|
||||
return
|
||||
|
||||
/obj/item/clothing/tie/blue
|
||||
name = "blue tie"
|
||||
@@ -367,3 +371,36 @@
|
||||
icon_state = "talisman"
|
||||
item_color = "talisman"
|
||||
armor = list(melee = 5, bullet = 5, laser = 5, energy = 5, bomb = 20, bio = 20, rad = 5, fire = 0, acid = 25)
|
||||
|
||||
//////////////
|
||||
//OBJECTION!//
|
||||
//////////////
|
||||
|
||||
/obj/item/clothing/tie/lawyers_badge
|
||||
name = "attorney's badge"
|
||||
desc = "Fills you with the conviction of JUSTICE. Lawyers tend to want to show it to everyone they meet."
|
||||
icon_state = "lawyerbadge"
|
||||
item_color = "lawyerbadge"
|
||||
|
||||
/obj/item/clothing/tie/lawyers_badge/attach(obj/item/clothing/under/U, user)
|
||||
if(!..())
|
||||
return 0
|
||||
if(isliving(U.loc))
|
||||
on_uniform_equip(U)
|
||||
|
||||
/obj/item/clothing/tie/lawyers_badge/detach(obj/item/clothing/under/U, user)
|
||||
..()
|
||||
if(isliving(U.loc))
|
||||
on_uniform_dropped(U)
|
||||
|
||||
/obj/item/clothing/tie/lawyers_badge/on_uniform_equip(obj/item/clothing/under/U)
|
||||
if(!isliving(U.loc))
|
||||
return
|
||||
var/mob/living/L = U.loc
|
||||
L.bubble_icon = "lawyer"
|
||||
|
||||
/obj/item/clothing/tie/lawyers_badge/on_uniform_dropped(obj/item/clothing/under/U)
|
||||
if(!isliving(U.loc))
|
||||
return
|
||||
var/mob/living/L = U.loc
|
||||
L.bubble_icon = initial(L.bubble_icon)
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = attached_to
|
||||
if(!istype(G))
|
||||
return
|
||||
else if(G.health && !G.purpose_fulfilled)
|
||||
else if(G.obj_integrity && !G.purpose_fulfilled)
|
||||
return "<div align='center' valign='middle' style='position:relative; top:0px; left:6px'>[G.get_arrival_text(FALSE)]</div>"
|
||||
|
||||
/obj/effect/countdown/transformer
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
. = list()
|
||||
for(var/obj/item/I in user.held_items)
|
||||
. += I
|
||||
if(!istype(user.loc, /turf))
|
||||
if(!isturf(user.loc))
|
||||
return
|
||||
var/list/L = block(get_step(user, SOUTHWEST), get_step(user, NORTHEAST))
|
||||
for(var/A in L)
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "sc_Ace of Hearts_syndicate" // shut up
|
||||
var/message = "A generic message of love or whatever."
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
w_class = 1
|
||||
|
||||
/obj/item/weapon/valentine/New()
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
var/cracked = 0
|
||||
|
||||
/obj/item/weapon/toy/xmas_cracker/attack(mob/target, mob/user)
|
||||
if( !cracked && istype(target,/mob/living/carbon/human) && (target.stat == CONSCIOUS) && !target.get_active_held_item() )
|
||||
if( !cracked && ishuman(target) && (target.stat == CONSCIOUS) && !target.get_active_held_item() )
|
||||
target.visible_message("[user] and [target] pop \an [src]! *pop*", "<span class='notice'>You pull \an [src] with [target]! *pop*</span>", "<span class='italics'>You hear a pop.</span>")
|
||||
var/obj/item/weapon/paper/Joke = new /obj/item/weapon/paper(user.loc)
|
||||
Joke.name = "[pick("awful","terrible","unfunny")] joke"
|
||||
|
||||
@@ -76,12 +76,12 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
|
||||
x = clong.x
|
||||
y = clong.y
|
||||
|
||||
if (istype(clong, /turf) || istype(clong, /obj))
|
||||
if(isturf(clong) || isobj(clong))
|
||||
if(clong.density)
|
||||
clong.ex_act(2)
|
||||
|
||||
else if (istype(clong, /mob))
|
||||
if(istype(clong, /mob/living/carbon/human))
|
||||
else if(ismob(clong))
|
||||
if(ishuman(clong))
|
||||
var/mob/living/carbon/human/H = clong
|
||||
H.visible_message("<span class='danger'>[H.name] is penetrated by an immovable rod!</span>" , "<span class='userdanger'>The rod penetrates you!</span>" , "<span class ='danger'>You hear a CLANG!</span>")
|
||||
H.adjustBruteLoss(160)
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
if(turfs.len) //Pick a turf to spawn at if we can
|
||||
var/turf/T = pick(turfs)
|
||||
new/obj/structure/spacevine_controller(T) //spawn a controller at turf
|
||||
new/obj/effect/spacevine_controller(T) //spawn a controller at turf
|
||||
|
||||
|
||||
/datum/spacevine_mutation
|
||||
@@ -328,8 +328,8 @@
|
||||
/datum/spacevine_mutation/woodening/on_grow(obj/structure/spacevine/holder)
|
||||
if(holder.energy)
|
||||
holder.density = 1
|
||||
holder.maxhealth = 100
|
||||
holder.health = holder.maxhealth
|
||||
holder.max_integrity = 100
|
||||
holder.obj_integrity = holder.max_integrity
|
||||
|
||||
/datum/spacevine_mutation/woodening/on_hit(obj/structure/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage)
|
||||
if(I.is_sharp())
|
||||
@@ -362,10 +362,10 @@
|
||||
layer = SPACEVINE_LAYER
|
||||
mouse_opacity = 2 //Clicking anywhere on the turf is good enough
|
||||
pass_flags = PASSTABLE | PASSGRILLE
|
||||
var/health = 50
|
||||
var/maxhealth = 50
|
||||
obj_integrity = 50
|
||||
max_integrity = 50
|
||||
var/energy = 0
|
||||
var/obj/structure/spacevine_controller/master = null
|
||||
var/obj/effect/spacevine_controller/master = null
|
||||
var/list/mutations = list()
|
||||
|
||||
/obj/structure/spacevine/examine(mob/user)
|
||||
@@ -415,39 +415,36 @@
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/spacevine/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if (!W || !user || !W.type)
|
||||
return
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
var/force = W.force
|
||||
|
||||
if(istype(W, /obj/item/weapon/scythe))
|
||||
force = force * 4
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
for(var/obj/structure/spacevine/B in orange(1,src))
|
||||
B.health = health - force
|
||||
if(B.health < 1)
|
||||
qdel(B)
|
||||
|
||||
health = health - force
|
||||
|
||||
if(health < 1)
|
||||
qdel(src)
|
||||
|
||||
B.take_damage(W.force * 4, BRUTE, "melee", 1)
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
|
||||
if(W.is_sharp())
|
||||
force = force * 4
|
||||
|
||||
if(W && W.damtype == "fire")
|
||||
force = force * 4
|
||||
/obj/structure/spacevine/attacked_by(obj/item/I, mob/living/user)
|
||||
var/damage_dealt = I.force
|
||||
if(I.is_sharp())
|
||||
damage_dealt *= 4
|
||||
if(I.damtype == BURN)
|
||||
damage_dealt *= 4
|
||||
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
force = SM.on_hit(src, user, W, force) //on_hit now takes override damage as arg and returns new value for other mutations to permutate further
|
||||
damage_dealt = SM.on_hit(src, user, I, force) //on_hit now takes override damage as arg and returns new value for other mutations to permutate further
|
||||
take_damage(damage_dealt, I.damtype, "melee", 1)
|
||||
|
||||
health = health - force
|
||||
if(health < 1)
|
||||
qdel(src)
|
||||
|
||||
..()
|
||||
/obj/structure/spacevine/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||
switch(damage_type)
|
||||
if(BRUTE)
|
||||
if(damage_amount)
|
||||
playsound(src, 'sound/weapons/slash.ogg', 50, 1)
|
||||
else
|
||||
playsound(src, 'sound/weapons/tap.ogg', 50, 1)
|
||||
if(BURN)
|
||||
playsound(src.loc, 'sound/items/Welder.ogg', 100, 1)
|
||||
|
||||
/obj/structure/spacevine/Crossed(mob/crosser)
|
||||
if(isliving(crosser))
|
||||
@@ -469,7 +466,7 @@
|
||||
/obj/structure/spacevine/attack_alien(mob/living/user)
|
||||
eat(user)
|
||||
|
||||
/obj/structure/spacevine_controller
|
||||
/obj/effect/spacevine_controller
|
||||
invisibility = INVISIBILITY_ABSTRACT
|
||||
var/list/obj/structure/spacevine/vines = list()
|
||||
var/list/growth_queue = list()
|
||||
@@ -478,7 +475,7 @@
|
||||
var/list/mutations_list = list()
|
||||
var/mutativness = 1
|
||||
|
||||
/obj/structure/spacevine_controller/New(loc, list/muts, mttv, spreading)
|
||||
/obj/effect/spacevine_controller/New(loc, list/muts, mttv, spreading)
|
||||
spawn_spacevine_piece(loc, , muts)
|
||||
START_PROCESSING(SSobj, src)
|
||||
init_subtypes(/datum/spacevine_mutation/, mutations_list)
|
||||
@@ -488,20 +485,20 @@
|
||||
spread_cap *= spreading / 50
|
||||
spread_multiplier /= spreading / 50
|
||||
|
||||
/obj/structure/spacevine_controller/ex_act() //only killing all vines will end this suffering
|
||||
/obj/effect/spacevine_controller/ex_act() //only killing all vines will end this suffering
|
||||
return
|
||||
|
||||
/obj/structure/spacevine_controller/singularity_act()
|
||||
/obj/effect/spacevine_controller/singularity_act()
|
||||
return
|
||||
|
||||
/obj/structure/spacevine_controller/singularity_pull()
|
||||
/obj/effect/spacevine_controller/singularity_pull()
|
||||
return
|
||||
|
||||
/obj/structure/spacevine_controller/Destroy()
|
||||
/obj/effect/spacevine_controller/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/structure/spacevine_controller/proc/spawn_spacevine_piece(turf/location, obj/structure/spacevine/parent, list/muts)
|
||||
/obj/effect/spacevine_controller/proc/spawn_spacevine_piece(turf/location, obj/structure/spacevine/parent, list/muts)
|
||||
var/obj/structure/spacevine/SV = new(location)
|
||||
growth_queue += SV
|
||||
vines += SV
|
||||
@@ -520,7 +517,7 @@
|
||||
for(var/datum/spacevine_mutation/SM in SV.mutations)
|
||||
SM.on_birth(SV)
|
||||
|
||||
/obj/structure/spacevine_controller/process()
|
||||
/obj/effect/spacevine_controller/process()
|
||||
if(!vines)
|
||||
qdel(src) //space vines exterminated. Remove the controller
|
||||
return
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
var/interval = 2
|
||||
var/list/vents = list()
|
||||
var/list/gunk = list("water","carbon","flour","radium","toxin","cleaner","nutriment","condensedcapsaicin","mushroomhallucinogen","lube",
|
||||
"plantbgone","banana","charcoal","space_drugs","morphine","holywater","ethanol","hot_coco","facid")
|
||||
"plantbgone","banana","charcoal","space_drugs","morphine","holywater","ethanol","hot_coco","sacid")
|
||||
|
||||
/datum/round_event/vent_clog/announce()
|
||||
priority_announce("The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur.", "Atmospherics alert")
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
ruins_wizard_loadout = 1
|
||||
|
||||
for(var/mob/living/carbon/human/H in living_mob_list)
|
||||
if(ruins_spaceworthiness && (H.z != 1 || istype(H.loc, /turf/open/space) || isplasmaman(H)))
|
||||
if(ruins_spaceworthiness && (H.z != 1 || isspaceturf(H.loc) || isplasmaman(H)))
|
||||
continue //#savetheminers
|
||||
if(ruins_wizard_loadout && H.mind && ((H.mind in ticker.mode.wizards) || (H.mind in ticker.mode.apprentices)))
|
||||
continue
|
||||
|
||||
@@ -13,5 +13,5 @@
|
||||
if(activeFor >= 30 * countdown) // 0 seconds : 2 animals | 30 seconds : 4 animals | 1 minute : 8 animals
|
||||
countdown += 1
|
||||
for(var/mob/living/simple_animal/F in living_mob_list) //If you cull the heard before the next replication, things will be easier for you
|
||||
if(!istype(F, /mob/living/simple_animal/hostile))
|
||||
if(!ishostile(F))
|
||||
new F.type(F.loc)
|
||||
@@ -51,6 +51,7 @@
|
||||
user << "<span class='danger'>[target] catches fire!</span>"
|
||||
if(target.resistance_flags & (LAVA_PROOF|FIRE_PROOF))
|
||||
target.resistance_flags &= ~(LAVA_PROOF|FIRE_PROOF)
|
||||
target.resistance_flags |= FLAMMABLE
|
||||
target.fire_act()
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -363,7 +363,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
var/collapse
|
||||
var/image/down
|
||||
|
||||
var/health = 100
|
||||
obj_integrity = 100
|
||||
|
||||
/obj/effect/fake_attacker/attackby(obj/item/weapon/P, mob/living/user, params)
|
||||
step_away(src,my_target,2)
|
||||
@@ -373,7 +373,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
my_target.visible_message("<span class='danger'>[my_target] flails around wildly.</span>", \
|
||||
"<span class='danger'>[my_target] has attacked [src]!</span>")
|
||||
|
||||
src.health -= P.force
|
||||
obj_integrity -= P.force
|
||||
|
||||
/obj/effect/fake_attacker/Crossed(mob/M, somenumber)
|
||||
if(M == my_target)
|
||||
@@ -410,7 +410,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
|
||||
/obj/effect/fake_attacker/proc/attack_loop()
|
||||
while(1)
|
||||
sleep(rand(5,10))
|
||||
if(src.health < 0)
|
||||
if(obj_integrity < 0)
|
||||
collapse()
|
||||
continue
|
||||
if(get_dist(src,my_target) > 1)
|
||||
@@ -622,7 +622,7 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite
|
||||
var/list/slots_free = list(l,r)
|
||||
if(l_hand) slots_free -= l
|
||||
if(r_hand) slots_free -= r
|
||||
if(istype(src,/mob/living/carbon/human))
|
||||
if(ishuman(src))
|
||||
var/mob/living/carbon/human/H = src
|
||||
if(!H.belt) slots_free += ui_belt
|
||||
if(!H.l_store) slots_free += ui_storage1
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
var/gulp_size = 5 //This is now officially broken ... need to think of a nice way to fix it.
|
||||
possible_transfer_amounts = list(5,10,15,20,25,30,50)
|
||||
volume = 50
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/New()
|
||||
..()
|
||||
@@ -74,7 +74,7 @@
|
||||
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
user << "<span class='notice'>You transfer [trans] units of the solution to [target].</span>"
|
||||
|
||||
if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell
|
||||
if(iscyborg(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)
|
||||
addtimer(reagents, "add_reagent", 600, FALSE, refill, trans)
|
||||
@@ -105,6 +105,7 @@
|
||||
volume = 5
|
||||
flags = CONDUCT | OPENCONTAINER
|
||||
spillable = 1
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/trophy/gold_cup
|
||||
name = "gold cup"
|
||||
|
||||
@@ -7,21 +7,10 @@
|
||||
amount_per_transfer_from_this = 10
|
||||
volume = 50
|
||||
materials = list(MAT_GLASS=500)
|
||||
resistance_flags = 0
|
||||
burntime = 5
|
||||
obj_integrity = 20
|
||||
max_integrity = 20
|
||||
spillable = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fire_act()
|
||||
if(!reagents.total_volume)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/burn()
|
||||
reagents.total_volume = 0 //Burns away all the alcohol :(
|
||||
reagents.reagent_list.Cut()
|
||||
on_reagent_change()
|
||||
extinguish()
|
||||
return
|
||||
resistance_flags = ACID_PROOF
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/on_reagent_change()
|
||||
cut_overlays()
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/obj/item/weapon/reagent_containers/food
|
||||
possible_transfer_amounts = list()
|
||||
volume = 50 //Sets the default container amount for all food items.
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/New()
|
||||
..()
|
||||
|
||||
@@ -176,12 +176,6 @@
|
||||
list_reagents = list("nutriment" = 3, "toxin" = 5)
|
||||
icon_state = "goliathmeat"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/goliath/burn()
|
||||
visible_message("\The [src] finishes cooking!")
|
||||
new/obj/item/weapon/reagent_containers/food/snacks/meat/steak/goliath/(src.loc)
|
||||
SSobj.burning -= src
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/meatwheat
|
||||
name = "meatwheat clump"
|
||||
desc = "This doesn't look like meat, but your standards aren't <i>that</i> high to begin with."
|
||||
|
||||
@@ -25,6 +25,12 @@
|
||||
mixer = new /obj/item/weapon/reagent_containers(src, MIXER_CAPACITY)
|
||||
mixer.name = "Mixer"
|
||||
|
||||
/obj/machinery/food_cart/Destroy()
|
||||
if(mixer)
|
||||
qdel(mixer)
|
||||
mixer = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/food_cart/attack_hand(mob/user)
|
||||
user.set_machine(src)
|
||||
interact(user)
|
||||
@@ -150,6 +156,11 @@
|
||||
usr << browse(null,"window=foodcart")
|
||||
return
|
||||
|
||||
/obj/machinery/food_cart/deconstruct(disassembled = TRUE)
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
new /obj/item/stack/sheet/metal(loc, 4)
|
||||
qdel(src)
|
||||
|
||||
#undef STORAGE_CAPACITY
|
||||
#undef LIQUID_CAPACIY
|
||||
#undef MIXER_CAPACITY
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
var/dispense_flavour = ICECREAM_VANILLA
|
||||
var/flavour_name = "vanilla"
|
||||
flags = OPENCONTAINER
|
||||
obj_integrity = 300
|
||||
max_integrity = 300
|
||||
|
||||
/obj/machinery/icecream_vat/proc/get_ingredient_list(type)
|
||||
switch(type)
|
||||
@@ -206,6 +208,12 @@
|
||||
reagents.add_reagent("singulo", 2)
|
||||
ice_creamed = 1
|
||||
|
||||
/obj/machinery/icecream_vat/deconstruct(disassembled = TRUE)
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
new /obj/item/stack/sheet/metal(loc, 4)
|
||||
qdel(src)
|
||||
|
||||
|
||||
#undef ICECREAM_VANILLA
|
||||
#undef ICECREAM_CHOCOLATE
|
||||
#undef ICECREAM_STRAWBERRY
|
||||
|
||||
@@ -49,14 +49,6 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/machinery/smartfridge/on_construction()
|
||||
for(var/datum/A in contents)
|
||||
qdel(A)
|
||||
|
||||
/obj/machinery/smartfridge/on_deconstruction()
|
||||
for(var/atom/movable/A in contents)
|
||||
A.loc = loc
|
||||
|
||||
/obj/machinery/smartfridge/RefreshParts()
|
||||
for(var/obj/item/weapon/stock_parts/matter_bin/B in component_parts)
|
||||
max_n_of_items = 1500 * B.rating
|
||||
@@ -95,44 +87,44 @@
|
||||
updateUsrDialog()
|
||||
return
|
||||
|
||||
if(stat)
|
||||
return 0
|
||||
if(!stat)
|
||||
|
||||
if(contents.len >= max_n_of_items)
|
||||
user << "<span class='warning'>\The [src] is full!</span>"
|
||||
return 0
|
||||
|
||||
if(accept_check(O))
|
||||
load(O)
|
||||
user.visible_message("[user] has added \the [O] to \the [src].", "<span class='notice'>You add \the [O] to \the [src].</span>")
|
||||
updateUsrDialog()
|
||||
return 1
|
||||
|
||||
if(istype(O, /obj/item/weapon/storage/bag))
|
||||
var/obj/item/weapon/storage/P = O
|
||||
var/loaded = 0
|
||||
for(var/obj/G in P.contents)
|
||||
if(contents.len >= max_n_of_items)
|
||||
break
|
||||
if(accept_check(G))
|
||||
load(G)
|
||||
loaded++
|
||||
updateUsrDialog()
|
||||
|
||||
if(loaded)
|
||||
if(contents.len >= max_n_of_items)
|
||||
user.visible_message("[user] loads \the [src] with \the [O].", \
|
||||
"<span class='notice'>You fill \the [src] with \the [O].</span>")
|
||||
else
|
||||
user.visible_message("[user] loads \the [src] with \the [O].", \
|
||||
"<span class='notice'>You load \the [src] with \the [O].</span>")
|
||||
if(O.contents.len > 0)
|
||||
user << "<span class='warning'>Some items are refused.</span>"
|
||||
else
|
||||
user << "<span class='warning'>There is nothing in [O] to put in [src]!</span>"
|
||||
if(contents.len >= max_n_of_items)
|
||||
user << "<span class='warning'>\The [src] is full!</span>"
|
||||
return 0
|
||||
|
||||
else if(user.a_intent != "harm")
|
||||
if(accept_check(O))
|
||||
load(O)
|
||||
user.visible_message("[user] has added \the [O] to \the [src].", "<span class='notice'>You add \the [O] to \the [src].</span>")
|
||||
updateUsrDialog()
|
||||
return 1
|
||||
|
||||
if(istype(O, /obj/item/weapon/storage/bag))
|
||||
var/obj/item/weapon/storage/P = O
|
||||
var/loaded = 0
|
||||
for(var/obj/G in P.contents)
|
||||
if(contents.len >= max_n_of_items)
|
||||
break
|
||||
if(accept_check(G))
|
||||
load(G)
|
||||
loaded++
|
||||
updateUsrDialog()
|
||||
|
||||
if(loaded)
|
||||
if(contents.len >= max_n_of_items)
|
||||
user.visible_message("[user] loads \the [src] with \the [O].", \
|
||||
"<span class='notice'>You fill \the [src] with \the [O].</span>")
|
||||
else
|
||||
user.visible_message("[user] loads \the [src] with \the [O].", \
|
||||
"<span class='notice'>You load \the [src] with \the [O].</span>")
|
||||
if(O.contents.len > 0)
|
||||
user << "<span class='warning'>Some items are refused.</span>"
|
||||
return 1
|
||||
else
|
||||
user << "<span class='warning'>There is nothing in [O] to put in [src]!</span>"
|
||||
return 0
|
||||
|
||||
if(user.a_intent != "harm")
|
||||
user << "<span class='warning'>\The [src] smartly refuses [O].</span>"
|
||||
updateUsrDialog()
|
||||
return 0
|
||||
@@ -294,6 +286,10 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/machinery/smartfridge/drying_rack/deconstruct(disassembled = TRUE)
|
||||
new /obj/item/stack/sheet/mineral/wood (loc, 10)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/smartfridge/drying_rack/proc/toggle_drying(forceoff = 0)
|
||||
if(drying || forceoff)
|
||||
drying = 0
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
if(flag)
|
||||
return //It's adjacent, is the user, or is on the user's person
|
||||
|
||||
if (istype(A, /mob/living))
|
||||
if(isliving(A))
|
||||
src.dealTo(A, user)
|
||||
else
|
||||
return ..()
|
||||
@@ -125,7 +125,7 @@
|
||||
var/blank = 0
|
||||
var/list/cards = list()
|
||||
var/datum/html_interface/hi
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/weapon/hand/New(loc)
|
||||
. = ..()
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
for(var/obj/effect/landmark/R in landmarks_list)
|
||||
if(R.name != "blobspawn")
|
||||
if(prob(35))
|
||||
if(istype(R.loc,/turf/open/space))
|
||||
if(isspaceturf(R.loc))
|
||||
new /mob/living/simple_animal/chicken/rabbit/space(R.loc)
|
||||
else
|
||||
new /mob/living/simple_animal/chicken/rabbit(R.loc)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
O.vars[V] = original.vars[V]
|
||||
|
||||
if(istype(O))
|
||||
O.resistance_flags |= LAVA_PROOF | FIRE_PROOF | UNACIDABLE // holoitems do not burn
|
||||
O.resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF // holoitems do not burn
|
||||
if(nerf && istype(O,/obj/item))
|
||||
var/obj/item/I = O
|
||||
I.damtype = STAMINA // thou shalt not
|
||||
@@ -76,7 +76,7 @@
|
||||
continue
|
||||
|
||||
if(platingRequired)
|
||||
if(istype(B, /turf/open/space))
|
||||
if(isspaceturf(B))
|
||||
continue
|
||||
|
||||
var/old_dir1 = T.dir
|
||||
|
||||
@@ -143,14 +143,14 @@
|
||||
|
||||
/obj/machinery/computer/holodeck/proc/floorcheck()
|
||||
for(var/turf/T in linked)
|
||||
if(!T.intact || istype(T,/turf/open/space))
|
||||
if(!T.intact || isspaceturf(T))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/obj/machinery/computer/holodeck/Topic(href, list/href_list)
|
||||
if(..())
|
||||
return
|
||||
if(!Adjacent(usr) && !istype(usr, /mob/living/silicon))
|
||||
if(!Adjacent(usr) && !issilicon(usr))
|
||||
return
|
||||
usr.set_machine(src)
|
||||
add_fingerprint(usr)
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
/obj/item/toy/beach_ball/holoball
|
||||
name = "basketball"
|
||||
icon = 'icons/obj/basketball.dmi'
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "basketball"
|
||||
item_state = "basketball"
|
||||
desc = "Here's your chance, do your dance at the Space Jam."
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
return
|
||||
if(default_deconstruction_crowbar(I))
|
||||
return
|
||||
if(isrobot(user))
|
||||
if(iscyborg(user))
|
||||
return
|
||||
|
||||
if(istype(I, /obj/item/seeds))
|
||||
@@ -104,7 +104,7 @@
|
||||
return
|
||||
|
||||
var/datum/browser/popup = new(user, "plantdna", "Plant DNA Manipulator", 450, 600)
|
||||
if(!( in_range(src, user) || istype(user, /mob/living/silicon) ))
|
||||
if(!(in_range(src, user) || issilicon(user)))
|
||||
popup.close()
|
||||
return
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
dried_type = -1
|
||||
// Saves us from having to define each stupid grown's dried_type as itself.
|
||||
// If you don't want a plant to be driable (watermelons) set this to null in the time definition.
|
||||
resistance_flags = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
origin_tech = "biotech=1"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/New(newloc, var/obj/item/seeds/new_seed = null)
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
|
||||
/obj/item/weapon/grown/novaflower/attack(mob/living/carbon/M, mob/user)
|
||||
if(!..()) return
|
||||
if(istype(M, /mob/living))
|
||||
if(isliving(M))
|
||||
M << "<span class='danger'>You are lit on fire from the intense heat of the [name]!</span>"
|
||||
M.adjust_fire_stacks(seed.potency / 20)
|
||||
if(M.IgniteMob())
|
||||
|
||||
@@ -27,12 +27,12 @@
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/seeds/kudzu/proc/plant(mob/user)
|
||||
if(istype(user.loc,/turf/open/space))
|
||||
if(isspaceturf(user.loc))
|
||||
return
|
||||
var/turf/T = get_turf(src)
|
||||
message_admins("Kudzu planted by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) at ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>(JMP)</a>)",0,1)
|
||||
investigate_log("was planted by [key_name(user)] at ([T.x],[T.y],[T.z])","kudzu")
|
||||
new /obj/structure/spacevine_controller(user.loc, mutations, potency, production)
|
||||
new /obj/effect/spacevine_controller(user.loc, mutations, potency, production)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/seeds/kudzu/attack_self(mob/user)
|
||||
|
||||
@@ -115,6 +115,8 @@
|
||||
seed = /obj/item/seeds/cherry/bomb
|
||||
bitesize_mod = 2
|
||||
volume = 125 //Gives enough room for the black powder at max potency
|
||||
obj_integrity = 40
|
||||
max_integrity = 40
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cherry_bomb/attack_self(mob/living/user)
|
||||
var/area/A = get_area(user)
|
||||
@@ -123,12 +125,14 @@
|
||||
log_game("[user] ([user.key ? user.key : "no key"]) primed a cherry bomb for detonation at [A] ([user.x],[user.y],[user.z]).")
|
||||
prime()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cherry_bomb/burn()
|
||||
prime()
|
||||
..()
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cherry_bomb/deconstruct(disassembled = TRUE)
|
||||
if(!disassembled)
|
||||
prime()
|
||||
if(!qdeleted(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cherry_bomb/ex_act(severity)
|
||||
qdel(src) //Ensuring that it's deleted by its own explosion
|
||||
qdel(src) //Ensuring that it's deleted by its own explosion. Also prevents mass chain reaction with piles of cherry bombs
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cherry_bomb/proc/prime()
|
||||
icon_state = "cherry_bomb_lit"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user