diff --git a/code/datums/spells/knock.dm b/code/datums/spells/knock.dm
index 301dd5086b2..c1828c53e82 100644
--- a/code/datums/spells/knock.dm
+++ b/code/datums/spells/knock.dm
@@ -34,7 +34,7 @@
/obj/effect/proc_holder/spell/aoe_turf/knock/greater
name = "Greater Knock"
- desc = "On first cast, will remove access restrictions on all airlocks on the Cyberiad, and announce this spell's use to the station. On any further cast, will open all doors in sight. Cannot be refunded once bought!"
+ desc = "On first cast, will remove access restrictions on all airlocks on the station, and announce this spell's use to the station. On any further cast, will open all doors in sight. Cannot be refunded once bought!"
charge_max = 200
invocation = "MAIOR OXIN FIERA"
@@ -54,4 +54,4 @@
command_announcement.Announce("We have removed all access requirements on your station's airlocks. You can thank us later!", "Greetings!", 'sound/misc/notice2.ogg', , , "Space Wizard Federation Message")
else
..()
- return
\ No newline at end of file
+ return
diff --git a/code/datums/spells/summonitem.dm b/code/datums/spells/summonitem.dm
index e99a9356312..a006790dfe5 100644
--- a/code/datums/spells/summonitem.dm
+++ b/code/datums/spells/summonitem.dm
@@ -93,9 +93,10 @@
var/obj/machinery/portable_atmospherics/P = item_to_retrive.loc
P.disconnect()
P.update_icon()
-
+ if(istype(item_to_retrive.loc, /obj/structure/disposalholder) || istype(item_to_retrive.loc, /obj/machinery/disposal))//fixes the breaking of disposals. No more bluespace connected disposal bins!
+ break
item_to_retrive = item_to_retrive.loc
-
+
infinite_recursion += 1
if(!item_to_retrive)
diff --git a/code/game/gamemodes/changeling/powers/transform.dm b/code/game/gamemodes/changeling/powers/transform.dm
index 8e1334fb30e..b2d97b87727 100644
--- a/code/game/gamemodes/changeling/powers/transform.dm
+++ b/code/game/gamemodes/changeling/powers/transform.dm
@@ -14,11 +14,15 @@
if(!chosen_dna)
return
-
+
transform_dna(user,chosen_dna)
user.changeling_update_languages(changeling.absorbed_languages)
+ if(user.mind.speech_span == "wingdings") //greys' wingdings isn't stored in DNA
+ user.mind.speech_span = ""
+ to_chat(user, "Our vocal cords have permanently shifted. We will now speak regularly.")
+
feedback_add_details("changeling_powers","TR")
return 1
diff --git a/code/game/gamemodes/miniantags/guardian/types/fire.dm b/code/game/gamemodes/miniantags/guardian/types/fire.dm
index 61905f942d2..0bddb4c3f51 100644
--- a/code/game/gamemodes/miniantags/guardian/types/fire.dm
+++ b/code/game/gamemodes/miniantags/guardian/types/fire.dm
@@ -29,19 +29,19 @@
toggle = TRUE
/mob/living/simple_animal/hostile/guardian/fire/AttackingTarget()
- if(..())
- if(toggle)
- if(ishuman(target) && !summoner)
- spawn(0)
- new /obj/effect/hallucination/delusion(target.loc, target, force_kind = "custom", duration = 200, skip_nearby = 0, custom_icon = icon_state, custom_icon_file = icon)
- else
- if(prob(45))
- if(ismovableatom(target))
- var/atom/movable/M = target
- if(!M.anchored && M != summoner)
- new /obj/effect/temp_visual/guardian/phase/out(get_turf(M))
- do_teleport(M, M, 10)
- new /obj/effect/temp_visual/guardian/phase/out(get_turf(M))
+ ..()
+ if(toggle)
+ if(ishuman(target) && !summoner)
+ spawn(0)
+ new /obj/effect/hallucination/delusion(target.loc, target, force_kind = "custom", duration = 200, skip_nearby = 0, custom_icon = icon_state, custom_icon_file = icon)
+ else
+ if(prob(45))
+ if(ismovableatom(target))
+ var/atom/movable/M = target
+ if(!M.anchored && M != summoner)
+ new /obj/effect/temp_visual/guardian/phase/out(get_turf(M))
+ do_teleport(M, M, 10)
+ new /obj/effect/temp_visual/guardian/phase/out(get_turf(M))
/mob/living/simple_animal/hostile/guardian/fire/Crossed(AM as mob|obj)
..()
diff --git a/code/game/objects/effects/decals/Cleanable/aliens.dm b/code/game/objects/effects/decals/Cleanable/aliens.dm
index 8bc9b6c42d5..c788e934b45 100644
--- a/code/game/objects/effects/decals/Cleanable/aliens.dm
+++ b/code/game/objects/effects/decals/Cleanable/aliens.dm
@@ -21,10 +21,10 @@
color = "#FFFFFF"
/obj/effect/decal/cleanable/blood/gibs/xeno/up
- random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1")
+ 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")
+ 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")
@@ -36,4 +36,4 @@
random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3")
/obj/effect/decal/cleanable/blood/xtracks
- basecolor = "#05EE05"
\ No newline at end of file
+ basecolor = "#05EE05"
diff --git a/code/game/objects/effects/decals/Cleanable/fuel.dm b/code/game/objects/effects/decals/Cleanable/fuel.dm
index 3d6a47a00b9..c4c903474ef 100644
--- a/code/game/objects/effects/decals/Cleanable/fuel.dm
+++ b/code/game/objects/effects/decals/Cleanable/fuel.dm
@@ -2,11 +2,11 @@
//Liquid fuel is used for things that used to rely on volatile fuels or plasma being contained to a couple tiles.
icon = 'icons/effects/effects.dmi'
icon_state = "fuel"
- layer = TURF_LAYER+0.2
- anchored = 1
+ layer = LATTICE_LAYER
+ anchored = TRUE
var/amount = 1 //Basically moles.
-/obj/effect/decal/cleanable/liquid_fuel/New(newLoc,amt=1)
+/obj/effect/decal/cleanable/liquid_fuel/Initialize(newLoc, amt = 1)
amount = amt
//Be absorbed by any other liquid fuel in the tile.
@@ -21,38 +21,42 @@
/obj/effect/decal/cleanable/liquid_fuel/proc/Spread()
//Allows liquid fuels to sometimes flow into other tiles.
- if(amount < 0.5) return
+ if(amount < 0.5)
+ return
var/turf/simulated/S = loc
- if(!istype(S)) return
+ if(!istype(S))
+ return
for(var/d in cardinal)
if(rand(25))
var/turf/simulated/target = get_step(src, d)
var/turf/simulated/origin = get_turf(src)
if(origin.CanPass(null, target, 0, 0) && target.CanPass(null, origin, 0, 0))
if(!locate(/obj/effect/decal/cleanable/liquid_fuel) in target)
- new/obj/effect/decal/cleanable/liquid_fuel(target, amount*0.25)
+ new/obj/effect/decal/cleanable/liquid_fuel(target, amount * 0.25)
amount *= 0.75
/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel
icon_state = "mustard"
- anchored = 0
+ anchored = FALSE
-/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/New(newLoc, amt = 1, d = 0)
+/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/Initialize(newLoc, amt = 1, d = 0)
dir = d //Setting this direction means you won't get torched by your own flamethrower.
. = ..()
/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) return
+ if(amount < 0.1)
+ return
var/turf/simulated/S = loc
- if(!istype(S)) return
+ if(!istype(S))
+ return
- for(var/d in list(turn(dir,90),turn(dir,-90), dir))
- var/turf/simulated/O = get_step(S,d)
+ 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.CanPass(null, S, 0, 0) && S.CanPass(null, O, 0, 0))
- new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(O,amount*0.25,d)
+ new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(O, amount * 0.25, d)
O.hotspot_expose((T20C*2) + 380,500) //Light flamethrower fuel on fire immediately.
amount *= 0.25
diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm
index f832b446cd5..53072d7e82c 100644
--- a/code/game/objects/effects/decals/Cleanable/humans.dm
+++ b/code/game/objects/effects/decals/Cleanable/humans.dm
@@ -1,6 +1,6 @@
-#define DRYING_TIME 5 * 60*10 //for 1 unit of depth in puddle (amount var)
+#define DRYING_TIME 5 * 60 * 10 //for 1 unit of depth in puddle (amount var)
-var/global/list/image/splatter_cache=list()
+var/global/list/image/splatter_cache = list()
/obj/effect/decal/cleanable/blood
name = "blood"
@@ -8,24 +8,24 @@ var/global/list/image/splatter_cache=list()
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
- layer = 2
+ density = FALSE
+ anchored = TRUE
+ layer = TURF_LAYER
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'
+ appearance_flags = NO_CLIENT_COLOR
blood_DNA = list()
+ var/base_icon = 'icons/effects/blood.dmi'
var/blood_state = BLOOD_STATE_HUMAN
var/bloodiness = MAX_SHOE_BLOODINESS
var/basecolor = "#A10808" // Color when wet.
var/amount = 5
- appearance_flags = NO_CLIENT_COLOR
var/dry_timer = 0
var/off_floor = FALSE
-/obj/effect/decal/cleanable/blood/New()
- ..()
+/obj/effect/decal/cleanable/blood/Initialize()
+ . = ..()
update_icon()
if(GAMEMODE_IS_CULT)
var/datum/game_mode/cult/mode_ticker = ticker.mode
@@ -58,7 +58,8 @@ var/global/list/image/splatter_cache=list()
return ..()
/obj/effect/decal/cleanable/blood/update_icon()
- if(basecolor == "rainbow") basecolor = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]"
+ if(basecolor == "rainbow")
+ basecolor = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]"
color = basecolor
/obj/effect/decal/cleanable/blood/proc/dry()
@@ -93,9 +94,9 @@ var/global/list/image/splatter_cache=list()
var/mob/living/carbon/human/H = O
var/obj/item/organ/external/l_foot = H.get_organ("l_foot")
var/obj/item/organ/external/r_foot = H.get_organ("r_foot")
- var/hasfeet = 1
+ var/hasfeet = TRUE
if(!l_foot && !r_foot)
- hasfeet = 0
+ hasfeet = FALSE
if(H.shoes && blood_state && bloodiness)
var/obj/item/clothing/shoes/S = H.shoes
var/add_blood = 0
@@ -137,10 +138,10 @@ var/global/list/image/splatter_cache=list()
gender = PLURAL
icon = 'icons/effects/drip.dmi'
icon_state = "1"
- random_icon_states = list("1","2","3","4","5")
+ random_icon_states = list("1", "2", "3", "4", "5")
amount = 0
- var/drips = 1
bloodiness = 0
+ var/drips = 1
/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in()
return TRUE
@@ -150,12 +151,12 @@ var/global/list/image/splatter_cache=list()
icon_state = "ltrails_1"
desc = "Your instincts say you shouldn't be following these."
gender = PLURAL
- density = 0
- layer = 2
+ density = FALSE
+ layer = TURF_LAYER
random_icon_states = null
- var/list/existing_dirs = list()
blood_DNA = list()
appearance_flags = NO_CLIENT_COLOR
+ var/list/existing_dirs = list()
/obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in()
return TRUE
@@ -164,12 +165,12 @@ var/global/list/image/splatter_cache=list()
icon_state = "tracks"
desc = "It looks like a writing in blood."
gender = NEUTER
- random_icon_states = list("writing1","writing2","writing3","writing4","writing5")
+ random_icon_states = list("writing1", "writing2", "writing3", "writing4", "writing5")
amount = 0
var/message
-/obj/effect/decal/cleanable/blood/writing/New()
- ..()
+/obj/effect/decal/cleanable/blood/writing/Initialize()
+ . = ..()
if(random_icon_states.len)
for(var/obj/effect/decal/cleanable/blood/writing/W in loc)
random_icon_states.Remove(W.icon_state)
@@ -179,20 +180,20 @@ var/global/list/image/splatter_cache=list()
/obj/effect/decal/cleanable/blood/writing/examine(mob/user)
..(user)
- to_chat(user, "It reads: \"[message]\"")
+ to_chat(user, "It reads: \"[message]\"")
/obj/effect/decal/cleanable/blood/gibs
name = "gibs"
desc = "They look bloody and gruesome."
gender = PLURAL
- density = 0
- anchored = 1
- layer = 2
+ density = FALSE
+ anchored = TRUE
+ layer = TURF_LAYER
icon = 'icons/effects/blood.dmi'
icon_state = "gibbl5"
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6")
+ noclear = TRUE
var/fleshcolor = "#FFFFFF"
- noclear = 1
/obj/effect/decal/cleanable/blood/gibs/update_icon()
var/image/giblets = new(base_icon, "[icon_state]_flesh", dir)
@@ -207,10 +208,10 @@ var/global/list/image/splatter_cache=list()
. = ..()
/obj/effect/decal/cleanable/blood/gibs/up
- random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
+ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gibup1", "gibup1", "gibup1")
/obj/effect/decal/cleanable/blood/gibs/down
- random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
+ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gibdown1", "gibdown1", "gibdown1")
/obj/effect/decal/cleanable/blood/gibs/body
random_icon_states = list("gibhead", "gibtorso")
@@ -221,15 +222,15 @@ var/global/list/image/splatter_cache=list()
/obj/effect/decal/cleanable/blood/gibs/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
-/obj/effect/decal/cleanable/blood/gibs/New()
- ..()
+/obj/effect/decal/cleanable/blood/gibs/Initialize()
+ . = ..()
reagents.add_reagent("liquidgibs", 5)
/obj/effect/decal/cleanable/blood/gibs/cleangibs //most ironic name ever...
-/obj/effect/decal/cleanable/blood/gibs/cleangibs/New() //no reagent!
- ..()
+/obj/effect/decal/cleanable/blood/gibs/cleangibs/Initialize() //no reagent!
+ . = ..()
reagents.remove_reagent("liquidgibs",5)
@@ -246,18 +247,20 @@ var/global/list/image/splatter_cache=list()
break
-/obj/effect/decal/cleanable/blood/old/New()
- ..()
+/obj/effect/decal/cleanable/blood/old/Initialize()
+ . = ..()
bloodiness = 0
dry()
/obj/effect/decal/cleanable/blood/old/can_bloodcrawl_in()
return FALSE
-/obj/effect/decal/cleanable/blood/gibs/old/New()
- ..()
+/obj/effect/decal/cleanable/blood/gibs/old/Initialize()
+ . = ..()
bloodiness = 0
dry()
/obj/effect/decal/cleanable/blood/gibs/old/can_bloodcrawl_in()
return FALSE
+
+#undef DRYING_TIME
diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm
index e67d2c9954a..c25119900f0 100644
--- a/code/game/objects/effects/decals/Cleanable/misc.dm
+++ b/code/game/objects/effects/decals/Cleanable/misc.dm
@@ -1,207 +1,204 @@
-/obj/effect/decal/cleanable/generic
- name = "clutter"
- desc = "Someone should clean that up."
- gender = PLURAL
- density = 0
- anchored = 1
- layer = 2
- 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/New()
- ..()
- reagents.add_reagent("ash", 10)
-
-/obj/effect/decal/cleanable/dirt
- name = "dirt"
- desc = "Someone should clean that up."
- gender = PLURAL
- density = 0
- anchored = 1
- layer = 2
- icon = 'icons/effects/dirt.dmi'
- icon_state = "dirt"
- canSmoothWith = list(/obj/effect/decal/cleanable/dirt, /turf/simulated/wall, /obj/structure/falsewall)
- smooth = SMOOTH_MORE
- mouse_opacity = 0
-
-/obj/effect/decal/cleanable/dirt/Initialize()
- ..()
- icon_state = ""
-
-/obj/effect/decal/cleanable/dirt/blackpowder
- name = "black powder"
- mouse_opacity = 1
- noscoop = 1
-
-/obj/effect/decal/cleanable/dirt/blackpowder/New()
- ..()
- reagents.add_reagent("blackpowder", 40) //size 2 explosion when activated
-
-/obj/effect/decal/cleanable/flour
- name = "flour"
- desc = "It's still good. Four second rule!"
- gender = PLURAL
- density = 0
- anchored = 1
- layer = 2
- icon = 'icons/effects/effects.dmi'
- icon_state = "flour"
-
-/obj/effect/decal/cleanable/flour/foam
- name = "Fire fighting foam"
- desc = "It's foam."
- color = "#EBEBEB"
-
- New()
- ..()
- spawn(150)// 15 seconds
- qdel(src)
-
-/obj/effect/decal/cleanable/greenglow
- name = "glowing goo"
- desc = "Jeez. I hope that's not for lunch."
- gender = PLURAL
- density = 0
- anchored = 1
- layer = 2
- light_range = 1
- icon = 'icons/effects/effects.dmi'
- icon_state = "greenglow"
-
- New()
- ..()
- spawn(1200)// 2 minutes
- qdel(src)
-
-/obj/effect/decal/cleanable/cobweb
- name = "cobweb"
- desc = "Somebody should remove that."
- density = 0
- anchored = 1
- layer = 3
- icon = 'icons/effects/effects.dmi'
- icon_state = "cobweb1"
- burntime = 1
-
-/obj/effect/decal/cleanable/cobweb/fire_act()
- qdel(src)
-
-/obj/effect/decal/cleanable/molten_object
- name = "gooey grey mass"
- desc = "It looks like a melted... something."
- density = 0
- anchored = 1
- layer = 3
- gender = NEUTER
- icon = 'icons/effects/effects.dmi'
- icon_state = "molten"
-
-/obj/effect/decal/cleanable/molten_object/large
- name = "big gooey grey mass"
- icon_state = "big_molten"
-
-/obj/effect/decal/cleanable/cobweb2
- name = "cobweb"
- desc = "Somebody should remove that."
- density = 0
- anchored = 1
- layer = 3
- 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
- layer = 2
- icon = 'icons/effects/blood.dmi'
- icon_state = "vomit_1"
- random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4")
- noclear = 1
-
-/obj/effect/decal/cleanable/vomit/New()
- ..()
- reagents.add_reagent("vomit", 5)
-
-
-/obj/effect/decal/cleanable/vomit/green
- name = "green vomit"
- desc = "It's all gummy. Ew."
- icon_state = "gvomit_1"
- random_icon_states = list("gvomit_1", "gvomit_2", "gvomit_3", "gvomit_4")
-
-/obj/effect/decal/cleanable/vomit/green/New()
- ..()
- reagents.remove_reagent("vomit", 5)
- reagents.add_reagent("green_vomit", 5)
-
-/obj/effect/decal/cleanable/tomato_smudge
- name = "tomato smudge"
- desc = "It's red."
- density = 0
- anchored = 1
- layer = 2
- icon = 'icons/effects/tomatodecal.dmi'
- random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3")
-
-/obj/effect/decal/cleanable/plant_smudge
- name = "plant smudge"
- density = 0
- anchored = 1
- layer = 2
- gender = NEUTER
- icon = 'icons/effects/tomatodecal.dmi'
- random_icon_states = list("smashed_plant")
-
-/obj/effect/decal/cleanable/egg_smudge
- name = "smashed egg"
- desc = "Seems like this one won't hatch."
- density = 0
- anchored = 1
- layer = 2
- 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
- layer = 2
- icon = 'icons/effects/tomatodecal.dmi'
- random_icon_states = list("smashed_pie")
-
-/obj/effect/decal/cleanable/fungus
- name = "space fungus"
- desc = "A fungal growth. Looks pretty nasty."
- density = 0
- anchored = 1
- layer = 2
- icon = 'icons/effects/effects.dmi'
- icon_state = "flour"
- color = "#D5820B"
-
-/obj/effect/decal/cleanable/fungus/New()
- ..()
- reagents.add_reagent("fungus", 10)
-
-/obj/effect/decal/cleanable/confetti //PARTY TIME!
- name = "confetti"
- desc = "Party time!"
- gender = PLURAL
- icon = 'icons/obj/objects.dmi'
- icon_state = "confetti1"
- random_icon_states = list("confetti1", "confetti2", "confetti3")
- anchored = 1
+/obj/effect/decal/cleanable/generic
+ name = "clutter"
+ desc = "Someone should clean that up."
+ gender = PLURAL
+ density = FALSE
+ anchored = TRUE
+ layer = TURF_LAYER
+ 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 = TRUE
+
+/obj/effect/decal/cleanable/ash/Initialize()
+ . = ..()
+ reagents.add_reagent("ash", 10)
+
+/obj/effect/decal/cleanable/dirt
+ name = "dirt"
+ desc = "Someone should clean that up."
+ gender = PLURAL
+ density = FALSE
+ anchored = TRUE
+ layer = TURF_LAYER
+ icon = 'icons/effects/dirt.dmi'
+ icon_state = "dirt"
+ canSmoothWith = list(/obj/effect/decal/cleanable/dirt, /turf/simulated/wall, /obj/structure/falsewall)
+ smooth = SMOOTH_MORE
+ mouse_opacity = FALSE
+
+/obj/effect/decal/cleanable/dirt/Initialize()
+ ..()
+ icon_state = ""
+
+/obj/effect/decal/cleanable/dirt/blackpowder
+ name = "black powder"
+ mouse_opacity = TRUE
+ noscoop = TRUE
+
+/obj/effect/decal/cleanable/dirt/blackpowder/Initialize()
+ . = ..()
+ reagents.add_reagent("blackpowder", 40) // size 2 explosion when activated
+
+/obj/effect/decal/cleanable/flour
+ name = "flour"
+ desc = "It's still good. Four second rule!"
+ gender = PLURAL
+ density = FALSE
+ anchored = TRUE
+ layer = TURF_LAYER
+ icon = 'icons/effects/effects.dmi'
+ icon_state = "flour"
+
+/obj/effect/decal/cleanable/flour/foam
+ name = "Fire fighting foam"
+ desc = "It's foam."
+ color = "#EBEBEB"
+
+/obj/effect/decal/cleanable/flour/foam/Initialize()
+ . = ..()
+ QDEL_IN(src, 15 SECONDS)
+
+/obj/effect/decal/cleanable/greenglow
+ name = "glowing goo"
+ desc = "Jeez. I hope that's not for lunch."
+ gender = PLURAL
+ density = FALSE
+ anchored = TRUE
+ layer = TURF_LAYER
+ light_range = 1
+ icon = 'icons/effects/effects.dmi'
+ icon_state = "greenglow"
+
+/obj/effect/decal/cleanable/greenglow/Initialize(mapload)
+ . = ..()
+ QDEL_IN(src, 2 MINUTES)
+
+/obj/effect/decal/cleanable/cobweb
+ name = "cobweb"
+ desc = "Somebody should remove that."
+ density = FALSE
+ anchored = TRUE
+ layer = OBJ_LAYER
+ icon = 'icons/effects/effects.dmi'
+ icon_state = "cobweb1"
+ burntime = 1
+
+/obj/effect/decal/cleanable/cobweb/fire_act()
+ qdel(src)
+
+/obj/effect/decal/cleanable/molten_object
+ name = "gooey grey mass"
+ desc = "It looks like a melted... something."
+ density = FALSE
+ anchored = TRUE
+ layer = OBJ_LAYER
+ gender = NEUTER
+ icon = 'icons/effects/effects.dmi'
+ icon_state = "molten"
+
+/obj/effect/decal/cleanable/molten_object/large
+ name = "big gooey grey mass"
+ icon_state = "big_molten"
+
+/obj/effect/decal/cleanable/cobweb2
+ name = "cobweb"
+ desc = "Somebody should remove that."
+ density = FALSE
+ anchored = TRUE
+ layer = OBJ_LAYER
+ icon = 'icons/effects/effects.dmi'
+ icon_state = "cobweb2"
+
+/obj/effect/decal/cleanable/vomit
+ name = "vomit"
+ desc = "Gosh, how unpleasant."
+ gender = PLURAL
+ density = FALSE
+ anchored = TRUE
+ layer = TURF_LAYER
+ icon = 'icons/effects/blood.dmi'
+ icon_state = "vomit_1"
+ random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4")
+ noclear = TRUE
+
+/obj/effect/decal/cleanable/vomit/Initialize()
+ . = ..()
+ reagents.add_reagent("vomit", 5)
+
+/obj/effect/decal/cleanable/vomit/green
+ name = "green vomit"
+ desc = "It's all gummy. Ew."
+ icon_state = "gvomit_1"
+ random_icon_states = list("gvomit_1", "gvomit_2", "gvomit_3", "gvomit_4")
+
+/obj/effect/decal/cleanable/vomit/green/Initialize()
+ . = ..()
+ reagents.remove_reagent("vomit", 5)
+ reagents.add_reagent("green_vomit", 5)
+
+/obj/effect/decal/cleanable/tomato_smudge
+ name = "tomato smudge"
+ desc = "It's red."
+ density = FALSE
+ anchored = TRUE
+ layer = TURF_LAYER
+ icon = 'icons/effects/tomatodecal.dmi'
+ random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3")
+
+/obj/effect/decal/cleanable/plant_smudge
+ name = "plant smudge"
+ density = FALSE
+ anchored = TRUE
+ layer = TURF_LAYER
+ gender = NEUTER
+ icon = 'icons/effects/tomatodecal.dmi'
+ random_icon_states = list("smashed_plant")
+
+/obj/effect/decal/cleanable/egg_smudge
+ name = "smashed egg"
+ desc = "Seems like this one won't hatch."
+ density = FALSE
+ anchored = TRUE
+ layer = TURF_LAYER
+ 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 = FALSE
+ anchored = TRUE
+ layer = TURF_LAYER
+ icon = 'icons/effects/tomatodecal.dmi'
+ random_icon_states = list("smashed_pie")
+
+/obj/effect/decal/cleanable/fungus
+ name = "space fungus"
+ desc = "A fungal growth. Looks pretty nasty."
+ density = FALSE
+ anchored = TRUE
+ layer = TURF_LAYER
+ icon = 'icons/effects/effects.dmi'
+ icon_state = "flour"
+ color = "#D5820B"
+
+/obj/effect/decal/cleanable/fungus/Initialize()
+ . = ..()
+ reagents.add_reagent("fungus", 10)
+
+/obj/effect/decal/cleanable/confetti //PARTY TIME!
+ name = "confetti"
+ desc = "Party time!"
+ gender = PLURAL
+ icon = 'icons/obj/objects.dmi'
+ icon_state = "confetti1"
+ random_icon_states = list("confetti1", "confetti2", "confetti3")
+ anchored = TRUE
+
diff --git a/code/game/objects/effects/decals/Cleanable/robots.dm b/code/game/objects/effects/decals/Cleanable/robots.dm
index 5bce827604c..16a9bf5a711 100644
--- a/code/game/objects/effects/decals/Cleanable/robots.dm
+++ b/code/game/objects/effects/decals/Cleanable/robots.dm
@@ -3,7 +3,7 @@
desc = "It's a useless heap of junk... or is it?"
icon = 'icons/mob/robots.dmi'
icon_state = "gib1"
- basecolor="#030303"
+ basecolor = "#030303"
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7")
bloodiness = MAX_SHOE_BLOODINESS
@@ -20,7 +20,7 @@
return FALSE
/obj/effect/decal/cleanable/blood/gibs/robot/streak(var/list/directions)
- spawn (0)
+ spawn(0)
var/direction = pick(directions)
for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
sleep(3)
@@ -39,15 +39,15 @@
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
+ 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
+ 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
name = "motor oil"
desc = "It's black and greasy. Looks like Beepsky made another mess."
- basecolor="#030303"
+ basecolor = "#030303"
bloodiness = MAX_SHOE_BLOODINESS
/obj/effect/decal/cleanable/blood/oil/can_bloodcrawl_in()
diff --git a/code/game/objects/effects/decals/Cleanable/tracks.dm b/code/game/objects/effects/decals/Cleanable/tracks.dm
index 0568f2db75c..8598381aaf1 100644
--- a/code/game/objects/effects/decals/Cleanable/tracks.dm
+++ b/code/game/objects/effects/decals/Cleanable/tracks.dm
@@ -2,7 +2,7 @@
#define TRACKS_CRUSTIFY_TIME 50
// color-dir-dry
-var/global/list/image/fluidtrack_cache=list()
+var/global/list/image/fluidtrack_cache = list()
// Footprints, tire trails...
/obj/effect/decal/cleanable/blood/tracks
@@ -23,7 +23,7 @@ var/global/list/image/fluidtrack_cache=list()
desc = "You REALLY shouldn't follow these.."
gender = PLURAL
random_icon_states = null
- basecolor="#A10808"
+ basecolor = "#A10808"
var/entered_dirs = 0
var/exited_dirs = 0
blood_state = BLOOD_STATE_HUMAN //the icon state to load images from
@@ -35,9 +35,9 @@ var/global/list/image/fluidtrack_cache=list()
var/obj/item/clothing/shoes/S = H.shoes
var/obj/item/organ/external/l_foot = H.get_organ("l_foot")
var/obj/item/organ/external/r_foot = H.get_organ("r_foot")
- var/hasfeet = 1
+ var/hasfeet = TRUE
if(!l_foot && !r_foot)
- hasfeet = 0
+ hasfeet = FALSE
if(S && S.bloody_shoes[blood_state] && S.blood_color == basecolor)
S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0)
entered_dirs |= H.dir
@@ -58,9 +58,9 @@ var/global/list/image/fluidtrack_cache=list()
var/obj/item/clothing/shoes/S = H.shoes
var/obj/item/organ/external/l_foot = H.get_organ("l_foot")
var/obj/item/organ/external/r_foot = H.get_organ("r_foot")
- var/hasfeet = 1
+ var/hasfeet = TRUE
if(!l_foot && !r_foot)
- hasfeet = 0
+ hasfeet = FALSE
if(S && S.bloody_shoes[blood_state] && S.blood_color == basecolor)
S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0)
exited_dirs |= H.dir
diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm
index 4395da0b6be..9dc62b3551e 100644
--- a/code/game/objects/effects/decals/cleanable.dm
+++ b/code/game/objects/effects/decals/cleanable.dm
@@ -1,8 +1,8 @@
/obj/effect/decal/cleanable
- anchored = 1
+ anchored = TRUE
var/list/random_icon_states = list()
- var/noscoop = 0 //if it has this, don't let it be scooped up
- var/noclear = 0 //if it has this, don't delete it when its' scooped up
+ var/noscoop = FALSE //if it has this, don't let it be scooped up
+ var/noclear = FALSE //if it has this, don't delete it when its' scooped up
/obj/effect/decal/cleanable/proc/can_bloodcrawl_in()
return FALSE
@@ -36,7 +36,8 @@
qdel(src)
return
if(is_hot(W)) //todo: make heating a reagent holder proc
- if(istype(W, /obj/item/clothing/mask/cigarette)) return
+ if(istype(W, /obj/item/clothing/mask/cigarette))
+ return
else
src.reagents.chem_temp += 15
src.reagents.handle_reactions()
diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm
index c953993197c..ac0007e42ae 100644
--- a/code/game/objects/effects/decals/crayon.dm
+++ b/code/game/objects/effects/decals/crayon.dm
@@ -3,8 +3,8 @@
desc = "A rune drawn in crayon."
icon = 'icons/effects/crayondecal.dmi'
icon_state = "rune1"
- layer = 2.1
- anchored = 1
+ layer = MID_TURF_LAYER
+ anchored = TRUE
/obj/effect/decal/cleanable/crayon/New(location, main = "#FFFFFF", var/type = "rune1", var/e_name = "rune")
@@ -15,4 +15,4 @@
desc = "A [name] drawn in crayon."
icon_state = type
- color = main
\ No newline at end of file
+ color = main
diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm
index 301fd71a98d..e2f1399a922 100644
--- a/code/game/objects/effects/decals/misc.dm
+++ b/code/game/objects/effects/decals/misc.dm
@@ -1,7 +1,7 @@
// Used for spray that you spray at walls, tables, hydrovats etc
/obj/effect/decal/spraystill
- density = 0
- anchored = 1
+ density = FALSE
+ anchored = TRUE
layer = 50
plane = HUD_PLANE
@@ -11,38 +11,38 @@
pass_flags = PASSTABLE | PASSGRILLE
/obj/effect/decal/snow
- name="snow"
- density=0
- anchored=1
- layer=2
- icon='icons/turf/snow.dmi'
+ name = "snow"
+ density = FALSE
+ anchored = TRUE
+ layer = TURF_DECAL_LAYER
+ icon = 'icons/turf/snow.dmi'
/obj/effect/decal/snow/clean/edge
- icon_state="snow_corner"
+ icon_state = "snow_corner"
/obj/effect/decal/snow/sand/edge
- icon_state="gravsnow_corner"
+ icon_state = "gravsnow_corner"
/obj/effect/decal/snow/clean/surround
- icon_state="snow_surround"
+ icon_state = "snow_surround"
/obj/effect/decal/snow/sand/surround
- icon_state="gravsnow_surround"
+ icon_state = "gravsnow_surround"
/obj/effect/decal/leaves
- name="fall leaves"
- density = 0
- anchored = 1
- layer = 2
- icon='icons/obj/flora/plants.dmi'
+ name = "fall leaves"
+ density = FALSE
+ anchored = TRUE
+ layer = HIGH_TURF_LAYER
+ icon = 'icons/obj/flora/plants.dmi'
icon_state = "fallleaves"
/obj/effect/decal/straw
- name="scattered straw"
- density = 0
- anchored = 1
- layer = 2
- icon='icons/obj/flora/plants.dmi'
+ name = "scattered straw"
+ density = FALSE
+ anchored = TRUE
+ layer = HIGH_TURF_LAYER
+ icon = 'icons/obj/flora/plants.dmi'
icon_state = "strawscattered"
/obj/effect/decal/straw/medium
@@ -52,4 +52,4 @@
icon_state = "strawscattered2"
/obj/effect/decal/straw/edge
- icon_state = "strawscatterededge"
\ No newline at end of file
+ icon_state = "strawscatterededge"
diff --git a/code/game/objects/effects/decals/remains.dm b/code/game/objects/effects/decals/remains.dm
index d57a364255b..b97b149991b 100644
--- a/code/game/objects/effects/decals/remains.dm
+++ b/code/game/objects/effects/decals/remains.dm
@@ -6,21 +6,21 @@
desc = "They look like human remains. They have a strange aura about them."
icon = 'icons/effects/blood.dmi'
icon_state = "remains"
- anchored = 1
+ anchored = TRUE
/obj/effect/decal/remains/xeno
name = "remains"
desc = "They look like the remains of something... alien. They have a strange aura about them."
icon = 'icons/effects/blood.dmi'
icon_state = "remainsxeno"
- anchored = 1
+ anchored = TRUE
/obj/effect/decal/remains/robot
name = "remains"
desc = "They look like the remains of something mechanical. They have a strange aura about them."
icon = 'icons/mob/robots.dmi'
icon_state = "remainsrobot"
- anchored = 1
+ anchored = TRUE
/obj/effect/decal/remains/robot/New()
..()
@@ -33,7 +33,7 @@
desc = "Noooooooooooooooooooooo"
icon = 'icons/effects/blood.dmi'
icon_state = "remains"
- anchored = 1
+ anchored = TRUE
/obj/effect/decal/remains/slime/New()
..()
diff --git a/code/game/objects/effects/decals/warning_stripes.dm b/code/game/objects/effects/decals/warning_stripes.dm
index dbec481e944..29af46f1192 100644
--- a/code/game/objects/effects/decals/warning_stripes.dm
+++ b/code/game/objects/effects/decals/warning_stripes.dm
@@ -1,6 +1,6 @@
/obj/effect/decal/warning_stripes
icon = 'icons/effects/warning_stripes.dmi'
- layer = 2
+ layer = TURF_LAYER
/obj/effect/decal/warning_stripes/north
icon_state = "N"
@@ -50,7 +50,7 @@
/obj/effect/decal/warning_stripes/northwestsouth
icon_state = "U-E"
-/obj/effect/decal/warning_stripes/New()
+/obj/effect/decal/warning_stripes/Initialize()
. = ..()
loc.overlays += src
qdel(src)
@@ -107,4 +107,4 @@
icon_state = "16"
/obj/effect/decal/warning_stripes/blue/hollow
- icon_state = "18"
\ No newline at end of file
+ icon_state = "18"
diff --git a/code/game/objects/items/devices/autopsy.dm b/code/game/objects/items/devices/autopsy.dm
index 929d7372752..f5aa02d6eb4 100644
--- a/code/game/objects/items/devices/autopsy.dm
+++ b/code/game/objects/items/devices/autopsy.dm
@@ -84,7 +84,7 @@
var/dead_notes = input("Insert any relevant notes")
var/obj/item/paper/R = new(user.loc)
R.name = "Official Coroner's Report - [dead_name]"
- R.info = "NanoTrasen Science Station Cyberiad - Coroner's Report
Name of Deceased: [dead_name]
Rank of Deceased: [dead_rank]
Time of Death: [dead_tod]
Cause of Death: [dead_cause]
Trace Chemicals: [dead_chems]
Additional Coroner's Notes: [dead_notes]
Coroner's Signature: "
+ R.info = "Nanotrasen Science Station [using_map.station_short] - Coroner's Report
Name of Deceased: [dead_name]
Rank of Deceased: [dead_rank]
Time of Death: [dead_tod]
Cause of Death: [dead_cause]
Trace Chemicals: [dead_chems]
Additional Coroner's Notes: [dead_notes]
Coroner's Signature: "
playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1)
sleep(10)
user.put_in_hands(R)
diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm
index 6c726060312..a83a09d639c 100644
--- a/code/game/objects/items/weapons/manuals.dm
+++ b/code/game/objects/items/weapons/manuals.dm
@@ -1636,7 +1636,7 @@
The Chief Engineer is bound to the same rules regarding the axe as Atmospheric Technicians;
The Chief Engineer is permitted to carry a telescopic baton and a flash;
The Chief Engineer is responsible for maintaining the integrity of the Gravitational Singularity Engine and/or the Supermatter Engine and/or the Tesla Engine. Neglecting this duty is grounds for termination should the Engine malfunction;
- The Chief Engineer is responsible for maintaining the integrity of the Cyberiad's Atmospherics System. Failure to maintain this integrity is grounds for termination;
+ The Chief Engineer is responsible for maintaining the integrity of the station's Atmospherics System. Failure to maintain this integrity is grounds for termination;
The Chief Engineer may declare an area "Condemned", if it is damaged to the point where repairs cannot reasonably be completed within an acceptable frame of time;
The Chief Engineer is permitted to grant Building Permits to crewmembers, but must keep the Station Blueprints in a safe location at all times.
@@ -1652,7 +1652,7 @@
Engineers must constantly monitor the Supermatter Engine, if it is the chosen method of power generation, if it is currently active (ie, under Emitter Fire). This is not negotiable;
Engineers must respond promptly to breaches, regardless of size. Failure to report within fifteen (15) minutes will be considered a breach of Standard Operating Procedure, unless there are no spare Engineers to report or an Atmospheric Technician has arrived on scene first. All Hazard Zones must be cordoned off with Engineering Tape, for the sake of everyone else;
Engineers are permitted to hack doors to gain unauthorized access to locations if said locations happen to require urgent repairs;
- Engineers are to maintain the integrity of the Cyberiad's Power Network. In addition, hotwiring the Gravitational Singularity Engine, Supermatter Engine or Tesla Engine is strictly forbidden;
+ Engineers are to maintain the integrity of the station's Power Network. In addition, hotwiring the Gravitational Singularity Engine, Supermatter Engine or Tesla Engine is strictly forbidden;
Engineers must ensure there is at least one (1) engineering hardsuit available on the station at all times, unless there is an emergency that requires the use of all suits.
@@ -2063,7 +2063,7 @@
The Security Pod Pilot is not permitted to use the Laser Module during arrests, and must switch to the Disabler Module;
The Security Pod Pilot must carry around a spare set of tools and energy cell, for their own sake;
The Security Pod Pilot may immediately, and without warning, conduct arrests on individuals attempting to perform E.V.A actions near the AI Satellite. Exception is made if the AI Unit is malfunctioning;
- The Security Pod Pilot is not permitted to explore the area surrounding the station, and must therefore be confined to the immediate orbital area of the NSS Cyberiad, the NXS Klapaucius (the Telecomms Satellite) and the Mining/Research Asteroid. Exception is made if the Head of Security permits otherwise.
+ The Security Pod Pilot is not permitted to explore the area surrounding the station, and must therefore be confined to the immediate orbital area of the station, the NXS Klapaucius (the Telecomms Satellite) and the Mining/Research Asteroid. Exception is made if the Head of Security permits otherwise.
Code Blue
@@ -2506,11 +2506,11 @@
The Captain is not permitted to perform regular Security Duty. However, they may still assist Security if they are understaffed, or if they see a crime being committed. However, the Captain is not permitted to take items from the Armory under normal circumstances, unless authorized by the Head of Security. In addition, the Captain may not requisition weaponry for themselves from Cargo and/or Science, unless there's an immediate threat to station and/or crew;
If a Department lacks a Head of Staff, the Captain should make reasonable efforts to appoint an Acting Head of Staff, if there are available personnel to fill the position;
The Captain is to ensure that Space Law is being correctly applied. This should be done in cooperation with the Head of Security;
- The Captain is not to leave the NSS Cyberiad unless given specific permission by Central Command, or it happens to be the end of the shift. This includes via space or via the Gateway. To do so is to be considered abandoning their posts and is grounds for termination;
+ The Captain is not to leave the station unless given specific permission by Central Command, or it happens to be the end of the shift. This includes via space or via the Gateway. To do so is to be considered abandoning their posts and is grounds for termination;
The Captain must keep the Nuclear Authentication Disk on their person at all times or, failing that, in the possession of the Head of Security or Blueshield;
The Captain is to attempt to resolve every issue that arises in Command locally before contacting Central Command;
The Captain is not permitted to carry their Antique Laser Gun or Space Armor unless there's an immediate emergency that requires attending to;
- The Captain, despite being in charge of the Cyberiad, is not independent from Nanotrasen. Any attempts to disregard general company policy are to be considered an instant condition for contract termination;
+ The Captain, despite being in charge of the station, is not independent from Nanotrasen. Any attempts to disregard general company policy are to be considered an instant condition for contract termination;
The Captain may only promote personnel to a Acting Head of Staff position if there is no assigned Head of Staff associated with the Department. Said Acting Head of Staff must be a member of the Department they are to lead. See below for more information on Chain of Command;
The Captain may not fire any Head of Staff without reasonable justification (ie, incompetency, criminal activity, or otherwise any action that endangers/compromises the station and/or crew). The Captain may not fire any Central Command VIPs (ie, Blueshield, Magistrate, Nanotrasen Representative) without permission from Central Command, unless they are blatantly acting against the well-being and safety of the crew and station.
@@ -2560,4 +2560,4 @@