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:
TechnoAlchemist
2016-10-10 13:20:25 -07:00
760 changed files with 7915 additions and 7061 deletions
+5 -5
View File
@@ -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
+4 -3
View File
@@ -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
+3 -3
View File
@@ -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)
+5 -5
View File
@@ -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
+1 -1
View File
@@ -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))
+9 -9
View File
@@ -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)
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
+9 -9
View File
@@ -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))
+1 -1
View File
@@ -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)
+6 -6
View File
@@ -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
+1 -1
View File
@@ -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
+42 -42
View File
@@ -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)
+15 -1
View File
@@ -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!
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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
+7 -7
View File
@@ -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
+1 -1
View File
@@ -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"
+14 -14
View File
@@ -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()
..()
+125 -21
View File
@@ -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
+3 -6
View File
@@ -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 -5
View File
@@ -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)
+3 -3
View File
@@ -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
+1 -1
View File
@@ -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
+10 -12
View File
@@ -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()
+7 -7
View File
@@ -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
+4 -3
View File
@@ -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"
+2 -2
View File
@@ -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()
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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)
+10 -9
View File
@@ -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"
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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)
+6 -6
View File
@@ -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
+20 -15
View File
@@ -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
+14 -10
View File
@@ -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"
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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"
+4 -4
View File
@@ -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)
+6 -6
View File
@@ -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
+5 -5
View File
@@ -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>"
+1 -1
View File
@@ -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
+3 -3
View File
@@ -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"
+1 -1
View File
@@ -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
+37
View File
@@ -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)
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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"
+3 -3
View File
@@ -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)
+35 -38
View File
@@ -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
+1 -1
View File
@@ -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")
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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)
+1
View File
@@ -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
+4 -4
View File
@@ -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()
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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)
. = ..()
+1 -1
View File
@@ -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)
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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)
+1 -1
View File
@@ -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."
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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())
+2 -2
View File
@@ -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)
+8 -4
View File
@@ -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