repaths /decal/cleanable to /debris/cleanable to prep for persistence serialization (#4359)

* wild

* regex maps

* regex code

* that

Co-authored-by: VM_USER <VM_USER>
This commit is contained in:
silicons
2022-08-18 16:45:31 -07:00
committed by GitHub
co-authored by VM_USER <VM_USER>
parent fc7cc96bc8
commit 867868f32b
240 changed files with 2410 additions and 2383 deletions
@@ -1,33 +0,0 @@
/obj/effect/decal/cleanable/blood/xeno
name = "xeno blood"
desc = "It's green and acidic. It looks like... <i>blood?</i>"
icon = 'icons/effects/blood.dmi'
basecolor = "#05EE05"
/obj/effect/decal/cleanable/blood/gibs/xeno
name = "xeno gibs"
desc = "Gnarly..."
icon_state = "xgib1"
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6")
basecolor = "#05EE05"
/obj/effect/decal/cleanable/blood/gibs/xeno/update_icon()
color = "#FFFFFF"
/obj/effect/decal/cleanable/blood/gibs/xeno/up
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1")
/obj/effect/decal/cleanable/blood/gibs/xeno/down
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1")
/obj/effect/decal/cleanable/blood/gibs/xeno/body
random_icon_states = list("xgibhead", "xgibtorso")
/obj/effect/decal/cleanable/blood/gibs/xeno/limb
random_icon_states = list("xgibleg", "xgibarm")
/obj/effect/decal/cleanable/blood/gibs/xeno/core
random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3")
/obj/effect/decal/cleanable/blood/xtracks
basecolor = "#05EE05"
@@ -1,87 +0,0 @@
/obj/effect/decal/cleanable/liquid_fuel
//Liquid fuel is used for things that used to rely on volatile fuels or phoron being contained to a couple tiles.
icon = 'icons/effects/effects.dmi'
icon_state = "fuel"
plane = OBJ_PLANE
layer = DEBRIS_LAYER
anchored = TRUE
var/amount = 1
/obj/effect/decal/cleanable/liquid_fuel/Initialize(mapload, amt = 1, nologs = TRUE)
var/turf/newLoc = loc
if(!nologs)
message_admins("Liquid fuel has spilled in [newLoc.loc.name] ([newLoc.x],[newLoc.y],[newLoc.z]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[newLoc.x];Y=[newLoc.y];Z=[newLoc.z]'>JMP</a>)")
log_game("Liquid fuel has spilled in [newLoc.loc.name] ([newLoc.x],[newLoc.y],[newLoc.z])")
src.amount = amt
var/has_spread = FALSE
//Be absorbed by any other liquid fuel in the tile.
for(var/obj/effect/decal/cleanable/liquid_fuel/other in newLoc)
if(other != src)
other.amount += src.amount
other.Spread()
has_spread = TRUE
break
. = ..()
if(!has_spread)
Spread()
else
return INITIALIZE_HINT_QDEL
/obj/effect/decal/cleanable/liquid_fuel/proc/Spread(exclude=list())
//Allows liquid fuels to sometimes flow into other tiles.
if(amount < 15)
return //lets suppose welder fuel is fairly thick and sticky. For something like water, 5 or less would be more appropriate.
var/turf/simulated/S = loc
if(!istype(S))
return
for(var/d in GLOB.cardinal)
var/turf/simulated/target = get_step(src,d)
var/turf/simulated/origin = get_turf(src)
if(target.Enter(src, origin))
var/obj/effect/decal/cleanable/liquid_fuel/other_fuel = locate() in target
if(other_fuel)
other_fuel.amount += amount*0.25
if(!(other_fuel in exclude))
exclude += src
other_fuel.Spread(exclude)
else
new/obj/effect/decal/cleanable/liquid_fuel(target, amount*0.25,1)
amount *= 0.75
/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel
icon_state = "mustard"
anchored = FALSE
/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/Initialize(mapload, amt = 1, d = 0)
setDir(d) //Setting this direction means you won't get torched by your own flamethrower.
if(istype(loc, /turf/simulated))
var/turf/simulated/T = loc
T.hotspot_expose((T20C*2) + 380, 500) //Ignite the fuel.
. = ..()
/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/Spread()
//The spread for flamethrower fuel is much more precise, to create a wide fire pattern.
if(amount <= 0.1)
if(amount < 0.025) //Hopefully stops fuel spreading into unburnable puddles.
qdel(src)
return
var/turf/simulated/S = loc
if(!istype(S))
return
for(var/d in list(turn(dir,90),turn(dir,-90), dir))
var/turf/simulated/O = get_step(S,d)
if(locate(/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel) in O)
continue
if(O.Enter(src, S))
var/new_pool_amount = amount * 0.25
if(new_pool_amount > 0.1)
var/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/F = new(O, new_pool_amount, d)
if(F.amount < 0.025) //Safety.
qdel(F)
return
O.hotspot_expose((T20C*2) + 380,500) //Light flamethrower fuel on fire immediately.
amount *= 0.25
@@ -1,256 +0,0 @@
//for 1 unit of depth in puddle (amount var)
#define DRYING_TIME 5 * 60*10
var/global/list/image/splatter_cache=list()
/obj/effect/decal/cleanable/blood
name = "blood"
var/dryname = "dried blood"
desc = "It's thick and gooey. Perhaps it's the chef's cooking?"
var/drydesc = "It's dry and crusty. Someone is not doing their job."
gender = PLURAL
density = 0
anchored = 1
icon = 'icons/effects/blood.dmi'
icon_state = "mfloor1"
random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7")
var/base_icon = 'icons/effects/blood.dmi'
blood_DNA = list()
var/basecolor="#A10808" // Color when wet.
var/synthblood = 0
var/list/datum/disease2/disease/virus2 = list()
var/amount = 5
var/drytime
/obj/effect/decal/cleanable/blood/reveal_blood()
if(!fluorescent)
fluorescent = 1
basecolor = COLOR_LUMINOL
update_icon()
/obj/effect/decal/cleanable/blood/clean_blood()
fluorescent = 0
if(invisibility != 100)
invisibility = 100
amount = 0
STOP_PROCESSING(SSobj, src)
..(ignore=1)
/obj/effect/decal/cleanable/blood/Destroy()
STOP_PROCESSING(SSobj, src)
return ..()
/obj/effect/decal/cleanable/blood/Initialize(mapload)
. = ..()
update_icon()
if(istype(src, /obj/effect/decal/cleanable/blood/gibs))
return
if(src.type == /obj/effect/decal/cleanable/blood)
if(src.loc && isturf(src.loc))
for(var/obj/effect/decal/cleanable/blood/B in src.loc)
if(B != src)
if(mapload)
return INITIALIZE_HINT_QDEL
if (B.blood_DNA)
blood_DNA |= B.blood_DNA.Copy()
qdel(B)
addtimer(CALLBACK(src, .proc/dry), DRYING_TIME * (amount + 1))
/obj/effect/decal/cleanable/blood/update_icon()
if(basecolor == "rainbow")
basecolor = "#[get_random_colour(1)]"
add_atom_colour(basecolor, FIXED_COLOUR_PRIORITY)
if(basecolor == SYNTH_BLOOD_COLOUR)
name = "oil"
desc = "It's quite oily."
else if(synthblood)
name = "synthetic blood"
desc = "It's quite greasy."
else
name = initial(name)
desc = initial(desc)
/obj/effect/decal/cleanable/blood/Crossed(mob/living/carbon/human/perp)
. = ..()
if(perp.is_incorporeal())
return
if (!istype(perp))
return
if(amount < 1)
return
var/obj/item/organ/external/l_foot = perp.get_organ("l_foot")
var/obj/item/organ/external/r_foot = perp.get_organ("r_foot")
var/hasfeet = 1
if((!l_foot || l_foot.is_stump()) && (!r_foot || r_foot.is_stump()))
hasfeet = 0
if(perp.shoes && !perp.buckled)//Adding blood to shoes
var/obj/item/clothing/shoes/S = perp.shoes
if(istype(S))
S.blood_color = basecolor
S.track_blood = max(amount,S.track_blood)
if(!S.blood_overlay)
S.generate_blood_overlay()
if(!S.blood_DNA)
S.blood_DNA = list()
S.blood_overlay.color = basecolor
S.overlays += S.blood_overlay
if(S.blood_overlay && S.blood_overlay.color != basecolor)
S.blood_overlay.color = basecolor
S.overlays += S.blood_overlay
S.blood_DNA |= blood_DNA.Copy()
perp.update_inv_shoes()
else if (hasfeet)//Or feet
perp.feet_blood_color = basecolor
perp.track_blood = max(amount,perp.track_blood)
LAZYINITLIST(perp.feet_blood_DNA)
perp.feet_blood_DNA |= blood_DNA.Copy()
perp.update_bloodied()
else if (perp.buckled && istype(perp.buckled, /obj/structure/bed/chair/wheelchair))
var/obj/structure/bed/chair/wheelchair/W = perp.buckled
W.bloodiness = 4
amount--
/obj/effect/decal/cleanable/blood/proc/dry()
name = dryname
desc = drydesc
var/newcolor = adjust_brightness(color, -50)
add_atom_colour(newcolor, FIXED_COLOUR_PRIORITY)
amount = 0
/obj/effect/decal/cleanable/blood/attack_hand(mob/living/carbon/human/user)
..()
if (amount && istype(user))
if (user.gloves)
return
var/taken = rand(1,amount)
amount -= taken
to_chat(user, SPAN_NOTICE("You get some of \the [src] on your hands."))
if (!user.blood_DNA)
user.blood_DNA = list()
user.blood_DNA |= blood_DNA.Copy()
user.bloody_hands += taken
user.hand_blood_color = basecolor
user.update_inv_gloves(1)
user.verbs += /mob/living/carbon/human/proc/bloody_doodle
/obj/effect/decal/cleanable/blood/splatter
random_icon_states = list("mgibbl1", "mgibbl2", "mgibbl3", "mgibbl4", "mgibbl5")
amount = 2
/obj/effect/decal/cleanable/blood/drip
name = "drips of blood"
desc = "It's red."
gender = PLURAL
icon = 'icons/effects/drip.dmi'
icon_state = "1"
random_icon_states = list("1","2","3","4","5")
amount = 0
var/list/drips = list()
/obj/effect/decal/cleanable/blood/drip/Initialize(mapload)
. = ..()
drips |= icon_state
/obj/effect/decal/cleanable/blood/writing
icon_state = "tracks"
desc = "It looks like a writing in blood."
gender = NEUTER
random_icon_states = list("writing1","writing2","writing3","writing4","writing5")
amount = 0
var/message
/obj/effect/decal/cleanable/blood/writing/Initialize(mapload)
. = ..()
if(random_icon_states.len)
for(var/obj/effect/decal/cleanable/blood/writing/W in loc)
random_icon_states.Remove(W.icon_state)
icon_state = pick(random_icon_states)
else
icon_state = "writing1"
/obj/effect/decal/cleanable/blood/writing/examine(mob/user)
. = ..()
. += "It reads: <font color='[basecolor]'>\"[message]\"</font>"
/obj/effect/decal/cleanable/blood/gibs
name = "gibs"
desc = "They look bloody and gruesome."
gender = PLURAL
density = 0
anchored = 1
icon = 'icons/effects/blood.dmi'
icon_state = "gibbl5"
random_icon_states = list("gib1", "gib2", "gib3", "gib5", "gib6")
var/fleshcolor = "#FFFFFF"
/obj/effect/decal/cleanable/blood/gibs/update_icon()
var/image/giblets = new(base_icon, "[icon_state]_flesh", dir)
if(!fleshcolor || fleshcolor == "rainbow")
fleshcolor = "#[get_random_colour(1)]"
giblets.color = fleshcolor
var/icon/blood = new(base_icon,"[icon_state]",dir)
if(basecolor == "rainbow") basecolor = "#[get_random_colour(1)]"
blood.Blend(basecolor,ICON_MULTIPLY)
icon = blood
overlays.Cut()
overlays += giblets
/obj/effect/decal/cleanable/blood/gibs/up
random_icon_states = list("gib1", "gib2", "gib3", "gib5", "gib6","gibup1","gibup1","gibup1")
/obj/effect/decal/cleanable/blood/gibs/down
random_icon_states = list("gib1", "gib2", "gib3", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
/obj/effect/decal/cleanable/blood/gibs/body
random_icon_states = list("gibhead", "gibtorso")
/obj/effect/decal/cleanable/blood/gibs/limb
random_icon_states = list("gibleg", "gibarm")
/obj/effect/decal/cleanable/blood/gibs/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
/obj/effect/decal/cleanable/blood/gibs/proc/streak(var/list/directions)
spawn (0)
var/direction = pick(directions)
for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
sleep(3)
if (i > 0)
var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(src.loc)
b.basecolor = src.basecolor
b.update_icon()
if (step_to(src, get_step(src, direction), 0))
break
/obj/effect/decal/cleanable/mucus
name = "mucus"
desc = "Disgusting mucus."
gender = PLURAL
density = 0
anchored = 1
icon = 'icons/effects/blood.dmi'
icon_state = "mucus"
random_icon_states = list("mucus")
var/list/datum/disease2/disease/virus2 = list()
var/dry=0 // Keeps the lag down
/obj/effect/decal/cleanable/mucus/Initialize(mapload)
. = ..()
addtimer(VARSET_CALLBACK(src, dry, TRUE), DRYING_TIME * 2)
//This version should be used for admin spawns and pre-mapped virus vectors (e.g. in PoIs), this version does not dry
/obj/effect/decal/cleanable/mucus/mapped/Initialize(mapload)
. = ..()
virus2 |= new /datum/disease2/disease
virus2[1].makerandom()
@@ -1,131 +0,0 @@
/obj/effect/decal/cleanable/generic
name = "clutter"
desc = "Someone should clean that up."
gender = PLURAL
density = 0
anchored = 1
icon = 'icons/obj/objects.dmi'
icon_state = "shards"
/obj/effect/decal/cleanable/ash
name = "ashes"
desc = "Ashes to ashes, dust to dust, and into space."
gender = PLURAL
icon = 'icons/obj/objects.dmi'
icon_state = "ash"
anchored = 1
/obj/effect/decal/cleanable/ash/attack_hand(mob/user as mob)
to_chat(user, "<span class='notice'>[src] sifts through your fingers.</span>")
var/turf/simulated/floor/F = get_turf(src)
if (istype(F))
F.dirt += 4
qdel(src)
/obj/effect/decal/cleanable/greenglow
New()
..()
spawn(1200)// 2 minutes
qdel(src)
/obj/effect/decal/cleanable/dirt
name = "dirt"
desc = "Someone should clean that up."
gender = PLURAL
density = 0
anchored = 1
icon = 'icons/effects/effects.dmi'
icon_state = "dirt"
mouse_opacity = 0
/obj/effect/decal/cleanable/flour
name = "flour"
desc = "It's still good. Four second rule!"
gender = PLURAL
density = 0
anchored = 1
icon = 'icons/effects/effects.dmi'
icon_state = "flour"
/obj/effect/decal/cleanable/greenglow
name = "glowing goo"
desc = "Jeez. I hope that's not for lunch."
gender = PLURAL
density = 0
anchored = 1
light_range = 1
icon = 'icons/effects/effects.dmi'
icon_state = "greenglow"
/obj/effect/decal/cleanable/cobweb
name = "cobweb"
desc = "Somebody should remove that."
density = 0
anchored = 1
plane = OBJ_PLANE
icon = 'icons/effects/effects.dmi'
icon_state = "cobweb1"
/obj/effect/decal/cleanable/molten_item
name = "gooey grey mass"
desc = "It looks like a melted... something."
density = 0
anchored = 1
plane = OBJ_PLANE
icon = 'icons/obj/chemical.dmi'
icon_state = "molten"
/obj/effect/decal/cleanable/cobweb2
name = "cobweb"
desc = "Somebody should remove that."
density = 0
anchored = 1
plane = OBJ_PLANE
icon = 'icons/effects/effects.dmi'
icon_state = "cobweb2"
//Vomit (sorry)
/obj/effect/decal/cleanable/vomit
name = "vomit"
desc = "Gosh, how unpleasant."
gender = PLURAL
density = 0
anchored = 1
icon = 'icons/effects/blood.dmi'
icon_state = "vomit_1"
random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4")
var/list/datum/disease2/disease/virus2 = list()
/obj/effect/decal/cleanable/tomato_smudge
name = "tomato smudge"
desc = "It's red."
density = 0
anchored = 1
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3")
/obj/effect/decal/cleanable/egg_smudge
name = "smashed egg"
desc = "Seems like this one won't hatch."
density = 0
anchored = 1
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3")
/obj/effect/decal/cleanable/pie_smudge //honk
name = "smashed pie"
desc = "It's pie cream from a cream pie."
density = 0
anchored = 1
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("smashed_pie")
/obj/effect/decal/cleanable/fruit_smudge
name = "smudge"
desc = "Some kind of fruit smear."
density = 0
anchored = 1
icon = 'icons/effects/blood.dmi'
icon_state = "mfloor1"
random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7")
@@ -1,48 +0,0 @@
/obj/effect/decal/cleanable/blood/gibs/robot
name = "robot debris"
desc = "It's a useless heap of junk... <i>or is it?</i>"
icon = 'icons/mob/robots.dmi'
icon_state = "gib1"
basecolor = SYNTH_BLOOD_COLOUR
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7")
/obj/effect/decal/cleanable/blood/gibs/robot/update_icon()
color = "#FFFFFF"
/obj/effect/decal/cleanable/blood/gibs/robot/dry() //pieces of robots do not dry up like
return
/obj/effect/decal/cleanable/blood/gibs/robot/streak(var/list/directions)
spawn (0)
var/direction = pick(directions)
for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
sleep(3)
if (i > 0)
if (prob(40))
var/obj/effect/decal/cleanable/blood/oil/streak = new(src.loc)
streak.update_icon()
else if (prob(10))
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(3, 1, src)
s.start()
if (step_to(src, get_step(src, direction), 0))
break
/obj/effect/decal/cleanable/blood/gibs/robot/limb
random_icon_states = list("gibarm", "gibleg")
/obj/effect/decal/cleanable/blood/gibs/robot/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7","gibup1","gibup1") //2:7 is close enough to 1:4
/obj/effect/decal/cleanable/blood/gibs/robot/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7","gibdown1","gibdown1") //2:7 is close enough to 1:4
/obj/effect/decal/cleanable/blood/oil
basecolor = SYNTH_BLOOD_COLOUR
/obj/effect/decal/cleanable/blood/oil/dry()
return
/obj/effect/decal/cleanable/blood/oil/streak
random_icon_states = list("mgibbl1", "mgibbl2", "mgibbl3", "mgibbl4", "mgibbl5")
amount = 2
@@ -1,202 +0,0 @@
// Stolen en masse from N3X15 of /vg/station with much gratitude.
// The idea is to have 4 bits for coming and 4 for going.
#define TRACKS_COMING_NORTH 1
#define TRACKS_COMING_SOUTH 2
#define TRACKS_COMING_EAST 4
#define TRACKS_COMING_WEST 8
#define TRACKS_GOING_NORTH 16
#define TRACKS_GOING_SOUTH 32
#define TRACKS_GOING_EAST 64
#define TRACKS_GOING_WEST 128
// 5 seconds
#define TRACKS_CRUSTIFY_TIME 50
// color-dir-dry
var/global/list/image/fluidtrack_cache=list()
/datum/fluidtrack
var/direction=0
var/basecolor="#A10808"
var/wet=0
var/fresh=1
var/crusty=0
var/image/overlay
New(_direction,_color,_wet)
src.direction=_direction
src.basecolor=_color
src.wet=_wet
/obj/effect/decal/cleanable/blood/tracks/reveal_blood()
if(!fluorescent)
if(stack && stack.len)
for(var/datum/fluidtrack/track in stack)
track.basecolor = COLOR_LUMINOL
..()
// Footprints, tire trails...
/obj/effect/decal/cleanable/blood/tracks
amount = 0
random_icon_states = null
var/dirs=0
icon = 'icons/effects/fluidtracks.dmi'
icon_state = ""
var/coming_state="blood1"
var/going_state="blood2"
var/updatedtracks=0
// dir = id in stack
var/list/setdirs=list(
"1"=0,
"2"=0,
"4"=0,
"8"=0,
"16"=0,
"32"=0,
"64"=0,
"128"=0
)
// List of laid tracks and their colors.
var/list/datum/fluidtrack/stack=list()
/**
* Add tracks to an existing trail.
*
* @param DNA bloodDNA to add to collection.
* @param comingdir Direction tracks come from, or 0.
* @param goingdir Direction tracks are going to (or 0).
* @param bloodcolor Color of the blood when wet.
*/
proc/AddTracks(var/list/DNA, var/comingdir, var/goingdir, var/bloodcolor="#A10808")
var/updated=0
// Shift our goingdir 4 spaces to the left so it's in the GOING bitblock.
var/realgoing=goingdir<<4
// Current bit
var/b=0
// When tracks will start to dry out
var/t=world.time + TRACKS_CRUSTIFY_TIME
var/datum/fluidtrack/track
// Process 4 bits
for(var/bi=0;bi<4;bi++)
b=1<<bi
// COMING BIT
// If setting
if(comingdir&b)
// If not wet or not set
if(dirs&b)
var/sid=setdirs["[b]"]
track=stack[sid]
if(track.wet==t && track.basecolor==bloodcolor)
continue
// Remove existing stack entry
stack.Remove(track)
track=new /datum/fluidtrack(b,bloodcolor,t)
stack.Add(track)
setdirs["[b]"]=stack.Find(track)
updatedtracks |= b
updated=1
// GOING BIT (shift up 4)
b=b<<4
if(realgoing&b)
// If not wet or not set
if(dirs&b)
var/sid=setdirs["[b]"]
track=stack[sid]
if(track.wet==t && track.basecolor==bloodcolor)
continue
// Remove existing stack entry
stack.Remove(track)
track=new /datum/fluidtrack(b,bloodcolor,t)
stack.Add(track)
setdirs["[b]"]=stack.Find(track)
updatedtracks |= b
updated=1
dirs |= comingdir|realgoing
if(islist(blood_DNA))
blood_DNA |= DNA.Copy()
if(updated)
update_icon()
update_icon()
overlays.Cut()
color = "#FFFFFF"
var/truedir=0
// Update ONLY the overlays that have changed.
for(var/datum/fluidtrack/track in stack)
var/stack_idx=setdirs["[track.direction]"]
var/state=coming_state
truedir=track.direction
if(truedir&240) // Check if we're in the GOING block
state=going_state
truedir=truedir>>4
if(track.overlay)
track.overlay=null
var/image/I = image(icon, icon_state=state, dir=num2dir(truedir))
I.color = track.basecolor
track.fresh=0
track.overlay=I
stack[stack_idx]=track
overlays += I
updatedtracks=0 // Clear our memory of updated tracks.
/obj/effect/decal/cleanable/blood/tracks/footprints
name = "wet footprints"
dryname = "dried footprints"
desc = "They look like still wet tracks left by footwear."
drydesc = "They look like dried tracks left by footwear."
coming_state = "human1"
going_state = "human2"
amount = 0
/obj/effect/decal/cleanable/blood/tracks/snake
name = "wet tracks"
dryname = "dried tracks"
desc = "They look like still wet tracks left by a giant snake."
drydesc = "They look like dried tracks left by a giant snake."
coming_state = "snake1"
going_state = "snake2"
random_icon_states = null
amount = 0
/obj/effect/decal/cleanable/blood/tracks/paw
name = "wet tracks"
dryname = "dried tracks"
desc = "They look like still wet tracks left by a mammal."
drydesc = "They look like dried tracks left by a mammal."
coming_state = "paw1"
going_state = "paw2"
random_icon_states = null
amount = 0
/obj/effect/decal/cleanable/blood/tracks/claw
name = "wet tracks"
dryname = "dried tracks"
desc = "They look like still wet tracks left by a reptile."
drydesc = "They look like dried tracks left by a reptile."
coming_state = "claw1"
going_state = "claw2"
random_icon_states = null
amount = 0
/obj/effect/decal/cleanable/blood/tracks/wheels
name = "wet tracks"
dryname = "dried tracks"
desc = "They look like still wet tracks left by wheels."
drydesc = "They look like dried tracks left by wheels."
coming_state = "wheels"
going_state = ""
gender = PLURAL
random_icon_states = null
amount = 0
@@ -1,14 +0,0 @@
/obj/effect/decal/cleanable
layer = DEBRIS_LAYER
var/list/random_icon_states = list()
/obj/effect/decal/cleanable/clean_blood(var/ignore = 0)
if(!ignore)
qdel(src)
return
..()
/obj/effect/decal/cleanable/Initialize(mapload)
. = ..()
if (random_icon_states && length(src.random_icon_states) > 0)
icon_state = pick(src.random_icon_states)
@@ -1,59 +0,0 @@
/obj/effect/decal/cleanable/crayon
name = "rune"
desc = "A rune drawn in crayon."
icon = 'icons/obj/rune.dmi'
anchored = 1
New(location,main = "#FFFFFF",shade = "#000000",var/type = "rune")
..()
loc = location
name = type
desc = "A [type] drawn in crayon."
switch(type)
if("rune")
type = "rune[rand(1,6)]"
if("graffiti")
type = pick("amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa")
var/icon/mainOverlay = new/icon('icons/effects/crayondecal.dmi',"[type]",2.1)
var/icon/shadeOverlay = new/icon('icons/effects/crayondecal.dmi',"[type]s",2.1)
mainOverlay.Blend(main,ICON_ADD)
shadeOverlay.Blend(shade,ICON_ADD)
overlays += mainOverlay
overlays += shadeOverlay
add_hiddenprint(usr)
/obj/effect/decal/cleanable/crayon/chalk
name = "arcane rune"
desc = "A rune drawn in chalk."
icon = 'icons/obj/rune.dmi'
anchored = 1
New(location,main = "#FFFFFF",shade = "#000000",var/type = "rune")
..()
loc = location
name = type
desc = "A [type] drawn in chalk."
switch(type)
if("rune")
type = "rune[rand(1,6)]"
if("graffiti")
type = pick("end","uboa")
var/icon/mainOverlay = new/icon('icons/effects/crayondecal.dmi',"[type]",2.1)
var/icon/shadeOverlay = new/icon('icons/effects/crayondecal.dmi',"[type]s",2.1)
mainOverlay.Blend(main,ICON_ADD)
shadeOverlay.Blend(shade,ICON_ADD)
overlays += mainOverlay
overlays += shadeOverlay
add_hiddenprint(usr)
+1 -1
View File
@@ -59,7 +59,7 @@
to_chat(user, "<span class='notice'>[src] sinks together into a pile of ash.</span>")
var/turf/simulated/floor/F = get_turf(src)
if (istype(F))
new /obj/effect/decal/cleanable/ash(F)
new /obj/effect/debris/cleanable/ash(F)
qdel(src)
/obj/effect/decal/remains/robot/attack_hand(mob/user as mob)