Merge branch 'master' of https://github.com/tgstation/-tg-station into hold_it

# Conflicts:
#	code/modules/clothing/under/ties.dm
This commit is contained in:
Incoming
2016-09-30 13:00:49 -04:00
371 changed files with 2567 additions and 2258 deletions
+1 -1
View File
@@ -61,7 +61,7 @@
/obj/buckle_mob(mob/living/M, force = 0)
. = ..()
if(.)
if(burn_state == ON_FIRE) //Sets the mob on fire if you buckle them to a burning atom/movableect
if(resistance_flags & ON_FIRE) //Sets the mob on fire if you buckle them to a burning atom/movableect
M.adjust_fire_stacks(1)
M.IgniteMob()
+1 -1
View File
@@ -15,7 +15,7 @@
density = 0
opacity = 0
anchored = 1
unacidable = 1
resistance_flags = FIRE_PROOF | UNACIDABLE
var/atom/target
var/ticks = 0
var/target_strength = 0
-1
View File
@@ -4,7 +4,6 @@
name = "anomaly"
desc = "A mysterious anomaly, seen commonly only in the region of space that the station orbits..."
icon_state = "bhole3"
unacidable = 1
density = 0
anchored = 1
luminosity = 3
+1 -1
View File
@@ -103,7 +103,7 @@ list(name = "- Carbon Dioxide", desc = " This informational poster teaches the v
desc = "You probably shouldn't be holding this."
icon = 'icons/obj/contraband.dmi'
force = 0
burn_state = FLAMMABLE
resistance_flags = 0
var/serial_number = 0
var/obj/structure/sign/poster/resulting_poster = null //The poster that will be created is initialised and stored through contraband/poster's constructor
var/official = 0
@@ -17,6 +17,18 @@
viruses = null
return ..()
/obj/effect/decal/cleanable/xenoblood/xsplatter
random_icon_states = list("xgibbl1", "xgibbl2", "xgibbl3", "xgibbl4", "xgibbl5")
/obj/effect/decal/cleanable/xenoblood/xgibs
name = "xeno gibs"
desc = "Gnarly..."
icon = 'icons/effects/blood.dmi'
icon_state = "xgib1"
layer = LOW_OBJ_LAYER
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6")
mergeable_decal = 0
/obj/effect/decal/cleanable/xenoblood/xgibs/proc/streak(list/directions)
set waitfor = 0
var/direction = pick(directions)
@@ -31,20 +43,6 @@
if (!step_to(src, get_step(src, direction), 0))
break
/obj/effect/decal/cleanable/xenoblood/xgibs/replace_decal(obj/effect/decal/cleanable/C)
return //gibs can stack, so gibspawner can work properly
/obj/effect/decal/cleanable/xenoblood/xsplatter
random_icon_states = list("xgibbl1", "xgibbl2", "xgibbl3", "xgibbl4", "xgibbl5")
/obj/effect/decal/cleanable/xenoblood/xgibs
name = "xeno gibs"
desc = "Gnarly..."
icon = 'icons/effects/blood.dmi'
icon_state = "xgib1"
layer = LOW_OBJ_LAYER
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6")
/obj/effect/decal/cleanable/xenoblood/xgibs/ex_act()
return
@@ -48,17 +48,29 @@
icon_state = "gibbl5"
layer = LOW_OBJ_LAYER
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6")
mergeable_decal = 0
/obj/effect/decal/cleanable/blood/gibs/New()
..()
reagents.add_reagent("liquidgibs", 5)
/obj/effect/decal/cleanable/blood/gibs/replace_decal(obj/effect/decal/cleanable/C)
return
/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target)
return
/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions)
set waitfor = 0
var/direction = pick(directions)
for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++)
sleep(2)
if (i > 0)
var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(src.loc)
for(var/datum/disease/D in src.viruses)
var/datum/disease/ND = D.Copy(1)
b.viruses += ND
ND.holder = b
if (!step_to(src, get_step(src, direction), 0))
break
/obj/effect/decal/cleanable/blood/gibs/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
@@ -79,23 +91,6 @@
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions)
set waitfor = 0
var/direction = pick(directions)
for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++)
sleep(2)
if (i > 0)
var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(src.loc)
for(var/datum/disease/D in src.viruses)
var/datum/disease/ND = D.Copy(1)
b.viruses += ND
ND.holder = b
if (!step_to(src, get_step(src, direction), 0))
break
/obj/effect/decal/cleanable/blood/gibs/replace_decal(obj/effect/decal/cleanable/C)
return //gibs can stack, so gibspawner can work properly
/obj/effect/decal/cleanable/blood/drip
name = "drips of blood"
desc = "It's red."
@@ -9,6 +9,7 @@
desc = "Ashes to ashes, dust to dust, and into space."
icon = 'icons/obj/objects.dmi'
icon_state = "ash"
mergeable_decal = 0
/obj/effect/decal/cleanable/ash/New()
..()
@@ -16,6 +17,15 @@
pixel_x = rand(-5, 5)
pixel_y = rand(-5, 5)
/obj/effect/decal/cleanable/ash/large
name = "large pile of ashes"
icon_state = "big_ash"
/obj/effect/decal/cleanable/ash/large/New()
..()
reagents.add_reagent("ash", 30) //double the amount of ash.
/obj/effect/decal/cleanable/dirt
name = "dirt"
desc = "Someone should clean that up."
@@ -62,6 +72,11 @@
gender = NEUTER
icon = 'icons/obj/chemical.dmi'
icon_state = "molten"
mergeable_decal = 0
/obj/effect/decal/cleanable/molten_object/large
name = "big gooey grey mass"
icon_state = "big_molten"
//Vomit (sorry)
/obj/effect/decal/cleanable/vomit
@@ -133,6 +148,7 @@
desc = "The shredded remains of what appears to be clothing."
icon_state = "shreds"
gender = PLURAL
mergeable_decal = 0
/obj/effect/decal/cleanable/shreds/New()
pixel_x = rand(-5, 5)
@@ -9,6 +9,7 @@
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7")
blood_state = BLOOD_STATE_OIL
bloodiness = MAX_SHOE_BLOODINESS
mergeable_decal = 0
/obj/effect/decal/cleanable/robot_debris/proc/streak(list/directions)
set waitfor = 0
@@ -25,9 +26,6 @@
if (!step_to(src, get_step(src, direction), 0))
break
/obj/effect/decal/cleanable/robot_debris/replace_decal(obj/effect/decal/cleanable/C)
return //robot debris can stack, so gibspawner can work properly
/obj/effect/decal/cleanable/robot_debris/ex_act()
return
@@ -4,6 +4,7 @@
var/list/random_icon_states = list()
var/blood_state = "" //I'm sorry but cleanable/blood code is ass, and so is blood_DNA
var/bloodiness = 0 //0-100, amount of blood in this decal, used for making footprints and affecting the alpha of bloody footprints
var/mergeable_decal = 1 //when two of these are on a same tile or do we need to merge them into just one?
/obj/effect/decal/cleanable/New()
if (random_icon_states && length(src.random_icon_states) > 0)
@@ -18,7 +19,8 @@
/obj/effect/decal/cleanable/proc/replace_decal(obj/effect/decal/cleanable/C)
qdel(C)
if(mergeable_decal)
qdel(C)
/obj/effect/decal/cleanable/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/reagent_containers/glass) || istype(W, /obj/item/weapon/reagent_containers/food/drinks))
@@ -9,7 +9,6 @@ would spawn and follow the beaker, even if it is carried or thrown.
/obj/effect/particle_effect
name = "particle effect"
mouse_opacity = 0
unacidable = 1//So effects are not targeted by alien acid.
pass_flags = PASSTABLE | PASSGRILLE
/obj/effect/particle_effect/New()
@@ -39,10 +39,11 @@
/obj/effect/particle_effect/foam/proc/kill_foam()
STOP_PROCESSING(SSfastprocess, src)
if(metal)
var/obj/structure/foamedmetal/M = new(src.loc)
M.metal = metal
M.updateicon()
switch(metal)
if(1)
new /obj/structure/foamedmetal(src.loc)
if(2)
new /obj/structure/foamedmetal/iron(src.loc)
flick("[icon_state]-disolve", src)
QDEL_IN(src, 5)
@@ -172,7 +173,7 @@
density = 1
opacity = 1 // changed in New()
anchored = 1
unacidable = 1
resistance_flags = FIRE_PROOF | ACID_PROOF
name = "foamed metal"
desc = "A lightweight foamed metal wall."
gender = PLURAL
@@ -206,7 +207,7 @@
qdel(src)
/obj/structure/foamedmetal/blob_act(obj/effect/blob/B)
/obj/structure/foamedmetal/blob_act(obj/structure/blob/B)
qdel(src)
@@ -281,3 +282,8 @@
/obj/structure/foamedmetal/CanAtmosPass()
return !density
/obj/structure/foamedmetal/iron
icon_state = "ironfoam"
metal = 2
@@ -287,10 +287,10 @@
var/more = ""
if(M)
more = "(<A HREF='?_src_=holder;adminmoreinfo=\ref[M]'>?</a>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[M]'>FLW</A>) "
message_admins("A chemical smoke reaction has taken place in ([whereLink])[contained]. Last associated key is [carry.my_atom.fingerprintslast][more].", 0, 1)
message_admins("Smoke: ([whereLink])[contained]. Key: [carry.my_atom.fingerprintslast][more].", 0, 1)
log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].")
else
message_admins("A chemical smoke reaction has taken place in ([whereLink]). No associated key.", 0, 1)
message_admins("Smoke: ([whereLink])[contained]. No associated key.", 0, 1)
log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.")
+9
View File
@@ -0,0 +1,9 @@
//objects in /obj/effect should never be things that are attackable, use obj/structure instead.
//Effects are mostly temporary visual effects like sparks, smoke, as well as decals, etc...
/obj/effect
icon = 'icons/effects/effects.dmi'
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE
-1
View File
@@ -5,7 +5,6 @@
anchored = 1
opacity = 0
density = 1
unacidable = 1
/obj/effect/forcefield/CanAtmosPass(turf/T)
return !density
+16 -16
View File
@@ -4,7 +4,7 @@ var/list/blacklisted_glowshroom_turfs = typecacheof(list(
/turf/open/floor/plating/lava,
/turf/open/floor/plating/beach/water))
/obj/effect/glowshroom
/obj/structure/glowshroom
name = "glowshroom"
desc = "Mycena Bregprox, a species of mushroom that glows in the dark."
anchored = 1
@@ -21,18 +21,18 @@ var/list/blacklisted_glowshroom_turfs = typecacheof(list(
var/generation = 1
var/spreadIntoAdjacentChance = 60
obj/effect/glowshroom/glowcap
obj/structure/glowshroom/glowcap
name = "glowcap"
icon_state = "glowcap"
/obj/effect/glowshroom/single
/obj/structure/glowshroom/single
yield = 0
/obj/effect/glowshroom/examine(mob/user)
/obj/structure/glowshroom/examine(mob/user)
. = ..()
user << "This is a [generation]\th generation [name]!"
/obj/effect/glowshroom/New()
/obj/structure/glowshroom/New()
..()
SetLuminosity(round(potency/10))
setDir(CalcDir())
@@ -53,7 +53,7 @@ obj/effect/glowshroom/glowcap
addtimer(src, "Spread", delay)
/obj/effect/glowshroom/proc/Spread()
/obj/structure/glowshroom/proc/Spread()
for(var/i = 1 to yield)
if(prob(1/(generation * generation) * 100))//This formula gives you diminishing returns based on generation. 100% with 1st gen, decreasing to 25%, 11%, 6, 4, 2...
var/list/possibleLocs = list()
@@ -65,7 +65,7 @@ obj/effect/glowshroom/glowcap
for(var/turf/open/floor/earth in view(3,src))
if(is_type_in_typecache(earth, blacklisted_glowshroom_turfs))
continue
if(spreadsIntoAdjacent || !locate(/obj/effect/glowshroom) in view(1,earth))
if(spreadsIntoAdjacent || !locate(/obj/structure/glowshroom) in view(1,earth))
possibleLocs += earth
CHECK_TICK
@@ -76,7 +76,7 @@ obj/effect/glowshroom/glowcap
var/shroomCount = 0 //hacky
var/placeCount = 1
for(var/obj/effect/glowshroom/shroom in newLoc)
for(var/obj/structure/glowshroom/shroom in newLoc)
shroomCount++
for(var/wallDir in cardinal)
var/turf/isWall = get_step(newLoc,wallDir)
@@ -85,7 +85,7 @@ obj/effect/glowshroom/glowcap
if(shroomCount >= placeCount)
continue
var/obj/effect/glowshroom/child = new type(newLoc)//The baby mushrooms have different stats :3
var/obj/structure/glowshroom/child = new type(newLoc)//The baby mushrooms have different stats :3
child.potency = max(potency + rand(-3,6), 0)
child.yield = max(yield + rand(-1,2), 0)
child.delay = max(delay + rand(-30,60), 0)
@@ -94,7 +94,7 @@ obj/effect/glowshroom/glowcap
CHECK_TICK
/obj/effect/glowshroom/proc/CalcDir(turf/location = loc)
/obj/structure/glowshroom/proc/CalcDir(turf/location = loc)
var/direction = 16
for(var/wallDir in cardinal)
@@ -102,7 +102,7 @@ obj/effect/glowshroom/glowcap
if(newTurf.density)
direction |= wallDir
for(var/obj/effect/glowshroom/shroom in location)
for(var/obj/structure/glowshroom/shroom in location)
if(shroom == src)
continue
if(shroom.floor) //special
@@ -126,13 +126,13 @@ obj/effect/glowshroom/glowcap
floor = 1
return 1
/obj/effect/glowshroom/attacked_by(obj/item/I, mob/user)
/obj/structure/glowshroom/attacked_by(obj/item/I, mob/user)
..()
if(I.damtype != STAMINA)
endurance -= I.force
CheckEndurance()
/obj/effect/glowshroom/ex_act(severity, target)
/obj/structure/glowshroom/ex_act(severity, target)
switch(severity)
if(1)
qdel(src)
@@ -143,16 +143,16 @@ obj/effect/glowshroom/glowcap
if(prob(5))
qdel(src)
/obj/effect/glowshroom/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
/obj/structure/glowshroom/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 300)
endurance -= 5
CheckEndurance()
/obj/effect/glowshroom/proc/CheckEndurance()
/obj/structure/glowshroom/proc/CheckEndurance()
if(endurance <= 0)
qdel(src)
/obj/effect/glowshroom/acid_act(acidpwr, toxpwr, acid_volume)
/obj/structure/glowshroom/acid_act(acidpwr, toxpwr, acid_volume)
visible_message("<span class='danger'>[src] melts away!</span>")
var/obj/effect/decal/cleanable/molten_item/I = new (get_turf(src))
I.desc = "Looks like this was \an [src] some time ago."
-1
View File
@@ -3,7 +3,6 @@
icon = 'icons/mob/screen_gen.dmi'
icon_state = "x2"
anchored = 1
unacidable = 1
invisibility = INVISIBILITY_ABSTRACT
/obj/effect/landmark/New()
-1
View File
@@ -2,7 +2,6 @@
name = "manifest"
icon = 'icons/mob/screen_gen.dmi'
icon_state = "x"
unacidable = 1//Just to be sure.
/obj/effect/manifest/New()
src.invisibility = INVISIBILITY_ABSTRACT
-1
View File
@@ -9,7 +9,6 @@
/obj/effect/beam
name = "beam"
unacidable = 1//Just to be sure.
var/def_zone
pass_flags = PASSTABLE
+1 -2
View File
@@ -1,6 +1,5 @@
/obj/effect/overlay
name = "overlay"
unacidable = 1
var/i_attached//Added for possible image attachments to objects. For hallucinations and the like.
/obj/effect/overlay/singularity_act()
@@ -23,7 +22,7 @@
icon_state = "nothing"
anchored = 1
layer = ABOVE_MOB_LAYER
burn_state = LAVA_PROOF
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE
mouse_opacity = 0
var/duration = 10 //in deciseconds
var/randomdir = TRUE
-4
View File
@@ -1,14 +1,10 @@
/obj/effect
icon = 'icons/effects/effects.dmi'
/obj/effect/portal
name = "portal"
desc = "Looks unstable. Best to test it with the clown."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "portal"
density = 1
unacidable = 1//Can't destroy energy portals.
var/obj/item/target = null
var/creator = null
anchored = 1
+22 -22
View File
@@ -1,5 +1,5 @@
//generic procs copied from obj/effect/alien
/obj/effect/spider
/obj/structure/spider
name = "web"
desc = "it's stringy and sticky"
anchored = 1
@@ -7,7 +7,7 @@
var/health = 15
//similar to weeds, but only barfed out by nurses manually
/obj/effect/spider/ex_act(severity, target)
/obj/structure/spider/ex_act(severity, target)
switch(severity)
if(1)
qdel(src)
@@ -18,16 +18,16 @@
if (prob(5))
qdel(src)
/obj/effect/spider/attacked_by(obj/item/I, mob/user)
/obj/structure/spider/attacked_by(obj/item/I, mob/user)
..()
var/damage = I.force
take_damage(damage, I.damtype, 1)
/obj/effect/spider/bullet_act(obj/item/projectile/P)
/obj/structure/spider/bullet_act(obj/item/projectile/P)
. = ..()
take_damage(P.damage, P.damage_type, 0)
/obj/effect/spider/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1)
/obj/structure/spider/proc/take_damage(damage, damage_type = BRUTE, sound_effect = 1)
switch(damage_type)
if(BURN)
damage *= 2
@@ -41,18 +41,18 @@
if(health <= 0)
qdel(src)
/obj/effect/spider/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
/obj/structure/spider/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 300)
take_damage(5, BURN, 0)
/obj/effect/spider/stickyweb
/obj/structure/spider/stickyweb
icon_state = "stickyweb1"
/obj/effect/spider/stickyweb/New()
/obj/structure/spider/stickyweb/New()
if(prob(50))
icon_state = "stickyweb2"
/obj/effect/spider/stickyweb/CanPass(atom/movable/mover, turf/target, height=0)
/obj/structure/spider/stickyweb/CanPass(atom/movable/mover, turf/target, height=0)
if(height==0) return 1
if(istype(mover, /mob/living/simple_animal/hostile/poison/giant_spider))
return 1
@@ -64,7 +64,7 @@
return prob(30)
return 1
/obj/effect/spider/eggcluster
/obj/structure/spider/eggcluster
name = "egg cluster"
desc = "They seem to pulse slightly with an inner life"
icon_state = "eggs"
@@ -74,17 +74,17 @@
var/poison_per_bite = 5
var/list/faction = list("spiders")
/obj/effect/spider/eggcluster/New()
/obj/structure/spider/eggcluster/New()
pixel_x = rand(3,-3)
pixel_y = rand(3,-3)
START_PROCESSING(SSobj, src)
/obj/effect/spider/eggcluster/process()
/obj/structure/spider/eggcluster/process()
amount_grown += rand(0,2)
if(amount_grown >= 100)
var/num = rand(3,12)
for(var/i=0, i<num, i++)
var/obj/effect/spider/spiderling/S = new /obj/effect/spider/spiderling(src.loc)
var/obj/structure/spider/spiderling/S = new /obj/structure/spider/spiderling(src.loc)
S.poison_type = poison_type
S.poison_per_bite = poison_per_bite
S.faction = faction.Copy()
@@ -92,7 +92,7 @@
S.player_spiders = 1
qdel(src)
/obj/effect/spider/spiderling
/obj/structure/spider/spiderling
name = "spiderling"
desc = "It never stays still for long."
icon_state = "spiderling"
@@ -108,18 +108,18 @@
var/poison_per_bite = 5
var/list/faction = list("spiders")
/obj/effect/spider/spiderling/New()
/obj/structure/spider/spiderling/New()
pixel_x = rand(6,-6)
pixel_y = rand(6,-6)
START_PROCESSING(SSobj, src)
/obj/effect/spider/spiderling/Bump(atom/user)
/obj/structure/spider/spiderling/Bump(atom/user)
if(istype(user, /obj/structure/table))
src.loc = user.loc
else
..()
/obj/effect/spider/spiderling/process()
/obj/structure/spider/spiderling/process()
if(travelling_in_vent)
if(istype(src.loc, /turf))
travelling_in_vent = 0
@@ -193,16 +193,16 @@
/obj/effect/spider/cocoon
/obj/structure/spider/cocoon
name = "cocoon"
desc = "Something wrapped in silky spider web"
icon_state = "cocoon1"
health = 60
/obj/effect/spider/cocoon/New()
icon_state = pick("cocoon1","cocoon2","cocoon3")
/obj/structure/spider/cocoon/New()
icon_state = pick("cocoon1","cocoon2","cocoon3")
/obj/effect/spider/cocoon/container_resist()
/obj/structure/spider/cocoon/container_resist()
var/mob/living/user = usr
var/breakout_time = 2
user.changeNext_move(CLICK_CD_BREAKOUT)
@@ -216,7 +216,7 @@
/obj/effect/spider/cocoon/Destroy()
/obj/structure/spider/cocoon/Destroy()
src.visible_message("<span class='warning'>\The [src] splits open.</span>")
for(var/atom/movable/A in contents)
A.loc = src.loc
+2 -2
View File
@@ -99,7 +99,7 @@
if(W.reinf && W.fulltile)
cached_exp_block[T] += W.explosion_block
for(var/obj/effect/blob/B in T)
for(var/obj/structure/blob/B in T)
cached_exp_block[T] += B.explosion_block
CHECK_TICK
@@ -226,7 +226,7 @@
if(W.explosion_block && W.fulltile)
dist += W.explosion_block
for(var/obj/effect/blob/B in T)
for(var/obj/structure/blob/B in T)
dist += B.explosion_block
if(dist < dev)
+3 -4
View File
@@ -47,7 +47,6 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
var/permeability_coefficient = 1 // for chemicals/diseases
var/siemens_coefficient = 1 // for electrical admittance/conductance (electrocution checks and shit)
var/slowdown = 0 // How much clothing is slowing you down. Negative values speeds you up
var/list/armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
var/armour_penetration = 0 //percentage of armour effectiveness to remove
var/list/allowed = null //suit storage stuff.
var/obj/item/device/uplink/hidden_uplink = null
@@ -117,7 +116,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
qdel(X)
return ..()
/obj/item/blob_act(obj/effect/blob/B)
/obj/item/blob_act(obj/structure/blob/B)
if(B && B.loc == loc)
qdel(src)
@@ -220,7 +219,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
if(anchored)
return
if(burn_state == ON_FIRE)
if(resistance_flags & ON_FIRE)
var/mob/living/carbon/human/H = user
if(istype(H))
if(H.gloves && (H.gloves.max_heat_protection_temperature > 360))
@@ -504,7 +503,7 @@ obj/item/proc/item_action_slot_check(slot, mob/user)
/obj/item/acid_act(acidpwr, acid_volume)
. = 1
if(unacidable)
if(resistance_flags & UNACIDABLE)
return
var/meltingpwr = acid_volume*acidpwr
+1 -1
View File
@@ -5,7 +5,7 @@
icon = 'icons/obj/cardboard_cutout.dmi'
icon_state = "cutout_basic"
w_class = 4
burn_state = FLAMMABLE
resistance_flags = 0
// Possible restyles for the cutout;
// add an entry in change_appearance() if you add to here
var/list/possible_appearances = list("Assistant", "Clown", "Mime",
+3 -1
View File
@@ -36,6 +36,8 @@
flick("carp_swell", src)
//Wait for animation to end
sleep(6)
if(!src || qdeleted(src))//we got toasted while animating
return
//Make space carp
var/mob/living/M = new mobtype(get_turf(src))
//Make carp non-hostile to user, and their allies
@@ -49,4 +51,4 @@
visible_message("<span class='warning'>You have a bad feeling about this.</span>") //welcome to the hostile carp enjoy your die
else
visible_message("<span class='notice'>The newly grown [M.name] looks up at you with friendly eyes.</span>")
qdel(src)
qdel(src)
@@ -883,6 +883,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
/obj/item/device/pda/Destroy()
PDAs -= src
if(inserted_item)
qdel(inserted_item)
inserted_item = null
return ..()
//AI verb and proc for sending PDA messages.
+28 -15
View File
@@ -136,11 +136,16 @@
return .(cameras)
return html
/obj/item/device/camera_bug/proc/get_seens()
if(current && current.can_use())
var/list/seen = current.can_see()
return seen
/obj/item/device/camera_bug/proc/camera_report()
// this should only be called if current exists
var/dat = ""
if(current && current.can_use())
var/list/seen = current.can_see()
var/list/seen = get_seens()
if(seen && seen.len >= 1)
var/list/names = list()
for(var/obj/singularity/S in seen) // god help you if you see more than one
if(S.name in names)
@@ -190,23 +195,29 @@
if("mode" in href_list)
track_mode = text2num(href_list["mode"])
if("monitor" in href_list)
var/obj/machinery/camera/C = locate(href_list["monitor"])
if(C)
//You can't locate on a list with keys
var/list/cameras = flatten_list(bugged_cameras)
var/obj/machinery/camera/C = locate(href_list["monitor"]) in cameras
if(C && istype(C))
track_mode = BUGMODE_MONITOR
current = C
usr.reset_perspective(null)
interact()
if("track" in href_list)
var/atom/A = locate(href_list["track"])
if(A)
tracking = A
tracked_name = A.name
last_found = current.c_tag
last_seen = world.time
track_mode = BUGMODE_TRACK
var/list/seen = get_seens()
if(seen && seen.len >= 1)
var/atom/A = locate(href_list["track"]) in seen
if(A && istype(A))
tracking = A
tracked_name = A.name
last_found = current.c_tag
last_seen = world.time
track_mode = BUGMODE_TRACK
if("emp" in href_list)
var/obj/machinery/camera/C = locate(href_list["emp"])
if(istype(C) && C.bug == src)
//You can't locate on a list with keys
var/list/cameras = flatten_list(bugged_cameras)
var/obj/machinery/camera/C = locate(href_list["emp"]) in cameras
if(C && istype(C) && C.bug == src)
C.emp_act(1)
C.bug = null
bugged_cameras -= C.c_tag
@@ -217,8 +228,10 @@
current = null
return
if("view" in href_list)
var/obj/machinery/camera/C = locate(href_list["view"])
if(istype(C))
//You can't locate on a list with keys
var/list/cameras = flatten_list(bugged_cameras)
var/obj/machinery/camera/C = locate(href_list["view"]) in cameras
if(C && istype(C))
if(!C.can_use())
usr << "<span class='warning'>Something's wrong with that camera! You can't get a feed.</span>"
return
@@ -1,7 +1,7 @@
//copy pasta of the space piano, don't hurt me -Pete
/obj/item/device/instrument
name = "generic instrument"
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 20
var/datum/song/handheld/song
var/instrumentId = "generic"
+2 -3
View File
@@ -213,11 +213,10 @@
O.make_laws()
ticker.mode.remove_antag_for_borging(BM.mind)
if(!M.clockwork)
remove_servant_of_ratvar(BM, TRUE)
BM.mind.transfer_to(O)
if(M.clockwork)
add_servant_of_ratvar(O)
if(O.mind && O.mind.special_role)
O.mind.store_memory("As a cyborg, you must obey your silicon laws and master AI above all else. Your objectives will consider you to be dead.")
O << "<span class='userdanger'>You have been robotized!</span>"
@@ -197,7 +197,7 @@
name = "mining cyborg lavaproof tracks"
desc = "An upgrade kit to apply specialized coolant systems and insulation layers to mining cyborg tracks, enabling them to withstand exposure to molten rock."
icon_state = "ash_plating"
burn_state = LAVA_PROOF
resistance_flags = LAVA_PROOF | FIRE_PROOF
require_module = 1
module_type = /obj/item/weapon/robot_module/miner
origin_tech = "engineering=4;materials=4;plasmatech=4"
+1 -1
View File
@@ -10,7 +10,7 @@
throw_speed = 2
throw_range = 2
w_class = 1
burn_state = FLAMMABLE
resistance_flags = 0
var/value = 1
/obj/item/stack/spacecash/c10
+1 -1
View File
@@ -7,7 +7,7 @@
w_class = 1
throw_speed = 3
throw_range = 7
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 5
var/heal_brute = 0
var/heal_burn = 0
@@ -135,7 +135,7 @@ var/global/list/datum/stack_recipe/uranium_recipes = list ( \
singular_name = "plasma sheet"
origin_tech = "plasmatech=2;materials=2"
sheettype = "plasma"
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 5
materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT)
@@ -146,7 +146,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \
icon = 'icons/obj/items.dmi'
origin_tech = "materials=1;biotech=1"
sheettype = "wood"
burn_state = FLAMMABLE
resistance_flags = 0
/obj/item/stack/sheet/mineral/wood/New(var/loc, var/amount=null)
recipes = wood_recipes
@@ -183,7 +183,7 @@ var/global/list/datum/stack_recipe/cloth_recipes = list ( \
singular_name = "cloth roll"
icon_state = "sheet-cloth"
origin_tech = "materials=2"
burn_state = FLAMMABLE
resistance_flags = 0
force = 0
throwforce = 0
@@ -216,7 +216,7 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \
singular_name = "cardboard sheet"
icon_state = "sheet-card"
origin_tech = "materials=1"
burn_state = FLAMMABLE
resistance_flags = 0
/obj/item/stack/sheet/cardboard/New(var/loc, var/amount=null)
recipes = cardboard_recipes
@@ -79,7 +79,7 @@
icon_state = "tile_grass"
origin_tech = "biotech=1"
turf_type = /turf/open/floor/grass
burn_state = FLAMMABLE
resistance_flags = 0
//Wood
@@ -90,7 +90,7 @@
icon_state = "tile-wood"
origin_tech = "biotech=1"
turf_type = /turf/open/floor/wood
burn_state = FLAMMABLE
resistance_flags = 0
//Carpets
@@ -100,7 +100,7 @@
desc = "A piece of carpet. It is the same size as a floor tile."
icon_state = "tile-carpet"
turf_type = /turf/open/floor/carpet
burn_state = FLAMMABLE
resistance_flags = 0
/obj/item/stack/tile/fakespace
@@ -109,7 +109,7 @@
desc = "A piece of carpet with a convincing star pattern."
icon_state = "tile_space"
turf_type = /turf/open/floor/fakespace
burn_state = FLAMMABLE
resistance_flags = 0
/obj/item/stack/tile/fakespace/loaded
amount = 30
+2 -2
View File
@@ -12,7 +12,7 @@
flags = NOBLUDGEON
amount = 25
max_amount = 25
burn_state = FLAMMABLE
resistance_flags = 0
/obj/item/stack/wrapping_paper/Destroy()
if(!amount)
@@ -32,7 +32,7 @@
flags = NOBLUDGEON
amount = 25
max_amount = 25
burn_state = FLAMMABLE
resistance_flags = 0
/obj/item/proc/can_be_package_wrapped() //can the item be wrapped with package wrapper into a delivery package
return 1
+7 -7
View File
@@ -277,7 +277,7 @@
item_state = "arm_blade"
attack_verb = list("pricked", "absorbed", "gored")
w_class = 2
burn_state = FLAMMABLE
resistance_flags = 0
/*
@@ -638,7 +638,7 @@
/obj/item/toy/cards
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 5
var/parentdeck = null
var/deckstyle = "nanotrasen"
@@ -873,8 +873,8 @@
newobj.card_throw_speed = sourceobj.card_throw_speed
newobj.card_throw_range = sourceobj.card_throw_range
newobj.card_attack_verb = sourceobj.card_attack_verb
if(sourceobj.burn_state == FIRE_PROOF)
newobj.burn_state = FIRE_PROOF
if(sourceobj.resistance_flags & FIRE_PROOF)
newobj.resistance_flags |= FIRE_PROOF
/obj/item/toy/cards/singlecard
name = "card"
@@ -991,7 +991,7 @@
card_throw_speed = 3
card_throw_range = 7
card_attack_verb = list("attacked", "sliced", "diced", "slashed", "cut")
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
/*
* Fake nuke
@@ -1051,7 +1051,7 @@
item_state = "carp_plushie"
w_class = 2
attack_verb = list("bitten", "eaten", "fin slapped")
burn_state = FLAMMABLE
resistance_flags = 0
var/bitesound = 'sound/weapons/bite.ogg'
//Attack mob
@@ -1161,7 +1161,7 @@
icon_state = "toy_mouse"
w_class = 2.0
var/cooldown = 0
burn_state = FLAMMABLE
resistance_flags = 0
/*
+4 -4
View File
@@ -3,7 +3,7 @@
icon = 'icons/obj/janitor.dmi'
desc = "This is rubbish."
w_class = 1
burn_state = FLAMMABLE
resistance_flags = 0
/obj/item/trash/raisins
name = "\improper 4no raisins"
@@ -40,7 +40,7 @@
/obj/item/trash/plate
name = "plate"
icon_state = "plate"
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
/obj/item/trash/pistachios
name = "pistachios pack"
@@ -53,7 +53,7 @@
/obj/item/trash/tray
name = "tray"
icon_state = "tray"
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
/obj/item/trash/candle
name = "candle"
@@ -63,7 +63,7 @@
/obj/item/trash/can
name = "crushed can"
icon_state = "cola"
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
/obj/item/trash/attack(mob/M, mob/living/user)
return
@@ -152,7 +152,6 @@
icon_state = "chronofield"
density = 0
anchored = 1
unacidable = 1
blend_mode = BLEND_MULTIPLY
var/mob/living/captured = null
var/obj/item/weapon/gun/energy/chrono_gun/gun = null
@@ -255,7 +254,7 @@
/obj/effect/chrono_field/ex_act()
return
/obj/effect/chrono_field/blob_act(obj/effect/blob/B)
/obj/effect/chrono_field/blob_act(obj/structure/blob/B)
return
@@ -641,7 +641,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
super = 0
user << "<span class='notice'>You decrease the voltage in the [src]</span>"
add_overlay(image(icon, "vapeopen_low"))
if(screw && emagged)
user << "<span class='notice'>The [name] can't be modified!</span>"
@@ -725,13 +725,13 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(super && vapetime > 3)//Time to start puffing those fat vapes, yo.
var/datum/effect_system/smoke_spread/chem/s = new
s.set_up(reagents, 1, loc)
s.set_up(reagents, 1, loc, silent=TRUE)
s.start()
vapetime = 0
if(emagged && vapetime > 3)
var/datum/effect_system/smoke_spread/chem/s = new
s.set_up(reagents, 4, loc)
s.set_up(reagents, 4, loc, silent=TRUE)
s.start()
vapetime = 0
if(prob(5))//small chance for the vape to break and deal damage if it's emagged
+2 -2
View File
@@ -11,7 +11,7 @@
throwforce = 6
w_class = 2
attack_verb = list("bashed", "battered", "judged", "whacked")
burn_state = FLAMMABLE
resistance_flags = 0
/obj/item/weapon/gavelhammer/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] has sentenced \himself to death with the [src.name]! It looks like \he's trying to commit suicide.</span>")
@@ -26,7 +26,7 @@
force = 2
throwforce = 2
w_class = 1
burn_state = FLAMMABLE
resistance_flags = 0
/obj/item/weapon/gavelblock/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/gavelhammer))
+1 -1
View File
@@ -13,7 +13,7 @@
icon = 'icons/obj/storage.dmi'
icon_state = "giftdeliverypackage3"
item_state = "gift1"
burn_state = FLAMMABLE
resistance_flags = 0
/obj/item/weapon/a_gift/New()
..()
@@ -12,7 +12,7 @@
for(var/mob/living/M in get_hearers_in_view(7, flashbang_turf))
bang(get_turf(M), M)
for(var/obj/effect/blob/B in get_hear(8,flashbang_turf)) //Blob damage here
for(var/obj/structure/blob/B in get_hear(8,flashbang_turf)) //Blob damage here
var/distance = get_dist(B, get_turf(src))
var/damage = round(100/(distance*distance)+1)
B.take_damage(damage, BURN)
@@ -9,7 +9,7 @@
throw_range = 7
flags = CONDUCT
slot_flags = SLOT_BELT
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 5
var/active = 0
var/det_time = 50
@@ -24,7 +24,7 @@
smoke.start()
for(var/obj/effect/blob/B in view(8,src))
for(var/obj/structure/blob/B in view(8,src))
var/damage = round(30/(get_dist(B,src)+1))
B.health -= damage
B.update_icon()
@@ -118,6 +118,7 @@
icon = 'icons/effects/effects.dmi'
anchored = 1
var/holo_integrity = 1
armor = list(melee = 0, bullet = 50, laser = 50, energy = 50, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
var/obj/item/weapon/holosign_creator/projector
/obj/effect/overlay/holograph/New(loc, source_projector)
@@ -136,7 +137,7 @@
..()
take_damage(I.force * 0.5, I.damtype)
/obj/effect/overlay/holograph/blob_act(obj/effect/blob/B)
/obj/effect/overlay/holograph/blob_act(obj/structure/blob/B)
qdel(src)
/obj/effect/overlay/holograph/attack_animal(mob/living/simple_animal/M)
@@ -24,11 +24,11 @@
/obj/item/weapon/implant/chem/New()
..()
create_reagents(50)
tracked_implants += src
tracked_chem_implants += src
/obj/item/weapon/implant/chem/Destroy()
..()
tracked_implants -= src
tracked_chem_implants -= src
+1 -1
View File
@@ -9,7 +9,7 @@
throw_range = 7
w_class = 3
attack_verb = list("mopped", "bashed", "bludgeoned", "whacked")
burn_state = FLAMMABLE
resistance_flags = 0
var/mopping = 0
var/mopcount = 0
var/mopcap = 5
+1 -1
View File
@@ -10,7 +10,7 @@
item_color = "FFFFFF"
item_state = "paintcan"
w_class = 3
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 5
var/paintleft = 10
+1 -1
View File
@@ -9,7 +9,7 @@
throw_speed = 3
throw_range = 7
origin_tech = "bluespace=6"
burn_state = FLAMMABLE
resistance_flags = 0
/obj/item/weapon/teleportation_scroll/apprentice
name = "lesser scroll of teleportation"
+1 -1
View File
@@ -48,7 +48,7 @@
item_state = "buckler"
materials = list()
origin_tech = "materials=1;combat=3;biotech=2"
burn_state = FLAMMABLE
resistance_flags = 0
block_chance = 30
/obj/item/weapon/shield/energy
+1 -1
View File
@@ -5,7 +5,7 @@
force = 5
w_class = 4
attack_verb = list("bashed","smacked")
burn_state = FLAMMABLE
resistance_flags = 0
var/label = ""
var/last_wave = 0
@@ -19,7 +19,7 @@
max_w_class = 3
max_combined_w_class = 21
storage_slots = 21
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 20
/obj/item/weapon/storage/backpack/attackby(obj/item/weapon/W, mob/user, params)
@@ -37,7 +37,7 @@
icon_state = "holdingpack"
max_w_class = 6
max_combined_w_class = 35
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
var/pshoom = 'sound/items/PSHOOM.ogg'
var/alt_sound = 'sound/items/PSHOOM_2.ogg'
@@ -141,14 +141,14 @@
desc = "It's a special backpack made exclusively for Nanotrasen officers."
icon_state = "captainpack"
item_state = "captainpack"
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
/obj/item/weapon/storage/backpack/industrial
name = "industrial backpack"
desc = "It's a tough backpack for the daily grind of station life."
icon_state = "engiepack"
item_state = "engiepack"
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
/obj/item/weapon/storage/backpack/botany
name = "botany backpack"
@@ -173,7 +173,7 @@
desc = "A specially designed backpack. It's fire resistant and smells vaguely of plasma."
icon_state = "toxpack"
item_state = "toxpack"
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
/obj/item/weapon/storage/backpack/virology
name = "virology backpack"
@@ -196,7 +196,7 @@
name = "leather satchel"
desc = "It's a very fancy satchel made with fine leather."
icon_state = "satchel"
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
/obj/item/weapon/storage/backpack/satchel/leather/withwallet/New()
..()
@@ -207,7 +207,7 @@
desc = "A tough satchel with extra pockets."
icon_state = "satchel-eng"
item_state = "engiepack"
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
/obj/item/weapon/storage/backpack/satchel/med
name = "medical satchel"
@@ -238,7 +238,7 @@
desc = "Useful for holding research materials."
icon_state = "satchel-tox"
item_state = "satchel-tox"
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
/obj/item/weapon/storage/backpack/satchel/hyd
name = "botanist satchel"
@@ -263,7 +263,7 @@
desc = "An exclusive satchel for Nanotrasen officers."
icon_state = "satchel-cap"
item_state = "captainpack"
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
/obj/item/weapon/storage/backpack/satchel/flat
name = "smuggler's satchel"
@@ -328,7 +328,7 @@
desc = "A large dufflebag for holding extra captainly goods."
icon_state = "duffle-captain"
item_state = "duffle-captain"
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
/obj/item/weapon/storage/backpack/dufflebag/med
name = "medical dufflebag"
@@ -347,14 +347,14 @@
desc = "A large dufflebag for holding extra tools and supplies."
icon_state = "duffle-eng"
item_state = "duffle-eng"
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
/obj/item/weapon/storage/backpack/dufflebag/drone
name = "drone dufflebag"
desc = "A large dufflebag for holding tools and hats."
icon_state = "duffle-drone"
item_state = "duffle-drone"
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
/obj/item/weapon/storage/backpack/dufflebag/drone/New()
..()
@@ -113,7 +113,7 @@
max_w_class = 3
w_class = 1
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/weapon/grown)
burn_state = FLAMMABLE
resistance_flags = 0
////////
@@ -294,7 +294,7 @@
max_w_class = 3
w_class = 4 //Bigger than a book because physics
can_hold = list(/obj/item/weapon/book, /obj/item/weapon/storage/book, /obj/item/weapon/spellbook)
burn_state = FLAMMABLE
resistance_flags = 0
/*
* Trays - Agouri
@@ -364,7 +364,7 @@
w_class = 1
preposition = "in"
can_hold = list(/obj/item/weapon/reagent_containers/pill, /obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/glass/bottle)
burn_state = FLAMMABLE
resistance_flags = 0
/*
* Biowaste bag (mostly for xenobiologists)
@@ -380,4 +380,4 @@
w_class = 1
preposition = "in"
can_hold = list(/obj/item/slime_extract, /obj/item/weapon/reagent_containers/syringe, /obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/glass/bottle, /obj/item/weapon/reagent_containers/blood, /obj/item/weapon/reagent_containers/hypospray/medipen, /obj/item/trash/deadmouse)
burn_state = FLAMMABLE
resistance_flags = 0
@@ -6,7 +6,7 @@
throw_speed = 2
throw_range = 5
w_class = 3
burn_state = FLAMMABLE
resistance_flags = 0
var/title = "book"
/obj/item/weapon/storage/book/attack_self(mob/user)
user << "<span class='notice'>The pages of [title] have been cut out!</span>"
@@ -25,7 +25,7 @@
desc = "It's just an ordinary box."
icon_state = "box"
item_state = "syringe_kit"
burn_state = FLAMMABLE
resistance_flags = 0
var/foldable = /obj/item/stack/sheet/cardboard
@@ -634,7 +634,7 @@
desc = "A sack neatly crafted out of paper."
icon_state = "paperbag_None"
item_state = "paperbag_None"
burn_state = FLAMMABLE
resistance_flags = 0
foldable = null
var/design = NODESIGN
@@ -11,7 +11,7 @@
max_w_class = 3
max_combined_w_class = 21
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 20
var/folder_path = /obj/item/weapon/folder //this is the path of the folder that gets spawned in New()
@@ -42,7 +42,7 @@
max_w_class = 3
max_combined_w_class = 21
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 20
/obj/item/weapon/storage/briefcase/sniperbundle/New()
@@ -17,7 +17,7 @@
icon = 'icons/obj/food/containers.dmi'
icon_state = "donutbox6"
name = "donut box"
burn_state = FLAMMABLE
resistance_flags = 0
var/icon_type = "donut"
var/spawn_type = null
var/fancy_open = FALSE
@@ -4,7 +4,7 @@
storage_slots = 4
icon_state = "wallet"
w_class = 2
burn_state = FLAMMABLE
resistance_flags = 0
can_hold = list(
/obj/item/stack/spacecash,
/obj/item/weapon/card,
@@ -91,7 +91,7 @@
user << "<span class='notice'>It feels [descriptive].</span>"
/obj/item/weapon/tank/blob_act(obj/effect/blob/B)
/obj/item/weapon/tank/blob_act(obj/structure/blob/B)
if(B && B.loc == loc)
var/turf/location = get_turf(src)
if(!location)
+2 -2
View File
@@ -393,14 +393,14 @@ var/highlander_claymores = 0
w_class = 2
armour_penetration = 100
attack_verb = list("bludgeoned", "whacked", "disciplined")
burn_state = FLAMMABLE
resistance_flags = 0
/obj/item/weapon/staff/broom
name = "broom"
desc = "Used for sweeping, and flying into the night while cackling. Black cat not included."
icon = 'icons/obj/wizard.dmi'
icon_state = "broom"
burn_state = FLAMMABLE
resistance_flags = 0
/obj/item/weapon/staff/stick
name = "stick"
+7 -6
View File
@@ -2,7 +2,6 @@
languages_spoken = HUMAN
languages_understood = HUMAN
var/crit_fail = 0
var/unacidable = 0 //universal "unacidabliness" var, here so you can use it in any obj.
animate_movement = 2
var/throwforce = 0
var/in_use = 0 // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING!
@@ -10,7 +9,9 @@
var/damtype = "brute"
var/force = 0
var/burn_state = FIRE_PROOF // LAVA_PROOF | FIRE_PROOF | FLAMMABLE | ON_FIRE
var/list/armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
var/resistance_flags = FIRE_PROOF // INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF
var/burntime = 10 //How long it takes to burn to ashes, in seconds
var/burn_world_time //What world time the object will burn up completely
var/being_shocked = 0
@@ -189,8 +190,8 @@
return T.storage_contents_dump_act(src_object, user)
/obj/fire_act(global_overlay=1)
if(!burn_state)
burn_state = ON_FIRE
if(!(resistance_flags & (FIRE_PROOF|ON_FIRE)))
resistance_flags |= ON_FIRE
SSobj.burning += src
burn_world_time = world.time + burntime*rand(10,20)
if(global_overlay)
@@ -205,8 +206,8 @@
qdel(src)
/obj/proc/extinguish()
if(burn_state == ON_FIRE)
burn_state = FLAMMABLE
if(resistance_flags & ON_FIRE)
resistance_flags &= ~ON_FIRE
overlays -= fire_overlay
SSobj.burning -= src
+1 -1
View File
@@ -15,7 +15,7 @@
if(ticker)
cameranet.updateVisibility(src)
/obj/structure/blob_act(obj/effect/blob/B)
/obj/structure/blob_act(obj/structure/blob/B)
if(density && prob(50))
qdel(src)
+1
View File
@@ -156,6 +156,7 @@
return
ticker.mode.remove_antag_for_borging(M.brainmob.mind)
remove_servant_of_ratvar(M, TRUE)
M.loc = src
brain = M
user << "<span class='notice'>Added a brain.</span>"
+1 -1
View File
@@ -119,7 +119,7 @@
if(3)
take_damage(50, BRUTE, 0)
/obj/structure/alien/blob_act(obj/effect/blob/B)
/obj/structure/alien/blob_act(obj/structure/blob/B)
take_damage(50, BRUTE, 0)
/obj/structure/alien/resin/hitby(atom/movable/AM)
+2 -2
View File
@@ -9,7 +9,7 @@
icon = 'icons/obj/artstuff.dmi'
icon_state = "easel"
density = 1
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 15
var/obj/item/weapon/canvas/painting = null
@@ -51,7 +51,7 @@ var/global/list/globalBlankCanvases[AMT_OF_CANVASES]
desc = "draw out your soul on this canvas!"
icon = 'icons/obj/artstuff.dmi'
icon_state = "11x11"
burn_state = FLAMMABLE
resistance_flags = 0
var/whichGlobalBackup = 1 //List index
/obj/item/weapon/canvas/nineteenXnineteen
@@ -15,7 +15,7 @@
anchored = 1
can_buckle = 1
buckle_lying = 1
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 30
var/buildstacktype = /obj/item/stack/sheet/metal
var/buildstackamount = 2
@@ -61,7 +61,7 @@
icon = 'icons/obj/rollerbed.dmi'
icon_state = "down"
anchored = 0
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
var/foldabletype = /obj/item/roller
/obj/structure/bed/roller/MouseDrop(over_object, src_location, over_location)
@@ -6,7 +6,7 @@
anchored = 1
can_buckle = 1
buckle_lying = 0 //you sit in a chair, not lay
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
var/buildstacktype = /obj/item/stack/sheet/metal
var/buildstackamount = 1
var/item_chair = /obj/item/chair // if null it can't be picked up
@@ -118,7 +118,7 @@
icon_state = "wooden_chair"
name = "wooden chair"
desc = "Old is never too old to not be in fashion."
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 20
buildstacktype = /obj/item/stack/sheet/mineral/wood
buildstackamount = 3
@@ -139,7 +139,7 @@
desc = "It looks comfy.\n<span class='notice'>Alt-click to rotate it clockwise.</span>"
icon_state = "comfychair"
color = rgb(255,255,255)
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 30
buildstackamount = 2
var/image/armrest = null
@@ -308,7 +308,7 @@
name = "wooden chair"
icon_state = "wooden_chair_toppled"
item_state = "woodenchair"
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 20
hitsound = 'sound/weapons/genhit1.ogg'
origin_type = /obj/structure/chair/wood
+2 -2
View File
@@ -17,7 +17,7 @@ LINEN BINS
throw_range = 2
w_class = 1
item_color = "white"
burn_state = FLAMMABLE
resistance_flags = 0
dog_fashion = /datum/dog_fashion/head/ghost
@@ -205,7 +205,7 @@ LINEN BINS
icon = 'icons/obj/structures.dmi'
icon_state = "linenbin-full"
anchored = 1
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 20
var/amount = 10
var/list/sheets = list()
@@ -4,7 +4,7 @@
icon_state = "cardboard"
health = 10
mob_storage_capacity = 1
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 20
can_weld_shut = 0
cutting_tool = /obj/item/weapon/wirecutters
@@ -61,7 +61,7 @@
icon_state = "metalbox"
health = 500
mob_storage_capacity = 5
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
move_speed_multiplier = 2
cutting_tool = /obj/item/weapon/weldingtool
open_sound = 'sound/machines/click.ogg'
@@ -2,7 +2,7 @@
name = "cabinet"
desc = "Old will forever be in fashion."
icon_state = "cabinet"
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 20
/obj/structure/closet/acloset
@@ -72,7 +72,7 @@
new /obj/item/weapon/storage/box/flashbangs(src)
for(var/i in 1 to 3)
new /obj/item/clothing/head/helmet/thunderdome(src)
/obj/structure/closet/thunderdome/tdgreen
name = "green-team Thunderdome closet"
icon_door = "green"
@@ -91,7 +91,7 @@
new /obj/item/weapon/storage/box/flashbangs(src)
for(var/i in 1 to 3)
new /obj/item/clothing/head/helmet/thunderdome(src)
/obj/structure/closet/malf/suits
desc = "It's a storage unit for operational gear."
icon_state = "syndicate"
@@ -121,7 +121,7 @@
name = "coffin"
desc = "It's a burial receptacle for the dearly departed."
icon_state = "coffin"
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 20
/obj/structure/closet/wardrobe/red
@@ -2,7 +2,7 @@
name = "booze storage"
req_access = list(access_bar)
icon_state = "cabinet"
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 20
/obj/structure/closet/secure_closet/bar/New()
@@ -25,7 +25,7 @@
/obj/structure/closet/secure_closet/personal/cabinet
icon_state = "cabinet"
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 20
/obj/structure/closet/secure_closet/personal/cabinet/New()
@@ -157,7 +157,7 @@
name = "\proper detective's cabinet"
req_access = list(access_forensics_lockers)
icon_state = "cabinet"
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 20
/obj/structure/closet/secure_closet/detective/New()
@@ -120,7 +120,7 @@
if(user.environment_smash)
shatter()
/obj/structure/closet/statue/blob_act(obj/effect/blob/B)
/obj/structure/closet/statue/blob_act(obj/structure/blob/B)
shatter()
/obj/structure/closet/statue/attacked_by(obj/item/I, mob/living/user)
+2 -2
View File
@@ -5,7 +5,7 @@
desc = "A display case for prized possessions."
density = 1
anchored = 1
unacidable = 1//Dissolving the case would also delete the gun.
resistance_flags = FIRE_PROOF | ACID_PROOF
var/health = 30
var/destroyed = 0
var/obj/item/showpiece = null
@@ -48,7 +48,7 @@
showpiece.loc = src.loc
showpiece = null
/obj/structure/displaycase/blob_act(obj/effect/blob/B)
/obj/structure/displaycase/blob_act(obj/structure/blob/B)
take_damage(30)
/obj/structure/displaycase/hitby(atom/movable/AM)
+2 -1
View File
@@ -6,6 +6,7 @@
icon_state = "fireaxe"
anchored = 1
density = 0
armor = list(melee = 50, bullet = 20, laser = 0, energy = 100, bomb = 10, bio = 100, rad = 100, fire = 0, acid = 0)
var/locked = 1
var/open = 0
var/health = 60
@@ -82,7 +83,7 @@
take_damage(P.damage, P.damage_type, 0)
/obj/structure/fireaxecabinet/blob_act(obj/effect/blob/B)
/obj/structure/fireaxecabinet/blob_act(obj/structure/blob/B)
if(fireaxe)
fireaxe.forceMove(loc)
qdel(src)
+1 -1
View File
@@ -10,7 +10,7 @@
density = FALSE
anchored = TRUE
pixel_x = -16
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
var/lit = FALSE
var/fuel_added = 0
+2 -2
View File
@@ -1,5 +1,5 @@
/obj/structure/flora
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 30
anchored = 1
@@ -290,7 +290,7 @@
icon_state = "basalt"
desc = "A volcanic rock"
icon = 'icons/obj/flora/rocks.dmi'
burn_state = FIRE_PROOF
resistance_flags = FIRE_PROOF
density = 1
/obj/structure/flora/rock/New()
+1 -1
View File
@@ -272,7 +272,7 @@
qdel(src)
/obj/structure/girder/blob_act(obj/effect/blob/B)
/obj/structure/girder/blob_act(obj/structure/blob/B)
if(prob(40))
qdel(src)
+2 -1
View File
@@ -9,6 +9,7 @@
pressure_resistance = 5*ONE_ATMOSPHERE
layer = BELOW_OBJ_LAYER
var/health = 10
armor = list(melee = 50, bullet = 70, laser = 70, energy = 100, bomb = 10, bio = 100, rad = 100, fire = 0, acid = 0)
var/destroyed = 0
var/obj/item/stack/rods/stored
@@ -31,7 +32,7 @@
new /obj/structure/grille/ratvar(src.loc)
qdel(src)
/obj/structure/grille/blob_act(obj/effect/blob/B)
/obj/structure/grille/blob_act(obj/structure/blob/B)
if(!destroyed)
Break()
+3 -1
View File
@@ -76,7 +76,9 @@
/obj/structure/guncase/Topic(href, href_list)
if(href_list["retrieve"])
var/obj/item/O = locate(href_list["retrieve"])
var/obj/item/O = locate(href_list["retrieve"]) in contents
if(!O || !istype(O))
return
if(!usr.canUseTopic(src))
return
if(ishuman(usr))
+2 -1
View File
@@ -5,6 +5,7 @@
icon_state = "lattice"
density = 0
anchored = 1
armor = list(melee = 100, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
layer = LATTICE_LAYER //under pipes
var/obj/item/stack/rods/stored
canSmoothWith = list(/obj/structure/lattice,
@@ -26,7 +27,7 @@
stored = null
return ..()
/obj/structure/lattice/blob_act(obj/effect/blob/B)
/obj/structure/lattice/blob_act(obj/structure/blob/B)
return
/obj/structure/lattice/ex_act(severity, target)
@@ -243,5 +243,5 @@
openSound = 'sound/effects/doorcreaky.ogg'
closeSound = 'sound/effects/doorcreaky.ogg'
sheetType = /obj/item/stack/sheet/mineral/wood
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 30
+1 -1
View File
@@ -164,7 +164,7 @@ FLOOR SAFES
return ..()
obj/structure/safe/blob_act(obj/effect/blob/B)
obj/structure/safe/blob_act(obj/structure/blob/B)
return
obj/structure/safe/ex_act(severity, target)
+2 -2
View File
@@ -13,7 +13,7 @@
/obj/structure/sign/ex_act(severity, target)
qdel(src)
/obj/structure/sign/blob_act(obj/effect/blob/B)
/obj/structure/sign/blob_act(obj/structure/blob/B)
qdel(src)
/obj/structure/sign/attackby(obj/item/O, mob/user, params)
@@ -87,7 +87,7 @@
icon = 'icons/obj/decals.dmi'
icon_state = "backing"
w_class = 3
burn_state = FLAMMABLE
resistance_flags = 0
var/sign_path = /obj/structure/sign/basic //the type of sign that will be created when placed on a turf
/obj/item/sign_backing/afterattack(atom/target, mob/user, proximity)
+1 -1
View File
@@ -96,7 +96,7 @@
icon_state = "wood_frame"
framestack = /obj/item/stack/sheet/mineral/wood
framestackamount = 2
burn_state = FLAMMABLE
resistance_flags = 0
/obj/structure/table_frame/wood/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/stack/sheet/mineral/wood))
+4 -3
View File
@@ -53,7 +53,7 @@
if(3)
take_damage(rand(40,80), BRUTE, 0)
/obj/structure/table/blob_act(obj/effect/blob/B)
/obj/structure/table/blob_act(obj/structure/blob/B)
take_damage(rand(75,150), BRUTE, 0)
/obj/structure/table/narsie_act()
@@ -315,7 +315,7 @@
frame = /obj/structure/table_frame/wood
framestack = /obj/item/stack/sheet/mineral/wood
buildstack = /obj/item/stack/sheet/mineral/wood
burn_state = FLAMMABLE
resistance_flags = 0
burntime = 20
canSmoothWith = list(/obj/structure/table/wood,
/obj/structure/table/wood/poker,
@@ -364,6 +364,7 @@
buildstack = /obj/item/stack/sheet/plasteel
canSmoothWith = list(/obj/structure/table/reinforced, /obj/structure/table)
health = 200
armor = list(melee = 10, bullet = 10, laser = 10, energy = 100, bomb = 20, bio = 0, rad = 0, fire = 0, acid = 70)
/obj/structure/table/reinforced/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/weldingtool))
@@ -476,7 +477,7 @@
if(3)
take_damage(rand(5,25), BRUTE, 0)
/obj/structure/rack/blob_act(obj/effect/blob/B)
/obj/structure/rack/blob_act(obj/structure/blob/B)
rack_destroy()
+1 -1
View File
@@ -332,7 +332,7 @@
if(H.w_uniform.clean_blood())
H.update_inv_w_uniform()
if(washgloves)
clean_blood()
H.clean_blood()
if(H.shoes && washshoes)
if(H.shoes.clean_blood())
H.update_inv_shoes()
+3 -1
View File
@@ -65,7 +65,7 @@
if(3)
take_damage(rand(25,75), BRUTE, 0)
/obj/structure/window/blob_act(obj/effect/blob/B)
/obj/structure/window/blob_act(obj/structure/blob/B)
take_damage(rand(75,150), BRUTE, 0)
/obj/structure/window/narsie_act()
@@ -434,6 +434,7 @@
name = "reinforced window"
icon_state = "rwindow"
reinf = 1
armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 25, bio = 100, rad = 100, fire = 0, acid = 0)
maxhealth = 50
explosion_block = 1
@@ -494,6 +495,7 @@
wtype = "shuttle"
fulltile = 1
reinf = 1
armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 25, bio = 100, rad = 100, fire = 0, acid = 0)
smooth = SMOOTH_TRUE
canSmoothWith = null
explosion_block = 1