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 @@ - "} \ No newline at end of file + "} diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index 3a7e6c50c07..05f7f326898 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -29,7 +29,7 @@ /obj/structure/kitchenspike - name = "a meat spike" + name = "meat spike" icon = 'icons/obj/kitchen.dmi' icon_state = "spike" desc = "A spike for collecting meat from animals." diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 12fb05899e0..c396cec9549 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -138,6 +138,7 @@ icon_state = "wooden_chair_wings" name = "wooden chair" desc = "Old is never too old to not be in fashion." + item_chair = /obj/item/chair/wood/wings /obj/structure/chair/comfy name = "comfy chair" diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 6a540e65096..6495c8fabfd 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1988,7 +1988,7 @@ P.name = "Central Command - paper" var/stypes = list("Handle it yourselves!","Illegible fax","Fax not signed","Not Right Now","You are wasting our time", "Keep up the good work", "ERT Instructions") var/stype = input(src.owner, "Which type of standard reply do you wish to send to [H]?","Choose your paperwork", "") as null|anything in stypes - var/tmsg = "



    Nanotrasen Science Station Cyberiad


    NAS Trurl Communications Department Report


    " + var/tmsg = "



    Nanotrasen Science Station [using_map.station_short]


    NAS Trurl Communications Department Report


    " if(stype == "Handle it yourselves!") tmsg += "Greetings, esteemed crewmember. Your fax has been DECLINED automatically by NAS Trurl Fax Registration.

    Please proceed in accordance with Standard Operating Procedure and/or Space Law. You are fully trained to handle this situation without Central Command intervention.

    This is an automatic message." else if(stype == "Illegible fax") diff --git a/code/modules/events/traders.dm b/code/modules/events/traders.dm index 0b2ee2204c6..cbeceac1696 100644 --- a/code/modules/events/traders.dm +++ b/code/modules/events/traders.dm @@ -65,7 +65,7 @@ var/global/list/unused_trade_stations = list("sol") /datum/event/traders/proc/greet_trader(var/mob/living/carbon/human/M) to_chat(M, "You are a trader!") to_chat(M, "You are currently docked at [get_area(M)].") - to_chat(M, "You are about to trade with NSS Cyberiad.") + to_chat(M, "You are about to trade with [station_name()].") to_chat(M, "Negotiate an agreement, and request docking.") spawn(25) show_objectives(M.mind) diff --git a/code/modules/ext_scripts/irc.dm b/code/modules/ext_scripts/irc.dm index c0a25979df2..3cc29ff39fb 100644 --- a/code/modules/ext_scripts/irc.dm +++ b/code/modules/ext_scripts/irc.dm @@ -17,5 +17,5 @@ return /hook/startup/proc/ircNotify() - send2mainirc("Server starting up on [config.server? "byond://[config.server]" : "byond://[world.address]:[world.port]"]") + send2mainirc("Server starting up on [station_name()]. Connect to: [config.server? "[config.server]" : "[world.address]:[world.port]"]") return 1 diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index b8d432d5609..972a8b0d553 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -472,6 +472,8 @@ /mob/living/proc/CureBlind() var/val_change = !!(disabilities & BLIND) disabilities &= ~BLIND + CureIfHasDisability(BLINDBLOCK) + if(val_change) update_blind_effects() @@ -482,6 +484,7 @@ /mob/living/proc/CureCoughing() disabilities &= ~COUGHING + CureIfHasDisability(COUGHBLOCK) // Deaf @@ -490,6 +493,7 @@ /mob/living/proc/CureDeaf() disabilities &= ~DEAF + CureIfHasDisability(DEAFBLOCK) // Epilepsy @@ -498,6 +502,7 @@ /mob/living/proc/CureEpilepsy() disabilities &= ~EPILEPSY + CureIfHasDisability(EPILEPSYBLOCK) // Mute @@ -506,6 +511,7 @@ /mob/living/proc/CureMute() disabilities &= ~MUTE + CureIfHasDisability(MUTEBLOCK) // Nearsighted @@ -518,6 +524,7 @@ /mob/living/proc/CureNearsighted() var/val_change = !!(disabilities & NEARSIGHTED) disabilities &= ~NEARSIGHTED + CureIfHasDisability(GLASSESBLOCK) if(val_change) update_nearsighted_effects() @@ -528,6 +535,7 @@ /mob/living/proc/CureNervous() disabilities &= ~NERVOUS + CureIfHasDisability(NERVOUSBLOCK) // Tourettes @@ -536,3 +544,10 @@ /mob/living/proc/CureTourettes() disabilities &= ~TOURETTES + CureIfHasDisability(TWITCHBLOCK) + +/mob/living/proc/CureIfHasDisability(block) + if(dna.GetSEState(block)) + dna.SetSEState(block, 0, 1) //Fix the gene + genemutcheck(src, block,null, MUTCHK_FORCED) + dna.UpdateSE() diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 130fda822fd..66935652e4e 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -85,7 +85,7 @@ flags = CONDUCT slot_flags = SLOT_BELT item_state = "syringe_kit" - materials = list(MAT_METAL=30000) + materials = list(MAT_METAL = 30000) throwforce = 2 w_class = WEIGHT_CLASS_TINY throw_speed = 4 @@ -96,11 +96,14 @@ var/multiple_sprites = 0 var/caliber var/multiload = 1 + var/list/initial_mats //For calculating refund values. /obj/item/ammo_box/New() for(var/i in 1 to max_ammo) stored_ammo += new ammo_type(src) update_icon() + initial_mats = materials.Copy() + update_mat_value() /obj/item/ammo_box/Destroy() QDEL_LIST(stored_ammo) @@ -115,6 +118,7 @@ stored_ammo -= b if(keep) stored_ammo.Insert(1,b) + update_mat_value() return b /obj/item/ammo_box/proc/give_round(obj/item/ammo_casing/R, replace_spent = 0) @@ -125,6 +129,7 @@ if(stored_ammo.len < max_ammo) stored_ammo += R R.loc = src + update_mat_value() return 1 //for accessibles magazines (e.g internal ones) when full, start replacing spent ammo else if(replace_spent) @@ -135,6 +140,7 @@ stored_ammo += R R.loc = src + update_mat_value() return 1 return 0 @@ -184,6 +190,19 @@ icon_state = "[initial(icon_state)]-[stored_ammo.len ? "[max_ammo]" : "0"]" desc = "[initial(desc)] There are [stored_ammo.len] shell\s left!" +/obj/item/ammo_box/proc/update_mat_value() + var/num_ammo = 0 + for(var/B in stored_ammo) + var/obj/item/ammo_casing/AC = B + if(!AC.BB) //Skip any casing which are empty + continue + num_ammo++ + for(var/M in initial_mats) //In case we have multiple types of materials + var/materials_per = initial_mats[M] / max_ammo + + var/value = max(materials_per * num_ammo, 2000) //Enforce a minimum of 2000 units even if empty. + materials[M] = value + //Behavior for magazines /obj/item/ammo_box/magazine/proc/ammo_count() return stored_ammo.len diff --git a/code/modules/projectiles/guns/medbeam.dm b/code/modules/projectiles/guns/medbeam.dm index e563182d75f..d77621051e2 100644 --- a/code/modules/projectiles/guns/medbeam.dm +++ b/code/modules/projectiles/guns/medbeam.dm @@ -23,6 +23,9 @@ processing_objects.Remove(src) return ..() +/obj/item/gun/medbeam/handle_suicide() + return + /obj/item/gun/medbeam/dropped(mob/user) ..() LoseTarget() diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 9de8033a00f..6a1f7883312 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -45,6 +45,26 @@ flush = initial(flush) T.nicely_link_to_other_stuff(src) +//When the disposalsoutlet is forcefully moved. Due to meteorshot (not the recall spell) +/obj/machinery/disposal/Moved(atom/OldLoc, Dir) + . = ..() + eject() + var/ptype = istype(src, /obj/machinery/disposal/deliveryChute) ? PIPE_DISPOSALS_CHUTE : PIPE_DISPOSALS_BIN //Check what disposaltype it is + var/turf/T = OldLoc + if(T.intact) + var/turf/simulated/floor/F = T + F.remove_tile(null,TRUE,TRUE) + T.visible_message("The floortile is ripped from the floor!", "You hear a loud bang!") + if(trunk) + trunk.remove_trunk_links() + var/obj/structure/disposalconstruct/C = new (loc) + transfer_fingerprints_to(C) + C.ptype = ptype + C.update() + C.anchored = 0 + C.density = 1 + qdel(src) + /obj/machinery/disposal/Destroy() eject() if(trunk) @@ -1345,6 +1365,24 @@ to_chat(user, "You need more welding fuel to complete this task.") return +//When the disposalsoutlet is forcefully moved. Due to meteorshot or the recall item spell for instance +/obj/structure/disposaloutlet/Moved(atom/OldLoc, Dir) + . = ..() + var/turf/T = OldLoc + if(T.intact) + var/turf/simulated/floor/F = T + F.remove_tile(null,TRUE,TRUE) + T.visible_message("The floortile is ripped from the floor!", "You hear a loud bang!") + if(linkedtrunk) + linkedtrunk.remove_trunk_links() + var/obj/structure/disposalconstruct/C = new (loc) + transfer_fingerprints_to(C) + C.ptype = PIPE_DISPOSALS_OUTLET + C.update() + C.anchored = 0 + C.density = 1 + qdel(src) + /obj/structure/disposaloutlet/Destroy() if(linkedtrunk) linkedtrunk.remove_trunk_links() diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index cd539570219..efb810cae20 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -881,7 +881,7 @@ var/global/trade_dockrequest_timelimit = 0 docking_request = 1 var/possible_destinations_dock var/possible_destinations_nodock - var/docking_request_message = "A trading ship has requested docking aboard the NSS Cyberiad for trading. This request can be accepted or denied using a communications console." + var/docking_request_message = "A trading ship has submitted a request to dock for trading. This request can be accepted or denied using a communications console." /obj/machinery/computer/shuttle/trade/attack_hand(mob/user) if(world.time < trade_dock_timelimit) diff --git a/config/names/dreams.txt b/config/names/dreams.txt index 9dffde8e189..89f559dae88 100644 --- a/config/names/dreams.txt +++ b/config/names/dreams.txt @@ -23,6 +23,8 @@ freezing the sun a hat the Cyberiad +the Cerebron +the Kerberos a ruined station a planet plasma @@ -80,8 +82,8 @@ the pod pilot the barber the mechanic the magistrate -the nanotrasen representative -the blueshield +the nanotrasen representative +the blueshield a mouse an ert member a beach @@ -93,18 +95,18 @@ the bar the rain a skrell an unathi -a tajaran -a vulpkanin -a slime -an ipc -a vox -a plasmaman -a grey -a kidan -a diona -a drask +a tajaran +a vulpkanin +a slime +an ipc +a vox +a plasmaman +a grey +a kidan +a diona +a drask the ai core the mining station -the research station +the research station a beaker of strange liquid -Captain [DREAMER] \ No newline at end of file +Captain [DREAMER] diff --git a/html/changelog.html b/html/changelog.html index 831284198c7..91636b1a9b2 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,35 @@ -->
    +

    07 October 2018

    +

    Birdtalon updated:

    +
      +
    • Ammo boxes now return materials proportional to their contents when recycling, nullifying infinite ammo exploit.
    • +
    +

    Farie82 updated:

    +
      +
    • Fixing a disability now fixes the gene related to it if needed. No more free gene stability from blindness and such
    • +
    • fixed bluespace disposal bins
    • +
    • instant recall doesn't fuck up disposals
    • +
    • meteor shots now deconstruct the disposals unit, removing weird behaviour
    • +
    +

    Purpose updated:

    +
      +
    • Winged chairs now get placed back down correctly as winged chairs.
    • +
    • CyberiadAI Discord Bot now announces which station is being used.
    • +
    • Less things will refer to the NSS Cyberiad when not actually ON the NSS Cyberiad.
    • +
    • Decals now Initialize()
    • +
    +

    SkeletalElite updated:

    +
      +
    • Fixed grammar in meat spike's name
    • +
    • Chaos Holoparasite's abilities actually work
    • +
    +

    datlo updated:

    +
      +
    • Changelings with wingdings now permanently switch to regular speech after transforming
    • +
    +

    06 October 2018

    Alonefromhell updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 391d2597024..b9ec5e83e40 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -7272,3 +7272,25 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. Squirgenheimer: - bugfix: Victims of changeling swap forms and wizard mindswap can now re-enter their corpses +2018-10-07: + Birdtalon: + - bugfix: Ammo boxes now return materials proportional to their contents when recycling, + nullifying infinite ammo exploit. + Farie82: + - bugfix: Fixing a disability now fixes the gene related to it if needed. No more + free gene stability from blindness and such + - bugfix: fixed bluespace disposal bins + - bugfix: instant recall doesn't fuck up disposals + - bugfix: meteor shots now deconstruct the disposals unit, removing weird behaviour + Purpose: + - bugfix: Winged chairs now get placed back down correctly as winged chairs. + - rscadd: CyberiadAI Discord Bot now announces which station is being used. + - bugfix: Less things will refer to the NSS Cyberiad when not actually ON the NSS + Cyberiad. + - tweak: Decals now Initialize() + SkeletalElite: + - bugfix: Fixed grammar in meat spike's name + - bugfix: Chaos Holoparasite's abilities actually work + datlo: + - bugfix: Changelings with wingdings now permanently switch to regular speech after + transforming diff --git a/nano/templates/shuttle_console.tmpl b/nano/templates/shuttle_console.tmpl index d16f39a8b20..8277e92eb76 100644 --- a/nano/templates/shuttle_console.tmpl +++ b/nano/templates/shuttle_console.tmpl @@ -1,4 +1,4 @@ - @@ -30,8 +30,8 @@ Used In File(s): /code/modules/shuttle/shuttle.dm
      {{/if}} {{/if}} - + {{if data.docking_request}} -
      {{:helper.link('Request docking at NSS Cyberiad', 'share-square-o', {'request' : 1})}}
      +
      {{:helper.link('Request docking at the station', 'share-square-o', {'request' : 1})}}
      {{/if}} -{{/if}} \ No newline at end of file +{{/if}}