diff --git a/Dockerfile b/Dockerfile index ec3694c7e8..ad347079cd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM tgstation/byond:512.1488 as base +FROM tgstation/byond:513.1490 as base FROM base as build_base diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm index 8015f25696..2c6eda9f90 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm @@ -68,7 +68,10 @@ /turf/open/floor/mineral/titanium/purple, /area/ruin/powered/golem_ship) "k" = ( -/obj/machinery/computer/arcade/battle, +/obj/machinery/computer/arcade/battle{ + icon_state = "arcade"; + dir = 4 + }, /turf/open/floor/mineral/titanium/purple, /area/ruin/powered/golem_ship) "l" = ( @@ -105,6 +108,13 @@ /obj/machinery/computer/shuttle, /turf/open/floor/mineral/titanium/purple, /area/ruin/powered/golem_ship) +"s" = ( +/obj/machinery/computer/arcade/orion_trail{ + icon_state = "arcade"; + dir = 4 + }, +/turf/open/floor/mineral/titanium/purple, +/area/ruin/powered/golem_ship) "t" = ( /obj/structure/extinguisher_cabinet{ pixel_y = 30 @@ -142,10 +152,6 @@ /obj/machinery/reagentgrinder, /turf/open/floor/mineral/titanium/purple, /area/ruin/powered/golem_ship) -"y" = ( -/obj/machinery/computer/arcade/orion_trail, -/turf/open/floor/mineral/titanium/purple, -/area/ruin/powered/golem_ship) "z" = ( /obj/structure/extinguisher_cabinet{ pixel_y = -30 @@ -332,7 +338,7 @@ l l j l -y +s b a a diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index 8e0d9a523a..2ec5b88792 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -167,6 +167,56 @@ }, /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/circuits) +"av" = ( +/obj/structure/bed/roller, +/obj/machinery/iv_drip, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/mob/living/carbon/monkey{ + faction = list("neutral","Syndicate") + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"aw" = ( +/obj/machinery/light/small, +/obj/structure/bed/roller, +/obj/machinery/iv_drip, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/mob/living/carbon/monkey{ + faction = list("neutral","Syndicate") + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"ax" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/arcade/orion_trail{ + icon_state = "arcade"; + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) "aF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ dir = 4 @@ -790,26 +840,6 @@ /obj/structure/disposalpipe/trunk, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/syndicate_lava_base/virology) -"ej" = ( -/obj/structure/bed/roller, -/obj/machinery/iv_drip, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/mob/living/carbon/monkey{ - faction = list("neutral","Syndicate") - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/unpowered/syndicate_lava_base/testlab) "ek" = ( /obj/structure/grille, /obj/structure/window/plastitanium, @@ -1136,27 +1166,6 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/virology) -"eK" = ( -/obj/machinery/light/small, -/obj/structure/bed/roller, -/obj/machinery/iv_drip, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/mob/living/carbon/monkey{ - faction = list("neutral","Syndicate") - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/unpowered/syndicate_lava_base/testlab) "eL" = ( /obj/machinery/door/airlock/hatch{ name = "Monkey Pen"; @@ -5148,12 +5157,6 @@ /obj/item/clothing/mask/gas, /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/arrivals) -"mt" = ( -/obj/machinery/computer/arcade/orion_trail, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/ruin/unpowered/syndicate_lava_base/bar) "mu" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" @@ -7340,8 +7343,8 @@ ae ae ae ae -ej -eK +av +aw ae fD ad @@ -7362,7 +7365,7 @@ kH jN jZ lU -mt +ax mU np nP diff --git a/_maps/RandomRuins/SpaceRuins/bigape.dmm b/_maps/RandomRuins/SpaceRuins/bigape.dmm index 09e85e129d..602f1737e0 100644 --- a/_maps/RandomRuins/SpaceRuins/bigape.dmm +++ b/_maps/RandomRuins/SpaceRuins/bigape.dmm @@ -56,11 +56,9 @@ /obj/structure/chair/sofa{ dir = 4 }, -/mob/living/simple_animal/hostile/gorilla{ - AIStatus = null; - desc = "There is no need to be upset."; - dir = 4; - name = "Familiar Gorilla" +/mob/living/simple_animal/hostile/gorilla/familiar{ + icon_state = "crawling"; + dir = 4 }, /turf/open/floor/plating/beach/sand, /area/ruin/powered) diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index c251a338a5..ddc8778ac1 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -16,6 +16,13 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) +"ae" = ( +/obj/machinery/computer/arcade{ + icon_state = "arcade"; + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/awaymission/moonoutpost19/arrivals) "ag" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds{ @@ -6408,10 +6415,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/arrivals) -"mB" = ( -/obj/machinery/computer/arcade, -/turf/open/floor/plasteel/dark, -/area/awaymission/moonoutpost19/arrivals) "mC" = ( /obj/machinery/vending/cigarette, /obj/structure/sign/poster/contraband/smoke{ @@ -43385,7 +43388,7 @@ la lq jk mj -mB +ae hJ ba ba @@ -43642,7 +43645,7 @@ jN lr jj mj -mB +ae hI ba ba diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm index 3a58d85143..2499270d8f 100644 --- a/_maps/RandomZLevels/research.dmm +++ b/_maps/RandomZLevels/research.dmm @@ -245,10 +245,38 @@ }, /turf/open/floor/plating, /area/awaymission/research/interior/engineering) +"aS" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/mob/living/carbon/monkey, +/turf/open/floor/plasteel, +/area/awaymission/research/interior/genetics) "aT" = ( /mob/living/simple_animal/hostile/syndicate/melee/sword, /turf/open/floor/plating, /area/awaymission/research/interior/engineering) +"aU" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/mob/living/carbon/human, +/turf/open/floor/plasteel, +/area/awaymission/research/interior/genetics) "aV" = ( /obj/item/stack/sheet/plasteel, /obj/effect/turf_decal/tile/yellow{ @@ -326,6 +354,23 @@ icon_state = "damaged4" }, /area/awaymission/research/interior/engineering) +"bc" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/mob/living/carbon/monkey, +/turf/open/floor/plasteel, +/area/awaymission/research/interior/genetics) "bd" = ( /turf/open/floor/plasteel{ icon_state = "damaged3" @@ -903,6 +948,17 @@ /obj/machinery/light/small, /turf/open/floor/plating, /area/awaymission/research/interior/maint) +"co" = ( +/obj/item/ammo_casing/c45, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/mob/living/simple_animal/hostile/syndicate, +/turf/open/floor/plasteel/white, +/area/awaymission/research/interior) "cp" = ( /turf/closed/wall/r_wall, /area/awaymission/research/interior) @@ -1195,19 +1251,19 @@ /turf/open/floor/plating, /area/awaymission/research/interior/genetics) "cT" = ( -/mob/living/carbon/monkey, -/obj/effect/turf_decal/tile/purple{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/effect/turf_decal/tile/purple{ +/obj/effect/turf_decal/tile/red{ dir = 8 }, +/mob/living/simple_animal/hostile/nanotrasen/ranged, /turf/open/floor/plasteel, -/area/awaymission/research/interior/genetics) +/area/awaymission/research/interior/security) "cU" = ( /obj/machinery/door/window/eastright, /obj/effect/turf_decal/tile/purple{ @@ -1253,7 +1309,9 @@ /turf/open/floor/plasteel, /area/awaymission/research/interior/genetics) "cX" = ( -/mob/living/carbon/human, +/obj/structure/window/reinforced{ + dir = 8 + }, /obj/effect/turf_decal/tile/purple{ dir = 1 }, @@ -1264,6 +1322,7 @@ /obj/effect/turf_decal/tile/purple{ dir = 8 }, +/mob/living/carbon/human, /turf/open/floor/plasteel, /area/awaymission/research/interior/genetics) "cY" = ( @@ -1356,22 +1415,15 @@ /turf/open/floor/plasteel, /area/awaymission/research/interior/genetics) "di" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/mob/living/carbon/monkey, /obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/purple{ dir = 4 }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/awaymission/research/interior/genetics) +/mob/living/simple_animal/hostile/nanotrasen/ranged, +/turf/open/floor/plasteel/white, +/area/awaymission/research/interior/cryo) "dj" = ( /obj/effect/decal/cleanable/blood, /obj/item/stack/rods, @@ -1416,14 +1468,14 @@ /turf/open/floor/plasteel/white, /area/awaymission/research/interior) "dn" = ( -/obj/item/ammo_casing/c45, -/mob/living/simple_animal/hostile/syndicate, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, +/obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ - dir = 8 + dir = 4 }, +/mob/living/simple_animal/hostile/syndicate, /turf/open/floor/plasteel/white, /area/awaymission/research/interior) "do" = ( @@ -1675,7 +1727,6 @@ /turf/open/floor/plasteel, /area/awaymission/research/interior/security) "dI" = ( -/mob/living/simple_animal/hostile/nanotrasen/ranged, /obj/effect/turf_decal/tile/red{ dir = 1 }, @@ -1686,7 +1737,8 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/turf/open/floor/plasteel, +/mob/living/simple_animal/hostile/nanotrasen/ranged/smg, +/turf/open/floor/plasteel/white, /area/awaymission/research/interior/security) "dJ" = ( /obj/structure/rack, @@ -1777,11 +1829,7 @@ }, /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/genetics) -"dQ" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/mob/living/carbon/human, +"dP" = ( /obj/effect/turf_decal/tile/purple{ dir = 1 }, @@ -1792,8 +1840,23 @@ /obj/effect/turf_decal/tile/purple{ dir = 8 }, +/mob/living/simple_animal/hostile/nanotrasen/ranged, +/turf/open/floor/plasteel/white, +/area/awaymission/research/interior/cryo) +"dQ" = ( +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/mob/living/simple_animal/hostile/nanotrasen, /turf/open/floor/plasteel, -/area/awaymission/research/interior/genetics) +/area/awaymission/research/interior/cryo) "dR" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2144,15 +2207,15 @@ /turf/open/floor/plasteel/white, /area/awaymission/research/interior/cryo) "eB" = ( -/mob/living/simple_animal/hostile/nanotrasen/ranged, -/obj/effect/turf_decal/tile/purple{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/effect/turf_decal/tile/purple{ +/obj/effect/turf_decal/tile/red{ dir = 4 }, +/mob/living/simple_animal/hostile/nanotrasen/ranged/smg, /turf/open/floor/plasteel/white, -/area/awaymission/research/interior/cryo) +/area/awaymission/research/interior/security) "eC" = ( /obj/item/ammo_casing/c9mm, /obj/effect/turf_decal/tile/purple{ @@ -2214,16 +2277,22 @@ /turf/open/floor/plasteel/white, /area/awaymission/research/interior) "eL" = ( -/mob/living/simple_animal/hostile/syndicate, -/obj/effect/turf_decal/tile/yellow{ +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple{ dir = 1 }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ dir = 4 }, -/turf/open/floor/plasteel/white, -/area/awaymission/research/interior) +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/mob/living/carbon/monkey, +/turf/open/floor/plasteel, +/area/awaymission/research/interior/genetics) "eM" = ( /obj/item/ammo_casing/c45, /obj/item/ammo_casing/c45, @@ -2846,19 +2915,19 @@ /turf/open/floor/plasteel/white, /area/awaymission/research/interior/security) "fY" = ( -/mob/living/simple_animal/hostile/nanotrasen/ranged/smg, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/tile/green{ dir = 1 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ dir = 4 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/tile/green{ dir = 8 }, +/mob/living/simple_animal/hostile/syndicate/ranged/smg, /turf/open/floor/plasteel/white, -/area/awaymission/research/interior/security) +/area/awaymission/research/interior) "fZ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -2966,6 +3035,23 @@ }, /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/secure) +"gi" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/mob/living/simple_animal/bot/secbot/beepsky{ + desc = "A beefy variant of the standard securitron model."; + emagged = 1; + faction = list("nanotrasenprivate"); + health = 50; + maxHealth = 50; + name = "Officer Genesky" + }, +/turf/open/floor/plasteel/white, +/area/awaymission/research/interior/security) "gj" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3115,19 +3201,13 @@ /turf/open/floor/plasteel/white, /area/awaymission/research/interior/cryo) "gv" = ( -/mob/living/simple_animal/hostile/nanotrasen/ranged, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ dir = 4 }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, +/mob/living/simple_animal/hostile/syndicate, /turf/open/floor/plasteel/white, -/area/awaymission/research/interior/cryo) +/area/awaymission/research/interior) "gw" = ( /obj/effect/mob_spawn/human/doctor{ brute_damage = 145; @@ -3508,6 +3588,35 @@ }, /turf/open/floor/plasteel/white, /area/awaymission/research/interior) +"gW" = ( +/obj/structure/sign/directions/security{ + dir = 1; + pixel_x = 32; + pixel_y = 40 + }, +/obj/structure/sign/directions/engineering{ + dir = 1; + pixel_x = 32; + pixel_y = 33 + }, +/obj/structure/sign/directions/science{ + dir = 1; + pixel_x = 32; + pixel_y = 26 + }, +/obj/effect/turf_decal/tile/green{ + dir = 1 + }, +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green{ + dir = 8 + }, +/mob/living/simple_animal/hostile/syndicate/ranged/smg, +/turf/open/floor/plasteel/white, +/area/awaymission/research/interior) "gX" = ( /obj/effect/decal/cleanable/blood/drip, /obj/effect/turf_decal/tile/purple{ @@ -3660,19 +3769,19 @@ /turf/open/floor/plasteel/white, /area/awaymission/research/interior/security) "hj" = ( -/mob/living/simple_animal/hostile/nanotrasen, -/obj/effect/turf_decal/tile/purple{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/effect/turf_decal/tile/purple{ +/obj/effect/turf_decal/tile/blue{ dir = 8 }, -/turf/open/floor/plasteel, -/area/awaymission/research/interior/cryo) +/mob/living/simple_animal/hostile/syndicate/ranged/smg, +/turf/open/floor/plasteel/white, +/area/awaymission/research/interior/medbay) "hk" = ( /obj/effect/decal/cleanable/blood, /obj/effect/turf_decal/tile/purple{ @@ -3736,15 +3845,19 @@ /turf/open/floor/plasteel/white, /area/awaymission/research/interior/security) "hq" = ( -/mob/living/simple_animal/hostile/nanotrasen/ranged/smg, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/mob/living/simple_animal/hostile/syndicate, /turf/open/floor/plasteel/white, -/area/awaymission/research/interior/security) +/area/awaymission/research/interior/medbay) "hr" = ( /obj/structure/cable{ icon_state = "1-2" @@ -3799,6 +3912,15 @@ }, /turf/open/floor/plasteel/white, /area/awaymission/research/interior/cryo) +"hw" = ( +/obj/machinery/computer/arcade{ + icon_state = "arcade"; + dir = 8 + }, +/turf/open/floor/plasteel/yellowsiding{ + dir = 4 + }, +/area/awaymission/research/interior/dorm) "hx" = ( /obj/structure/cable{ icon_state = "2-4" @@ -4066,23 +4188,6 @@ }, /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/genetics) -"hW" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/mob/living/carbon/monkey, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/awaymission/research/interior/genetics) "hX" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance, @@ -4139,20 +4244,6 @@ }, /turf/open/floor/plating, /area/awaymission/research/interior/maint) -"if" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/smg, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/awaymission/research/interior) "ig" = ( /obj/structure/cable{ icon_state = "2-4" @@ -4186,23 +4277,6 @@ }, /turf/open/floor/plasteel/white, /area/awaymission/research/interior/security) -"ij" = ( -/mob/living/simple_animal/bot/secbot/beepsky{ - desc = "A beefy variant of the standard securitron model."; - emagged = 1; - faction = list("nanotrasenprivate"); - health = 50; - maxHealth = 50; - name = "Officer Genesky" - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/awaymission/research/interior/security) "ik" = ( /obj/structure/cable{ icon_state = "1-2" @@ -4546,14 +4620,6 @@ }, /turf/open/floor/plasteel/freezer, /area/awaymission/research/interior/bathroom) -"iQ" = ( -/mob/living/simple_animal/hostile/syndicate, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/awaymission/research/interior) "iR" = ( /turf/open/floor/plasteel, /area/awaymission/research/interior/maint) @@ -4723,35 +4789,6 @@ }, /turf/open/floor/plasteel, /area/awaymission/research/interior) -"jr" = ( -/obj/structure/sign/directions/security{ - dir = 1; - pixel_x = 32; - pixel_y = 40 - }, -/obj/structure/sign/directions/engineering{ - dir = 1; - pixel_x = 32; - pixel_y = 33 - }, -/obj/structure/sign/directions/science{ - dir = 1; - pixel_x = 32; - pixel_y = 26 - }, -/mob/living/simple_animal/hostile/syndicate/ranged/smg, -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/awaymission/research/interior) "js" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ @@ -4976,20 +5013,6 @@ }, /turf/open/floor/plasteel/white, /area/awaymission/research/interior/medbay) -"jP" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/smg, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/awaymission/research/interior/medbay) "jQ" = ( /obj/effect/decal/cleanable/blood/drip, /obj/effect/turf_decal/tile/blue{ @@ -5591,9 +5614,6 @@ dir = 8 }, /area/awaymission/research/interior/dorm) -"ln" = ( -/turf/open/floor/plasteel, -/area/space/nearstation) "lo" = ( /obj/structure/table/wood, /obj/structure/bedsheetbin, @@ -5613,20 +5633,6 @@ }, /turf/open/floor/plasteel/white, /area/awaymission/research/interior/medbay) -"lr" = ( -/mob/living/simple_animal/hostile/syndicate, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/awaymission/research/interior/medbay) "ls" = ( /obj/structure/table, /obj/item/storage/firstaid/regular, @@ -5867,12 +5873,6 @@ /obj/effect/landmark/awaystart, /turf/open/floor/wood, /area/awaymission/research/interior/dorm) -"lU" = ( -/obj/machinery/computer/arcade, -/turf/open/floor/plasteel/yellowsiding{ - dir = 4 - }, -/area/awaymission/research/interior/dorm) "lV" = ( /obj/machinery/light/small{ dir = 1 @@ -38316,7 +38316,7 @@ ea ev fd fE -gv +dP ev fd fE @@ -38565,10 +38565,10 @@ aH cm cw cx -cT +aS dh dq -cT +aS ea ev fc @@ -38823,7 +38823,7 @@ cd cx cx cU -di +bc dr dr ea @@ -39603,7 +39603,7 @@ ey fG gw gR -hj +dQ hu hK cK @@ -40367,7 +40367,7 @@ cx cW dh du -dQ +cX ea eA fd @@ -40377,7 +40377,7 @@ ev fd fE ea -hW +eL ib ib iz @@ -40621,12 +40621,12 @@ aH ce cc cx -cX +aU dh dv dh ea -eB +di fc fH gx @@ -40637,7 +40637,7 @@ ea dh dv dh -cT +aS cx cm cw @@ -40651,7 +40651,7 @@ kr jn jF jF -ln +jF kc lL jk @@ -41143,7 +41143,7 @@ ea ev fh fI -gv +dP ev fc fE @@ -43224,8 +43224,8 @@ lc lp lp lN -lU -lU +hw +hw lY aP cd @@ -44224,7 +44224,7 @@ dl dz cZ ek -eL +dn fl eJ eZ @@ -44238,7 +44238,7 @@ ir hZ hZ hZ -iQ +gv hZ hZ hA @@ -44490,7 +44490,7 @@ hl hl hl hl -if +fY is hl hl @@ -44734,7 +44734,7 @@ cs cC cP TD -dn +co dB da em @@ -44756,7 +44756,7 @@ ia ia ia ia -jr +gW jI hl kv @@ -47584,7 +47584,7 @@ aO iW iW ju -jP +hj kh iW iW @@ -48361,7 +48361,7 @@ kg kM jh jw -lr +hq kg iW cd @@ -48855,7 +48855,7 @@ fq fW gK fW -hq +eB do dH dH @@ -49366,7 +49366,7 @@ dT eo eR fr -fY +dI gK fW ho @@ -49646,7 +49646,7 @@ kg kL kZ lg -lr +hq lD iW lW @@ -50389,7 +50389,7 @@ ad aH aO do -dI +cT dH dH eS @@ -50401,7 +50401,7 @@ fW fW fW fW -ij +gi do hD aH @@ -50672,7 +50672,7 @@ jw km kB kO -jP +hj lj lw lI diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 125da46b81..cf1b2c6835 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -372,7 +372,10 @@ /turf/open/space, /area/space/nearstation) "aaU" = ( -/obj/machinery/computer/arcade, +/obj/machinery/computer/arcade{ + icon_state = "arcade"; + dir = 4 + }, /turf/open/floor/plasteel, /area/security/prison) "aaV" = ( @@ -6019,6 +6022,18 @@ }, /turf/open/floor/plasteel, /area/security/processing) +"amd" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/computer/arcade{ + icon_state = "arcade"; + dir = 4 + }, +/turf/open/floor/plasteel/white/corner{ + dir = 1 + }, +/area/hallway/secondary/exit) "ame" = ( /obj/structure/cable{ icon_state = "1-2" @@ -6225,6 +6240,17 @@ }, /turf/open/floor/plating, /area/maintenance/solars/port/fore) +"amB" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/machinery/computer/arcade{ + icon_state = "arcade"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) "amC" = ( /turf/open/floor/plating, /area/maintenance/port/fore) @@ -19937,15 +19963,6 @@ dir = 1 }, /area/chapel/main) -"aUL" = ( -/obj/machinery/computer/arcade, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/plasteel/white/corner{ - dir = 1 - }, -/area/hallway/secondary/exit) "aUM" = ( /obj/machinery/camera{ c_tag = "Arrivals Bay 2"; @@ -22268,14 +22285,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/bar) -"baa" = ( -/obj/machinery/computer/arcade, -/obj/effect/turf_decal/tile/bar, -/obj/effect/turf_decal/tile/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/bar) "bab" = ( /obj/machinery/light, /obj/machinery/firealarm{ @@ -91961,7 +91970,7 @@ aUf aQc aXi aQc -baa +amB aJC bcq bcq @@ -106349,7 +106358,7 @@ aCR aCR aCR aTl -aUL +amd aVW aXD aZj diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 79b7561ebb..e500c85640 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -173,6 +173,88 @@ /obj/effect/landmark/xeno_spawn, /turf/open/space, /area/solar/starboard/fore) +"aav" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/computer/arcade{ + icon_state = "arcade"; + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aaw" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/computer/arcade{ + icon_state = "arcade"; + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/fore) +"aax" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/computer/arcade{ + icon_state = "arcade"; + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/fore) +"aay" = ( +/obj/machinery/computer/arcade{ + icon_state = "arcade"; + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aaz" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/computer/arcade{ + icon_state = "arcade"; + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/maintenance/starboard/fore) +"aaA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/arcade{ + icon_state = "arcade"; + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) +"aaB" = ( +/obj/machinery/computer/arcade{ + icon_state = "arcade"; + dir = 1 + }, +/turf/open/floor/plating, +/area/security/prison) "aaE" = ( /obj/structure/lattice/catwalk, /turf/open/space, @@ -4563,11 +4645,6 @@ }, /turf/open/floor/plasteel, /area/maintenance/starboard/fore) -"anz" = ( -/obj/machinery/computer/arcade, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) "anA" = ( /obj/structure/cable/white{ icon_state = "0-2" @@ -7122,10 +7199,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"arX" = ( -/obj/machinery/computer/arcade, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) "arY" = ( /obj/structure/table/wood, /obj/item/toy/talking/codex_gigas, @@ -7156,11 +7229,6 @@ }, /turf/open/floor/plasteel/dark, /area/maintenance/starboard/fore) -"asa" = ( -/obj/machinery/computer/arcade, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) "asb" = ( /obj/machinery/airalarm{ dir = 1; @@ -21997,10 +22065,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/security/prison) -"aRi" = ( -/obj/machinery/computer/arcade, -/turf/open/floor/plating, -/area/security/prison) "aRj" = ( /obj/structure/cable/white{ icon_state = "0-2" @@ -170617,7 +170681,7 @@ aox apu aqy arb -aoy +aax aig auA avU @@ -170874,7 +170938,7 @@ aoy apv aqz apu -arX +aay aig auB avU @@ -171383,8 +171447,8 @@ aiC akU alI amE -anz -aox +aav +aaw apw aqA apy @@ -171902,7 +171966,7 @@ aiC apy apy apu -aox +aaz atw auD avW @@ -172159,7 +172223,7 @@ aoB apz apw apv -asa +aaA atw auE avW @@ -182715,7 +182779,7 @@ aFn aMn aNI aPr -aRi +aaB aKV aUC aWk diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index a87c17836c..a7ab212bd6 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -1279,6 +1279,22 @@ }, /turf/open/floor/plasteel, /area/science/mixing) +"abQ" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/computer/arcade{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/maintenance/port) "abR" = ( /obj/structure/lattice, /turf/open/space, @@ -37164,20 +37180,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) -"dEa" = ( -/obj/machinery/computer/arcade, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/maintenance/port) "dFV" = ( /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -76194,7 +76196,7 @@ aZp bak bbc bbQ -dEa +abQ bdD beu sKE diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 698eb6cd5a..9ae92b26d4 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -35,6 +35,30 @@ icon_state = "platingdmg3" }, /area/maintenance/department/science) +"aae" = ( +/obj/machinery/computer/arcade{ + icon_state = "arcade"; + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"aaf" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/computer/arcade{ + icon_state = "arcade"; + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/heads/captain) "abf" = ( /obj/structure/bed, /turf/open/floor/plating, @@ -1621,10 +1645,6 @@ }, /turf/open/floor/plasteel/dark, /area/security/prison) -"afI" = ( -/obj/machinery/computer/arcade, -/turf/open/floor/plasteel/dark, -/area/security/prison) "afJ" = ( /obj/effect/landmark/carpspawn, /turf/open/space/basic, @@ -13685,20 +13705,6 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/captain) -"aGm" = ( -/obj/machinery/computer/arcade, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/heads/captain) "aGn" = ( /obj/item/twohanded/required/kirbyplants/photosynthetic{ layer = 3.1 @@ -83601,7 +83607,7 @@ aeu aeI lGp aeU -afI +aae aeU dUk agy @@ -90832,7 +90838,7 @@ aCC aDG aBm aFz -aGm +aaf awR aHQ aIO diff --git a/_maps/map_files/generic/City_of_Cogs.dmm b/_maps/map_files/generic/City_of_Cogs.dmm index 584564ba2a..e1e7659ce3 100644 --- a/_maps/map_files/generic/City_of_Cogs.dmm +++ b/_maps/map_files/generic/City_of_Cogs.dmm @@ -26979,9 +26979,9 @@ ab ab ab ab -ab -ab -ab +ae +ae +ae ab ab ab @@ -27235,11 +27235,11 @@ ab ab ab ab -ab -ab -ab -ab -ab +ae +ag +ag +ag +ae ab ab ab @@ -27492,11 +27492,11 @@ ab ab ab ab -ab -ab -ab -ab -ab +ae +ag +ag +ag +ae aF aF aF @@ -27747,8 +27747,8 @@ ab ab ab ab -ae -ae +ab +ab ah ah ai @@ -28003,9 +28003,9 @@ ab ab ab ab -ae -ag -ag +ab +ab +ab ah ar aj @@ -28260,9 +28260,9 @@ ab ab ab ab -ae -ag -ag +ab +ab +ab ah as aj @@ -28517,9 +28517,9 @@ ab ab ab ab -ae -ag -ag +ab +ab +ab ah VP aj @@ -28775,8 +28775,8 @@ ab ab ab ab -ae -ae +ab +ab ah ah ay @@ -29033,7 +29033,7 @@ ab ab ab ab -ae +ab an au aj @@ -33657,7 +33657,7 @@ ab ab ab ab -ae +ab ah al aj @@ -33914,7 +33914,7 @@ ab ab ab ab -ae +ab ai bE aj @@ -34171,7 +34171,7 @@ ab ab ab ab -ae +ab ah al aj @@ -34688,11 +34688,11 @@ ab ab ab ab -ab -ab -ab -ab -ab +ae +ae +ag +ae +ae aF aF aF diff --git a/_maps/shuttles/emergency_cere.dmm b/_maps/shuttles/emergency_cere.dmm index 23de211226..f49e70aeb9 100644 --- a/_maps/shuttles/emergency_cere.dmm +++ b/_maps/shuttles/emergency_cere.dmm @@ -591,6 +591,22 @@ /obj/machinery/recharger, /turf/open/floor/mineral/plastitanium/red/brig, /area/shuttle/escape) +"bh" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/computer/arcade{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) "bj" = ( /turf/open/floor/mech_bay_recharge_floor, /area/shuttle/escape) @@ -1181,20 +1197,6 @@ }, /turf/open/floor/plasteel/white, /area/shuttle/escape) -"cz" = ( -/obj/machinery/computer/arcade, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/shuttle/escape) "cA" = ( /obj/machinery/light{ dir = 8 @@ -1815,8 +1817,8 @@ ab ad cn cn -cz -cz +bh +bh cn cn ab diff --git a/_maps/shuttles/infiltrator_basic.dmm b/_maps/shuttles/infiltrator_basic.dmm index 263d692764..f7ec35c667 100644 --- a/_maps/shuttles/infiltrator_basic.dmm +++ b/_maps/shuttles/infiltrator_basic.dmm @@ -2,15 +2,21 @@ "aa" = ( /turf/template_noop, /area/template_noop) -"ac" = ( -/obj/machinery/porta_turret/syndicate{ +"ab" = ( +/obj/machinery/porta_turret/syndicate/shuttle{ dir = 9 }, -/turf/closed/wall/mineral/plastitanium, +/turf/closed/wall/r_wall/syndicate, +/area/shuttle/syndicate/bridge) +"ac" = ( +/turf/closed/wall/r_wall/syndicate, /area/shuttle/syndicate/bridge) "ad" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/bridge) +/obj/machinery/porta_turret/syndicate/shuttle{ + dir = 10 + }, +/turf/closed/wall/r_wall/syndicate, +/area/shuttle/syndicate/hallway) "ae" = ( /obj/structure/window/plastitanium, /obj/machinery/door/poddoor/shutters{ @@ -21,11 +27,8 @@ /turf/open/floor/plating, /area/shuttle/syndicate/bridge) "af" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 5 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/bridge) +/turf/closed/wall/r_wall/syndicate, +/area/shuttle/syndicate/hallway) "ag" = ( /obj/machinery/computer/med_data/syndie, /obj/effect/turf_decal/bot_white, @@ -144,7 +147,7 @@ /area/shuttle/syndicate/bridge) "au" = ( /obj/machinery/status_display/evac, -/turf/closed/wall/mineral/plastitanium, +/turf/closed/wall/r_wall/syndicate, /area/shuttle/syndicate/bridge) "av" = ( /obj/machinery/door/airlock/hatch{ @@ -164,14 +167,14 @@ /turf/open/floor/plasteel/dark, /area/shuttle/syndicate/bridge) "aw" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 10 +/obj/machinery/porta_turret/syndicate/shuttle{ + dir = 9 }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/hallway) +/turf/closed/wall/r_wall/syndicate, +/area/shuttle/syndicate/eva) "ax" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/hallway) +/turf/closed/wall/r_wall/syndicate, +/area/shuttle/syndicate/eva) "ay" = ( /obj/structure/table/reinforced, /obj/item/stack/cable_coil/white, @@ -222,11 +225,8 @@ /turf/open/floor/plasteel/dark, /area/shuttle/syndicate/hallway) "aB" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 6 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/hallway) +/turf/closed/wall/r_wall/syndicate, +/area/shuttle/syndicate/airlock) "aC" = ( /obj/structure/chair/comfy/shuttle{ dir = 4; @@ -265,14 +265,17 @@ /turf/open/floor/plasteel/dark, /area/shuttle/syndicate/hallway) "aF" = ( -/obj/machinery/porta_turret/syndicate{ +/obj/machinery/porta_turret/syndicate/shuttle{ + dir = 5 + }, +/turf/closed/wall/r_wall/syndicate, +/area/shuttle/syndicate/armory) +"aG" = ( +/obj/machinery/porta_turret/syndicate/shuttle{ dir = 9 }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/eva) -"aG" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/eva) +/turf/closed/wall/r_wall/syndicate, +/area/shuttle/syndicate/medical) "aH" = ( /obj/structure/chair/comfy/shuttle{ dir = 4; @@ -314,14 +317,11 @@ /turf/open/floor/plasteel/dark, /area/shuttle/syndicate/hallway) "aJ" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/airlock) +/turf/closed/wall/r_wall/syndicate, +/area/shuttle/syndicate/medical) "aK" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 5 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/armory) +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/shuttle/syndicate/medical) "aL" = ( /obj/machinery/suit_storage_unit/syndicate, /obj/effect/turf_decal/stripes/line{ @@ -508,7 +508,7 @@ /obj/structure/sign/warning/vacuum/external{ layer = 4 }, -/turf/closed/wall/mineral/plastitanium, +/turf/closed/wall/r_wall/syndicate, /area/shuttle/syndicate/airlock) "be" = ( /obj/machinery/suit_storage_unit/syndicate, @@ -517,11 +517,6 @@ }, /turf/open/floor/mineral/plastitanium, /area/shuttle/syndicate/eva) -"bf" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/eva) "bg" = ( /obj/structure/grille, /obj/structure/window/plastitanium, @@ -543,31 +538,28 @@ /turf/open/floor/mineral/plastitanium/red, /area/shuttle/syndicate/airlock) "bj" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 9 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/medical) +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/shuttle/syndicate/armory) "bk" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"bl" = ( /obj/machinery/status_display/ai, -/turf/closed/wall/mineral/plastitanium, +/turf/closed/wall/r_wall/syndicate, /area/shuttle/syndicate/medical) "bm" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/syndicate/medical) +/turf/closed/wall/r_wall/syndicate, +/area/shuttle/syndicate/armory) "bn" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, +/obj/machinery/status_display/evac, +/turf/closed/wall/r_wall/syndicate, /area/shuttle/syndicate/armory) "bo" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/armory) -"bp" = ( -/obj/machinery/status_display/evac, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/armory) +/obj/machinery/nuclearbomb/syndicate{ + anchored = 1 + }, +/obj/machinery/door/window{ + dir = 1 + }, +/turf/open/floor/circuit/red, +/area/shuttle/syndicate/hallway) "bq" = ( /obj/machinery/sleeper/syndie{ dir = 4 @@ -1043,14 +1035,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/shuttle/syndicate/hallway) -"cm" = ( -/obj/machinery/nuclearbomb/syndicate, -/obj/machinery/door/window{ - dir = 1; - name = "Theatre Stage" - }, -/turf/open/floor/circuit/red, -/area/shuttle/syndicate/hallway) "cn" = ( /obj/machinery/light{ dir = 4 @@ -1169,18 +1153,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating/airless, /area/shuttle/syndicate/medical) -"cC" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 6 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"cD" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 10 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/armory) "cE" = ( /obj/structure/shuttle/engine/propulsion/left, /obj/effect/turf_decal/stripes/line, @@ -1196,6 +1168,35 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating/airless, /area/shuttle/syndicate/armory) +"dp" = ( +/obj/machinery/porta_turret/syndicate/shuttle{ + dir = 10 + }, +/turf/closed/wall/r_wall/syndicate, +/area/shuttle/syndicate/armory) +"pd" = ( +/obj/machinery/porta_turret/syndicate/shuttle{ + dir = 5 + }, +/turf/closed/wall/r_wall/syndicate, +/area/shuttle/syndicate/bridge) +"vv" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/eva) +"In" = ( +/obj/machinery/porta_turret/syndicate/shuttle{ + dir = 6 + }, +/turf/closed/wall/r_wall/syndicate, +/area/shuttle/syndicate/hallway) +"MJ" = ( +/obj/machinery/porta_turret/syndicate/shuttle{ + dir = 6 + }, +/turf/closed/wall/r_wall/syndicate, +/area/shuttle/syndicate/medical) (1,1,1) = {" aa @@ -1211,16 +1212,16 @@ aa aa aa aa -bj -bk -bk -bk -bk -bk -bk -bk -bk -bk +aG +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ "} (2,1,1) = {" aa @@ -1230,13 +1231,13 @@ aa aa aa aa -aF -aG -aG -aG -aG -aG -bk +aw +ax +ax +ax +ax +ax +aJ bq bC bq @@ -1255,13 +1256,13 @@ aa aa aa aa -aG +ax aL aR aR aR be -bk +aJ br bD bH @@ -1280,13 +1281,13 @@ aa aa aa aa -aG +ax aM aM aM aM aM -bl +bk bs bD bI @@ -1298,51 +1299,51 @@ cu cB "} (5,1,1) = {" +ab +ac +ac +ac ac -ad -ad -ad -ad aa aa -aG +ax aM aM aM aM aM -bk +aJ bt bD bJ bT cb -bm -bk -bk -cC +aK +aJ +aJ +MJ "} (6,1,1) = {" -ad +ac ag an at +ac ad -aw aa -aG +ax aN aS aU aZ -bf -bk +vv +aJ bu bD bJ bT cc -bk +aJ aa aa aa @@ -1352,24 +1353,24 @@ ae ah ao at -ad +ac +af +af +ax +ax ax ax -aG -aG -aG -aG ba bg -bm +aK bv bv bK bv -bk -bk -ax -ax +aJ +aJ +af +af aa "} (8,1,1) = {" @@ -1417,7 +1418,7 @@ aD bL bU az -cm +bo cr cw aa @@ -1427,7 +1428,7 @@ ae ak ap at -ad +ac aA aE aI @@ -1452,75 +1453,75 @@ ae al ar at -ad -ax -ax -ax -ax -aJ -aJ +ac +af +af +af +af +aB +aB bb bh -bn +bj bw bw bM bw -bo -bo -ax -ax +bm +bm +af +af aa "} (12,1,1) = {" -ad +ac am as at -ad -aB +ac +In aa -aJ +aB aO aO aX bc aO -bo +bm bx bG bN bV ce -bo +bm aa aa aa "} (13,1,1) = {" -af -ad -ad -ad -ad +pd +ac +ac +ac +ac aa aa -aJ +aB aP aP aP aP aP -bo +bm by bG bN bV cf -bn -bo -bo -cD +bj +bm +bm +dp "} (14,1,1) = {" aa @@ -1530,13 +1531,13 @@ aa aa aa aa -aJ +aB aP aP aP aP aP -bp +bn bz bG bO @@ -1555,13 +1556,13 @@ aa aa aa aa -aJ +aB aQ aT aT aT bi -bo +bm bA bG bP @@ -1580,13 +1581,13 @@ aa aa aa aa -aK -aJ -aJ +aF +aB +aB aY bd -aJ -bo +aB +bm bB bG bQ @@ -1611,14 +1612,14 @@ aa aa aa aa -aK -bo -bo -bo -bo -bo -bo -bo -bo -bo +aF +bm +bm +bm +bm +bm +bm +bm +bm +bm "} diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 60fb49f780..4052dce40d 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -131,6 +131,11 @@ #define ORGAN_SLOT_BRAIN_ANTISTUN "brain_antistun" #define ORGAN_SLOT_TAIL "tail" #define ORGAN_SLOT_PENIS "penis" +#define ORGAN_SLOT_WOMB "womb" +#define ORGAN_SLOT_VAGINA "vagina" +#define ORGAN_SLOT_TESTICLES "testicles" +#define ORGAN_SLOT_BREASTS "breasts" + ////organ defines #define STANDARD_ORGAN_THRESHOLD 100 diff --git a/code/__DEFINES/__513_compatibility.dm b/code/__DEFINES/__513_compatibility.dm new file mode 100644 index 0000000000..12577fb68b --- /dev/null +++ b/code/__DEFINES/__513_compatibility.dm @@ -0,0 +1,32 @@ + +#if DM_VERSION < 513 + +#define ismovableatom(A) (istype(A, /atom/movable)) + +#define islist(L) (istype(L, /list)) + +#define CLAMP01(x) (CLAMP(x, 0, 1)) + +#define CLAMP(CLVALUE,CLMIN,CLMAX) ( max( (CLMIN), min((CLVALUE), (CLMAX)) ) ) + +#define ATAN2(x, y) ( !(x) && !(y) ? 0 : (y) >= 0 ? arccos((x) / sqrt((x)*(x) + (y)*(y))) : -arccos((x) / sqrt((x)*(x) + (y)*(y))) ) + +#define TAN(x) (sin(x) / cos(x)) + +#define arctan(x) (arcsin(x/sqrt(1+x*x))) + +////////////////////////////////////////////////// + +#else + +#define ismovableatom(A) ismovable(A) + +#define CLAMP01(x) clamp(x, 0, 1) + +#define CLAMP(CLVALUE, CLMIN, CLMAX) clamp(CLVALUE, CLMIN, CLMAX) + +#define TAN(x) tan(x) + +#define ATAN2(x, y) arctan(x, y) + +#endif diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 3301def4a1..e3cafd4613 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -15,9 +15,26 @@ #define ui_boxvore "EAST-5:22,SOUTH+1:6" //Filters -#define CIT_FILTER_STAMINACRIT filter(type="drop_shadow", x=0, y=0, size=-3, border=0, color="#04080F") +#define CIT_FILTER_STAMINACRIT filter(type="drop_shadow", x=0, y=0, size=-3, color="#04080F") //organ defines +#define VAGINA_LAYER_INDEX 1 +#define TESTICLES_LAYER_INDEX 2 +#define GENITAL_LAYER_INDEX 3 +#define PENIS_LAYER_INDEX 4 + +#define GENITAL_LAYER_INDEX_LENGTH 4 //keep it updated with each new index added, thanks. + +//genital flags +#define GENITAL_BLACKLISTED (1<<0) //for genitals that shouldn't be added to GLOB.genitals_list. +#define GENITAL_INTERNAL (1<<1) +#define GENITAL_HIDDEN (1<<2) +#define GENITAL_THROUGH_CLOTHES (1<<3) +#define GENITAL_FUID_PRODUCTION (1<<4) +#define CAN_MASTURBATE_WITH (1<<5) +#define MASTURBATE_LINKED_ORGAN (1<<6) //used to pass our mission to the linked organ +#define CAN_CLIMAX_WITH (1<<7) + #define COCK_SIZE_MIN 1 #define COCK_SIZE_MAX 20 @@ -50,27 +67,6 @@ #define BREASTS_VOLUME_BASE 50 //base volume for the reagents in the breasts, multiplied by the size then multiplier. 50u for A cups, 850u for HH cups. #define BREASTS_VOLUME_MULT 1 //global multiplier for breast volume. -#define BREASTS_SIZE_FLAT 0 -#define BREASTS_SIZE_A 1 -#define BREASTS_SIZE_AA 1.5 -#define BREASTS_SIZE_B 2 -#define BREASTS_SIZE_BB 2.5 -#define BREASTS_SIZE_C 3 -#define BREASTS_SIZE_CC 3.5 -#define BREASTS_SIZE_D 4 -#define BREASTS_SIZE_DD 4.5 -#define BREASTS_SIZE_E 5 -#define BREASTS_SIZE_EE 5.5 -#define BREASTS_SIZE_F 6 -#define BREASTS_SIZE_FF 6.5 -#define BREASTS_SIZE_G 7 -#define BREASTS_SIZE_GG 7.5//Are these even real sizes? The world may never know because cup sizes make no fucking sense. -#define BREASTS_SIZE_H 8 -#define BREASTS_SIZE_HH 8.5//Largest size, ever. For now. - -#define BREASTS_SIZE_MIN BREASTS_SIZE_A -#define BREASTS_SIZE_DEF BREASTS_SIZE_C -#define BREASTS_SIZE_MAX BREASTS_SIZE_HH #define MILK_RATE 5 #define MILK_RATE_MULT 1 diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index e31d2a278e..3664da4a5d 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -104,8 +104,7 @@ #define SHOVE_KNOCKDOWN_HUMAN 30 #define SHOVE_KNOCKDOWN_TABLE 30 #define SHOVE_KNOCKDOWN_COLLATERAL 10 -//Shove slowdown -#define SHOVE_SLOWDOWN_ID "shove_slowdown" +//for the shove slowdown, see __DEFINES/movespeed_modification.dm #define SHOVE_SLOWDOWN_LENGTH 30 #define SHOVE_SLOWDOWN_STRENGTH 0.85 //multiplier //Shove disarming item list diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index e33d42df64..4d32252062 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -70,7 +70,7 @@ #define COMSIG_ATOM_CANREACH "atom_can_reach" //from internal loop in atom/movable/proc/CanReach(): (list/next) #define COMPONENT_BLOCK_REACH 1 #define COMSIG_ATOM_SCREWDRIVER_ACT "atom_screwdriver_act" //from base of atom/screwdriver_act(): (mob/living/user, obj/item/I) -#define COMSIG_ATOM_INTERCEPT_TELEPORT "intercept_teleport" //called when teleporting into a protected turf: (channel, turf/origin) +#define COMSIG_ATOM_INTERCEPT_TELEPORT "intercept_teleport" //called when teleporting into a protected turf: (channel, turf/origin, turf/destination) #define COMPONENT_BLOCK_TELEPORT 1 ///////////////// #define COMSIG_ATOM_ATTACK_GHOST "atom_attack_ghost" //from base of atom/attack_ghost(): (mob/dead/observer/ghost) @@ -117,6 +117,7 @@ #define COMSIG_MOVABLE_Z_CHANGED "movable_ztransit" //from base of atom/movable/onTransitZ(): (old_z, new_z) #define COMSIG_MOVABLE_HEAR "movable_hear" //from base of atom/movable/Hear(): (message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) #define COMSIG_MOVABLE_DISPOSING "movable_disposing" //called when the movable is added to a disposal holder object for disposal movement: (obj/structure/disposalholder/holder, obj/machinery/disposal/source) +#define COMSIG_MOVABLE_TELEPORTED "movable_teleported" //from base of do_teleport(): (channel, turf/origin, turf/destination) // /mind signals #define COMSIG_MIND_TRANSFER "mind_transfer" //from base of mind/transfer_to(): (new_character, old_character) @@ -126,7 +127,7 @@ #define COMSIG_MOB_GHOSTIZE "mob_ghostize" //from base of mob/Ghostize() (can_reenter_corpse) #define COMPONENT_BLOCK_GHOSTING 1 #define COMSIG_MOB_ALLOWED "mob_allowed" //from base of obj/allowed(mob/M): (/obj) returns bool, if TRUE the mob has id access to the obj -#define COMSIG_MOB_RECEIVE_MAGIC "mob_receive_magic" //from base of mob/anti_magic_check(): (magic, holy, protection_sources) +#define COMSIG_MOB_RECEIVE_MAGIC "mob_receive_magic" //from base of mob/anti_magic_check(): (mob/user, magic, holy, tinfoil, chargecost, self, protection_sources) #define COMPONENT_BLOCK_MAGIC 1 #define COMSIG_MOB_HUD_CREATED "mob_hud_created" //from base of mob/create_mob_hud(): () #define COMSIG_MOB_ATTACK_HAND "mob_attack_hand" //from base of @@ -153,10 +154,15 @@ #define COMSIG_LIVING_EXTINGUISHED "living_extinguished" //from base of mob/living/ExtinguishMob() (/mob/living) #define COMSIG_LIVING_ELECTROCUTE_ACT "living_electrocute_act" //from base of mob/living/electrocute_act(): (shock_damage) #define COMSIG_LIVING_MINOR_SHOCK "living_minor_shock" //sent by stuff like stunbatons and tasers: () +#define COMSIG_LIVING_GUN_PROCESS_FIRE "living_gun_process_fire" //from base of /obj/item/gun/proc/process_fire(): (atom/target, params, zone_override) // /mob/living/carbon signals #define COMSIG_CARBON_SOUNDBANG "carbon_soundbang" //from base of mob/living/carbon/soundbang_act(): (list(intensity)) +// /mob/living/simple_animal/hostile signals +#define COMSIG_HOSTILE_ATTACKINGTARGET "hostile_attackingtarget" + #define COMPONENT_HOSTILE_NO_ATTACK 1 + // /obj signals #define COMSIG_OBJ_DECONSTRUCT "obj_deconstruct" //from base of obj/deconstruct(): (disassembled) #define COMSIG_OBJ_BREAK "obj_break" //from base of /obj/obj_break(): (damage_flag) @@ -206,6 +212,9 @@ // /obj/item/pen signals #define COMSIG_PEN_ROTATED "pen_rotated" //called after rotation in /obj/item/pen/attack_self(): (rotation, mob/living/carbon/user) +// /obj/item/projectile signals (sent to the firer) +#define COMSIG_PROJECTILE_ON_HIT "projectile_on_hit" // from base of /obj/item/projectile/proc/on_hit(): (atom/movable/firer, atom/target, Angle) +#define COMSIG_PROJECTILE_BEFORE_FIRE "projectile_before_fire" // from base of /obj/item/projectile/proc/fire(): (obj/item/projectile, atom/original_target) // /mob/living/carbon/human signals #define COMSIG_HUMAN_MELEE_UNARMED_ATTACK "human_melee_unarmed_attack" //from mob/living/carbon/human/UnarmedAttack(): (atom/target) @@ -233,8 +242,7 @@ //Mood #define COMSIG_ADD_MOOD_EVENT "add_mood" //Called when you send a mood event from anywhere in the code. #define COMSIG_CLEAR_MOOD_EVENT "clear_mood" //Called when you clear a mood event from anywhere in the code. -#define COMSIG_INCREASE_SANITY "decrease_sanity" //Called when you want to increase sanity from anywhere in the code. -#define COMSIG_DECREASE_SANITY "increase_sanity" //Same as above but to decrease sanity instead. +#define COMSIG_MODIFY_SANITY "modify_sanity" //Called when you want to increase or decrease sanity from anywhere in the code. //NTnet #define COMSIG_COMPONENT_NTNET_RECEIVE "ntnet_receive" //called on an object by its NTNET connection component on receive. (sending_id(number), sending_netname(text), data(datum/netdata)) diff --git a/code/__DEFINES/fantasy_affixes.dm b/code/__DEFINES/fantasy_affixes.dm new file mode 100644 index 0000000000..709d414d11 --- /dev/null +++ b/code/__DEFINES/fantasy_affixes.dm @@ -0,0 +1,5 @@ +#define AFFIX_PREFIX (1 << 0) +#define AFFIX_SUFFIX (1 << 1) + +#define AFFIX_GOOD (1 << 0) +#define AFFIX_EVIL (1 << 1) \ No newline at end of file diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index d9b30bf0e3..9e8a4f71c2 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -58,6 +58,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define GROUND (1<<0) #define FLYING (1<<1) #define VENTCRAWLING (1<<2) +#define FLOATING (1<<3) //Fire and Acid stuff, for resistance_flags #define LAVA_PROOF (1<<0) diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 24d381d1a8..632e4adef9 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -28,7 +28,9 @@ #define ITEM_SLOT_POCKET (1<<11) // this is to allow items with a w_class of WEIGHT_CLASS_NORMAL or WEIGHT_CLASS_BULKY to fit in pockets. #define ITEM_SLOT_DENYPOCKET (1<<12) // this is to deny items with a w_class of WEIGHT_CLASS_SMALL or WEIGHT_CLASS_TINY to fit in pockets. #define ITEM_SLOT_NECK (1<<13) -#define ITEM_SLOT_SUITSTORE (1<<14) +#define ITEM_SLOT_HANDS (1<<14) +#define ITEM_SLOT_BACKPACK (1<<15) +#define ITEM_SLOT_SUITSTORE (1<<16) //SLOTS #define SLOT_BACK 1 @@ -86,6 +88,10 @@ . = ITEM_SLOT_ICLOTHING if(SLOT_L_STORE, SLOT_R_STORE) . = ITEM_SLOT_POCKET + if(SLOT_HANDS) + . = ITEM_SLOT_HANDS + if(SLOT_IN_BACKPACK) + . = ITEM_SLOT_BACKPACK if(SLOT_S_STORE) . = ITEM_SLOT_SUITSTORE @@ -237,3 +243,6 @@ GLOBAL_LIST_INIT(security_wintercoat_allowed, typecacheof(list( //Internals checker #define GET_INTERNAL_SLOTS(C) list(C.head, C.wear_mask) + +//Slots that won't trigger humans' update_genitals() on equip(). +GLOBAL_LIST_INIT(no_genitals_update_slots, list(SLOT_L_STORE, SLOT_R_STORE, SLOT_S_STORE, SLOT_IN_BACKPACK, SLOT_LEGCUFFED, SLOT_HANDCUFFED, SLOT_HANDS, SLOT_GENERC_DEXTROUS_STORAGE)) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 9f69da0154..70010eeffc 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -1,11 +1,7 @@ // simple is_type and similar inline helpers -#define islist(L) (istype(L, /list)) - #define in_range(source, user) (get_dist(source, user) <= 1 && (get_step(source, 0)?:z) == (get_step(user, 0)?:z)) -#define ismovableatom(A) (istype(A, /atom/movable)) - #define isatom(A) (isloc(A)) #define isweakref(D) (istype(D, /datum/weakref)) @@ -223,6 +219,10 @@ GLOBAL_LIST_INIT(pointed_types, typecacheof(list( #define isbodypart(A) (istype(A, /obj/item/bodypart)) +#define isprojectile(A) (istype(A, /obj/item/projectile)) + +#define isgun(A) (istype(A, /obj/item/gun)) + //Assemblies #define isassembly(O) (istype(O, /obj/item/assembly)) @@ -246,4 +246,4 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list( #define isblobmonster(O) (istype(O, /mob/living/simple_animal/hostile/blob)) -#define isshuttleturf(T) (length(T.baseturfs) && (/turf/baseturf_skipover/shuttle in T.baseturfs)) +#define isshuttleturf(T) (length(T.baseturfs) && (/turf/baseturf_skipover/shuttle in T.baseturfs)) \ No newline at end of file diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm index 179f501fd1..3c0921fa01 100644 --- a/code/__DEFINES/maps.dm +++ b/code/__DEFINES/maps.dm @@ -92,3 +92,7 @@ require only minor tweaks. #define PLACE_SAME_Z "same" #define PLACE_SPACE_RUIN "space" #define PLACE_LAVA_RUIN "lavaland" + + +//Map type stuff. +#define MAP_TYPE_STATION "station" diff --git a/code/__DEFINES/maths.dm b/code/__DEFINES/maths.dm index 5bce51293f..ad93dd2d54 100644 --- a/code/__DEFINES/maths.dm +++ b/code/__DEFINES/maths.dm @@ -16,7 +16,6 @@ #define TICK_USAGE_TO_MS(starting_tickusage) (TICK_DELTA_TO_MS(TICK_USAGE_REAL - starting_tickusage)) #define PERCENT(val) (round((val)*100, 0.1)) -#define CLAMP01(x) (CLAMP(x, 0, 1)) //time of day but automatically adjusts to the server going into the next day within the same round. //for when you need a reliable time number that doesn't depend on byond time. @@ -30,17 +29,12 @@ // round() acts like floor(x, 1) by default but can't handle other values #define FLOOR(x, y) ( round((x) / (y)) * (y) ) -#define CLAMP(CLVALUE,CLMIN,CLMAX) ( max( (CLMIN), min((CLVALUE), (CLMAX)) ) ) - // Similar to clamp but the bottom rolls around to the top and vice versa. min is inclusive, max is exclusive #define WRAP(val, min, max) ( min == max ? min : (val) - (round(((val) - (min))/((max) - (min))) * ((max) - (min))) ) // Real modulus that handles decimals #define MODULUS(x, y) ( (x) - (y) * round((x) / (y)) ) -// Tangent -#define TAN(x) (sin(x) / cos(x)) - // Cotangent #define COT(x) (1 / TAN(x)) @@ -50,8 +44,6 @@ // Cosecant #define CSC(x) (1 / sin(x)) -#define ATAN2(x, y) ( !(x) && !(y) ? 0 : (y) >= 0 ? arccos((x) / sqrt((x)*(x) + (y)*(y))) : -arccos((x) / sqrt((x)*(x) + (y)*(y))) ) - // Greatest Common Divisor - Euclid's algorithm /proc/Gcd(a, b) return b ? Gcd(b, (a) % (b)) : a @@ -207,4 +199,4 @@ #define LORENTZ_CUMULATIVE_DISTRIBUTION(x, y, s) ( (1/PI)*TORADIANS(arctan((x-y)/s)) + 1/2 ) #define RULE_OF_THREE(a, b, x) ((a*x)/b) -// ) +// ) \ No newline at end of file diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 94a189ff07..2e29497a02 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -51,24 +51,25 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s //Human Overlays Indexes///////// //LOTS OF CIT CHANGES HERE. BE CAREFUL WHEN UPSTREAM ADDS MORE LAYERS -#define MUTATIONS_LAYER 31 //mutations. Tk headglows, cold resistance glow, etc -#define GENITALS_BEHIND_LAYER 30 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer -#define BODY_BEHIND_LAYER 29 //certain mutantrace features (tail when looking south) that must appear behind the body parts -#define BODYPARTS_LAYER 28 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag -#define MARKING_LAYER 27 //Matrixed body markings because clashing with snouts? -#define BODY_ADJ_LAYER 26 //certain mutantrace features (snout, body markings) that must appear above the body parts -#define GENITALS_FRONT_LAYER 25 //Draws some genitalia above clothes and the TAUR body if need be. -#define BODY_LAYER 24 //underwear, undershirts, socks, eyes, lips(makeup) -#define FRONT_MUTATIONS_LAYER 23 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) -#define DAMAGE_LAYER 22 //damage indicators (cuts and burns) -#define UNIFORM_LAYER 21 -#define ID_LAYER 20 +#define MUTATIONS_LAYER 32 //mutations. Tk headglows, cold resistance glow, etc +#define GENITALS_BEHIND_LAYER 31 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer +#define BODY_BEHIND_LAYER 30 //certain mutantrace features (tail when looking south) that must appear behind the body parts +#define BODYPARTS_LAYER 29 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag +#define MARKING_LAYER 28 //Matrixed body markings because clashing with snouts? +#define BODY_ADJ_LAYER 27 //certain mutantrace features (snout, body markings) that must appear above the body parts +#define GENITALS_FRONT_LAYER 26 //Draws some genitalia above clothes and the TAUR body if need be. +#define BODY_LAYER 25 //underwear, undershirts, socks, eyes, lips(makeup) +#define FRONT_MUTATIONS_LAYER 24 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) +#define DAMAGE_LAYER 23 //damage indicators (cuts and burns) +#define UNIFORM_LAYER 22 +#define ID_LAYER 21 #define HANDS_PART_LAYER 20 #define SHOES_LAYER 19 #define GLOVES_LAYER 18 #define EARS_LAYER 17 #define BODY_TAUR_LAYER 16 #define SUIT_LAYER 15 +#define GENITALS_EXPOSED_LAYER 14 #define GLASSES_LAYER 13 #define BELT_LAYER 12 //Possible make this an overlay of somethign required to wear a belt? #define SUIT_STORE_LAYER 11 @@ -82,7 +83,7 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s #define HANDS_LAYER 3 #define BODY_FRONT_LAYER 2 #define FIRE_LAYER 1 //If you're on fire -#define TOTAL_LAYERS 30 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; +#define TOTAL_LAYERS 32 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; //Human Overlay Index Shortcuts for alternate_worn_layer, layers //Because I *KNOW* somebody will think layer+1 means "above" @@ -280,9 +281,11 @@ GLOBAL_LIST_INIT(pda_styles, list(MONO, VT, ORBITRON, SHARE)) #define PDA_SKIN_ALT "Holographic" #define PDA_SKIN_RUGGED "Rugged" #define PDA_SKIN_MODERN "Modern" +#define PDA_SKIN_MINIMAL "Minimal" GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_SKIN_ALT = 'icons/obj/pda_alt.dmi', - PDA_SKIN_RUGGED = 'icons/obj/pda_rugged.dmi', PDA_SKIN_MODERN = 'icons/obj/pda_modern.dmi')) + PDA_SKIN_RUGGED = 'icons/obj/pda_rugged.dmi', PDA_SKIN_MODERN = 'icons/obj/pda_modern.dmi', + PDA_SKIN_MINIMAL = 'icons/obj/pda_minimal.dmi')) ///////////////////////////////////// // atom.appearence_flags shortcuts // @@ -489,7 +492,7 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S #define PDAIMG(what) {""} //Filters -#define AMBIENT_OCCLUSION list("type"="drop_shadow","x"=0,"y"=-2,"size"=4,"border"=4,"color"="#04080FAA") +#define AMBIENT_OCCLUSION list("type"="drop_shadow","x"=0,"y"=-2,"size"=4,"color"="#04080FAA") #define EYE_BLUR(size) list("type"="blur", "size"=size) #define GRAVITY_MOTION_BLUR list("type"="motion_blur","x"=0,"y"=0) diff --git a/code/__DEFINES/movespeed_modification.dm b/code/__DEFINES/movespeed_modification.dm index 12a3c331ec..50e1a10fa1 100644 --- a/code/__DEFINES/movespeed_modification.dm +++ b/code/__DEFINES/movespeed_modification.dm @@ -1,12 +1,19 @@ #define MOVESPEED_DATA_INDEX_PRIORITY 1 #define MOVESPEED_DATA_INDEX_FLAGS 2 #define MOVESPEED_DATA_INDEX_MULTIPLICATIVE_SLOWDOWN 3 +#define MOVESPEED_DATA_INDEX_MOVETYPE 4 +#define MOVESPEED_DATA_INDEX_BL_MOVETYPE 5 +#define MOVESPEED_DATA_INDEX_CONFLICT 6 -#define MOVESPEED_DATA_INDEX_MAX 3 +#define MOVESPEED_DATA_INDEX_MAX 6 //flags #define IGNORE_NOSLOW (1 << 0) +//conflict types + +#define MOVE_CONFLICT_JETPACK "JETPACK" + //ids #define MOVESPEED_ID_MOB_WALK_RUN_CONFIG_SPEED "MOB_WALK_RUN" @@ -16,15 +23,29 @@ #define MOVESPEED_ID_SLIME_HEALTHMOD "SLIME_HEALTH_MODIFIER" #define MOVESPEED_ID_SLIME_TEMPMOD "SLIME_TEMPERATURE_MODIFIER" +#define MOVESPEED_ID_SLIME_STATUS "SLIME_STATUS" + +#define MOVESPEED_ID_TARANTULA_WEB "TARANTULA_WEB" + #define MOVESPEED_ID_LIVING_TURF_SPEEDMOD "LIVING_TURF_SPEEDMOD" #define MOVESPEED_ID_CARBON_SOFTCRIT "CARBON_SOFTCRIT" #define MOVESPEED_ID_CARBON_OLDSPEED "CARBON_DEPRECATED_SPEED" +#define MOVESPEED_ID_DNA_VAULT "DNA_VAULT" + +#define MOVESPEED_ID_YELLOW_ORB "YELLOW_ORB" + +#define MOVESPEED_ID_TARFOOT "TARFOOT" + +#define MOVESPEED_ID_SEPIA "SEPIA" + #define MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD "MONKEY_REAGENT_SPEEDMOD" #define MOVESPEED_ID_MONKEY_TEMPERATURE_SPEEDMOD "MONKEY_TEMPERATURE_SPEEDMOD" #define MOVESPEED_ID_MONKEY_HEALTH_SPEEDMOD "MONKEY_HEALTH_SPEEDMOD" +#define MOVESPEED_ID_CHANGELING_MUSCLES "CHANGELING_MUSCLES" + #define MOVESPEED_ID_SIMPLEMOB_VARSPEED "SIMPLEMOB_VARSPEED_MODIFIER" #define MOVESPEED_ID_ADMIN_VAREDIT "ADMIN_VAREDIT_MODIFIER" @@ -32,7 +53,18 @@ #define MOVESPEED_ID_SANITY "MOOD_SANITY" +#define MOVESPEED_ID_SPECIES "SPECIES_SPEED_MOD" + #define MOVESPEED_ID_PRONE_DRAGGING "PRONE_DRAG" #define MOVESPEED_ID_HUMAN_CARRYING "HUMAN_CARRY" -#define MOVESPEED_ID_TASED_STATUS "TASED" \ No newline at end of file +#define MOVESPEED_ID_TASED_STATUS "TASED" + +#define MOVESPEED_ID_SLAUGHTER "SLAUGHTER" + +#define MOVESPEED_ID_CYBER_THRUSTER "CYBER_IMPLANT_THRUSTER" +#define MOVESPEED_ID_JETPACK "JETPACK" + +#define MOVESPEED_ID_SHOVE "SHOVE" + +#define MOVESPEED_ID_MKULTRA "MKULTRA" \ No newline at end of file diff --git a/code/__DEFINES/reactions.dm b/code/__DEFINES/reactions.dm index 9579571174..8f01f453b6 100644 --- a/code/__DEFINES/reactions.dm +++ b/code/__DEFINES/reactions.dm @@ -27,7 +27,7 @@ #define NOBLIUM_RESEARCH_AMOUNT 1000 #define BZ_RESEARCH_SCALE 4 #define BZ_RESEARCH_MAX_AMOUNT 400 -#define MIASMA_RESEARCH_AMOUNT 160 +#define MIASMA_RESEARCH_AMOUNT 6 #define STIMULUM_RESEARCH_AMOUNT 50 //Plasma fusion properties #define FUSION_ENERGY_THRESHOLD 3e9 //Amount of energy it takes to start a fusion reaction diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm index 5afd705420..f6302813f5 100644 --- a/code/__DEFINES/sound.dm +++ b/code/__DEFINES/sound.dm @@ -3,12 +3,12 @@ #define CHANNEL_ADMIN 1023 #define CHANNEL_VOX 1022 #define CHANNEL_JUKEBOX 1021 -#define CHANNEL_JUKEBOX_START 1020 -#define CHANNEL_JUSTICAR_ARK 1019 -#define CHANNEL_HEARTBEAT 1018 //sound channel for heartbeats -#define CHANNEL_AMBIENCE 1017 -#define CHANNEL_BUZZ 1016 -#define CHANNEL_BICYCLE 1015 +#define CHANNEL_JUKEBOX_START 1016 //The gap between this and CHANNEL_JUKEBOX determines the amount of free jukebox channels. This currently allows 6 jukebox channels to exist. +#define CHANNEL_JUSTICAR_ARK 1015 +#define CHANNEL_HEARTBEAT 1014 //sound channel for heartbeats +#define CHANNEL_AMBIENCE 1013 +#define CHANNEL_BUZZ 1012 +#define CHANNEL_BICYCLE 1011 //CIT CHANNELS - TRY NOT TO REGRESS #define CHANNEL_PRED 1010 diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index 332d36f2f4..ff19976cff 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -74,6 +74,9 @@ #define STATUS_EFFECT_ICHORIAL_STAIN /datum/status_effect/ichorial_stain //Prevents a servant from being revived by vitality matrices for one minute. +#define STATUS_EFFECT_BREASTS_ENLARGEMENT /datum/status_effect/chem/breast_enlarger //Applied slowdown due to the ominous bulk. + +#define STATUS_EFFECT_PENIS_ENLARGEMENT /datum/status_effect/chem/penis_enlarger //More applied slowdown, just like the above. ///////////// // NEUTRAL // ///////////// diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index d4086bc4d9..2fd929a07d 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -99,7 +99,6 @@ #define FIRE_PRIORITY_GARBAGE 15 #define FIRE_PRIORITY_WET_FLOORS 20 #define FIRE_PRIORITY_AIR 20 -#define FIRE_PRIORITY_NPC 20 #define FIRE_PRIORITY_PROCESS 25 #define FIRE_PRIORITY_THROWING 25 #define FIRE_PRIORITY_SPACEDRIFT 30 @@ -112,6 +111,7 @@ #define FIRE_PRIORITY_AIR_TURFS 40 #define FIRE_PRIORITY_DEFAULT 50 #define FIRE_PRIORITY_PARALLAX 65 +#define FIRE_PRIORITY_NPC 80 #define FIRE_PRIORITY_FLIGHTPACKS 80 #define FIRE_PRIORITY_MOBS 100 #define FIRE_PRIORITY_TGUI 110 diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index e22dcfbbe0..1f37556d1d 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -70,8 +70,6 @@ #define TRAIT_MONKEYLIKE "monkeylike" //sets IsAdvancedToolUser to FALSE #define TRAIT_PACIFISM "pacifism" #define TRAIT_IGNORESLOWDOWN "ignoreslow" -#define TRAIT_GOTTAGOFAST "fast" -#define TRAIT_GOTTAGOREALLYFAST "2fast" #define TRAIT_DEATHCOMA "deathcoma" //Causes death-like unconsciousness #define TRAIT_FAKEDEATH "fakedeath" //Makes the owner appear as dead to most forms of medical examination #define TRAIT_DISFIGURED "disfigured" @@ -147,13 +145,14 @@ #define TRAIT_SKITTISH "skittish" #define TRAIT_POOR_AIM "poor_aim" #define TRAIT_PROSOPAGNOSIA "prosopagnosia" -#define TRAIT_DRUNK_HEALING "drunk_healing" -#define TRAIT_TAGGER "tagger" -#define TRAIT_PHOTOGRAPHER "photographer" -#define TRAIT_MUSICIAN "musician" -#define TRAIT_CROCRIN_IMMUNE "crocin_immune" +#define TRAIT_DRUNK_HEALING "drunk_healing" +#define TRAIT_TAGGER "tagger" +#define TRAIT_PHOTOGRAPHER "photographer" +#define TRAIT_MUSICIAN "musician" +#define TRAIT_CROCRIN_IMMUNE "crocin_immune" #define TRAIT_NYMPHO "nymphomania" #define TRAIT_MASO "masochism" +#define TRAIT_EXHIBITIONIST "exhibitionist" #define TRAIT_HIGH_BLOOD "high_blood" #define TRAIT_PHARMA "hepatic_pharmacokinesis" #define TRAIT_PARA "paraplegic" diff --git a/code/__DEFINES/typeids.dm b/code/__DEFINES/typeids.dm index ae5df258b4..8bfe6216e2 100644 --- a/code/__DEFINES/typeids.dm +++ b/code/__DEFINES/typeids.dm @@ -2,7 +2,7 @@ #define TYPEID_NULL "0" #define TYPEID_NORMAL_LIST "f" //helper macros -#define GET_TYPEID(ref) ( ( (lentext(ref) <= 10) ? "TYPEID_NULL" : copytext(ref, 4, lentext(ref)-6) ) ) +#define GET_TYPEID(ref) ( ( (length(ref) <= 10) ? "TYPEID_NULL" : copytext(ref, 4, length(ref)-6) ) ) #define IS_NORMAL_LIST(L) (GET_TYPEID("\ref[L]") == TYPEID_NORMAL_LIST) diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm index 86d0a34e3e..8134494306 100644 --- a/code/__HELPERS/_cit_helpers.dm +++ b/code/__HELPERS/_cit_helpers.dm @@ -56,6 +56,7 @@ GLOBAL_LIST_EMPTY(ipc_screens_list) GLOBAL_LIST_EMPTY(ipc_antennas_list) //Genitals and Arousal Lists +GLOBAL_LIST_EMPTY(genitals_list) GLOBAL_LIST_EMPTY(cock_shapes_list)//global_lists.dm for the list initializations //Now also _DATASTRUCTURES globals.dm GLOBAL_LIST_EMPTY(cock_shapes_icons) //Associated list for names->icon_states for cockshapes. GLOBAL_LIST_EMPTY(gentlemans_organ_names) @@ -131,53 +132,53 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE) SSblackbox.record_feedback("tally", "admin_verb", 1, "TLOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /mob/living/carbon/proc/has_penis() - if(getorganslot("penis"))//slot shared with ovipositor - if(istype(getorganslot("penis"), /obj/item/organ/genital/penis)) - return TRUE + var/obj/item/organ/genital/G = getorganslot(ORGAN_SLOT_PENIS) + if(G && istype(G, /obj/item/organ/genital/penis)) + return TRUE return FALSE /mob/living/carbon/proc/has_balls() - if(getorganslot("balls")) - if(istype(getorganslot("balls"), /obj/item/organ/genital/testicles)) - return TRUE + var/obj/item/organ/genital/G = getorganslot(ORGAN_SLOT_TESTICLES) + if(G && istype(G, /obj/item/organ/genital/testicles)) + return TRUE return FALSE /mob/living/carbon/proc/has_vagina() - if(getorganslot("vagina")) + if(getorganslot(ORGAN_SLOT_VAGINA)) return TRUE return FALSE /mob/living/carbon/proc/has_breasts() - if(getorganslot("breasts")) + if(getorganslot(ORGAN_SLOT_BREASTS)) return TRUE return FALSE /mob/living/carbon/proc/has_ovipositor() - if(getorganslot("penis"))//shared slot - if(istype(getorganslot("penis"), /obj/item/organ/genital/ovipositor)) - return TRUE + var/obj/item/organ/genital/G = getorganslot(ORGAN_SLOT_PENIS) + if(G && istype(G, /obj/item/organ/genital/ovipositor)) + return TRUE return FALSE /mob/living/carbon/human/proc/has_eggsack() - if(getorganslot("balls")) - if(istype(getorganslot("balls"), /obj/item/organ/genital/eggsack)) - return TRUE + var/obj/item/organ/genital/G = getorganslot(ORGAN_SLOT_TESTICLES) + if(G && istype(G, /obj/item/organ/genital/eggsack)) + return TRUE return FALSE -/mob/living/carbon/human/proc/is_bodypart_exposed(bodypart) - -/mob/living/carbon/proc/is_groin_exposed(var/list/L) +/mob/living/carbon/proc/is_groin_exposed(list/L) if(!L) L = get_equipped_items() - for(var/obj/item/I in L) + for(var/A in L) + var/obj/item/I = A if(I.body_parts_covered & GROIN) return FALSE return TRUE -/mob/living/carbon/proc/is_chest_exposed(var/list/L) +/mob/living/carbon/proc/is_chest_exposed(list/L) if(!L) L = get_equipped_items() - for(var/obj/item/I in L) + for(var/A in L) + var/obj/item/I = A if(I.body_parts_covered & CHEST) return FALSE return TRUE @@ -195,9 +196,9 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE) message_admins("[src] gave everyone genitals.") for(var/mob/living/carbon/human/H in GLOB.mob_list) if(H.gender == MALE) - H.give_penis() - H.give_balls() + H.give_genital(/obj/item/organ/genital/penis) + H.give_genital(/obj/item/organ/genital/testicles) else - H.give_vagina() - H.give_womb() - H.give_breasts() + H.give_genital(/obj/item/organ/genital/vagina) + H.give_genital(/obj/item/organ/genital/womb) + H.give_genital(/obj/item/organ/genital/breasts) diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index fed283adcd..917615d095 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -379,6 +379,12 @@ i++ return i +/proc/count_occurences_of_value(list/L, val, limit) //special thanks to salmonsnake + . = 0 + for (var/i in 1 to limit) + if (L[i] == val) + .++ + /proc/find_record(field, value, list/L) for(var/datum/data/record/R in L) if(R.fields[field] == value) @@ -514,7 +520,7 @@ used_key_list[input_key] = 1 return input_key -#if DM_VERSION > 512 +#if DM_VERSION > 513 #error Remie said that lummox was adding a way to get a lists #error contents via list.values, if that is true remove this #error otherwise, update the version and bug lummox @@ -564,4 +570,4 @@ if(key in L1) L1[key] += other_value else - L1[key] = other_value + L1[key] = other_value \ No newline at end of file diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 6fca4eed3d..7852251230 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -72,6 +72,10 @@ var/datum/sprite_accessory/testicles/value = GLOB.balls_shapes_list[K] GLOB.balls_shapes_icons[K] = value.icon_state + for(var/gpath in subtypesof(/obj/item/organ/genital)) + var/obj/item/organ/genital/G = gpath + if(!CHECK_BITFIELD(initial(G.genital_flags), GENITAL_BLACKLISTED)) + GLOB.genitals_list[initial(G.name)] = gpath //END OF CIT CHANGES //Species diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 19d126f08f..8e7938a312 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -160,7 +160,6 @@ "xenodorsal" = "Standard", "xenohead" = "Standard", "xenotail" = "Xenomorph Tail", - "exhibitionist" = FALSE, "genitals_use_skintone" = FALSE, "has_cock" = FALSE, "cock_shape" = pick(GLOB.cock_shapes_list), diff --git a/code/__HELPERS/priority_announce.dm b/code/__HELPERS/priority_announce.dm index 8819eb4d04..d06912b701 100644 --- a/code/__HELPERS/priority_announce.dm +++ b/code/__HELPERS/priority_announce.dm @@ -1,4 +1,4 @@ -/proc/priority_announce(text, title = "", sound = 'sound/ai/attention.ogg', type , sender_override) +/proc/priority_announce(text, title = "", sound = "attention", type , sender_override) if(!text) return @@ -29,19 +29,110 @@ announcement += "
[html_encode(text)]
" announcement += "
" - var/s = sound(sound) + var/s = sound(get_announcer_sound(sound)) for(var/mob/M in GLOB.player_list) if(!isnewplayer(M) && M.can_hear()) to_chat(M, announcement) if(M.client.prefs.toggles & SOUND_ANNOUNCEMENTS) SEND_SOUND(M, s) +/proc/get_announcer_sound(soundid) + if(isfile(soundid)) + return soundid + else if(!istext(soundid)) + CRASH("Invalid type passed to get_announcer_sound()") + switch(GLOB.announcertype) //These are all individually hardcoded to allow the announcer sounds to be included in the rsc, reducing lag from sending resources midgame. + if("classic") + switch(soundid) + if("aimalf") + . = 'sound/announcer/classic/aimalf.ogg' + if("aliens") + . = 'sound/announcer/classic/aliens.ogg' + if("animes") + . = 'sound/announcer/classic/animes.ogg' + if("attention") + . = 'sound/announcer/classic/attention.ogg' + if("commandreport") + . = 'sound/announcer/classic/commandreport.ogg' + if("granomalies") + . = 'sound/announcer/classic/granomalies.ogg' + if("intercept") + . = 'sound/announcer/classic/intercept.ogg' + if("ionstorm") + . = 'sound/announcer/classic/ionstorm.ogg' + if("meteors") + . = 'sound/announcer/classic/meteors.ogg' + if("newAI") + . = 'sound/announcer/classic/newAI.ogg' + if("outbreak5") + . = 'sound/announcer/classic/outbreak5.ogg' + if("outbreak7") + . = 'sound/announcer/classic/outbreak7.ogg' + if("poweroff") + . = 'sound/announcer/classic/poweroff.ogg' + if("poweron") + . = 'sound/announcer/classic/poweron.ogg' + if("radiation") + . = 'sound/announcer/classic/radiation.ogg' + if("shuttlecalled") + . = 'sound/announcer/classic/shuttlecalled.ogg' + if("shuttledock") + . = 'sound/announcer/classic/shuttledock.ogg' + if("shuttlerecalled") + . = 'sound/announcer/classic/shuttlerecalled.ogg' + if("spanomalies") + . = 'sound/announcer/classic/spanomalies.ogg' + if("welcome") + . = 'sound/announcer/classic/welcome.ogg' + if("medibot") + switch(soundid) + if("aimalf") + . = 'sound/announcer/classic/aimalf.ogg' + if("aliens") + . = 'sound/announcer/medibot/aliens.ogg' + if("animes") + . = 'sound/announcer/medibot/animes.ogg' + if("attention") + . = 'sound/announcer/medibot/attention.ogg' + if("commandreport") + . = 'sound/announcer/medibot/commandreport.ogg' + if("granomalies") + . = 'sound/announcer/medibot/granomalies.ogg' + if("intercept") + . = 'sound/announcer/medibot/intercept.ogg' + if("ionstorm") + . = 'sound/announcer/medibot/ionstorm.ogg' + if("meteors") + . = 'sound/announcer/medibot/meteors.ogg' + if("newAI") + . = 'sound/announcer/medibot/newAI.ogg' + if("outbreak5") + . = 'sound/announcer/medibot/outbreak5.ogg' + if("outbreak7") + . = 'sound/announcer/medibot/outbreak7.ogg' + if("poweroff") + . = 'sound/announcer/medibot/poweroff.ogg' + if("poweron") + . = 'sound/announcer/medibot/poweron.ogg' + if("radiation") + . = 'sound/announcer/medibot/radiation.ogg' + if("shuttlecalled") + . = 'sound/announcer/medibot/shuttlecalled.ogg' + if("shuttledock") + . = 'sound/announcer/medibot/shuttledocked.ogg' + if("shuttlerecalled") + . = 'sound/announcer/medibot/shuttlerecalled.ogg' + if("spanomalies") + . = 'sound/announcer/medibot/spanomalies.ogg' + if("welcome") + . = 'sound/announcer/medibot/welcome.ogg' + /proc/print_command_report(text = "", title = null, announce=TRUE) if(!title) title = "Classified [command_name()] Update" if(announce) - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") var/datum/comm_message/M = new M.title = title diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index 8e59106d98..fb7a29c907 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -534,10 +534,12 @@ return parts.Join() -/proc/printobjectives(datum/mind/ply) +/proc/printobjectives(list/objectives) + if(!objectives || !objectives.len) + return var/list/objective_parts = list() var/count = 1 - for(var/datum/objective/objective in ply.objectives) + for(var/datum/objective/objective in objectives) if(objective.check_completion()) objective_parts += "Objective #[count]: [objective.explanation_text] Success!" else diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 6908a5057f..8494bbb7a9 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -304,9 +304,9 @@ //is in the other string at the same spot (assuming it is not a replace char). //This is used for fingerprints var/newtext = text - if(lentext(text) != lentext(compare)) + if(length(text) != length(compare)) return 0 - for(var/i = 1, i < lentext(text), i++) + for(var/i = 1, i < length(text), i++) var/a = copytext(text,i,i+1) var/b = copytext(compare,i,i+1) //if it isn't both the same letter, or if they are both the replacement character @@ -326,7 +326,7 @@ if(!text || !character) return 0 var/count = 0 - for(var/i = 1, i <= lentext(text), i++) + for(var/i = 1, i <= length(text), i++) var/a = copytext(text,i,i+1) if(a == character) count++ @@ -607,8 +607,8 @@ GLOBAL_LIST_INIT(binary, list("0","1")) continue var/buffer = "" var/early_culling = TRUE - for(var/pos = 1, pos <= lentext(string), pos++) - var/let = copytext(string, pos, (pos + 1) % lentext(string)) + for(var/pos = 1, pos <= length(string), pos++) + var/let = copytext(string, pos, (pos + 1) % length(string)) if(early_culling && !findtext(let,GLOB.is_alphanumeric)) continue early_culling = FALSE @@ -616,9 +616,9 @@ GLOBAL_LIST_INIT(binary, list("0","1")) if(!findtext(buffer,GLOB.is_alphanumeric)) continue var/punctbuffer = "" - var/cutoff = lentext(buffer) - for(var/pos = lentext(buffer), pos >= 0, pos--) - var/let = copytext(buffer, pos, (pos + 1) % lentext(buffer)) + var/cutoff = length(buffer) + for(var/pos = length(buffer), pos >= 0, pos--) + var/let = copytext(buffer, pos, (pos + 1) % length(buffer)) if(findtext(let,GLOB.is_alphanumeric)) break if(findtext(let,GLOB.is_punctuation)) @@ -628,8 +628,8 @@ GLOBAL_LIST_INIT(binary, list("0","1")) var/exclaim = FALSE var/question = FALSE var/periods = 0 - for(var/pos = lentext(punctbuffer), pos >= 0, pos--) - var/punct = copytext(punctbuffer, pos, (pos + 1) % lentext(punctbuffer)) + for(var/pos = length(punctbuffer), pos >= 0, pos--) + var/punct = copytext(punctbuffer, pos, (pos + 1) % length(punctbuffer)) if(!exclaim && findtext(punct,"!")) exclaim = TRUE if(!question && findtext(punct,"?")) @@ -651,7 +651,7 @@ GLOBAL_LIST_INIT(binary, list("0","1")) buffer = copytext(buffer, 1, cutoff) + punctbuffer if(!findtext(buffer,GLOB.is_alphanumeric)) continue - if(!buffer || lentext(buffer) > 280 || lentext(buffer) <= cullshort || buffer in accepted) + if(!buffer || length(buffer) > 280 || length(buffer) <= cullshort || buffer in accepted) continue accepted += buffer diff --git a/code/__HELPERS/text_vr.dm b/code/__HELPERS/text_vr.dm index 64e13ef65b..9be806fc54 100644 --- a/code/__HELPERS/text_vr.dm +++ b/code/__HELPERS/text_vr.dm @@ -9,8 +9,8 @@ return t proc/TextPreview(var/string,var/len=40) - if(lentext(string) <= len) - if(!lentext(string)) + if(length(string) <= len) + if(!length(string)) return "\[...\]" else return string diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index ce294f3749..9abe42ea8e 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -451,10 +451,6 @@ Turf and target are separate in case you want to teleport some distance from a t var/y = min(world.maxy, max(1, A.y + dy)) return locate(x,y,A.z) -/proc/arctan(x) - var/y=arcsin(x/sqrt(1+x*x)) - return y - /* Gets all contents of contents and returns them all in a list. */ @@ -763,7 +759,7 @@ GLOBAL_LIST_INIT(can_embed_types, typecacheof(list( /obj/item/pipe))) /proc/can_embed(obj/item/W) - if(W.is_sharp()) + if(W.get_sharpness()) return 1 if(is_pointed(W)) return 1 diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 32f0fe2d8e..e49d458ceb 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -202,4 +202,14 @@ GLOBAL_LIST_INIT(bitfields, list( "ORGAN_VITAL" = ORGAN_VITAL, "ORGAN_NO_SPOIL" = ORGAN_NO_SPOIL ), - )) + "genital_flags" = list( + "GENITAL_BLACKLISTED" = GENITAL_BLACKLISTED, + "GENITAL_INTERNAL" = GENITAL_INTERNAL, + "GENITAL_HIDDEN" = GENITAL_HIDDEN, + "GENITAL_THROUGH_CLOTHES" = GENITAL_THROUGH_CLOTHES, + "GENITAL_FUID_PRODUCTION" = GENITAL_FUID_PRODUCTION, + "CAN_MASTURBATE_WITH" = CAN_MASTURBATE_WITH, + "MASTURBATE_LINKED_ORGAN" = MASTURBATE_LINKED_ORGAN, + "CAN_CLIMAX_WITH" = CAN_CLIMAX_WITH + ) + )) \ No newline at end of file diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index 037e5067d8..af31e2b5a5 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -2,6 +2,12 @@ GLOBAL_VAR_INIT(admin_notice, "") // Admin notice that all clients see when join GLOBAL_VAR_INIT(timezoneOffset, 0) // The difference betwen midnight (of the host computer) and 0 world.ticks. +GLOBAL_VAR_INIT(year, time2text(world.realtime,"YYYY")) +GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013??? + + +GLOBAL_VAR_INIT(announcertype, "standard") + // For FTP requests. (i.e. downloading runtime logs.) // However it'd be ok to use for accessing attack logs and such too, which are even laggier. GLOBAL_VAR_INIT(fileaccess_timer, 0) @@ -24,4 +30,4 @@ GLOBAL_VAR(bible_name) GLOBAL_VAR(bible_icon_state) GLOBAL_VAR(bible_item_state) GLOBAL_VAR(holy_weapon_type) -GLOBAL_VAR(holy_armor_type) \ No newline at end of file +GLOBAL_VAR(holy_armor_type) diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index ae36b4abb4..167fa989b2 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -49,9 +49,9 @@ #define ui_storage1 "CENTER+1:18,SOUTH:5" #define ui_storage2 "CENTER+2:20,SOUTH:5" -#define ui_borg_sensor "CENTER-3:16, SOUTH:5" //borgs -#define ui_borg_lamp "CENTER-4:16, SOUTH:5" //borgs -#define ui_borg_thrusters "CENTER-5:16, SOUTH:5" //borgs +#define ui_borg_sensor "CENTER-3:15, SOUTH:5" //borgs +#define ui_borg_lamp "CENTER-4:15, SOUTH:5" //borgs +#define ui_borg_thrusters "CENTER-5:15, SOUTH:5" //borgs #define ui_inv1 "CENTER-2:16,SOUTH:5" //borgs #define ui_inv2 "CENTER-1 :16,SOUTH:5" //borgs #define ui_inv3 "CENTER :16,SOUTH:5" //borgs @@ -59,7 +59,7 @@ #define ui_borg_store "CENTER+2:16,SOUTH:5" //borgs #define ui_borg_camera "CENTER+3:21,SOUTH:5" //borgs #define ui_borg_album "CENTER+4:21,SOUTH:5" //borgs -#define ui_borg_language_menu "CENTER+4:21,SOUTH+1:5" //borgs +#define ui_borg_language_menu "EAST-1:27,SOUTH+2:8" //borgs #define ui_monkey_head "CENTER-5:13,SOUTH:5" //monkey #define ui_monkey_mask "CENTER-4:14,SOUTH:5" //monkey diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index 54a81efddd..11517d79b8 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -88,6 +88,26 @@ var/mob/living/silicon/robot/R = usr R.toggle_ionpulse() +/obj/screen/robot/sensors + name = "Sensor Augmentation" + icon_state = "cyborg_sensor" + +/obj/screen/robot/sensors/Click() + if(..()) + return + var/mob/living/silicon/S = usr + S.toggle_sensors() + +/obj/screen/robot/language_menu + name = "silicon language selection" + icon_state = "talk_wheel" + +/obj/screen/robot/language_menu/Click() + if(..()) + return + var/mob/living/silicon/S = usr + S.open_language_menu(usr) + /datum/hud/robot ui_style = 'icons/mob/screen_cyborg.dmi' @@ -96,7 +116,7 @@ var/mob/living/silicon/robot/mymobR = mymob var/obj/screen/using - using = new/obj/screen/language_menu + using = new/obj/screen/robot/language_menu using.screen_loc = ui_borg_language_menu static_inventory += using @@ -133,7 +153,7 @@ static_inventory += using //Sec/Med HUDs - using = new /obj/screen/ai/sensors() + using = new /obj/screen/robot/sensors() using.screen_loc = ui_borg_sensor static_inventory += using diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index e47797f4d6..3a45e9bf60 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -47,7 +47,7 @@ if(do_mob(user, src, butchering.speed) && Adjacent(I)) butchering.Butcher(user, src) return 1 - else if(I.is_sharp() && !butchering) //give sharp objects butchering functionality, for consistency + else if(I.get_sharpness() && !butchering) //give sharp objects butchering functionality, for consistency I.AddComponent(/datum/component/butchering, 80 * I.toolspeed) attackby(I, user, params) //call the attackby again to refresh and do the butchering check again return @@ -82,7 +82,7 @@ log_combat(user, M, "attacked", src.name, "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])") add_fingerprint(user) - user.adjustStaminaLossBuffered(getweight())//CIT CHANGE - makes attacking things cause stamina loss + user.adjustStaminaLossBuffered(getweight()*0.8)//CIT CHANGE - makes attacking things cause stamina loss //the equivalent of the standard version of attack() but for object targets. /obj/item/proc/attack_obj(obj/O, mob/living/user) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index fb974c85bc..36b57a4b7c 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -66,6 +66,10 @@ /datum/config_entry/flag/disable_human_mood +/datum/config_entry/flag/disable_borg_flash_knockdown //Should borg flashes be capable of knocking humanoid entities down? + +/datum/config_entry/flag/weaken_secborg //Brings secborgs and k9s back in-line with the other borg modules + /datum/config_entry/flag/disable_secborg // disallow secborg module to be chosen. /datum/config_entry/flag/disable_peaceborg @@ -376,6 +380,22 @@ config_entry_value = 6 min_val = 1 +/datum/config_entry/number/dynamic_midround_delay_min + config_entry_value = 15 + min_val = 1 + +/datum/config_entry/number/dynamic_midround_delay_max + config_entry_value = 35 + min_val = 1 + +/datum/config_entry/number/dynamic_latejoin_delay_min + config_entry_value = 5 + min_val = 1 + +/datum/config_entry/number/dynamic_latejoin_delay_max + config_entry_value = 25 + min_val = 1 + /datum/config_entry/keyed_list/dynamic_cost key_mode = KEY_MODE_TEXT value_mode = VALUE_MODE_NUM diff --git a/code/controllers/subsystem/chat.dm b/code/controllers/subsystem/chat.dm index 37e53e8990..6ba6a7b177 100644 --- a/code/controllers/subsystem/chat.dm +++ b/code/controllers/subsystem/chat.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(chat) name = "Chat" - flags = SS_TICKER|SS_NO_INIT + flags = SS_TICKER wait = 1 priority = FIRE_PRIORITY_CHAT init_order = INIT_ORDER_CHAT diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index ea7e7ce812..efa6b8b59d 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -4,7 +4,7 @@ SUBSYSTEM_DEF(job) flags = SS_NO_FIRE var/list/occupations = list() //List of all jobs - var/list/name_occupations = list() //Dict of all jobs, keys are titles + var/list/datum/job/name_occupations = list() //Dict of all jobs, keys are titles var/list/type_occupations = list() //Dict of all jobs, keys are types var/list/unassigned = list() //Players who need jobs var/initial_players_to_assign = 0 //used for checking against population caps @@ -14,6 +14,8 @@ SUBSYSTEM_DEF(job) var/overflow_role = "Assistant" + var/list/level_order = list(JP_HIGH,JP_MEDIUM,JP_LOW) + /datum/controller/subsystem/job/Initialize(timeofday) SSmapping.HACK_LoadMapConfig() if(!occupations.len) @@ -119,7 +121,7 @@ SUBSYSTEM_DEF(job) if(player.mind && job.title in player.mind.restricted_roles) JobDebug("FOC incompatible with antagonist role, Player: [player]") continue - if(player.client.prefs.job_preferences["[job.title]"] == level) + if(player.client.prefs.job_preferences[job.title] == level) JobDebug("FOC pass, Player: [player], Level:[level]") candidates += player return candidates @@ -181,7 +183,7 @@ SUBSYSTEM_DEF(job) //it locates a head or runs out of levels to check //This is basically to ensure that there's atleast a few heads in the round /datum/controller/subsystem/job/proc/FillHeadPosition() - for(var/level = 1 to 3) + for(var/level in level_order) for(var/command_position in GLOB.command_positions) var/datum/job/job = GetJob(command_position) if(!job) @@ -218,7 +220,7 @@ SUBSYSTEM_DEF(job) if(!job) return 0 for(var/i = job.total_positions, i > 0, i--) - for(var/level = 1 to 3) + for(var/level in level_order) var/list/candidates = list() candidates = FindOccupationCandidates(job, level) if(candidates.len) @@ -304,8 +306,7 @@ SUBSYSTEM_DEF(job) // Loop through all levels from high to low var/list/shuffledoccupations = shuffle(occupations) - var/list/levels = list(JP_HIGH,JP_MEDIUM,JP_LOW) - for(var/level in levels) + for(var/level in level_order) //Check the head jobs first each level CheckHeadPositions(level) @@ -334,7 +335,7 @@ SUBSYSTEM_DEF(job) if(job.required_playtime_remaining(player.client)) JobDebug("DO player not enough xp, Player: [player], Job:[job.title]") continue - + if(!player.client.prefs.pref_species.qualifies_for_rank(job.title, player.client.prefs.features)) JobDebug("DO non-human failed, Player: [player], Job:[job.title]") continue @@ -344,7 +345,7 @@ SUBSYSTEM_DEF(job) continue // If the player wants that job on this level, then try give it to him. - if(player.client.prefs.job_preferences["[job.title]"] == level) + if(player.client.prefs.job_preferences[job.title] == level) // If the job isn't filled if((job.current_positions < job.spawn_positions) || job.spawn_positions == -1) JobDebug("DO pass, Player: [player], Level:[level], Job:[job.title]") @@ -475,7 +476,6 @@ SUBSYSTEM_DEF(job) to_chat(M, "[job.custom_spawn_text]") if(CONFIG_GET(number/minimal_access_threshold)) to_chat(M, "As this station was initially staffed with a [CONFIG_GET(flag/jobs_have_minimal_access) ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.") - if(job && H) if(job.dresscodecompliant)// CIT CHANGE - dress code compliance equip_loadout(N, H) // CIT CHANGE - allows players to spawn with loadout items @@ -551,7 +551,7 @@ SUBSYSTEM_DEF(job) if(job.required_playtime_remaining(player.client)) young++ continue - switch(player.client.prefs.job_preferences["[job.title]"]) + switch(player.client.prefs.job_preferences[job.title]) if(JP_HIGH) high++ if(JP_MEDIUM) @@ -698,4 +698,4 @@ SUBSYSTEM_DEF(job) . |= player.mind /datum/controller/subsystem/job/proc/JobDebug(message) - log_job_debug(message) + log_job_debug(message) \ No newline at end of file diff --git a/code/controllers/subsystem/jukeboxes.dm b/code/controllers/subsystem/jukeboxes.dm index d0001603a1..1532a3f41a 100644 --- a/code/controllers/subsystem/jukeboxes.dm +++ b/code/controllers/subsystem/jukeboxes.dm @@ -3,6 +3,7 @@ SUBSYSTEM_DEF(jukeboxes) wait = 5 var/list/songs = list() var/list/activejukeboxes = list() + var/list/freejukeboxchannels = list() /datum/track var/song_name = "generic" @@ -21,23 +22,39 @@ SUBSYSTEM_DEF(jukeboxes) /datum/controller/subsystem/jukeboxes/proc/addjukebox(obj/jukebox, datum/track/T, jukefalloff = 1) if(!istype(T)) CRASH("[src] tried to play a song with a nonexistant track") - var/channeltoreserve = CHANNEL_JUKEBOX_START + activejukeboxes.len - 1 - if(channeltoreserve > CHANNEL_JUKEBOX) + var/channeltoreserve = pick(freejukeboxchannels) + if(!channeltoreserve) return FALSE + freejukeboxchannels -= channeltoreserve + var/list/youvegotafreejukebox = list(T, channeltoreserve, jukebox, jukefalloff) activejukeboxes.len++ - activejukeboxes[activejukeboxes.len] = list(T, channeltoreserve, jukebox, jukefalloff) + activejukeboxes[activejukeboxes.len] = youvegotafreejukebox + + //Due to changes in later versions of 512, SOUND_UPDATE no longer properly plays audio when a file is defined in the sound datum. As such, we are now required to init the audio before we can actually do anything with it. + //Downsides to this? This means that you can *only* hear the jukebox audio if you were present on the server when it started playing, and it means that it's now impossible to add loops to the jukebox track list. + var/sound/song_to_init = sound(T.song_path) + song_to_init.status = SOUND_MUTE + for(var/mob/M in GLOB.player_list) + if(!M.client) + continue + if(!(M.client.prefs.toggles & SOUND_INSTRUMENTS)) + continue + + M.playsound_local(M, null, 100, channel = youvegotafreejukebox[2], S = song_to_init) return activejukeboxes.len /datum/controller/subsystem/jukeboxes/proc/removejukebox(IDtoremove) if(islist(activejukeboxes[IDtoremove])) + var/jukechannel = activejukeboxes[IDtoremove][2] for(var/mob/M in GLOB.player_list) if(!M.client) continue - M.stop_sound_channel(activejukeboxes[IDtoremove][2]) + M.stop_sound_channel(jukechannel) + freejukeboxchannels |= jukechannel activejukeboxes.Cut(IDtoremove, IDtoremove+1) return TRUE else - to_chat(world, "If you see this, screenshot it and send it to a dev. Tried to remove jukebox with invalid ID") + CRASH("Tried to remove jukebox with invalid ID") /datum/controller/subsystem/jukeboxes/proc/findjukeboxindex(obj/jukebox) if(activejukeboxes.len) @@ -57,6 +74,8 @@ SUBSYSTEM_DEF(jukeboxes) T.song_beat = text2num(L[3]) T.song_associated_id = L[4] songs |= T + for(var/i in CHANNEL_JUKEBOX_START to CHANNEL_JUKEBOX) + freejukeboxchannels |= i return ..() /datum/controller/subsystem/jukeboxes/fire() @@ -64,14 +83,15 @@ SUBSYSTEM_DEF(jukeboxes) return for(var/list/jukeinfo in activejukeboxes) if(!jukeinfo.len) - to_chat(world, "If you see this, screenshot it and send it to a dev. Active jukebox without any associated metadata") + EXCEPTION("Active jukebox without any associated metadata.") + continue var/datum/track/juketrack = jukeinfo[1] if(!istype(juketrack)) - to_chat(world, "If you see this, screenshot it and send it to a dev. After jukebox track grabbing") + EXCEPTION("Invalid jukebox track datum.") continue var/obj/jukebox = jukeinfo[3] if(!istype(jukebox)) - to_chat(world, "If you see this, screenshot it and send it to a dev. Nonexistant or invalid jukebox in active jukebox list") + EXCEPTION("Nonexistant or invalid object associated with jukebox.") continue var/sound/song_played = sound(juketrack.song_path) var/area/currentarea = get_area(jukebox) diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 345e3bb44c..dec6cf8466 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -54,6 +54,8 @@ SUBSYSTEM_DEF(mapping) if(!config || config.defaulted) to_chat(world, "Unable to load next or default map config, defaulting to Box Station") config = old_config + GLOB.year_integer += config.year_offset + GLOB.announcertype = (config.announcertype == "standard" ? (prob(1) ? "medibot" : "classic") : config.announcertype) loadWorld() repopulate_sorted_areas() process_teleport_locs() //Sets up the wizard teleport locations diff --git a/code/controllers/subsystem/npcpool.dm b/code/controllers/subsystem/npcpool.dm index d93f1f2407..830db298c9 100644 --- a/code/controllers/subsystem/npcpool.dm +++ b/code/controllers/subsystem/npcpool.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(npcpool) name = "NPC Pool" - flags = SS_POST_FIRE_TIMING|SS_NO_INIT|SS_BACKGROUND + flags = SS_KEEP_TIMING | SS_NO_INIT priority = FIRE_PRIORITY_NPC runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index 455b53b1df..1b7cade71f 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -1,4 +1,5 @@ #define FILE_ANTAG_REP "data/AntagReputation.json" +#define MAX_RECENT_MAP_RECORD 10 SUBSYSTEM_DEF(persistence) name = "Persistence" @@ -11,6 +12,7 @@ SUBSYSTEM_DEF(persistence) var/list/obj/structure/chisel_message/chisel_messages = list() var/list/saved_messages = list() var/list/saved_modes = list(1,2,3) + var/list/saved_maps var/list/saved_trophies = list() var/list/spawned_objects = list() var/list/antag_rep = list() @@ -25,6 +27,7 @@ SUBSYSTEM_DEF(persistence) LoadChiselMessages() LoadTrophies() LoadRecentModes() + LoadRecentMaps() LoadPhotoPersistence() if(CONFIG_GET(flag/use_antag_rep)) LoadAntagReputation() @@ -163,6 +166,15 @@ SUBSYSTEM_DEF(persistence) return saved_modes = json["data"] +/datum/controller/subsystem/persistence/proc/LoadRecentMaps() + var/json_file = file("data/RecentMaps.json") + if(!fexists(json_file)) + return + var/list/json = json_decode(file2text(json_file)) + if(!json) + return + saved_maps = json["maps"] + /datum/controller/subsystem/persistence/proc/LoadAntagReputation() var/json = file2text(FILE_ANTAG_REP) if(!json) @@ -204,6 +216,7 @@ SUBSYSTEM_DEF(persistence) CollectSecretSatchels() CollectTrophies() CollectRoundtype() + RecordMaps() SavePhotoPersistence() //THIS IS PERSISTENCE, NOT THE LOGGING PORTION. if(CONFIG_GET(flag/use_antag_rep)) CollectAntagReputation() @@ -359,6 +372,15 @@ SUBSYSTEM_DEF(persistence) fdel(json_file) WRITE_FILE(json_file, json_encode(file_data)) +/datum/controller/subsystem/persistence/proc/RecordMaps() + saved_maps = saved_maps?.len ? list("[SSmapping.config.map_name]") | saved_maps : list("[SSmapping.config.map_name]") + var/json_file = file("data/RecentMaps.json") + var/list/file_data = list() + file_data["maps"] = saved_maps + fdel(json_file) + WRITE_FILE(json_file, json_encode(file_data)) + + /datum/controller/subsystem/persistence/proc/CollectAntagReputation() var/ANTAG_REP_MAXIMUM = CONFIG_GET(number/antag_rep_maximum) diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 08f657a1b9..51a2761f74 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -37,6 +37,7 @@ SUBSYSTEM_DEF(shuttle) var/points = 5000 //number of trade-points we have var/centcom_message = "" //Remarks from CentCom on how well you checked the last order. var/list/discoveredPlants = list() //Typepaths for unusual plants we've already sent CentCom, associated with their potencies + var/passive_supply_points_per_minute = 750 var/list/supply_packs = list() var/list/shoppinglist = list() @@ -111,6 +112,12 @@ SUBSYSTEM_DEF(shuttle) qdel(T, force=TRUE) CheckAutoEvac() + //Cargo stuff start + var/fire_time_diff = max(0, world.time - last_fire) //Don't want this to be below 0, seriously. + var/point_gain = (fire_time_diff / 600) * passive_supply_points_per_minute + points += point_gain + //Cargo stuff end + if(!SSmapping.clearing_reserved_turfs) while(transit_requesters.len) var/requester = popleft(transit_requesters) @@ -373,7 +380,7 @@ SUBSYSTEM_DEF(shuttle) emergency.setTimer(emergencyDockTime) priority_announce("Hostile environment resolved. \ You have 3 minutes to board the Emergency Shuttle.", - null, 'sound/ai/shuttledock.ogg', "Priority") + null, "shuttledock", "Priority") //try to move/request to dockHome if possible, otherwise dockAway. Mainly used for admin buttons /datum/controller/subsystem/shuttle/proc/toggleShuttle(shuttleId, dockHome, dockAway, timed) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 14e1e86f7d..2ab06f4d59 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -303,7 +303,7 @@ SUBSYSTEM_DEF(ticker) SSdbcore.SetRoundStart() to_chat(world, "Welcome to [station_name()], enjoy your stay!") - SEND_SOUND(world, sound('sound/ai/welcome.ogg')) + SEND_SOUND(world, sound(get_announcer_sound("welcome"))) current_state = GAME_STATE_PLAYING Master.SetRunLevel(RUNLEVEL_GAME) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 2f56c69384..e29382377f 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -208,9 +208,19 @@ SUBSYSTEM_DEF(vote) if("gamemode") choices.Add(config.votable_modes) if("map") - choices.Add(config.maplist) - for(var/i in choices)//this is necessary because otherwise we'll end up with a bunch of /datum/map_config's as the default vote value instead of 0 as intended - choices[i] = 0 + var/players = GLOB.clients.len + var/list/lastmaps = SSpersistence.saved_maps?.len ? list("[SSmapping.config.map_name]") | SSpersistence.saved_maps : list("[SSmapping.config.map_name]") + for(var/M in config.maplist) //This is a typeless loop due to the finnicky nature of keyed lists in this kind of context + var/datum/map_config/targetmap = config.maplist[M] + if(!istype(targetmap)) + continue + if(!targetmap.voteweight) + continue + if((targetmap.config_min_users && players < targetmap.config_min_users) || (targetmap.config_max_users && players > targetmap.config_max_users)) + continue + if(targetmap.max_round_search_span && count_occurences_of_value(lastmaps, M, targetmap.max_round_search_span) >= targetmap.max_rounds_played) + continue + choices |= M if("roundtype") //CIT CHANGE - adds the roundstart secret/extended vote choices.Add("secret", "extended") if("custom") diff --git a/code/datums/action.dm b/code/datums/action.dm index fd33ef79b5..77aa729eb1 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -245,6 +245,14 @@ /datum/action/item_action/toggle_helmet_light name = "Toggle Helmet Light" +/datum/action/item_action/toggle_welding_screen + name = "Toggle Welding Screen" + +/datum/action/item_action/toggle_welding_screen/Trigger() + var/obj/item/clothing/head/hardhat/weldhat/H = target + if(istype(H)) + H.toggle_welding_screen(owner) + /datum/action/item_action/toggle_headphones name = "Toggle Headphones" desc = "UNTZ UNTZ UNTZ" diff --git a/code/datums/components/anti_magic.dm b/code/datums/components/anti_magic.dm index df03918c5d..6f289af1fc 100644 --- a/code/datums/components/anti_magic.dm +++ b/code/datums/components/anti_magic.dm @@ -1,26 +1,48 @@ /datum/component/anti_magic var/magic = FALSE var/holy = FALSE + var/psychic = FALSE + var/allowed_slots = ~ITEM_SLOT_BACKPACK + var/charges = INFINITY + var/blocks_self = TRUE + var/datum/callback/reaction + var/datum/callback/expire -/datum/component/anti_magic/Initialize(_magic = FALSE, _holy = FALSE) +/datum/component/anti_magic/Initialize(_magic = FALSE, _holy = FALSE, _psychic = FALSE, _allowed_slots, _charges, _blocks_self = TRUE, datum/callback/_reaction, datum/callback/_expire) if(isitem(parent)) RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip) RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop) else if(ismob(parent)) - RegisterSignal(parent, COMSIG_MOB_RECEIVE_MAGIC, .proc/can_protect) + RegisterSignal(parent, COMSIG_MOB_RECEIVE_MAGIC, .proc/protect) else return COMPONENT_INCOMPATIBLE magic = _magic holy = _holy + psychic = _psychic + if(_allowed_slots) + allowed_slots = _allowed_slots + if(!isnull(_charges)) + charges = _charges + blocks_self = _blocks_self + reaction = _reaction + expire = _expire /datum/component/anti_magic/proc/on_equip(datum/source, mob/equipper, slot) - RegisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC, .proc/can_protect, TRUE) + if(!CHECK_BITFIELD(allowed_slots, slotdefine2slotbit(slot))) //Check that the slot is valid for antimagic + UnregisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC) + return + RegisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC, .proc/protect, TRUE) /datum/component/anti_magic/proc/on_drop(datum/source, mob/user) UnregisterSignal(user, COMSIG_MOB_RECEIVE_MAGIC) -/datum/component/anti_magic/proc/can_protect(datum/source, _magic, _holy, list/protection_sources) - if((_magic && magic) || (_holy && holy)) +/datum/component/anti_magic/proc/protect(datum/source, mob/user, _magic, _holy, _psychic, chargecost = 1, self, list/protection_sources) + if(((_magic && magic) || (_holy && holy) || (_psychic && psychic)) && (!self || blocks_self)) protection_sources += parent + reaction?.Invoke(user, chargecost) + charges -= chargecost + if(charges <= 0) + expire?.Invoke(user) + qdel(src) return COMPONENT_BLOCK_MAGIC diff --git a/code/datums/components/bane.dm b/code/datums/components/bane.dm new file mode 100644 index 0000000000..84f8010270 --- /dev/null +++ b/code/datums/components/bane.dm @@ -0,0 +1,45 @@ +/datum/component/bane + dupe_mode = COMPONENT_DUPE_ALLOWED + + var/mobtype + var/speciestype + var/damage_multiplier + +/datum/component/bane/Initialize(mobtype, damage_multiplier=1) + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + + if(ispath(mobtype, /mob/living)) + src.mobtype = mobtype + else if(ispath(mobtype, /datum/species)) + speciestype = mobtype + else + return COMPONENT_INCOMPATIBLE + + src.damage_multiplier = damage_multiplier + +/datum/component/bane/RegisterWithParent() + if(speciestype) + RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/speciesCheck) + else + RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/mobCheck) + +/datum/component/bane/UnregisterFromParent() + UnregisterSignal(parent, COMSIG_ITEM_AFTERATTACK) + +/datum/component/bane/proc/speciesCheck(obj/item/source, atom/target, mob/user, proximity_flag, click_parameters) + if(!is_species(target, speciestype)) + return + activate(source, target, user) + +/datum/component/bane/proc/mobCheck(obj/item/source, atom/target, mob/user, proximity_flag, click_parameters) + if(!istype(target, mobtype)) + return + activate(source, target, user) + +/datum/component/bane/proc/activate(obj/item/source, mob/living/target, mob/attacker) + if(attacker.a_intent != INTENT_HARM) + return + + var/extra_damage = max(0, source.force * damage_multiplier) + target.apply_damage(extra_damage, source.damtype, attacker.zone_selected) diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm index 013334bc27..bc185994f6 100644 --- a/code/datums/components/chasm.dm +++ b/code/datums/components/chasm.dm @@ -65,7 +65,7 @@ return FALSE if(!isliving(AM) && !isobj(AM)) return FALSE - if(is_type_in_typecache(AM, forbidden_types) || AM.throwing || AM.floating) + if(is_type_in_typecache(AM, forbidden_types) || AM.throwing || (AM.movement_type & FLOATING)) return FALSE //Flies right over the chasm if(ismob(AM)) diff --git a/code/datums/components/fantasy/_fantasy.dm b/code/datums/components/fantasy/_fantasy.dm new file mode 100644 index 0000000000..86e016784a --- /dev/null +++ b/code/datums/components/fantasy/_fantasy.dm @@ -0,0 +1,140 @@ +/datum/component/fantasy + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + + var/quality + + var/canFail + var/announce + + var/originalName + var/list/affixes + var/list/appliedComponents + + var/static/list/affixListing + +/datum/component/fantasy/Initialize(quality, list/affixes = list(), canFail=FALSE, announce=FALSE) + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + + src.quality = quality || randomQuality() + src.canFail = canFail + src.announce = announce + + src.affixes = affixes + appliedComponents = list() + randomAffixes() + +/datum/component/fantasy/Destroy() + unmodify() + affixes = null + return ..() + +/datum/component/fantasy/RegisterWithParent() + var/obj/item/master = parent + originalName = master.name + modify() + +/datum/component/fantasy/UnregisterFromParent() + unmodify() + +/datum/component/fantasy/InheritComponent(datum/component/fantasy/newComp, original, list/arguments) + unmodify() + if(newComp) + quality += newComp.quality + canFail = newComp.canFail + announce = newComp.announce + else + arguments.len = 5 // This is done to replicate what happens when an arglist smaller than the necessary arguments is given + quality += arguments[1] + canFail = arguments[4] || canFail + announce = arguments[5] || announce + modify() + +/datum/component/fantasy/proc/randomQuality() + var/quality = pick(1;15, 2;14, 2;13, 2;12, 3;11, 3;10, 3;9, 4;8, 4;7, 4;6, 5;5, 5;4, 5;3, 6;2, 6;1, 6;0) + if(prob(50)) + quality = -quality + return quality + +/datum/component/fantasy/proc/randomAffixes(force) + if(!affixListing) + affixListing = list() + for(var/T in subtypesof(/datum/fantasy_affix)) + var/datum/fantasy_affix/affix = new T + affixListing[affix] = affix.weight + + if(length(affixes)) + if(!force) + return + affixes = list() + + var/alignment + if(quality >= 0) + alignment |= AFFIX_GOOD + if(quality <= 0) + alignment |= AFFIX_EVIL + + var/usedSlots = NONE + for(var/i in 1 to max(1, abs(quality))) // We want at least 1 affix applied + var/datum/fantasy_affix/affix = pickweight(affixListing) + if(affix.placement & usedSlots) + continue + if(!(affix.alignment & alignment)) + continue + if(!affix.validate(src)) + continue + affixes += affix + usedSlots |= affix.placement + +/datum/component/fantasy/proc/modify() + var/obj/item/master = parent + + master.force = max(0, master.force + quality) + master.throwforce = max(0, master.throwforce + quality) + master.armor = master.armor?.modifyAllRatings(quality) + + var/newName = originalName + for(var/i in affixes) + var/datum/fantasy_affix/affix = i + newName = affix.apply(src, newName) + + if(quality != 0) + newName = "[newName] [quality > 0 ? "+" : ""][quality]" + + if(canFail && prob((quality - 9)*10)) + var/turf/place = get_turf(parent) + place.visible_message("[parent] violently glows blue for a while, then evaporates.") + master.burn() + return + else if(announce) + announce() + + master.name = newName + +/datum/component/fantasy/proc/unmodify() + var/obj/item/master = parent + + for(var/i in affixes) + var/datum/fantasy_affix/affix = i + affix.remove(src) + for(var/i in appliedComponents) + qdel(i) + + master.force = max(0, master.force - quality) + master.throwforce = max(0, master.throwforce - quality) + master.armor = master.armor?.modifyAllRatings(-quality) + + master.name = originalName + +/datum/component/fantasy/proc/announce() + var/turf/location = get_turf(parent) + var/span + var/effect_description + if(quality >= 0) + span = "" + effect_description = "shimmering golden glow" + else + span = "" + effect_description = "mottled black glow" + + location.visible_message("[span][originalName] is covered by a [effect_description] and then transforms into [parent]!") diff --git a/code/datums/components/fantasy/affix.dm b/code/datums/components/fantasy/affix.dm new file mode 100644 index 0000000000..ad1f44ce4d --- /dev/null +++ b/code/datums/components/fantasy/affix.dm @@ -0,0 +1,13 @@ +/datum/fantasy_affix + var/placement // A bitflag of "slots" this affix takes up, for example pre/suffix + var/alignment + var/weight = 10 + +// For those occasional affixes which only make sense in certain circumstances +/datum/fantasy_affix/proc/validate(datum/component/fantasy/comp) + return TRUE + +/datum/fantasy_affix/proc/apply(datum/component/fantasy/comp, newName) + return newName + +/datum/fantasy_affix/proc/remove(datum/component/fantasy/comp) diff --git a/code/datums/components/fantasy/prefixes.dm b/code/datums/components/fantasy/prefixes.dm new file mode 100644 index 0000000000..702ec9329a --- /dev/null +++ b/code/datums/components/fantasy/prefixes.dm @@ -0,0 +1,68 @@ +/datum/fantasy_affix/cosmetic_prefixes + placement = AFFIX_PREFIX + alignment = AFFIX_GOOD | AFFIX_EVIL + + var/list/goodPrefixes + var/list/badPrefixes + +/datum/fantasy_affix/cosmetic_prefixes/New() + goodPrefixes = list( + "greater", + "major", + "blessed", + "superior", + "empowered", + "honed", + "true", + "glorious", + "robust", + ) + badPrefixes = list( + "lesser", + "minor", + "blighted", + "inferior", + "enfeebled", + "rusted", + "unsteady", + "tragic", + "gimped", + "cursed", + ) + + weight = (length(goodPrefixes) + length(badPrefixes)) * 10 + +/datum/fantasy_affix/cosmetic_prefixes/apply(datum/component/fantasy/comp, newName) + if(comp.quality > 0 || (comp.quality == 0 && prob(50))) + return "[pick(goodPrefixes)] [newName]" + else + return "[pick(badPrefixes)] [newName]" + +/datum/fantasy_affix/tactical + placement = AFFIX_PREFIX + alignment = AFFIX_GOOD + weight = 1 // Very powerful, no one should have such power + +/datum/fantasy_affix/tactical/apply(datum/component/fantasy/comp, newName) + var/obj/item/master = comp.parent + comp.appliedComponents += master.AddComponent(/datum/component/tactical) + return "tactical [newName]" + +/datum/fantasy_affix/pyromantic + placement = AFFIX_PREFIX + alignment = AFFIX_GOOD + +/datum/fantasy_affix/pyromantic/apply(datum/component/fantasy/comp, newName) + var/obj/item/master = comp.parent + comp.appliedComponents += master.AddComponent(/datum/component/igniter, CLAMP(comp.quality, 1, 10)) + return "pyromantic [newName]" + +/datum/fantasy_affix/vampiric + placement = AFFIX_PREFIX + alignment = AFFIX_GOOD + weight = 5 + +/datum/fantasy_affix/vampiric/apply(datum/component/fantasy/comp, newName) + var/obj/item/master = comp.parent + comp.appliedComponents += master.AddComponent(/datum/component/lifesteal, comp.quality) + return "vampiric [newName]" \ No newline at end of file diff --git a/code/datums/components/fantasy/suffixes.dm b/code/datums/components/fantasy/suffixes.dm new file mode 100644 index 0000000000..f32ca50595 --- /dev/null +++ b/code/datums/components/fantasy/suffixes.dm @@ -0,0 +1,170 @@ +/datum/fantasy_affix/cosmetic_suffixes + placement = AFFIX_SUFFIX + alignment = AFFIX_GOOD | AFFIX_EVIL + + var/list/goodSuffixes + var/list/badSuffixes + +/datum/fantasy_affix/cosmetic_suffixes/New() + goodSuffixes = list( + "dexterity", + "constitution", + "intelligence", + "wisdom", + "charisma", + "the forest", + "the hills", + "the plains", + "the sea", + "the sun", + "the moon", + "the void", + "the world", + "many secrets", + "many tales", + "many colors", + "rending", + "sundering", + "the night", + "the day", + ) + badSuffixes = list( + "draining", + "burden", + "discomfort", + "awkwardness", + "poor hygiene", + "timidity", + ) + + weight = (length(goodSuffixes) + length(badSuffixes)) * 10 + +/datum/fantasy_affix/cosmetic_suffixes/apply(datum/component/fantasy/comp, newName) + if(comp.quality > 0 || (comp.quality == 0 && prob(50))) + return "[newName] of [pick(goodSuffixes)]" + else + return "[newName] of [pick(badSuffixes)]" + +//////////// Good suffixes +/datum/fantasy_affix/bane + placement = AFFIX_SUFFIX + alignment = AFFIX_GOOD + weight = 20 + +/datum/fantasy_affix/bane/apply(datum/component/fantasy/comp, newName) + . = ..() + // This is set up to be easy to add to these lists as I expect it will need modifications + var/static/list/possible_mobtypes + if(!possible_mobtypes) + // The base list of allowed mob/species types + possible_mobtypes = typecacheof(list( + /mob/living/simple_animal, + /mob/living/carbon, + /datum/species, + )) + // Some particular types to disallow if they're too broad/abstract + possible_mobtypes -= list( + /mob/living/simple_animal/hostile, + ) + // Some types to remove them and their subtypes + possible_mobtypes -= typecacheof(list( + /mob/living/carbon/human/species, + )) + + var/mob/picked_mobtype = pick(possible_mobtypes) + // This works even with the species picks since we're only accessing the name + + var/obj/item/master = comp.parent + comp.appliedComponents += master.AddComponent(/datum/component/bane, picked_mobtype) + return "[newName] of [initial(picked_mobtype.name)] slaying" + +/datum/fantasy_affix/summoning + placement = AFFIX_SUFFIX + alignment = AFFIX_GOOD + weight = 5 + +/datum/fantasy_affix/summoning/apply(datum/component/fantasy/comp, newName) + . = ..() + // This is set up to be easy to add to these lists as I expect it will need modifications + var/static/list/possible_mobtypes + if(!possible_mobtypes) + // The base list of allowed mob/species types + possible_mobtypes = typecacheof(list( + /mob/living/simple_animal, + /mob/living/carbon, + /datum/species, + )) + // Some particular types to disallow if they're too broad/abstract + possible_mobtypes -= list( + /mob/living/simple_animal/hostile, + ) + // Some types to remove them and their subtypes + possible_mobtypes -= typecacheof(list( + /mob/living/carbon/human/species, + /mob/living/simple_animal/hostile/megafauna, + )) + + var/mob/picked_mobtype = pick(possible_mobtypes) + // This works even with the species picks since we're only accessing the name + + var/obj/item/master = comp.parent + var/max_mobs = max(CEILING(comp.quality/2, 1), 1) + var/spawn_delay = 300 - 30 * comp.quality + comp.appliedComponents += master.AddComponent(/datum/component/summoning, list(picked_mobtype), 100, max_mobs, spawn_delay) + return "[newName] of [initial(picked_mobtype.name)] summoning" + +/datum/fantasy_affix/shrapnel + placement = AFFIX_SUFFIX + alignment = AFFIX_GOOD + +/datum/fantasy_affix/shrapnel/validate(datum/component/fantasy/comp) + if(isgun(comp.parent)) + return TRUE + return FALSE + +/datum/fantasy_affix/shrapnel/apply(datum/component/fantasy/comp, newName) + . = ..() + // higher means more likely + var/list/weighted_projectile_types = list(/obj/item/projectile/meteor = 1, + /obj/item/projectile/energy/nuclear_particle = 1, + /obj/item/projectile/beam/pulse = 1, + /obj/item/projectile/bullet/honker = 15, + /obj/item/projectile/temp = 15, + /obj/item/projectile/ion = 15, + /obj/item/projectile/magic/door = 15, + /obj/item/projectile/magic/locker = 15, +// /obj/item/projectile/magic/fetch = 15, + /obj/item/projectile/beam/emitter = 15, +// /obj/item/projectile/magic/flying = 15, + /obj/item/projectile/energy/net = 15, + /obj/item/projectile/bullet/incendiary/c9mm = 15, + /obj/item/projectile/temp/hot = 15, + /obj/item/projectile/beam/disabler = 15) + + var/obj/item/projectile/picked_projectiletype = pickweight(weighted_projectile_types) + + var/obj/item/master = comp.parent + comp.appliedComponents += master.AddComponent(/datum/component/shrapnel, picked_projectiletype) + return "[newName] of [initial(picked_projectiletype.name)] shrapnel" + +/datum/fantasy_affix/strength + placement = AFFIX_SUFFIX + alignment = AFFIX_GOOD + +/datum/fantasy_affix/strength/apply(datum/component/fantasy/comp, newName) + . = ..() + var/obj/item/master = comp.parent + comp.appliedComponents += master.AddComponent(/datum/component/knockback, CEILING(comp.quality/2, 1), FLOOR(comp.quality/10, 1)) + return "[newName] of strength" + +//////////// Bad suffixes + +/datum/fantasy_affix/fool + placement = AFFIX_SUFFIX + alignment = AFFIX_EVIL + +/datum/fantasy_affix/fool/apply(datum/component/fantasy/comp, newName) + . = ..() + var/obj/item/master = comp.parent + comp.appliedComponents += master.AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 50) + return "[newName] of the fool" diff --git a/code/datums/components/igniter.dm b/code/datums/components/igniter.dm new file mode 100644 index 0000000000..b40383e828 --- /dev/null +++ b/code/datums/components/igniter.dm @@ -0,0 +1,37 @@ + +/datum/component/igniter + var/fire_stacks + +/datum/component/igniter/Initialize(fire_stacks=1) + if(!isitem(parent) && !ishostile(parent) && !isgun(parent) && !ismachinery(parent) && !isstructure(parent)) + return COMPONENT_INCOMPATIBLE + + src.fire_stacks = fire_stacks + +/datum/component/igniter/RegisterWithParent() + if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc + RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) + else if(isitem(parent)) + RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack) + else if(ishostile(parent)) + RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget) + +/datum/component/igniter/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT)) + +/datum/component/igniter/proc/item_afterattack(obj/item/source, atom/target, mob/user, proximity_flag, click_parameters) + if(!proximity_flag) + return + do_igniter(target) + +/datum/component/igniter/proc/hostile_attackingtarget(mob/living/simple_animal/hostile/attacker, atom/target) + do_igniter(target) + +/datum/component/igniter/proc/projectile_hit(atom/fired_from, atom/movable/firer, atom/target, Angle) + do_igniter(target) + +/datum/component/igniter/proc/do_igniter(atom/target) + if(isliving(target)) + var/mob/living/L = target + L.adjust_fire_stacks(fire_stacks) + L.IgniteMob() \ No newline at end of file diff --git a/code/datums/components/jousting.dm b/code/datums/components/jousting.dm index d1d0d6d504..08f3c1d643 100644 --- a/code/datums/components/jousting.dm +++ b/code/datums/components/jousting.dm @@ -45,7 +45,7 @@ var/knockdown_chance = (target_buckled? mounted_knockdown_chance_per_tile : unmounted_knockdown_chance_per_tile) * current var/knockdown_time = (target_buckled? mounted_knockdown_time : unmounted_knockdown_time) var/damage = (target_buckled? mounted_damage_boost_per_tile : unmounted_damage_boost_per_tile) * current - var/sharp = I.is_sharp() + var/sharp = I.get_sharpness() var/msg if(damage) msg += "[user] [sharp? "impales" : "slams into"] [target] [sharp? "on" : "with"] their [parent]" diff --git a/code/datums/components/knockback.dm b/code/datums/components/knockback.dm new file mode 100644 index 0000000000..b4fcaa2dd8 --- /dev/null +++ b/code/datums/components/knockback.dm @@ -0,0 +1,44 @@ +/datum/component/knockback + var/throw_distance + var/throw_anchored + +/datum/component/knockback/Initialize(throw_distance=1) + if(!isitem(parent) && !ishostile(parent) && !isgun(parent) && !ismachinery(parent) && !isstructure(parent)) + return COMPONENT_INCOMPATIBLE + + src.throw_distance = throw_distance + src.throw_anchored = throw_anchored + +/datum/component/knockback/RegisterWithParent() + if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc + RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) + else if(isitem(parent)) + RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack) + else if(ishostile(parent)) + RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget) + +/datum/component/knockback/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT)) + +/datum/component/knockback/proc/item_afterattack(obj/item/source, atom/target, mob/user, proximity_flag, click_parameters) + if(!proximity_flag) + return + do_knockback(target, user, get_dir(source, target)) + +/datum/component/knockback/proc/hostile_attackingtarget(mob/living/simple_animal/hostile/attacker, atom/target) + do_knockback(target, attacker, get_dir(attacker, target)) + +/datum/component/knockback/proc/projectile_hit(atom/fired_from, atom/movable/firer, atom/target, Angle) + do_knockback(target, null, angle2dir(Angle)) + +/datum/component/knockback/proc/do_knockback(atom/target, mob/thrower, throw_dir) + if(!ismovableatom(target) || throw_dir == null) + return + var/atom/movable/throwee = target + if(throwee.anchored && !throw_anchored) + return + if(throw_distance < 0) + throw_dir = turn(throw_dir, 180) + throw_distance *= -1 + var/atom/throw_target = get_edge_target_turf(throwee, throw_dir) + throwee.safe_throw_at(throw_target, throw_distance, 1, thrower) diff --git a/code/datums/components/lifesteal.dm b/code/datums/components/lifesteal.dm new file mode 100644 index 0000000000..c7a78e10a3 --- /dev/null +++ b/code/datums/components/lifesteal.dm @@ -0,0 +1,39 @@ + +/datum/component/lifesteal + var/flat_heal // heals a constant amount every time a hit occurs + var/static/list/damage_heal_order = list(BRUTE, BURN, OXY) + +/datum/component/lifesteal/Initialize(flat_heal=0) + if(!isitem(parent) && !ishostile(parent) && !isgun(parent)) + return COMPONENT_INCOMPATIBLE + + src.flat_heal = flat_heal + +/datum/component/lifesteal/RegisterWithParent() + if(isgun(parent)) + RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) + else if(isitem(parent)) + RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack) + else if(ishostile(parent)) + RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget) + +/datum/component/lifesteal/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT)) + +/datum/component/lifesteal/proc/item_afterattack(obj/item/source, atom/target, mob/user, proximity_flag, click_parameters) + if(!proximity_flag) + return + do_lifesteal(user, target) + +/datum/component/lifesteal/proc/hostile_attackingtarget(mob/living/simple_animal/hostile/attacker, atom/target) + do_lifesteal(attacker, target) + +/datum/component/lifesteal/proc/projectile_hit(atom/fired_from, atom/movable/firer, atom/target, Angle) + do_lifesteal(firer, target) + +/datum/component/lifesteal/proc/do_lifesteal(atom/heal_target, atom/damage_target) + if(isliving(heal_target) && isliving(damage_target)) + var/mob/living/healing = heal_target + var/mob/living/damaging = damage_target + if(damaging.stat != DEAD) + healing.heal_ordered_damage(flat_heal, damage_heal_order) diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index 05d8ce6989..8c6013aeab 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -10,7 +10,6 @@ var/mood_modifier = 1 //Modifier to allow certain mobs to be less affected by moodlets var/datum/mood_event/list/mood_events = list() var/insanity_effect = 0 //is the owner being punished for low mood? If so, how much? - var/holdmyinsanityeffect = 0 //before we edit our sanity lets take a look var/obj/screen/mood/screen_obj /datum/component/mood/Initialize() @@ -21,8 +20,7 @@ RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT, .proc/add_event) RegisterSignal(parent, COMSIG_CLEAR_MOOD_EVENT, .proc/clear_event) - RegisterSignal(parent, COMSIG_INCREASE_SANITY, .proc/IncreaseSanity) - RegisterSignal(parent, COMSIG_DECREASE_SANITY, .proc/DecreaseSanity) + RegisterSignal(parent, COMSIG_MODIFY_SANITY, .proc/modify_sanity) RegisterSignal(parent, COMSIG_MOB_HUD_CREATED, .proc/modify_hud) var/mob/living/owner = parent @@ -131,31 +129,23 @@ switch(mood_level) if(1) - DecreaseSanity(src, 0.2) + setSanity(sanity-0.2) if(2) - DecreaseSanity(src, 0.125, SANITY_CRAZY) + setSanity(sanity-0.125, minimum=SANITY_CRAZY) if(3) - DecreaseSanity(src, 0.075, SANITY_UNSTABLE) + setSanity(sanity-0.075, minimum=SANITY_UNSTABLE) if(4) - DecreaseSanity(src, 0.025, SANITY_DISTURBED) + setSanity(sanity-0.025, minimum=SANITY_DISTURBED) if(5) - IncreaseSanity(src, 0.1) + setSanity(sanity+0.1) if(6) - IncreaseSanity(src, 0.15) + setSanity(sanity+0.15) if(7) - IncreaseSanity(src, 0.20) + setSanity(sanity+0.20) if(8) - IncreaseSanity(src, 0.25, SANITY_GREAT) + setSanity(sanity+0.25, maximum=SANITY_GREAT) if(9) - IncreaseSanity(src, 0.4, SANITY_GREAT) - -/* - if(insanity_effect != holdmyinsanityeffect) - if(insanity_effect > holdmyinsanityeffect) - owner.crit_threshold += (insanity_effect - holdmyinsanityeffect) - else - owner.crit_threshold -= (holdmyinsanityeffect - insanity_effect) -*/ + setSanity(sanity+0.4, maximum=SANITY_GREAT) if(HAS_TRAIT(owner, TRAIT_DEPRESSION)) if(prob(0.05)) @@ -166,8 +156,6 @@ add_event(null, "jolly", /datum/mood_event/jolly) clear_event(null, "depression") - holdmyinsanityeffect = insanity_effect - HandleNutrition(owner) /datum/component/mood/proc/setSanity(amount, minimum=SANITY_INSANE, maximum=SANITY_NEUTRAL)//I'm sure bunging this in here will have no negative repercussions. @@ -189,7 +177,7 @@ sanity = amount switch(sanity) - if(SANITY_INSANE to SANITY_CRAZY) + if(-INFINITY to SANITY_CRAZY) setInsanityEffect(MAJOR_INSANITY_PEN) master.add_movespeed_modifier(MOVESPEED_ID_SANITY, TRUE, 100, override=TRUE, multiplicative_slowdown=1.5) //Did we change something ? movetypes is runtiming, movetypes=(~FLYING)) sanity_level = 6 @@ -222,31 +210,8 @@ //master.crit_threshold = (master.crit_threshold - insanity_effect) + newval insanity_effect = newval -/datum/component/mood/proc/DecreaseSanity(datum/source, amount, minimum = SANITY_INSANE) - if(sanity < minimum) //This might make KevinZ stop fucking pinging me. - IncreaseSanity(src, 0.5) - else - sanity = max(minimum, sanity - amount) - if(sanity < SANITY_UNSTABLE) - if(sanity < SANITY_CRAZY) - insanity_effect = (MAJOR_INSANITY_PEN) - else - insanity_effect = (MINOR_INSANITY_PEN) - -/datum/component/mood/proc/IncreaseSanity(datum/source, amount, maximum = SANITY_NEUTRAL) - // Disturbed stops you from getting any more sane - I'm just gonna bung this in here - var/mob/living/owner = parent - if(HAS_TRAIT(owner, TRAIT_UNSTABLE)) - return - if(sanity > maximum) - DecreaseSanity(src, 0.5) //Removes some sanity to go back to our current limit. - else - sanity = min(maximum, sanity + amount) - if(sanity > SANITY_CRAZY) - if(sanity > SANITY_UNSTABLE) - insanity_effect = 0 - else - insanity_effect = MINOR_INSANITY_PEN +/datum/component/mood/proc/modify_sanity(datum/source, amount, minimum = -INFINITY, maximum = INFINITY) + setSanity(sanity + amount, minimum, maximum) /datum/component/mood/proc/add_event(datum/source, category, type, param) //Category will override any events in the same category, should be unique unless the event is based on the same thing like hunger. var/datum/mood_event/the_event diff --git a/code/datums/components/phantomthief.dm b/code/datums/components/phantomthief.dm index ff1c48936f..7afe64994f 100644 --- a/code/datums/components/phantomthief.dm +++ b/code/datums/components/phantomthief.dm @@ -7,33 +7,24 @@ var/filter_x var/filter_y var/filter_size - var/filter_border var/filter_color -/datum/component/wearertargeting/phantomthief/Initialize(_x = -2, _y = 0, _size = 0, _border = 0, _color = "#E62111", list/_valid_slots = list(SLOT_GLASSES)) +/datum/component/wearertargeting/phantomthief/Initialize(_x = -2, _y = 0, _size = 0, _color = "#E62111", list/_valid_slots = list(SLOT_GLASSES)) . = ..() if(. == COMPONENT_INCOMPATIBLE) return filter_x = _x filter_y = _y filter_size = _size - filter_border = _border filter_color = _color valid_slots = _valid_slots /datum/component/wearertargeting/phantomthief/proc/handlefilterstuff(datum/source, mob/user, combatmodestate) - if(istype(user)) - var/thefilter = filter(type = "drop_shadow", x = filter_x, y = filter_y, size = filter_size, border = filter_border, color = filter_color) - if(!combatmodestate) - user.filters -= thefilter - else - user.filters += thefilter - -/datum/component/wearertargeting/phantomthief/proc/stripdesiredfilter(mob/user) - if(istype(user)) - var/thefilter = filter(type = "drop_shadow", x = filter_x, y = filter_y, size = filter_size, border = filter_border, color = filter_color) - user.filters -= thefilter + if(!combatmodestate) + user.remove_filter("phantomthief") + else + user.add_filter("phantomthief", 4, list(type = "drop_shadow", x = filter_x, y = filter_y, size = filter_size, color = filter_color)) /datum/component/wearertargeting/phantomthief/on_drop(datum/source, mob/user) . = ..() - stripdesiredfilter(user) + user.remove_filter("phantomthief") diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm index 0af90f694c..dcdbd5ca4b 100644 --- a/code/datums/components/riding.dm +++ b/code/datums/components/riding.dm @@ -18,6 +18,7 @@ var/ride_check_rider_incapacitated = FALSE var/ride_check_rider_restrained = FALSE var/ride_check_ridden_incapacitated = FALSE + var/list/offhands = list() // keyed list containing all the current riding offsets associated by mob /datum/component/riding/Initialize() if(!ismovableatom(parent)) @@ -299,36 +300,34 @@ M.throw_at(target, 14, 5, AM) M.Knockdown(60) -/datum/component/riding/proc/equip_buckle_inhands(mob/living/carbon/human/user, amount_required = 1, riding_target_override = null) - var/atom/movable/AM = parent - var/amount_equipped = 0 +/datum/component/riding/proc/equip_buckle_inhands(mob/living/carbon/human/user, amount_required = 1, mob/living/riding_target_override) + var/list/equipped + var/mob/living/L = riding_target_override ? riding_target_override : user for(var/amount_needed = amount_required, amount_needed > 0, amount_needed--) - var/obj/item/riding_offhand/inhand = new /obj/item/riding_offhand(user) - if(!riding_target_override) - inhand.rider = user - else - inhand.rider = riding_target_override - inhand.parent = AM - if(user.put_in_hands(inhand, TRUE)) - amount_equipped++ - else + var/obj/item/riding_offhand/inhand = new + inhand.rider = L + inhand.parent = parent + if(!user.put_in_hands(inhand, TRUE)) + qdel(inhand) // it isn't going to be added to offhands anyway break + LAZYADD(equipped, src) + var/amount_equipped = LAZYLEN(equipped) + if(amount_equipped) + LAZYADD(offhands[L], amount_equipped) if(amount_equipped >= amount_required) return TRUE - else - unequip_buckle_inhands(user) - return FALSE + unequip_buckle_inhands(L) + return FALSE /datum/component/riding/proc/unequip_buckle_inhands(mob/living/carbon/user) - var/atom/movable/AM = parent - for(var/obj/item/riding_offhand/O in user.contents) - if(O.parent != AM) - CRASH("RIDING OFFHAND ON WRONG MOB") - continue - if(O.selfdeleting) - continue - else - qdel(O) + for(var/a in offhands[user]) + LAZYREMOVE(offhands[user], a) + if(a) //edge cases null entries + var/obj/item/riding_offhand/O = a + if(O.parent != parent) + CRASH("RIDING OFFHAND ON WRONG MOB") + else if(!O.selfdeleting) + qdel(O) return TRUE /obj/item/riding_offhand diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm index ed3ecd2ff3..a044ca301e 100644 --- a/code/datums/components/rotation.dm +++ b/code/datums/components/rotation.dm @@ -145,7 +145,7 @@ set src in oview(1) var/datum/component/simple_rotation/rotcomp = GetComponent(/datum/component/simple_rotation) if(rotcomp) - rotcomp.HandRot(usr,ROTATION_CLOCKWISE) + rotcomp.HandRot(null,usr,ROTATION_CLOCKWISE) /atom/movable/proc/simple_rotate_counterclockwise() set name = "Rotate Counter-Clockwise" @@ -153,7 +153,7 @@ set src in oview(1) var/datum/component/simple_rotation/rotcomp = GetComponent(/datum/component/simple_rotation) if(rotcomp) - rotcomp.HandRot(usr,ROTATION_COUNTERCLOCKWISE) + rotcomp.HandRot(null,usr,ROTATION_COUNTERCLOCKWISE) /atom/movable/proc/simple_rotate_flip() set name = "Flip" @@ -161,4 +161,4 @@ set src in oview(1) var/datum/component/simple_rotation/rotcomp = GetComponent(/datum/component/simple_rotation) if(rotcomp) - rotcomp.HandRot(usr,ROTATION_FLIP) + rotcomp.HandRot(null,usr,ROTATION_FLIP) diff --git a/code/datums/components/shrapnel.dm b/code/datums/components/shrapnel.dm new file mode 100644 index 0000000000..a911221f26 --- /dev/null +++ b/code/datums/components/shrapnel.dm @@ -0,0 +1,39 @@ + +/datum/component/shrapnel + var/projectile_type + var/radius // shoots a projectile for every turf on this radius from the hit target + var/override_projectile_range + +/datum/component/shrapnel/Initialize(projectile_type, radius=1, override_projectile_range) + if(!isgun(parent) && !ismachinery(parent) && !isstructure(parent)) + return COMPONENT_INCOMPATIBLE + + src.projectile_type = projectile_type + src.radius = radius + src.override_projectile_range = override_projectile_range + +/datum/component/shrapnel/RegisterWithParent() + if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc + RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) + +/datum/component/shrapnel/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_PROJECTILE_ON_HIT)) + +/datum/component/shrapnel/proc/projectile_hit(atom/fired_from, atom/movable/firer, atom/target, Angle) + do_shrapnel(firer, target) + +/datum/component/shrapnel/proc/do_shrapnel(mob/firer, atom/target) + if(radius < 1) + return + var/turf/target_turf = get_turf(target) + for(var/turf/shootat_turf in RANGE_TURFS(radius, target) - RANGE_TURFS(radius-1, target)) + var/obj/item/projectile/P = new projectile_type(target_turf) + + //Shooting Code: + P.range = radius+1 + if(override_projectile_range) + P.range = override_projectile_range + P.preparePixelProjectile(shootat_turf, target) + P.firer = firer // don't hit ourself that would be really annoying + P.permutated += target // don't hit the target we hit already with the flak + P.fire() diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm index 9f6ca0ffbb..a92ae9e629 100644 --- a/code/datums/components/storage/storage.dm +++ b/code/datums/components/storage/storage.dm @@ -57,6 +57,10 @@ var/screen_start_x = 4 //These two are where the storage starts being rendered, screen_loc wise. var/screen_start_y = 2 //End + + var/limited_random_access = FALSE //Quick if statement in accessible_items to determine if we care at all about what people can access at once. + var/limited_random_access_stack_position = 0 //If >0, can only access top items + var/limited_random_access_stack_bottom_up = FALSE //If TRUE, above becomes bottom items /datum/component/storage/Initialize(datum/component/storage/concrete/master) if(!isatom(parent)) @@ -146,6 +150,19 @@ var/datum/component/storage/concrete/master = master() return master? master.real_location() : null +//What players can access +//this proc can probably eat a refactor at some point. +/datum/component/storage/proc/accessible_items(random_access = TRUE) + var/list/contents = contents() + if(contents) + if(limited_random_access && random_access) + if(limited_random_access_stack_position && (length(contents) > limited_random_access_stack_position)) + if(limited_random_access_stack_bottom_up) + contents.Cut(1, limited_random_access_stack_position + 1) + else + contents.Cut(1, length(contents) - limited_random_access_stack_position + 1) + return contents + /datum/component/storage/proc/canreach_react(datum/source, list/next) var/datum/component/storage/concrete/master = master() if(!master) @@ -284,8 +301,7 @@ /datum/component/storage/proc/_process_numerical_display() . = list() - var/atom/real_location = real_location() - for(var/obj/item/I in real_location.contents) + for(var/obj/item/I in accessible_items()) if(QDELETED(I)) continue if(!.[I.type]) @@ -296,8 +312,8 @@ //This proc determines the size of the inventory to be displayed. Please touch it only if you know what you're doing. /datum/component/storage/proc/orient2hud(mob/user, maxcolumns) - var/atom/real_location = real_location() - var/adjusted_contents = real_location.contents.len + var/list/accessible_contents = accessible_items() + var/adjusted_contents = length(accessible_contents) //Numbered contents display var/list/datum/numbered_display/numbered_contents @@ -329,8 +345,7 @@ if(cy - screen_start_y >= rows) break else - var/atom/real_location = real_location() - for(var/obj/O in real_location) + for(var/obj/O in accessible_items()) if(QDELETED(O)) continue O.mouse_opacity = MOUSE_OPACITY_OPAQUE //This is here so storage items that spawn with contents correctly have the "click around item to equip" @@ -351,9 +366,8 @@ return FALSE var/list/cview = getviewsize(M.client.view) var/maxallowedscreensize = cview[1]-8 - var/atom/real_location = real_location() if(M.active_storage != src && (M.stat == CONSCIOUS)) - for(var/obj/item/I in real_location) + for(var/obj/item/I in accessible_items()) if(I.on_found(M)) return FALSE if(M.active_storage) @@ -361,7 +375,7 @@ orient2hud(M, (isliving(M) ? maxallowedscreensize : 7)) M.client.screen |= boxes M.client.screen |= closer - M.client.screen |= real_location.contents + M.client.screen |= accessible_items() M.active_storage = src LAZYOR(is_using, M) return TRUE diff --git a/code/datums/components/summoning.dm b/code/datums/components/summoning.dm new file mode 100644 index 0000000000..552959603d --- /dev/null +++ b/code/datums/components/summoning.dm @@ -0,0 +1,69 @@ + +/datum/component/summoning + var/list/mob_types = list() + var/spawn_chance // chance for the mob to spawn on hit in percent + var/max_mobs + var/spawn_delay // delay in spawning between mobs (deciseconds) + var/spawn_text + var/spawn_sound + var/list/faction + + var/last_spawned_time = 0 + var/list/spawned_mobs = list() + +/datum/component/summoning/Initialize(mob_types, spawn_chance=100, max_mobs=3, spawn_delay=100, spawn_text="appears out of nowhere", spawn_sound='sound/magic/summon_magic.ogg', faction) + if(!isitem(parent) && !ishostile(parent) && !isgun(parent) && !ismachinery(parent) && !isstructure(parent)) + return COMPONENT_INCOMPATIBLE + + src.mob_types = mob_types + src.spawn_chance = spawn_chance + src.max_mobs = max_mobs + src.spawn_delay = spawn_delay + src.spawn_text = spawn_text + src.spawn_sound = spawn_sound + src.faction = faction + +/datum/component/summoning/RegisterWithParent() + if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc + RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) + else if(isitem(parent)) + RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack) + else if(ishostile(parent)) + RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget) + +/datum/component/summoning/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT)) + +/datum/component/summoning/proc/item_afterattack(obj/item/source, atom/target, mob/user, proximity_flag, click_parameters) + if(!proximity_flag) + return + do_spawn_mob(get_turf(target), user) + +/datum/component/summoning/proc/hostile_attackingtarget(mob/living/simple_animal/hostile/attacker, atom/target) + do_spawn_mob(get_turf(target), attacker) + +/datum/component/summoning/proc/projectile_hit(atom/fired_from, atom/movable/firer, atom/target, Angle) + do_spawn_mob(get_turf(target), firer) + +/datum/component/summoning/proc/do_spawn_mob(atom/spawn_location, summoner) + if(spawned_mobs.len >= max_mobs) + return 0 + if(last_spawned_time > world.time) + return 0 + if(!prob(spawn_chance)) + return 0 + last_spawned_time = world.time + spawn_delay + var/chosen_mob_type = pick(mob_types) + var/mob/living/simple_animal/L = new chosen_mob_type(spawn_location) + if(ishostile(L)) + var/mob/living/simple_animal/hostile/H = L + H.friends += summoner // do not attack our summon boy + spawned_mobs += L + if(faction != null) + L.faction = faction + RegisterSignal(L, COMSIG_MOB_DEATH, .proc/on_spawned_death) // so we can remove them from the list, etc (for mobs with corpses) + playsound(spawn_location,spawn_sound, 50, 1) + spawn_location.visible_message("[L] [spawn_text].") + +/datum/component/summoning/proc/on_spawned_death(mob/killed, gibbed) + spawned_mobs -= killed \ No newline at end of file diff --git a/code/datums/components/tactical.dm b/code/datums/components/tactical.dm new file mode 100644 index 0000000000..5917fc3009 --- /dev/null +++ b/code/datums/components/tactical.dm @@ -0,0 +1,42 @@ + +/datum/component/tactical + var/allowed_slot + +/datum/component/tactical/Initialize(allowed_slot) + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + + src.allowed_slot = allowed_slot + +/datum/component/tactical/RegisterWithParent() + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/modify) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/unmodify) + +/datum/component/tactical/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) + unmodify() + +/datum/component/fantasy/Destroy() + unmodify() + return ..() + +/datum/component/tactical/proc/modify(obj/item/source, mob/user, slot) + if(allowed_slot && slot != allowed_slot) + unmodify() + return + + var/obj/item/master = parent + var/image/I = image(icon = master.icon, icon_state = master.icon_state, loc = user) + I.copy_overlays(master) + I.override = TRUE + source.add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/everyone, "sneaking_mission", I) + I.layer = ABOVE_MOB_LAYER + +/datum/component/tactical/proc/unmodify(obj/item/source, mob/user) + var/obj/item/master = source || parent + if(!user) + if(!ismob(master.loc)) + return + user = master.loc + + user.remove_alt_appearance("sneaking_mission") diff --git a/code/datums/components/thermite.dm b/code/datums/components/thermite.dm index 45243014dd..916b3ed3b2 100644 --- a/code/datums/components/thermite.dm +++ b/code/datums/components/thermite.dm @@ -15,7 +15,7 @@ /turf/closed/indestructible, /turf/open/indestructible) ) - + var/static/list/resistlist = typecacheof( /turf/closed/wall/r_wall ) @@ -77,5 +77,5 @@ thermite_melt() /datum/component/thermite/proc/attackby_react(datum/source, obj/item/thing, mob/user, params) - if(thing.is_hot()) + if(thing.get_temperature()) thermite_melt(user) \ No newline at end of file diff --git a/code/datums/dash_weapon.dm b/code/datums/dash_weapon.dm index a870ecae66..8eda936bb7 100644 --- a/code/datums/dash_weapon.dm +++ b/code/datums/dash_weapon.dm @@ -34,11 +34,10 @@ var/turf/T = get_turf(target) if(target in view(user.client.view, user)) var/obj/spot1 = new phaseout(get_turf(user), user.dir) - user.forceMove(T) - playsound(T, dash_sound, 25, 1) - var/obj/spot2 = new phasein(get_turf(user), user.dir) - spot1.Beam(spot2,beam_effect,time=20) - current_charges-- + if(do_teleport(user, T, null, TRUE, null, null, dash_sound, dash_sound, TRUE, TELEPORT_CHANNEL_FREE, TRUE)) + var/obj/spot2 = new phasein(get_turf(user), user.dir) + spot1.Beam(spot2,beam_effect,time=20) + current_charges-- holder.update_action_buttons_icon() addtimer(CALLBACK(src, .proc/charge), charge_rate) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 1ab3456c22..8b205db756 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -79,7 +79,7 @@ if(M.getToxLoss() && prob(5)) to_chat(M, "Your skin tingles as the starlight seems to heal you.") - M.adjustToxLoss(-(4 * heal_amt)) //most effective on toxins + M.adjustToxLoss(-(4 * heal_amt), forced = TRUE) //most effective on toxins var/list/parts = M.get_damaged_bodyparts(1,1) @@ -368,7 +368,7 @@ level = 8 passive_message = "You feel an odd attraction to plasma." var/temp_rate = 1 - threshold_desc = "Transmission 6: Increases temperature adjustment rate.
\ + threshold_desc = "Transmission 6: Increases temperature adjustment rate and heals toxin lovers.
\ Stage Speed 7: Increases healing speed." /datum/symptom/heal/plasma/Start(datum/disease/advance/A) @@ -410,7 +410,7 @@ if(prob(5)) to_chat(M, "You feel warmer.") - M.adjustToxLoss(-heal_amt) + M.adjustToxLoss(-heal_amt, forced = (temp_rate == 4)) var/list/parts = M.get_damaged_bodyparts(1,1) if(!parts.len) @@ -435,7 +435,7 @@ symptom_delay_max = 1 passive_message = "Your skin glows faintly for a moment." var/cellular_damage = FALSE - threshold_desc = "Transmission 6: Additionally heals cellular damage.
\ + threshold_desc = "Transmission 6: Additionally heals cellular damage and toxin lovers.
\ Resistance 7: Increases healing speed." /datum/symptom/heal/radiation/Start(datum/disease/advance/A) @@ -468,7 +468,7 @@ if(cellular_damage) M.adjustCloneLoss(-heal_amt * 0.5) - M.adjustToxLoss(-(2 * heal_amt)) + M.adjustToxLoss(-(2 * heal_amt), forced = cellular_damage) var/list/parts = M.get_damaged_bodyparts(1,1) diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 4d1986cccf..74f22b5ac0 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -79,6 +79,7 @@ tele_play_specials(teleatom, destturf, effectout, asoundout) if(ismegafauna(teleatom)) message_admins("[teleatom] [ADMIN_FLW(teleatom)] has teleported from [ADMIN_VERBOSEJMP(curturf)] to [ADMIN_VERBOSEJMP(destturf)].") + SEND_SIGNAL(teleatom, COMSIG_MOVABLE_TELEPORTED, channel, curturf, destturf) if(ismob(teleatom)) var/mob/M = teleatom diff --git a/code/datums/map_config.dm b/code/datums/map_config.dm index dcc16f1ba5..c859f8127d 100644 --- a/code/datums/map_config.dm +++ b/code/datums/map_config.dm @@ -11,6 +11,8 @@ var/config_max_users = 0 var/config_min_users = 0 var/voteweight = 1 + var/max_round_search_span = 0 //If this is nonzero, then if the map has been played more than max_rounds_played within the search span (max determined by define in persistence.dm), this map won't be available. + var/max_rounds_played = 0 // Config actually from the JSON - should default to Box var/map_name = "Box Station" @@ -23,6 +25,10 @@ var/minetype = "lavaland" + var/maptype = MAP_TYPE_STATION //This should be used to adjust ingame behavior depending on the specific type of map being played. For instance, if an overmap were added, it'd be appropriate for it to only generate with a MAP_TYPE_SHIP + + var/announcertype = "standard" //Determines the announcer the map uses. standard uses the default announcer, classic, but has a random chance to use other similarly-themed announcers, like medibot + var/allow_custom_shuttles = TRUE var/shuttles = list( "cargo" = "cargo_box", @@ -30,6 +36,8 @@ "whiteship" = "whiteship_box", "emergency" = "emergency_box") + var/year_offset = 540 //The offset of ingame year from the actual IRL year. You know you want to make a map that takes place in the 90's. Don't lie. + /proc/load_map_config(filename = "data/next_map.json", default_to_box, delete_after, error_if_missing = TRUE) var/datum/map_config/config = new if (default_to_box) @@ -122,8 +130,21 @@ log_world("map_config space_empty_levels is not a number!") return + temp = json["year_offset"] + if (isnum(temp)) + year_offset = temp + else if (!isnull(temp)) + log_world("map_config year_offset is not a number!") + return + if ("minetype" in json) minetype = json["minetype"] + + if ("maptype" in json) + maptype = json["maptype"] + + if ("announcertype" in json) + announcertype = json["announcertype"] allow_custom_shuttles = json["allow_custom_shuttles"] != FALSE diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 68efe93254..5cf03e2684 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -41,8 +41,6 @@ var/special_role var/list/restricted_roles = list() - var/list/datum/objective/objectives = list() - var/list/spell_list = list() // Wizard mode & "Give Spell" badmin button. var/linglink @@ -360,13 +358,15 @@ output += memory + var/list/all_objectives = list() for(var/datum/antagonist/A in antag_datums) output += A.antag_memory + all_objectives |= A.objectives - if(objectives.len) + if(all_objectives.len) output += "Objectives:" var/obj_count = 1 - for(var/datum/objective/objective in objectives) + for(var/datum/objective/objective in all_objectives) output += "
Objective #[obj_count++]: [objective.explanation_text]" var/list/datum/mind/other_owners = objective.get_owners() - src if(other_owners.len) @@ -377,7 +377,7 @@ if(window) recipient << browse(output,"window=memory") - else if(objectives.len || memory) + else if(all_objectives.len || memory) to_chat(recipient, "[output]") /datum/mind/Topic(href, href_list) @@ -408,34 +408,24 @@ memory = new_memo else if (href_list["obj_edit"] || href_list["obj_add"]) - var/datum/objective/objective - var/objective_pos + var/objective_pos //Edited objectives need to keep same order in antag objective list var/def_value - var/datum/antagonist/target_antag + var/datum/objective/old_objective //The old objective we're replacing/editing + var/datum/objective/new_objective //New objective we're be adding - if (href_list["obj_edit"]) - objective = locate(href_list["obj_edit"]) - if (!objective) + if(href_list["obj_edit"]) + for(var/datum/antagonist/A in antag_datums) + old_objective = locate(href_list["obj_edit"]) in A.objectives + if(old_objective) + target_antag = A + objective_pos = A.objectives.Find(old_objective) + break + if(!old_objective) + to_chat(usr,"Invalid objective.") return - for(var/datum/antagonist/A in antag_datums) - if(objective in A.objectives) - target_antag = A - objective_pos = A.objectives.Find(objective) - break - - if(!target_antag) //Shouldn't happen anymore - stack_trace("objective without antagonist found") - objective_pos = objectives.Find(objective) - - //Text strings are easy to manipulate. Revised for simplicity. - var/temp_obj_type = "[objective.type]"//Convert path into a text string. - def_value = copytext(temp_obj_type, 19)//Convert last part of path into an objective keyword. - if(!def_value)//If it's a custom objective, it will be an empty string. - def_value = "custom" else - //We're adding this objective if(href_list["target_antag"]) var/datum/antagonist/X = locate(href_list["target_antag"]) in antag_datums if(X) @@ -447,7 +437,7 @@ if(1) target_antag = antag_datums[1] else - var/datum/antagonist/target = input("Which antagonist gets the objective:", "Antagonist", def_value) as null|anything in antag_datums + "(new custom antag)" + var/datum/antagonist/target = input("Which antagonist gets the objective:", "Antagonist", "(new custom antag)") as null|anything in antag_datums + "(new custom antag)" if (QDELETED(target)) return else if(target == "(new custom antag)") @@ -455,149 +445,88 @@ else target_antag = target - var/new_obj_type = input("Select objective type:", "Objective type", def_value) as null|anything in list("assassinate", "maroon", "debrain", "protect", "destroy", "prevent", "hijack", "escape", "survive", "martyr", "steal", "download", "nuclear", "capture", "absorb", "custom") - if (!new_obj_type) + var/static/list/choices + if(!choices) + choices = list() + + var/list/allowed_types = list( + /datum/objective/assassinate, + /datum/objective/maroon, + /datum/objective/debrain, + /datum/objective/protect, + /datum/objective/destroy, + /datum/objective/hijack, + /datum/objective/escape, + /datum/objective/survive, + /datum/objective/martyr, + /datum/objective/steal, + /datum/objective/download, + /datum/objective/nuclear, + /datum/objective/capture, + /datum/objective/absorb, + /datum/objective/custom + ) + + for(var/T in allowed_types) + var/datum/objective/X = T + choices[initial(X.name)] = T + + if(old_objective) + if(old_objective.name in choices) + def_value = old_objective.name + + var/selected_type = input("Select objective type:", "Objective type", def_value) as null|anything in choices + selected_type = choices[selected_type] + if (!selected_type) return - var/datum/objective/new_objective = null + if(!old_objective) + //Add new one + new_objective = new selected_type + new_objective.owner = src + new_objective.admin_edit(usr) + target_antag.objectives += new_objective - switch (new_obj_type) - if ("assassinate","protect","debrain","maroon") - var/list/possible_targets = list("Free objective") - for(var/datum/mind/possible_target in SSticker.minds) - if ((possible_target != src) && ishuman(possible_target.current)) - possible_targets += possible_target.current - - var/mob/def_target = null - var/list/objective_list = typecacheof(list(/datum/objective/assassinate, /datum/objective/protect, /datum/objective/debrain, /datum/objective/maroon)) - if (is_type_in_typecache(objective, objective_list) && objective.target) - def_target = objective.target.current - - var/mob/new_target = input("Select target:", "Objective target", def_target) as null|anything in possible_targets - if (!new_target) - return - - var/objective_path = text2path("/datum/objective/[new_obj_type]") - if (new_target == "Free objective") - new_objective = new objective_path - new_objective.owner = src - new_objective.target = null - new_objective.explanation_text = "Free objective" - else - new_objective = new objective_path - new_objective.owner = src - new_objective.target = new_target.mind - //Will display as special role if the target is set as MODE. Ninjas/commandos/nuke ops. - new_objective.update_explanation_text() - - if ("destroy") - var/list/possible_targets = active_ais(1) - if(possible_targets.len) - var/mob/new_target = input("Select target:", "Objective target") as null|anything in possible_targets - new_objective = new /datum/objective/destroy - new_objective.target = new_target.mind - new_objective.owner = src - new_objective.update_explanation_text() - else - to_chat(usr, "No active AIs with minds") - - if ("prevent") - new_objective = new /datum/objective/block - new_objective.owner = src - - if ("hijack") - new_objective = new /datum/objective/hijack - new_objective.owner = src - - if ("escape") - new_objective = new /datum/objective/escape - new_objective.owner = src - - if ("survive") - new_objective = new /datum/objective/survive - new_objective.owner = src - - if("martyr") - new_objective = new /datum/objective/martyr - new_objective.owner = src - - if ("nuclear") - new_objective = new /datum/objective/nuclear - new_objective.owner = src - - if ("steal") - if (!istype(objective, /datum/objective/steal)) - new_objective = new /datum/objective/steal - new_objective.owner = src - else - new_objective = objective - var/datum/objective/steal/steal = new_objective - if (!steal.select_target()) - return - - if("download","capture","absorb") - var/def_num - if(objective&&objective.type==text2path("/datum/objective/[new_obj_type]")) - def_num = objective.target_amount - - var/target_number = input("Input target number:", "Objective", def_num) as num | null - if (isnull(target_number))//Ordinarily, you wouldn't need isnull. In this case, the value may already exist. - return - - switch(new_obj_type) - if("download") - new_objective = new /datum/objective/download - new_objective.explanation_text = "Download [target_number] research node\s." - if("capture") - new_objective = new /datum/objective/capture - new_objective.explanation_text = "Capture [target_number] lifeforms with an energy net. Live, rare specimens are worth more." - if("absorb") - new_objective = new /datum/objective/absorb - new_objective.explanation_text = "Absorb [target_number] compatible genomes." - new_objective.owner = src - new_objective.target_amount = target_number - - if ("custom") - var/expl = stripped_input(usr, "Custom objective:", "Objective", objective ? objective.explanation_text : "") - if (!expl) - return - new_objective = new /datum/objective - new_objective.owner = src - new_objective.explanation_text = expl - - if (!new_objective) - return - - if (objective) - if(target_antag) - target_antag.objectives -= objective - objectives -= objective - target_antag.objectives.Insert(objective_pos, new_objective) - message_admins("[key_name_admin(usr)] edited [current]'s objective to [new_objective.explanation_text]") - log_admin("[key_name(usr)] edited [current]'s objective to [new_objective.explanation_text]") - else - if(target_antag) - target_antag.objectives += new_objective - objectives += new_objective message_admins("[key_name_admin(usr)] added a new objective for [current]: [new_objective.explanation_text]") log_admin("[key_name(usr)] added a new objective for [current]: [new_objective.explanation_text]") + else + if(old_objective.type == selected_type) + //Edit the old + old_objective.admin_edit(usr) + new_objective = old_objective + else + //Replace the old + new_objective = new selected_type + new_objective.owner = src + new_objective.admin_edit(usr) + target_antag.objectives -= old_objective + target_antag.objectives.Insert(objective_pos, new_objective) + message_admins("[key_name_admin(usr)] edited [current]'s objective to [new_objective.explanation_text]") + log_admin("[key_name(usr)] edited [current]'s objective to [new_objective.explanation_text]") else if (href_list["obj_delete"]) - var/datum/objective/objective = locate(href_list["obj_delete"]) - if(!istype(objective)) - return + var/datum/objective/objective for(var/datum/antagonist/A in antag_datums) - if(objective in A.objectives) - A.objectives -= objective + objective = locate(href_list["obj_delete"]) in A.objectives + if(istype(objective)) break - objectives -= objective + if(!objective) + to_chat(usr,"Invalid objective.") + return + //qdel(objective) Needs cleaning objective destroys message_admins("[key_name_admin(usr)] removed an objective for [current]: [objective.explanation_text]") log_admin("[key_name(usr)] removed an objective for [current]: [objective.explanation_text]") else if(href_list["obj_completed"]) - var/datum/objective/objective = locate(href_list["obj_completed"]) - if(!istype(objective)) + var/datum/objective/objective + for(var/datum/antagonist/A in antag_datums) + objective = locate(href_list["obj_completed"]) in A.objectives + if(istype(objective)) + objective = objective + break + if(!objective) + to_chat(usr,"Invalid objective.") return objective.completed = !objective.completed log_admin("[key_name(usr)] toggled the win state for [current]'s objective: [objective.explanation_text]") @@ -652,10 +581,16 @@ usr = current traitor_panel() +/datum/mind/proc/get_all_objectives() + var/list/all_objectives = list() + for(var/datum/antagonist/A in antag_datums) + all_objectives |= A.objectives + return all_objectives + /datum/mind/proc/announce_objectives() var/obj_count = 1 to_chat(current, "Your current objectives:") - for(var/objective in objectives) + for(var/objective in get_all_objectives()) var/datum/objective/O = objective to_chat(current, "Objective #[obj_count]: [O.explanation_text]") obj_count++ diff --git a/code/datums/mutations.dm b/code/datums/mutations.dm index efa248b4f0..f689ff903e 100644 --- a/code/datums/mutations.dm +++ b/code/datums/mutations.dm @@ -30,7 +30,7 @@ GLOBAL_LIST_EMPTY(mutations_list) . = on_losing(owner) /datum/mutation/human/proc/set_se(se_string, on = 1) - if(!se_string || lentext(se_string) < DNA_STRUC_ENZYMES_BLOCKS * DNA_BLOCK_SIZE) + if(!se_string || length(se_string) < DNA_STRUC_ENZYMES_BLOCKS * DNA_BLOCK_SIZE) return var/before = copytext(se_string, 1, ((dna_block - 1) * DNA_BLOCK_SIZE) + 1) var/injection = num2hex(on ? rand(lowest_value, (256 * 16) - 1) : rand(0, lowest_value - 1), DNA_BLOCK_SIZE) @@ -42,7 +42,7 @@ GLOBAL_LIST_EMPTY(mutations_list) owner.dna.struc_enzymes = set_se(owner.dna.struc_enzymes, on) /datum/mutation/human/proc/check_block_string(se_string) - if(!se_string || lentext(se_string) < DNA_STRUC_ENZYMES_BLOCKS * DNA_BLOCK_SIZE) + if(!se_string || length(se_string) < DNA_STRUC_ENZYMES_BLOCKS * DNA_BLOCK_SIZE) return 0 if(hex2num(getblock(se_string, dna_block)) >= lowest_value) return 1 diff --git a/code/datums/radiation_wave.dm b/code/datums/radiation_wave.dm index 6118428547..8555e4cf3f 100644 --- a/code/datums/radiation_wave.dm +++ b/code/datums/radiation_wave.dm @@ -66,6 +66,8 @@ place = cmaster_turf for(var/i in 1 to distance) place = get_step(place, dir) + if(!place) + break atoms += get_rad_contents(place) return atoms @@ -108,7 +110,7 @@ if(!can_contaminate || blacklisted[thing.type]) continue if(prob(contamination_chance)) // Only stronk rads get to have little baby rads - if(SEND_SIGNAL(thing, COMSIG_ATOM_RAD_CONTAMINATING, strength) & COMPONENT_BLOCK_CONTAMINATION) + if(CHECK_BITFIELD(thing.rad_flags, RAD_NO_CONTAMINATE) || SEND_SIGNAL(thing, COMSIG_ATOM_RAD_CONTAMINATING, strength) & COMPONENT_BLOCK_CONTAMINATION) continue var/rad_strength = (strength-RAD_MINIMUM_CONTAMINATION) * RAD_CONTAMINATION_STR_COEFFICIENT thing.AddComponent(/datum/component/radioactive, rad_strength, source) diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 186c988595..fb636f6911 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -155,7 +155,7 @@ /datum/status_effect/belligerent/proc/do_movement_toggle(force_damage) var/number_legs = owner.get_num_legs(FALSE) - if(iscarbon(owner) && !is_servant_of_ratvar(owner) && !owner.anti_magic_check() && number_legs) + if(iscarbon(owner) && !is_servant_of_ratvar(owner) && !owner.anti_magic_check(chargecost = 0) && number_legs) if(force_damage || owner.m_intent != MOVE_INTENT_WALK) if(GLOB.ratvar_awakens) owner.Knockdown(20) @@ -248,7 +248,7 @@ if(owner.confused) owner.confused = 0 severity = 0 - else if(!owner.anti_magic_check() && owner.stat != DEAD && severity) + else if(!owner.anti_magic_check(chargecost = 0) && owner.stat != DEAD && severity) var/static/hum = get_sfx('sound/effects/screech.ogg') //same sound for every proc call if(owner.getToxLoss() > MANIA_DAMAGE_TO_CONVERT) if(is_eligible_servant(owner)) diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index f70e3a3c68..9e05af03b6 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -94,6 +94,50 @@ lose_text = "You don't feel as prudish as before." medical_record_text = "Patient exhibits a special gene that makes them immune to Crocin and Hexacrocin." +/datum/quirk/libido + name = "Nymphomania" + desc = "You're always feeling a bit in heat. Also, you get aroused faster than usual." + value = 0 + mob_trait = TRAIT_NYMPHO + gain_text = "You are feeling extra wild." + lose_text = "You don't feel that burning sensation anymore." + +/datum/quirk/libido/add() + quirk_holder.min_arousal = 16 + quirk_holder.arousal_rate = 3 + +/datum/quirk/libido/remove() + if(quirk_holder) + quirk_holder.min_arousal = initial(quirk_holder.min_arousal) + quirk_holder.arousal_rate = initial(quirk_holder.arousal_rate) + +/datum/quirk/maso + name = "Masochism" + desc = "You are aroused by pain." + value = 0 + mob_trait = TRAIT_MASO + gain_text = "You desire to be hurt." + lose_text = "Pain has become less exciting for you." + +/datum/quirk/exhibitionism + name = "Exhibitionism" + desc = "You don't mind showing off your bare body to strangers, in fact you find it quite satistying." + value = 0 + medical_record_text = "Patient has been diagnosed with exhibitionistic disorder." + mob_trait = TRAIT_EXHIBITIONIST + gain_text = "You feel like exposing yourself to the world." + lose_text = "Indecent exposure doesn't sound as charming to you anymore." + +/datum/quirk/pharmacokinesis //Prevents unwanted organ additions. + name = "Acute hepatic pharmacokinesis" + desc = "You've a rare genetic disorder that causes Incubus draft and Sucubus milk to be absorbed by your liver instead." + value = 0 + mob_trait = TRAIT_PHARMA + lose_text = "Your liver feels different." + var/active = FALSE + var/power = 0 + var/cachedmoveCalc = 1 + /datum/quirk/assblastusa name = "Buns of Steel" desc = "You've never skipped ass day. With this trait, you are completely immune to all forms of ass slapping and anyone who tries to slap your rock hard ass usually gets a broken hand." diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 2a47d6d015..68f22242e1 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -829,7 +829,7 @@ Proc for attack log creation, because really why not return filters[filter_data.Find(name)] /atom/movable/proc/remove_filter(name) - if(filter_data[name]) + if(filter_data && filter_data[name]) filter_data -= name update_filters() return TRUE \ No newline at end of file diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 2732b3dc82..0957db5fcb 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -27,7 +27,6 @@ glide_size = 8 appearance_flags = TILE_BOUND|PIXEL_SCALE var/datum/forced_movement/force_moving = null //handled soley by forced_movement.dm - var/floating = FALSE var/movement_type = GROUND //Incase you have multiple types, you automatically use the most useful one. IE: Skating on ice, flippers on water, flying over chasm/space, etc. var/atom/movable/pulling var/grab_state = 0 @@ -422,6 +421,9 @@ var/atom/movable/AM = item AM.onTransitZ(old_z,new_z) +/atom/movable/proc/setMovetype(newval) + movement_type = newval + //Called whenever an object moves and by mobs when they attempt to move themselves through space //And when an object or action applies a force on src, see newtonian_move() below //Return 0 to have src start/keep drifting in a no-grav area and 1 to stop/not start drifting @@ -686,14 +688,14 @@ /atom/movable/proc/float(on) if(throwing) return - if(on && !floating) + if(on && !(movement_type & FLOATING)) animate(src, pixel_y = pixel_y + 2, time = 10, loop = -1) sleep(10) animate(src, pixel_y = pixel_y - 2, time = 10, loop = -1) - floating = TRUE - else if (!on && floating) + setMovetype(movement_type | FLOATING) + else if (!on && (movement_type & FLOATING)) animate(src, pixel_y = initial(pixel_y), time = 10) - floating = FALSE + setMovetype(movement_type & ~FLOATING) /* Language procs */ /atom/movable/proc/get_language_holder(shadow=TRUE) diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index 51a34f4194..76e6268977 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -167,6 +167,7 @@ Credit where due: number_players -= 30 starter_servants += round(number_players / 10) starter_servants = min(starter_servants, 8) //max 8 servants (that sould only happen with a ton of players) + GLOB.clockwork_vitality += 50 * starter_servants //some starter Vitality to help recover from initial fuck ups while(starter_servants) var/datum/mind/servant = antag_pick(antag_candidates) servants_to_serve += servant diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 46cef7df63..79890e4cdd 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -267,6 +267,7 @@ operation_req_access = list(ACCESS_SYNDICATE) wreckage = /obj/structure/mecha_wreckage/honker/dark max_equip = 3 + spawn_tracked = FALSE /obj/mecha/combat/honker/dark/GrantActions(mob/living/user, human_occupant = 0) ..() diff --git a/code/game/gamemodes/devil/devil agent/devil_agent.dm b/code/game/gamemodes/devil/devil agent/devil_agent.dm index ec09bfc739..789cff5c8f 100644 --- a/code/game/gamemodes/devil/devil agent/devil_agent.dm +++ b/code/game/gamemodes/devil/devil agent/devil_agent.dm @@ -34,11 +34,12 @@ //If you override this method, have it return the number of objectives added. if(devil_target_list.len && devil_target_list[devil]) // Is a double agent var/datum/mind/target_mind = devil_target_list[devil] + var/datum/antagonist/devil/D = target_mind.has_antag_datum(/datum/antagonist/devil) var/datum/objective/devil/outsell/outsellobjective = new outsellobjective.owner = devil outsellobjective.target = target_mind outsellobjective.update_explanation_text() - devil.objectives += outsellobjective + D.objectives += outsellobjective return 1 return 0 diff --git a/code/game/gamemodes/devil/game_mode.dm b/code/game/gamemodes/devil/game_mode.dm index 2255766e74..208a24f3e5 100644 --- a/code/game/gamemodes/devil/game_mode.dm +++ b/code/game/gamemodes/devil/game_mode.dm @@ -4,11 +4,12 @@ /datum/game_mode/proc/add_devil_objectives(datum/mind/devil_mind, quantity) var/list/validtypes = list(/datum/objective/devil/soulquantity, /datum/objective/devil/soulquality, /datum/objective/devil/sintouch, /datum/objective/devil/buy_target) + var/datum/antagonist/devil/D = devil_mind.has_antag_datum(/datum/antagonist/devil) for(var/i = 1 to quantity) var/type = pick(validtypes) var/datum/objective/devil/objective = new type(null) objective.owner = devil_mind - devil_mind.objectives += objective + D.objectives += objective if(!istype(objective, /datum/objective/devil/buy_target)) validtypes -= type //prevent duplicate objectives, EXCEPT for buy_target. else diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index 24cfddd14f..ca009f76ad 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -111,6 +111,10 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) ..() pop_per_requirement = CONFIG_GET(number/dynamic_pop_per_requirement) GLOB.dynamic_high_pop_limit = CONFIG_GET(number/dynamic_high_pop_limit) + GLOB.dynamic_latejoin_delay_min = CONFIG_GET(number/dynamic_latejoin_delay_min)*600 + GLOB.dynamic_latejoin_delay_max = CONFIG_GET(number/dynamic_latejoin_delay_max)*600 + GLOB.dynamic_midround_delay_min = CONFIG_GET(number/dynamic_midround_delay_min)*600 + GLOB.dynamic_midround_delay_max = CONFIG_GET(number/dynamic_midround_delay_max)*600 /datum/game_mode/dynamic/admin_panel() var/list/dat = list("Game Mode Panel

Game Mode Panel

") @@ -221,7 +225,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) . += G.get_report() print_command_report(., "Central Command Status Summary", announce=FALSE) - priority_announce("A summary has been copied and printed to all communications consoles.", "Security level elevated.", 'sound/ai/intercept.ogg') + priority_announce("A summary has been copied and printed to all communications consoles.", "Security level elevated.", "intercept") if(GLOB.security_level < SEC_LEVEL_BLUE) set_security_level(SEC_LEVEL_BLUE) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index 56b6e57c4d..f24301d716 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -263,7 +263,7 @@ M.mind.special_role = antag_flag M.mind.add_antag_datum(AI) if(prob(ion_announce)) - priority_announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", 'sound/ai/ionstorm.ogg') + priority_announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", "ionstorm") if(prob(removeDontImproveChance)) M.replace_random_law(generate_ion_law(), list(LAW_INHERENT, LAW_SUPPLIED, LAW_ION)) else diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index 6a9aefa996..abca269eeb 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -126,7 +126,7 @@ /datum/dynamic_ruleset/roundstart/changeling/execute() var/team_mode = FALSE - if(prob(team_mode_probability)) + if(prob(team_mode_probability)) team_mode = TRUE var/list/team_objectives = subtypesof(/datum/objective/changeling_team_objective) var/list/possible_team_objectives = list() @@ -174,14 +174,14 @@ /datum/dynamic_ruleset/roundstart/wizard/pre_execute() if(GLOB.wizardstart.len == 0) return FALSE - + var/mob/M = pick(candidates) if (M) candidates -= M assigned += M.mind M.mind.assigned_role = ROLE_WIZARD M.mind.special_role = ROLE_WIZARD - + return TRUE /datum/dynamic_ruleset/roundstart/wizard/execute() @@ -189,7 +189,7 @@ M.current.forceMove(pick(GLOB.wizardstart)) M.add_antag_datum(new antag_datum()) return TRUE - + ////////////////////////////////////////////// // // // BLOOD CULT // @@ -238,7 +238,7 @@ var/datum/antagonist/cult/new_cultist = new antag_datum() new_cultist.cult_team = main_cult new_cultist.give_equipment = TRUE - M.add_antag_datum(new_cultist) + M.add_antag_datum(new_cultist) main_cult.setup_objectives() return TRUE @@ -390,7 +390,7 @@ SSshuttle.registerHostileEnvironment(src) return TRUE - + /datum/dynamic_ruleset/roundstart/delayed/revs/rule_process() if(check_rev_victory()) finished = 1 @@ -492,6 +492,7 @@ number_players -= 30 starter_servants += round(number_players / 10) starter_servants = min(starter_servants, 8) + GLOB.clockwork_vitality += 50 * starter_servants //some starter Vitality to help recover from initial fuck ups for (var/i in 1 to starter_servants) var/mob/servant = pick(candidates) candidates -= servant @@ -605,7 +606,7 @@ high_population_requirement = 101 var/devil_limit = 4 // Hard limit on devils if scaling is turned off -/datum/dynamic_ruleset/roundstart/devil/pre_execute() +/datum/dynamic_ruleset/roundstart/devil/pre_execute() var/tsc = CONFIG_GET(number/traitor_scaling_coeff) var/num_devils = 1 diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index 6013b48016..8d3254933a 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -1,5 +1,5 @@ /proc/power_failure() - priority_announce("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Critical Power Failure", 'sound/ai/poweroff.ogg') + priority_announce("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Critical Power Failure", "poweroff") for(var/obj/machinery/power/smes/S in GLOB.machines) if(istype(get_area(S), /area/ai_monitored/turret_protected) || !is_station_level(S.z)) continue @@ -48,7 +48,7 @@ /proc/power_restore() - priority_announce("Power has been restored to [station_name()]. We apologize for the inconvenience.", "Power Systems Nominal", 'sound/ai/poweron.ogg') + priority_announce("Power has been restored to [station_name()]. We apologize for the inconvenience.", "Power Systems Nominal", "poweron") for(var/obj/machinery/power/apc/C in GLOB.machines) if(C.cell && is_station_level(C.z)) C.cell.charge = C.cell.maxcharge @@ -70,7 +70,7 @@ /proc/power_restore_quick() - priority_announce("All SMESs on [station_name()] have been recharged. We apologize for the inconvenience.", "Power Systems Nominal", 'sound/ai/poweron.ogg') + priority_announce("All SMESs on [station_name()] have been recharged. We apologize for the inconvenience.", "Power Systems Nominal", "poweron") for(var/obj/machinery/power/smes/S in GLOB.machines) if(!is_station_level(S.z)) continue diff --git a/code/game/gamemodes/extended/extended.dm b/code/game/gamemodes/extended/extended.dm index c1ae2287ef..1229a9cf8c 100644 --- a/code/game/gamemodes/extended/extended.dm +++ b/code/game/gamemodes/extended/extended.dm @@ -29,4 +29,4 @@ /datum/game_mode/extended/announced/send_intercept(report = 0) if(flipseclevel) //CIT CHANGE - allows the sec level to be flipped roundstart return ..() - priority_announce("Thanks to the tireless efforts of our security and intelligence divisions, there are currently no credible threats to [station_name()]. All station construction projects have been authorized. Have a secure shift!", "Security Report", 'sound/ai/commandreport.ogg') + priority_announce("Thanks to the tireless efforts of our security and intelligence divisions, there are currently no credible threats to [station_name()]. All station construction projects have been authorized. Have a secure shift!", "Security Report", "commandreport") diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index f790053863..17e26e66af 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -258,7 +258,7 @@ /datum/game_mode/proc/send_intercept() if(flipseclevel && !(config_tag == "extended"))//CIT CHANGE - lets the security level be flipped roundstart - priority_announce("Thanks to the tireless efforts of our security and intelligence divisions, there are currently no credible threats to [station_name()]. All station construction projects have been authorized. Have a secure shift!", "Security Report", 'sound/ai/commandreport.ogg') + priority_announce("Thanks to the tireless efforts of our security and intelligence divisions, there are currently no credible threats to [station_name()]. All station construction projects have been authorized. Have a secure shift!", "Security Report", "commandreport") return var/intercepttext = "Central Command Status Summary
" intercepttext += "Central Command has intercepted and partially decoded a Syndicate transmission with vital information regarding their movements. The following report outlines the most \ @@ -288,7 +288,7 @@ intercepttext += G.get_report() print_command_report(intercepttext, "Central Command Status Summary", announce=FALSE) - priority_announce("A summary has been copied and printed to all communications consoles.", "Enemy communication intercepted. Security level elevated.", 'sound/ai/intercept.ogg') + priority_announce("A summary has been copied and printed to all communications consoles.", "Enemy communication intercepted. Security level elevated.", "intercept") if(GLOB.security_level < SEC_LEVEL_BLUE) set_security_level(SEC_LEVEL_BLUE) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index f6b1def645..f99fe5c3e4 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -4,7 +4,8 @@ GLOBAL_LIST_EMPTY(objectives) /datum/objective var/datum/mind/owner //The primary owner of the objective. !!SOMEWHAT DEPRECATED!! Prefer using 'team' for new code. - var/datum/team/team //An alternative to 'owner': a team. Use this when writing new code. + var/datum/team/team //An alternative to 'owner': a team. Use this when writing new code. + var/name = "generic objective" //Name for admin prompts var/explanation_text = "Nothing" //What that person is supposed to do. var/team_explanation_text //For when there are multiple owners. var/datum/mind/target = null //If they are focused on a particular person. @@ -22,6 +23,32 @@ GLOBAL_LIST_EMPTY(objectives) if(owner) . += owner +/datum/objective/proc/admin_edit(mob/admin) + return + +//Shared by few objective types +/datum/objective/proc/admin_simple_target_pick(mob/admin) + var/list/possible_targets = list("Free objective") + var/def_value + for(var/datum/mind/possible_target in SSticker.minds) + if ((possible_target != src) && ishuman(possible_target.current)) + possible_targets += possible_target.current + + + if(target && target.current) + def_value = target.current + + var/mob/new_target = input(admin,"Select target:", "Objective target", def_value) as null|anything in possible_targets + if (!new_target) + return + + if (new_target == "Free objective") + target = null + else + target = new_target.mind + + update_explanation_text() + /datum/objective/proc/considered_escaped(datum/mind/M) if(!considered_alive(M)) return FALSE @@ -42,7 +69,7 @@ GLOBAL_LIST_EMPTY(objectives) /datum/objective/proc/is_unique_objective(possible_target) var/list/datum/mind/owners = get_owners() for(var/datum/mind/M in owners) - for(var/datum/objective/O in M.objectives) + for(var/datum/objective/O in M.get_all_objectives()) //This scope is debatable, probably should be passed in by caller. if(istype(O, type) && O.get_target() == possible_target) return FALSE return TRUE @@ -122,6 +149,7 @@ GLOBAL_LIST_EMPTY(objectives) H.equip_in_one_of_slots(O, slots) /datum/objective/assassinate + name = "assasinate" var/target_role_type=0 martyr_compatible = 1 @@ -141,6 +169,9 @@ GLOBAL_LIST_EMPTY(objectives) else explanation_text = "Free Objective" +/datum/objective/assassinate/admin_edit(mob/admin) + admin_simple_target_pick(admin) + /datum/objective/assassinate/internal var/stolen = 0 //Have we already eliminated this target? @@ -150,6 +181,7 @@ GLOBAL_LIST_EMPTY(objectives) explanation_text = "Assassinate [target.name], who was obliterated" /datum/objective/mutiny + name = "mutiny" var/target_role_type=0 martyr_compatible = 1 @@ -173,6 +205,7 @@ GLOBAL_LIST_EMPTY(objectives) explanation_text = "Free Objective" /datum/objective/maroon + name = "maroon" var/target_role_type=0 martyr_compatible = 1 @@ -191,7 +224,11 @@ GLOBAL_LIST_EMPTY(objectives) else explanation_text = "Free Objective" +/datum/objective/maroon/admin_edit(mob/admin) + admin_simple_target_pick(admin) + /datum/objective/debrain + name = "debrain" var/target_role_type=0 /datum/objective/debrain/find_target_by_role(role, role_type=0, invert=0) @@ -222,7 +259,11 @@ GLOBAL_LIST_EMPTY(objectives) else explanation_text = "Free Objective" +/datum/objective/debrain/admin_edit(mob/admin) + admin_simple_target_pick(admin) + /datum/objective/protect//The opposite of killing a dude. + name = "protect" martyr_compatible = 1 var/target_role_type = 0 var/human_check = TRUE @@ -243,10 +284,15 @@ GLOBAL_LIST_EMPTY(objectives) else explanation_text = "Free Objective" +/datum/objective/protect/admin_edit(mob/admin) + admin_simple_target_pick(admin) + /datum/objective/protect/nonhuman + name = "protect nonhuman" human_check = FALSE /datum/objective/hijack + name = "hijack" explanation_text = "Hijack the shuttle to ensure no loyalist Nanotrasen crew escape alive and out of custody." team_explanation_text = "Hijack the shuttle to ensure no loyalist Nanotrasen crew escape alive and out of custody. Leave no team member behind." martyr_compatible = 0 //Technically you won't get both anyway. @@ -261,6 +307,7 @@ GLOBAL_LIST_EMPTY(objectives) return SSshuttle.emergency.is_hijacked() /datum/objective/block + name = "no organics on shuttle" explanation_text = "Do not allow any organic lifeforms to escape on the shuttle alive." martyr_compatible = 1 @@ -274,6 +321,7 @@ GLOBAL_LIST_EMPTY(objectives) return TRUE /datum/objective/purge + name = "no mutants on shuttle" explanation_text = "Ensure no mutant humanoid species are present aboard the escape shuttle." martyr_compatible = 1 @@ -288,6 +336,7 @@ GLOBAL_LIST_EMPTY(objectives) return TRUE /datum/objective/robot_army + name = "robot army" explanation_text = "Have at least eight active cyborgs synced to you." martyr_compatible = 0 @@ -304,6 +353,7 @@ GLOBAL_LIST_EMPTY(objectives) return counter >= 8 /datum/objective/escape + name = "escape" explanation_text = "Escape on the shuttle or an escape pod alive and without being in custody." team_explanation_text = "Have all members of your team escape on a shuttle or pod alive, without being in custody." @@ -316,6 +366,7 @@ GLOBAL_LIST_EMPTY(objectives) return TRUE /datum/objective/escape/escape_with_identity + name = "escape with identity" var/target_real_name // Has to be stored because the target's real_name can change over the course of the round var/target_missing_id @@ -351,7 +402,11 @@ GLOBAL_LIST_EMPTY(objectives) return TRUE return FALSE +/datum/objective/escape/escape_with_identity/admin_edit(mob/admin) + admin_simple_target_pick(admin) + /datum/objective/survive + name = "survive" explanation_text = "Stay alive until the end." /datum/objective/survive/check_completion() @@ -362,6 +417,7 @@ GLOBAL_LIST_EMPTY(objectives) return TRUE /datum/objective/survive/exist //Like survive, but works for silicons and zombies and such. + name = "survive nonhuman" /datum/objective/survive/exist/check_completion() var/list/datum/mind/owners = get_owners() @@ -371,6 +427,7 @@ GLOBAL_LIST_EMPTY(objectives) return TRUE /datum/objective/martyr + name = "martyr" explanation_text = "Die a glorious death." /datum/objective/martyr/check_completion() @@ -383,6 +440,7 @@ GLOBAL_LIST_EMPTY(objectives) return TRUE /datum/objective/nuclear + name = "nuclear" explanation_text = "Destroy the station with a nuclear device." martyr_compatible = 1 @@ -393,6 +451,7 @@ GLOBAL_LIST_EMPTY(objectives) GLOBAL_LIST_EMPTY(possible_items) /datum/objective/steal + name = "steal" var/datum/objective_item/targetinfo = null //Save the chosen item datum so we can access it later. var/obj/item/steal_target = null //Needed for custom objectives (they're just items, not datums). martyr_compatible = 0 @@ -430,18 +489,19 @@ GLOBAL_LIST_EMPTY(possible_items) explanation_text = "Free objective" return -/datum/objective/steal/proc/select_target() //For admins setting objectives manually. +/datum/objective/steal/admin_edit(mob/admin) var/list/possible_items_all = GLOB.possible_items+"custom" - var/new_target = input("Select target:", "Objective target", steal_target) as null|anything in possible_items_all + var/new_target = input(admin,"Select target:", "Objective target", steal_target) as null|anything in possible_items_all if (!new_target) return if (new_target == "custom") //Can set custom items. - var/obj/item/custom_target = input("Select type:","Type") as null|anything in typesof(/obj/item) - if (!custom_target) + var/custom_path = input(admin,"Search for target item type:","Type") as null|text + if (!custom_path) return + var/obj/item/custom_target = pick_closest_path(custom_path, make_types_fancy(subtypesof(/obj/item))) var/custom_name = initial(custom_target.name) - custom_name = stripped_input("Enter target name:", "Objective target", custom_name) + custom_name = stripped_input(admin,"Enter target name:", "Objective target", custom_name) if (!custom_name) return steal_target = custom_target @@ -449,7 +509,6 @@ GLOBAL_LIST_EMPTY(possible_items) else set_target(new_target) - return steal_target /datum/objective/steal/check_completion() var/list/datum/mind/owners = get_owners() @@ -476,6 +535,7 @@ GLOBAL_LIST_EMPTY(possible_items) GLOBAL_LIST_EMPTY(possible_items_special) /datum/objective/steal/special //ninjas are so special they get their own subtype good for them + name = "steal special" /datum/objective/steal/special/New() ..() @@ -487,8 +547,12 @@ GLOBAL_LIST_EMPTY(possible_items_special) return set_target(pick(GLOB.possible_items_special)) /datum/objective/steal/exchange + name = "exchange" martyr_compatible = 0 +/datum/objective/steal/exchange/admin_edit(mob/admin) + return + /datum/objective/steal/exchange/proc/set_faction(faction,otheragent) target = otheragent if(faction == "red") @@ -508,6 +572,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) /datum/objective/steal/exchange/backstab + name = "prevent exchange" /datum/objective/steal/exchange/backstab/set_faction(faction) if(faction == "red") @@ -519,12 +584,17 @@ GLOBAL_LIST_EMPTY(possible_items_special) /datum/objective/download + name = "download" /datum/objective/download/proc/gen_amount_goal() target_amount = rand(20,40) - explanation_text = "Download [target_amount] research node\s." + update_explanation_text() return target_amount +/datum/objective/download/update_explanation_text() + ..() + explanation_text = "Download [target_amount] research node\s." + /datum/objective/download/check_completion() var/datum/techweb/checking = new var/list/datum/mind/owners = get_owners() @@ -541,13 +611,24 @@ GLOBAL_LIST_EMPTY(possible_items_special) TD.stored_research.copy_research_to(checking) return checking.researched_nodes.len >= target_amount +/datum/objective/download/admin_edit(mob/admin) + var/count = input(admin,"How many nodes ?","Nodes",target_amount) as num|null + if(count) + target_amount = count + update_explanation_text() + /datum/objective/capture + name = "capture" var/captured_amount = 0 /datum/objective/capture/proc/gen_amount_goal() - target_amount = rand(5,10) - explanation_text = "Capture [target_amount] lifeform\s with an energy net. Live, rare specimens are worth more." - return target_amount + target_amount = rand(5,10) + explanation_text = "Capture [target_amount] lifeform\s with an energy net. Live, rare specimens are worth more." + return target_amount + +/datum/objective/capture/update_explanation_text() + . = ..() + explanation_text = "Capture [target_amount] lifeform\s with an energy net. Live, rare specimens are worth more." /datum/objective/capture/check_completion()//Basically runs through all the mobs in the area to determine how much they are worth. /*var/area/centcom/holding/A = GLOB.areas_by_type[/area/centcom/holding] @@ -576,10 +657,16 @@ GLOBAL_LIST_EMPTY(possible_items_special) captured_amount+=2*/ //Removed in favour of adding points on capture, in energy_net_nets.dm return captured_amount >= target_amount +/datum/objective/capture/admin_edit(mob/admin) + var/count = input(admin,"How many mobs to capture ?","capture",target_amount) as num|null + if(count) + target_amount = count + update_explanation_text() //Changeling Objectives /datum/objective/absorb + name = "absorb" /datum/objective/absorb/proc/gen_amount_goal(lowbound = 4, highbound = 6) target_amount = rand (lowbound,highbound) @@ -595,9 +682,19 @@ GLOBAL_LIST_EMPTY(possible_items_special) n_p ++ target_amount = min(target_amount, n_p) - explanation_text = "Extract [target_amount] compatible genome\s." + update_explanation_text() return target_amount +/datum/objective/absorb/update_explanation_text() + . = ..() + explanation_text = "Extract [target_amount] compatible genome\s." + +/datum/objective/absorb/admin_edit(mob/admin) + var/count = input(admin,"How many people to absorb?","absorb",target_amount) as num|null + if(count) + target_amount = count + update_explanation_text() + /datum/objective/absorb/check_completion() var/list/datum/mind/owners = get_owners() var/absorbedcount = 0 @@ -611,6 +708,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) return absorbedcount >= target_amount /datum/objective/absorb_most + name = "absorb most" explanation_text = "Extract more compatible genomes than any other Changeling." /datum/objective/absorb_most/check_completion() @@ -631,6 +729,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) return TRUE /datum/objective/absorb_changeling + name = "absorb changeling" explanation_text = "Absorb another Changeling." /datum/objective/absorb_changeling/check_completion() @@ -653,6 +752,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) //End Changeling Objectives /datum/objective/destroy + name = "destroy AI" martyr_compatible = 1 /datum/objective/destroy/find_target() @@ -674,10 +774,20 @@ GLOBAL_LIST_EMPTY(possible_items_special) else explanation_text = "Free Objective" +/datum/objective/destroy/admin_edit(mob/admin) + var/list/possible_targets = active_ais(1) + if(possible_targets.len) + var/mob/new_target = input(admin,"Select target:", "Objective target") as null|anything in possible_targets + target = new_target.mind + else + to_chat(admin, "No active AIs with minds") + update_explanation_text() + /datum/objective/destroy/internal var/stolen = FALSE //Have we already eliminated this target? /datum/objective/steal_five_of_type + name = "steal five of" explanation_text = "Steal at least five items!" var/list/wanted_items = list(/obj/item) @@ -686,10 +796,12 @@ GLOBAL_LIST_EMPTY(possible_items_special) wanted_items = typecacheof(wanted_items) /datum/objective/steal_five_of_type/summon_guns + name = "steal guns" explanation_text = "Steal at least five guns!" wanted_items = list(/obj/item/gun) /datum/objective/steal_five_of_type/summon_magic + name = "steal magic" explanation_text = "Steal at least five magical artefacts!" wanted_items = list(/obj/item/spellbook, /obj/item/gun/magic, /obj/item/clothing/suit/space/hardsuit/wizard, /obj/item/scrying, /obj/item/antag_spawner/contract, /obj/item/necromantic_stone) @@ -705,6 +817,14 @@ GLOBAL_LIST_EMPTY(possible_items_special) stolen_count++ return stolen_count >= 5 +//Created by admin tools +/datum/objective/custom + name = "custom" + +/datum/objective/custom/admin_edit(mob/admin) + var/expl = stripped_input(admin, "Custom objective:", "Objective", explanation_text) + if(expl) + explanation_text = expl //////////////////////////////// // Changeling team objectives // diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 667c1f6054..e2dcf552c1 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -113,11 +113,6 @@ Class Procs: var/atom/movable/occupant = null var/speed_process = FALSE // Process as fast as possible? var/obj/item/circuitboard/circuit // Circuit to be created and inserted when the machinery is created - var/obj/item/card/id/inserted_scan_id - var/obj/item/card/id/inserted_modify_id - var/list/region_access = null // For the identification console (card.dm) - var/list/head_subordinates = null // For the identification console (card.dm) - var/authenticated = 0 // For the identification console (card.dm) var/interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_SET_MACHINE @@ -459,22 +454,20 @@ Class Procs: /obj/machinery/examine(mob/user) . = ..() if(stat & BROKEN) - . += "It looks broken and non-functional." + to_chat(user, "It looks broken and non-functional.") if(!(resistance_flags & INDESTRUCTIBLE)) if(resistance_flags & ON_FIRE) - . += "It's on fire!" + to_chat(user, "It's on fire!") var/healthpercent = (obj_integrity/max_integrity) * 100 switch(healthpercent) if(50 to 99) - . += "It looks slightly damaged." + to_chat(user, "It looks slightly damaged.") if(25 to 50) - . += "It appears heavily damaged." + to_chat(user, "It appears heavily damaged.") if(0 to 25) - . += "It's falling apart!" + to_chat(user, "It's falling apart!") if(user.research_scanner && component_parts) - . += display_parts(user, TRUE) - if(inserted_scan_id || inserted_modify_id) - . += "Alt-click to eject the ID card." + to_chat(user, display_parts(user, TRUE)) //called on machinery construction (i.e from frame to machinery) but not on initialization /obj/machinery/proc/on_construction() @@ -509,73 +502,3 @@ Class Procs: . = . % 9 AM.pixel_x = -8 + ((.%3)*8) AM.pixel_y = -8 + (round( . / 3)*8) - -/obj/machinery/proc/id_insert_scan(mob/user, obj/item/card/id/I) - I = user.get_active_held_item() - if(istype(I)) - if(inserted_scan_id) - to_chat(user, "There's already an ID card in the console!") - return - if(!user.transferItemToLoc(I, src)) - return - inserted_scan_id = I - user.visible_message("[user] inserts an ID card into the console.", \ - "You insert the ID card into the console.") - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) - updateUsrDialog() - -/obj/machinery/proc/id_eject_scan(mob/user) - if(!inserted_scan_id) - to_chat(user, "There's no ID card in the console!") - return - if(inserted_scan_id) - inserted_scan_id.forceMove(drop_location()) - if(!issilicon(user) && Adjacent(user)) - user.put_in_hands(inserted_scan_id) - inserted_scan_id = null - user.visible_message("[user] gets an ID card from the console.", \ - "You get the ID card from the console.") - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) - updateUsrDialog() - -/obj/machinery/proc/id_eject_modify(mob/user) - if(inserted_modify_id) - GLOB.data_core.manifest_modify(inserted_modify_id.registered_name, inserted_modify_id.assignment) - inserted_modify_id.update_label() - inserted_modify_id.forceMove(drop_location()) - if(!issilicon(user) && Adjacent(user)) - user.put_in_hands(inserted_modify_id) - user.visible_message("[user] gets an ID card from the console.", \ - "You get the ID card from the console.") - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) - inserted_modify_id = null - region_access = null - head_subordinates = null - updateUsrDialog() - -/obj/machinery/proc/id_insert_modify(mob/user) - var/obj/item/card/id/I = user.get_active_held_item() - if(istype(I)) - if(inserted_modify_id) - to_chat(user, "There's already an ID card in the console!") - return - if(!user.transferItemToLoc(I, src)) - return - inserted_modify_id = I - user.visible_message("[user] inserts an ID card into the console.", \ - "You insert the ID card into the console.") - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) - updateUsrDialog() - -/obj/machinery/AltClick(mob/user) - . = ..() - if(!user.canUseTopic(src, !issilicon(user)) || !is_operational()) - return - if(inserted_modify_id) - id_eject_modify(user) - authenticated = FALSE - return - if(inserted_scan_id) - id_eject_scan(user) - authenticated = FALSE - return diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm index 3c3f0e7f0f..2eea845c70 100644 --- a/code/game/machinery/computer/_computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -13,6 +13,7 @@ var/icon_keyboard = "generic_key" var/icon_screen = "generic" var/clockwork = FALSE + var/authenticated = FALSE /obj/machinery/computer/Initialize(mapload, obj/item/circuitboard/C) . = ..() @@ -34,9 +35,9 @@ /obj/machinery/computer/ratvar_act() if(!clockwork) clockwork = TRUE - icon_screen = "ratvar[rand(1, 4)]" - icon_keyboard = "ratvar_key[rand(1, 6)]" - icon_state = "ratvarcomputer[rand(1, 4)]" + icon_screen = "ratvar[rand(1, 3)]" + icon_keyboard = "ratvar_key[rand(1, 2)]" + icon_state = "ratvarcomputer" update_icon() /obj/machinery/computer/narsie_act() diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 4bce450359..8d950f8458 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -1,8 +1,7 @@ #define ARCADE_WEIGHT_TRICK 4 #define ARCADE_WEIGHT_USELESS 2 #define ARCADE_WEIGHT_RARE 1 -#define ARCADE_WEIGHT_PLUSH 65 - +#define ARCADE_RATIO_PLUSH 0.20 // average 1 out of 6 wins is a plush. /obj/machinery/computer/arcade name = "random arcade" @@ -27,7 +26,6 @@ /obj/item/toy/katana = ARCADE_WEIGHT_TRICK, /obj/item/toy/minimeteor = ARCADE_WEIGHT_TRICK, /obj/item/toy/nuke = ARCADE_WEIGHT_TRICK, - /obj/item/toy/plush/random = ARCADE_WEIGHT_PLUSH, /obj/item/toy/redbutton = ARCADE_WEIGHT_TRICK, /obj/item/toy/spinningtoy = ARCADE_WEIGHT_TRICK, /obj/item/toy/sword = ARCADE_WEIGHT_TRICK, @@ -88,8 +86,12 @@ /obj/item/circuitboard/computer/arcade/amputation = 2) var/thegame = pickweight(gameodds) var/obj/item/circuitboard/CB = new thegame() - new CB.build_path(loc, CB) + var/obj/machinery/computer/arcade/A = new CB.build_path(loc, CB) + A.setDir(dir) return INITIALIZE_HINT_QDEL + //The below object acts as a spawner with a wide array of possible picks, most being uninspired references to past/current player characters. + //Nevertheless, this keeps its ratio constant with the sum of all the others prizes. + prizes[/obj/item/toy/plush/random] = counterlist_sum(prizes) * ARCADE_RATIO_PLUSH Reset() /obj/machinery/computer/arcade/proc/prizevend(mob/user, list/rarity_classes) diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 886851a6a8..9539dc281d 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -11,8 +11,6 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) icon_keyboard = "id_key" req_one_access = list(ACCESS_HEADS, ACCESS_CHANGE_IDS) circuit = /obj/item/circuitboard/computer/card - var/obj/item/card/id/scan = null - var/obj/item/card/id/modify = null var/mode = 0 var/printing = null var/target_dept = 0 //Which department this computer has access to. 0=all departments @@ -38,68 +36,68 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) //This is used to keep track of opened positions for jobs to allow instant closing //Assoc array: "JobName" = (int) - var/list/opened_positions = list(); + var/list/opened_positions = list() + var/obj/item/card/id/inserted_scan_id + var/obj/item/card/id/inserted_modify_id + var/list/region_access = null + var/list/head_subordinates = null light_color = LIGHT_COLOR_BLUE /obj/machinery/computer/card/examine(mob/user) ..() - if(scan || modify) + if(inserted_scan_id || inserted_modify_id) to_chat(user, "Alt-click to eject the ID card.") /obj/machinery/computer/card/Initialize() . = ..() change_position_cooldown = CONFIG_GET(number/id_console_jobslot_delay) -/obj/machinery/computer/card/attackby(obj/O, mob/user, params)//TODO:SANITY - if(istype(O, /obj/item/card/id)) - var/obj/item/card/id/idcard = O - if(check_access(idcard)) - if(!scan) - if (!user.transferItemToLoc(idcard,src)) - return - scan = idcard - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) - else if(!modify) - if (!user.transferItemToLoc(idcard,src)) - return - modify = idcard - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) +/obj/machinery/computer/card/examine(mob/user) + . = ..() + if(inserted_scan_id || inserted_modify_id) + to_chat(user, "Alt-click to eject the ID card.") + +/obj/machinery/computer/card/attackby(obj/I, mob/user, params) + if(istype(I, /obj/item/card/id)) + if(!inserted_scan_id) + if(id_insert(user, I, inserted_scan_id)) + inserted_scan_id = I + return + if(!inserted_modify_id) + if(id_insert(user, I, inserted_modify_id)) + inserted_modify_id = I + return else - if(!modify) - if (!user.transferItemToLoc(idcard,src)) - return - modify = idcard - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) - updateUsrDialog() + to_chat(user, "There's already an ID card in the console!") else return ..() /obj/machinery/computer/card/Destroy() - if(scan) - qdel(scan) - scan = null - if(modify) - qdel(modify) - modify = null + if(inserted_scan_id) + qdel(inserted_scan_id) + inserted_scan_id = null + if(inserted_modify_id) + qdel(inserted_modify_id) + inserted_modify_id = null return ..() /obj/machinery/computer/card/handle_atom_del(atom/A) ..() - if(A == scan) - scan = null + if(A == inserted_scan_id) + inserted_scan_id = null updateUsrDialog() - if(A == modify) - modify = null + if(A == inserted_modify_id) + inserted_modify_id = null updateUsrDialog() /obj/machinery/computer/card/on_deconstruction() - if(scan) - scan.forceMove(drop_location()) - scan = null - if(modify) - modify.forceMove(drop_location()) - modify = null + if(inserted_scan_id) + inserted_scan_id.forceMove(drop_location()) + inserted_scan_id = null + if(inserted_modify_id) + inserted_modify_id.forceMove(drop_location()) + inserted_modify_id = null //Check if you can't open a new position for a certain job /obj/machinery/computer/card/proc/job_blacklisted(jobtitle) @@ -130,9 +128,50 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) return -1 return 0 +/obj/machinery/computer/card/proc/id_insert(mob/user, obj/item/card/id/I, target) + if(istype(I)) + if(target) + to_chat(user, "There's already an ID card in the console!") + return FALSE + if(!user.transferItemToLoc(I, src)) + return FALSE + user.visible_message("[user] inserts an ID card into the console.", \ + "You insert the ID card into the console.") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + updateUsrDialog() + return TRUE + +/obj/machinery/computer/card/proc/id_eject(mob/user, obj/target) + if(!target) + to_chat(user, "There's no ID card in the console!") + return FALSE + else + target.forceMove(drop_location()) + if(!issilicon(user) && Adjacent(user)) + user.put_in_hands(target) + user.visible_message("[user] gets an ID card from the console.", \ + "You get the ID card from the console.") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + updateUsrDialog() + return TRUE + +/obj/machinery/computer/card/AltClick(mob/user) + ..() + if(!user.canUseTopic(src, !issilicon(user)) || !is_operational()) + return + if(inserted_modify_id) + if(id_eject(user, inserted_modify_id)) + inserted_modify_id = null + authenticated = FALSE + return + if(inserted_scan_id) + if(id_eject(user, inserted_scan_id)) + inserted_scan_id = null + authenticated = FALSE + return + /obj/machinery/computer/card/ui_interact(mob/user) . = ..() - var/dat if(!SSticker) return @@ -147,15 +186,15 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) dat = "Return" dat += " || Confirm Identity: " var/S - if(scan) - S = html_encode(scan.name) + if(inserted_scan_id) + S = html_encode(inserted_scan_id.name) else S = "--------" - dat += "[S]" + dat += "[S]" dat += "" dat += "" var/ID - if(scan && (ACCESS_CHANGE_IDS in scan.access) && !target_dept) + if(inserted_scan_id && (ACCESS_CHANGE_IDS in inserted_scan_id.access) && !target_dept) ID = 1 else ID = 0 @@ -221,33 +260,33 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) var/target_name var/target_owner var/target_rank - if(modify) - target_name = html_encode(modify.name) + if(inserted_modify_id) + target_name = html_encode(inserted_modify_id.name) else target_name = "--------" - if(modify && modify.registered_name) - target_owner = html_encode(modify.registered_name) + if(inserted_modify_id && inserted_modify_id.registered_name) + target_owner = html_encode(inserted_modify_id.registered_name) else target_owner = "--------" - if(modify && modify.assignment) - target_rank = html_encode(modify.assignment) + if(inserted_modify_id && inserted_modify_id.assignment) + target_rank = html_encode(inserted_modify_id.assignment) else target_rank = "Unassigned" var/scan_name - if(scan) - scan_name = html_encode(scan.name) + if(inserted_scan_id) + scan_name = html_encode(inserted_scan_id.name) else scan_name = "--------" if(!authenticated) header += "
Please insert the cards into the slots
" - header += "Target: [target_name]
" - header += "Confirm Identity: [scan_name]
" + header += "Target: [target_name]
" + header += "Confirm Identity: [scan_name]
" else header += "

" - header += "Remove [target_name] || " - header += "Remove [scan_name]
" + header += "Remove [target_name] || " + header += "Remove [scan_name]
" header += "Access Crew Manifest
" header += "Log Out
" @@ -262,7 +301,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) var/body - if (authenticated && modify) + if (authenticated && inserted_modify_id) var/carddesc = text("") var/jobs = text("") @@ -303,7 +342,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) if(istype(src, /obj/machinery/computer/card/centcom)) accesses += "
Central Command:
" for(var/A in get_all_centcom_access()) - if(A in modify.access) + if(A in inserted_modify_id.access) accesses += "[replacetext(get_centcom_access_desc(A), " ", " ")] " else accesses += "[replacetext(get_centcom_access_desc(A), " ", " ")] " @@ -321,7 +360,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) continue accesses += "
JobSlotsOpen jobClose jobPrioritize
" for(var/A in get_region_accesses(i)) - if(A in modify.access) + if(A in inserted_modify_id.access) accesses += "[replacetext(get_access_desc(A), " ", " ")] " else accesses += "[replacetext(get_access_desc(A), " ", " ")] " @@ -353,52 +392,66 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) usr.set_machine(src) switch(href_list["choice"]) - if ("modify") - eject_id_modify(usr) - if ("scan") - eject_id_scan(usr) + if ("inserted_modify_id") + if (inserted_modify_id) + if(id_eject(usr, inserted_modify_id)) + inserted_modify_id = null + else + var/mob/M = usr + var/obj/item/card/id/I = M.get_idcard(TRUE) + if(id_insert(usr, I, inserted_modify_id)) + inserted_modify_id = I + if ("inserted_scan_id") + if (inserted_scan_id) + if(id_eject(usr, inserted_scan_id)) + inserted_scan_id = null + else + var/mob/M = usr + var/obj/item/card/id/I = M.get_idcard(TRUE) + if(id_insert(usr, I, inserted_scan_id)) + inserted_scan_id = I if ("auth") - if ((!( authenticated ) && (scan || issilicon(usr)) && (modify || mode))) - if (check_access(scan)) + if ((!( authenticated ) && (inserted_scan_id || issilicon(usr)) && (inserted_modify_id || mode))) + if (check_access(inserted_scan_id)) region_access = list() head_subordinates = list() - if(ACCESS_CHANGE_IDS in scan.access) + if(ACCESS_CHANGE_IDS in inserted_scan_id.access) if(target_dept) head_subordinates = get_all_jobs() region_access |= target_dept authenticated = 1 else authenticated = 2 - playsound(src, 'sound/machines/terminal_on.ogg', 50, 0) + playsound(src, 'sound/machines/terminal_on.ogg', 50, FALSE) else - if((ACCESS_HOP in scan.access) && ((target_dept==1) || !target_dept)) + if((ACCESS_HOP in inserted_scan_id.access) && ((target_dept==1) || !target_dept)) region_access |= 1 get_subordinates("Head of Personnel") - if((ACCESS_HOS in scan.access) && ((target_dept==2) || !target_dept)) + if((ACCESS_HOS in inserted_scan_id.access) && ((target_dept==2) || !target_dept)) region_access |= 2 get_subordinates("Head of Security") - if((ACCESS_CMO in scan.access) && ((target_dept==3) || !target_dept)) + if((ACCESS_CMO in inserted_scan_id.access) && ((target_dept==3) || !target_dept)) region_access |= 3 get_subordinates("Chief Medical Officer") - if((ACCESS_RD in scan.access) && ((target_dept==4) || !target_dept)) + if((ACCESS_RD in inserted_scan_id.access) && ((target_dept==4) || !target_dept)) region_access |= 4 get_subordinates("Research Director") - if((ACCESS_CE in scan.access) && ((target_dept==5) || !target_dept)) + if((ACCESS_CE in inserted_scan_id.access) && ((target_dept==5) || !target_dept)) region_access |= 5 get_subordinates("Chief Engineer") - if((ACCESS_QM in scan.access) && ((target_dept==6) || !target_dept)) + if((ACCESS_QM in inserted_scan_id.access) && ((target_dept==6) || !target_dept)) region_access |= 6 get_subordinates("Quartermaster") if(region_access) authenticated = 1 - else if ((!( authenticated ) && issilicon(usr)) && (!modify)) + else if ((!( authenticated ) && issilicon(usr)) && (!inserted_modify_id)) to_chat(usr, "You can't modify an ID without an ID inserted to modify! Once one is in the modify slot on the computer, you can log in.") if ("logout") region_access = null head_subordinates = null authenticated = 0 - playsound(src, 'sound/machines/terminal_off.ogg', 50, 0) + playsound(src, 'sound/machines/terminal_off.ogg', 50, FALSE) if("access") if(href_list["allowed"]) @@ -406,20 +459,20 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) var/access_type = text2num(href_list["access_target"]) var/access_allowed = text2num(href_list["allowed"]) if(access_type in (istype(src, /obj/machinery/computer/card/centcom)?get_all_centcom_access() : get_all_accesses())) - modify.access -= access_type + inserted_modify_id.access -= access_type if(access_allowed == 1) - modify.access += access_type - playsound(src, "terminal_type", 50, 0) + inserted_modify_id.access += access_type + playsound(src, "terminal_type", 50, FALSE) if ("assign") if (authenticated == 2) var/t1 = href_list["assign_target"] if(t1 == "Custom") - var/newJob = reject_bad_text(input("Enter a custom job assignment.", "Assignment", modify ? modify.assignment : "Unassigned"), MAX_NAME_LEN) + var/newJob = reject_bad_text(input("Enter a custom job assignment.", "Assignment", inserted_modify_id ? inserted_modify_id.assignment : "Unassigned"), MAX_NAME_LEN) if(newJob) t1 = newJob else if(t1 == "Unassigned") - modify.access -= get_all_accesses() + inserted_modify_id.access -= get_all_accesses() else var/datum/job/jobdatum @@ -434,24 +487,24 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) updateUsrDialog() return - modify.access = ( istype(src, /obj/machinery/computer/card/centcom) ? get_centcom_access(t1) : jobdatum.get_access() ) - if (modify) - modify.assignment = t1 - playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) + inserted_modify_id.access = ( istype(src, /obj/machinery/computer/card/centcom) ? get_centcom_access(t1) : jobdatum.get_access() ) + if (inserted_modify_id) + inserted_modify_id.assignment = t1 + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) if ("demote") - if(modify.assignment in head_subordinates || modify.assignment == "Assistant") - modify.assignment = "Unassigned" - playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) + if(inserted_modify_id.assignment in head_subordinates || inserted_modify_id.assignment == "Assistant") + inserted_modify_id.assignment = "Unassigned" + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) else to_chat(usr, "You are not authorized to demote this position.") if ("reg") if (authenticated) - var/t2 = modify - if ((authenticated && modify == t2 && (in_range(src, usr) || issilicon(usr)) && isturf(loc))) + var/t2 = inserted_modify_id + if ((authenticated && inserted_modify_id == t2 && (in_range(src, usr) || issilicon(usr)) && isturf(loc))) var/newName = reject_bad_name(href_list["reg"]) if(newName) - modify.registered_name = newName - playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) + inserted_modify_id.registered_name = newName + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) else to_chat(usr, "Invalid name entered.") updateUsrDialog() @@ -462,11 +515,11 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) if("return") //DISPLAY MAIN MENU mode = 3; - playsound(src, "terminal_type", 25, 0) + playsound(src, "terminal_type", 25, FALSE) if("make_job_available") // MAKE ANOTHER JOB POSITION AVAILABLE FOR LATE JOINERS - if(scan && (ACCESS_CHANGE_IDS in scan.access) && !target_dept) + if(inserted_scan_id && (ACCESS_CHANGE_IDS in inserted_scan_id.access) && !target_dept) var/edit_job_target = href_list["job"] var/datum/job/j = SSjob.GetJob(edit_job_target) if(!j) @@ -479,11 +532,11 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) GLOB.time_last_changed_position = world.time / 10 j.total_positions++ opened_positions[edit_job_target]++ - playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) if("make_job_unavailable") // MAKE JOB POSITION UNAVAILABLE FOR LATE JOINERS - if(scan && (ACCESS_CHANGE_IDS in scan.access) && !target_dept) + if(inserted_scan_id && (ACCESS_CHANGE_IDS in inserted_scan_id.access) && !target_dept) var/edit_job_target = href_list["job"] var/datum/job/j = SSjob.GetJob(edit_job_target) if(!j) @@ -497,11 +550,11 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) GLOB.time_last_changed_position = world.time / 10 j.total_positions-- opened_positions[edit_job_target]-- - playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) + playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE) if ("prioritize_job") // TOGGLE WHETHER JOB APPEARS AS PRIORITIZED IN THE LOBBY - if(scan && (ACCESS_CHANGE_IDS in scan.access) && !target_dept) + if(inserted_scan_id && (ACCESS_CHANGE_IDS in inserted_scan_id.access) && !target_dept) var/priority_target = href_list["job"] var/datum/job/j = SSjob.GetJob(priority_target) if(!j) @@ -518,7 +571,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) else SSjob.prioritized_jobs += j to_chat(usr, "[j.title] has been successfully [priority ? "prioritized" : "unprioritized"]. Potential employees will notice your request.") - playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) if ("print") if (!( printing )) @@ -531,59 +584,9 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) P.info = t1 P.name = "paper- 'Crew Manifest'" printing = null - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) - if (modify) - modify.update_label() - updateUsrDialog() - -/obj/machinery/computer/card/AltClick(mob/user) - if(!user.canUseTopic(src, !issilicon(user)) || !is_operational()) - return - if(scan) - eject_id_scan(user) - if(modify) - eject_id_modify(user) - -/obj/machinery/computer/card/proc/eject_id_scan(mob/user) - if(scan) - scan.forceMove(drop_location()) - if(!issilicon(user) && Adjacent(user)) - user.put_in_hands(scan) - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) - scan = null - else //switching the ID with the one you're holding - if(issilicon(user) || !Adjacent(user)) - return - var/obj/item/I = user.get_active_held_item() - if(istype(I, /obj/item/card/id)) - if(!user.transferItemToLoc(I,src)) - return - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) - scan = I - authenticated = FALSE - updateUsrDialog() - -/obj/machinery/computer/card/proc/eject_id_modify(mob/user) - if(modify) - GLOB.data_core.manifest_modify(modify.registered_name, modify.assignment) - modify.update_label() - modify.forceMove(drop_location()) - if(!issilicon(user) && Adjacent(user)) - user.put_in_hands(modify) - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) - modify = null - region_access = null - head_subordinates = null - else //switching the ID with the one you're holding - if(issilicon(user) || !Adjacent(user)) - return - var/obj/item/I = user.get_active_held_item() - if(istype(I, /obj/item/card/id)) - if (!user.transferItemToLoc(I,src)) - return - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) - modify = I - authenticated = FALSE + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + if (inserted_modify_id) + inserted_modify_id.update_label() updateUsrDialog() /obj/machinery/computer/card/proc/get_subordinates(rank) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 5cbd2d8975..43cfbdb33b 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -298,13 +298,15 @@ src.updateUsrDialog() playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) say("Initiating scan...") - + var/prev_locked = scanner.locked + scanner.locked = TRUE spawn(20) src.scan_occupant(scanner.occupant) loading = 0 src.updateUsrDialog() playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) + scanner.locked = prev_locked //No locking an open scanner. diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 557f2f0636..f3612078d6 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -335,7 +335,7 @@ Nuke_request(input, usr) to_chat(usr, "Request sent.") usr.log_message("has requested the nuclear codes from CentCom", LOG_SAY) - priority_announce("The codes for the on-station nuclear self-destruct have been requested by [usr]. Confirmation or denial of this request will be sent shortly.", "Nuclear Self Destruct Codes Requested",'sound/ai/commandreport.ogg') + priority_announce("The codes for the on-station nuclear self-destruct have been requested by [usr]. Confirmation or denial of this request will be sent shortly.", "Nuclear Self Destruct Codes Requested","commandreport") CM.lastTimeUsed = world.time diff --git a/code/game/machinery/computer/gulag_teleporter.dm b/code/game/machinery/computer/gulag_teleporter.dm deleted file mode 100644 index 68cbf03f03..0000000000 --- a/code/game/machinery/computer/gulag_teleporter.dm +++ /dev/null @@ -1,163 +0,0 @@ -//computer that handle the points and teleports the prisoner -/obj/machinery/computer/gulag_teleporter_computer - name = "labor camp teleporter console" - desc = "Used to send criminals to the Labor Camp." - icon_screen = "explosive" - icon_keyboard = "security_key" - req_access = list(ACCESS_ARMORY) - circuit = /obj/item/circuitboard/computer/gulag_teleporter_console - var/default_goal = 200 - var/obj/item/card/id/prisoner/id = null - var/obj/machinery/gulag_teleporter/teleporter = null - var/obj/structure/gulag_beacon/beacon = null - var/mob/living/carbon/human/prisoner = null - var/datum/data/record/temporary_record = null - - light_color = LIGHT_COLOR_RED - -/obj/machinery/computer/gulag_teleporter_computer/Initialize() - . = ..() - scan_machinery() - -/obj/machinery/computer/gulag_teleporter_computer/Destroy() - if(id) - id.forceMove(get_turf(src)) - return ..() - -/obj/machinery/computer/gulag_teleporter_computer/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/card/id/prisoner)) - if(!id) - if (!user.transferItemToLoc(W,src)) - return - id = W - to_chat(user, "You insert [W].") - return - else - to_chat(user, "There's an ID inserted already.") - return ..() - -/obj/machinery/computer/gulag_teleporter_computer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ - datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) - ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) - if(!ui) - ui = new(user, src, ui_key, "gulag_console", name, 455, 440, master_ui, state) - ui.open() - -/obj/machinery/computer/gulag_teleporter_computer/ui_data(mob/user) - var/list/data = list() - - var/list/prisoner_list = list() - var/can_teleport = FALSE - - if(teleporter && (teleporter.occupant && ishuman(teleporter.occupant))) - prisoner = teleporter.occupant - prisoner_list["name"] = prisoner.real_name - if(id) - can_teleport = TRUE - if(!isnull(GLOB.data_core.general)) - for(var/r in GLOB.data_core.security) - var/datum/data/record/R = r - if(R.fields["name"] == prisoner_list["name"]) - temporary_record = R - prisoner_list["crimstat"] = temporary_record.fields["criminal"] - - data["prisoner"] = prisoner_list - - if(teleporter) - data["teleporter"] = teleporter - data["teleporter_location"] = "([teleporter.x], [teleporter.y], [teleporter.z])" - data["teleporter_lock"] = teleporter.locked - data["teleporter_state_open"] = teleporter.state_open - if(beacon) - data["beacon"] = beacon - data["beacon_location"] = "([beacon.x], [beacon.y], [beacon.z])" - if(id) - data["id"] = id - data["id_name"] = id.registered_name - data["goal"] = id.goal - data["can_teleport"] = can_teleport - - return data - -/obj/machinery/computer/gulag_teleporter_computer/ui_act(action, list/params) - if(..()) - return - if(!allowed(usr)) - to_chat(usr, "Access denied.") - return - switch(action) - if("scan_teleporter") - teleporter = findteleporter() - if("scan_beacon") - beacon = findbeacon() - if("handle_id") - if(id) - usr.put_in_hands(id) - id = null - else - var/obj/item/I = usr.is_holding_item_of_type(/obj/item/card/id/prisoner) - if(I) - if(!usr.transferItemToLoc(I, src)) - return - id = I - if("set_goal") - var/new_goal = input("Set the amount of points:", "Points", id.goal) as num|null - if(!isnum(new_goal)) - return - if(!new_goal) - new_goal = default_goal - if (new_goal > 1000) - to_chat(usr, "The entered amount of points is too large. Points have instead been set to the maximum allowed amount.") - id.goal = CLAMP(new_goal, 0, 1000) //maximum 1000 points - if("toggle_open") - if(teleporter.locked) - to_chat(usr, "The teleporter is locked") - return - teleporter.toggle_open() - if("teleporter_lock") - if(teleporter.state_open) - to_chat(usr, "Close the teleporter before locking!") - return - teleporter.locked = !teleporter.locked - if("teleport") - if(!teleporter || !beacon) - return - addtimer(CALLBACK(src, .proc/teleport, usr), 5) - -/obj/machinery/computer/gulag_teleporter_computer/proc/scan_machinery() - teleporter = findteleporter() - beacon = findbeacon() - -/obj/machinery/computer/gulag_teleporter_computer/proc/findteleporter() - var/obj/machinery/gulag_teleporter/teleporterf = null - - for(var/direction in GLOB.cardinals) - teleporterf = locate(/obj/machinery/gulag_teleporter, get_step(src, direction)) - if(teleporterf && teleporterf.is_operational()) - return teleporterf - -/obj/machinery/computer/gulag_teleporter_computer/proc/findbeacon() - return locate(/obj/structure/gulag_beacon) - -/obj/machinery/computer/gulag_teleporter_computer/proc/teleport(mob/user) - if(!id) //incase the ID was removed after the transfer timer was set. - say("Warning: Unable to transfer prisoner without a valid Prisoner ID inserted!") - return - var/id_goal_not_set - if(!id.goal) - id_goal_not_set = TRUE - id.goal = default_goal - say("[id]'s ID card goal defaulting to [id.goal] points.") - log_game("[key_name(user)] teleported [key_name(prisoner)] to the Labor Camp [COORD(beacon)] for [id_goal_not_set ? "default goal of ":""][id.goal] points.") - teleporter.handle_prisoner(id, temporary_record) - playsound(src, 'sound/weapons/emitter.ogg', 50, 1) - prisoner.forceMove(get_turf(beacon)) - prisoner.Knockdown(40) // small travel dizziness - to_chat(prisoner, "The teleportation makes you a little dizzy.") - new /obj/effect/particle_effect/sparks(get_turf(prisoner)) - playsound(src, "sparks", 50, 1) - if(teleporter.locked) - teleporter.locked = FALSE - teleporter.toggle_open() - id = null - temporary_record = null diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index c912586ea3..33de8bfce2 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -22,12 +22,6 @@ /obj/machinery/computer/med_data/syndie icon_keyboard = "syndie_key" -/obj/machinery/computer/med_data/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/card/id)) - id_insert_scan(user) - else - return ..() - /obj/machinery/computer/med_data/ui_interact(mob/user) . = ..() if(isliving(user)) @@ -484,7 +478,7 @@ var/counter = 1 while(active2.fields[text("com_[]", counter)]) counter++ - active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []
[]", authenticated, rank, STATION_TIME_TIMESTAMP("hh:mm:ss"), time2text(world.realtime, "MMM DD"), GLOB.year_integer+540, t1) + active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []
[]", authenticated, rank, STATION_TIME_TIMESTAMP("hh:mm:ss"), time2text(world.realtime, "MMM DD"), GLOB.year_integer, t1) else if(href_list["del_c"]) if((istype(active2, /datum/data/record) && active2.fields[text("com_[]", href_list["del_c"])])) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index efb1039b8b..c9f2f28ab1 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -35,7 +35,8 @@ //Someone needs to break down the dat += into chunks instead of long ass lines. /obj/machinery/computer/secure_data/ui_interact(mob/user) . = ..() - playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) + if(isliving(user)) + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) if(src.z > 6) to_chat(user, "Unable to establish a connection: \black You're too far away from the station!") return @@ -455,7 +456,7 @@ What a mess.*/ var/counter = 1 while(active2.fields[text("com_[]", counter)]) counter++ - active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []
[]", src.authenticated, src.rank, STATION_TIME_TIMESTAMP("hh:mm:ss"), time2text(world.realtime, "MMM DD"), GLOB.year_integer+540, t1) + active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []
[]", src.authenticated, src.rank, STATION_TIME_TIMESTAMP("hh:mm:ss"), time2text(world.realtime, "MMM DD"), GLOB.year_integer, t1) if("Delete Record (ALL)") if(active1) diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index e358f10346..4d252f1a46 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -370,16 +370,14 @@ O.find_target() O.update_explanation_text() if(!(O.target)) - O.owner.objectives -= O qdel(O) - if(mob_occupant.mind && mob_occupant.mind.assigned_role) + if(mob_occupant.mind) //Handle job slot/tater cleanup. - var/job = mob_occupant.mind.assigned_role - SSjob.FreeRole(job) - if(mob_occupant.mind.objectives.len) - mob_occupant.mind.objectives.Cut() - mob_occupant.mind.special_role = null + if(mob_occupant.mind.assigned_role) + var/job = mob_occupant.mind.assigned_role + SSjob.FreeRole(job) + mob_occupant.mind.special_role = null // Delete them from datacore. diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 8704a4c749..becd89063f 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -249,10 +249,10 @@ return 0 /obj/machinery/door/airlock/plasma/attackby(obj/item/C, mob/user, params) - if(C.is_hot() > 300)//If the temperature of the object is over 300, then ignite + if(C.get_temperature() > 300)//If the temperature of the object is over 300, then ignite message_admins("Plasma airlock ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(src)]") log_game("Plasma airlock ignited by [key_name(user)] in [AREACOORD(src)]") - ignite(C.is_hot()) + ignite(C.get_temperature()) else return ..() @@ -499,7 +499,7 @@ SEND_SOUND(L, sound(pick('sound/hallucinations/turn_around1.ogg','sound/hallucinations/turn_around2.ogg'),0,1,50)) flash_color(L, flash_color="#960000", flash_time=20) L.Knockdown(40) - L.throw_at(throwtarget, 5, 1,src) + L.throw_at(throwtarget, 5, 1) return 0 /obj/machinery/door/airlock/cult/proc/conceal() diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 893f36acb3..79aef8ba7b 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -24,6 +24,8 @@ Possible to do for anyone motivated enough: * Holopad */ +GLOBAL_LIST_EMPTY(network_holopads) + #define HOLOPAD_PASSIVE_POWER_USAGE 1 #define HOLOGRAM_POWER_USAGE 2 @@ -55,7 +57,6 @@ Possible to do for anyone motivated enough: var/record_user //user that inititiated the recording var/obj/effect/overlay/holo_pad_hologram/replay_holo //replay hologram var/static/force_answer_call = FALSE //Calls will be automatically answered after a couple rings, here for debugging - var/static/list/holopads = list() var/obj/effect/overlay/holoray/ray var/ringing = FALSE var/offset = FALSE @@ -96,7 +97,7 @@ Possible to do for anyone motivated enough: /obj/machinery/holopad/Initialize() . = ..() if(on_network) - holopads += src + GLOB.network_holopads += src /obj/machinery/holopad/Destroy() if(outgoing_call) @@ -116,7 +117,7 @@ Possible to do for anyone motivated enough: QDEL_NULL(disk) - holopads -= src + GLOB.network_holopads -= src return ..() /obj/machinery/holopad/power_change() @@ -260,7 +261,7 @@ Possible to do for anyone motivated enough: temp += "Main Menu" if(usr.loc == loc) var/list/callnames = list() - for(var/I in holopads) + for(var/I in GLOB.network_holopads) var/area/A = get_area(I) if(A) LAZYADD(callnames[A], I) @@ -474,7 +475,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ var/obj/effect/overlay/holo_pad_hologram/h = masters[holo_owner] if(!h || h.HC) //Holocalls can't change source. return FALSE - for(var/pad in holopads) + for(var/pad in GLOB.network_holopads) var/obj/machinery/holopad/another = pad if(another == src) continue diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index c37c607a6e..6bf9930eec 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -515,7 +515,7 @@ GLOBAL_LIST_EMPTY(allCasters) if(href_list["set_channel_name"]) channel_name = stripped_input(usr, "Provide a Feed Channel Name", "Network Channel Handler", "", MAX_NAME_LEN) while (findtext(channel_name," ") == 1) - channel_name = copytext(channel_name,2,lentext(channel_name)+1) + channel_name = copytext(channel_name,2,length(channel_name)+1) updateUsrDialog() else if(href_list["set_channel_lock"]) c_locked = !c_locked diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 165170cf0f..289f075302 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -562,6 +562,7 @@ //Shooting Code: A.preparePixelProjectile(target, T) A.firer = src + A.fired_from = src A.fire() return A @@ -646,6 +647,7 @@ has_cover = 0 scan_range = 9 req_access = list(ACCESS_SYNDICATE) + mode = TURRET_LETHAL stun_projectile = /obj/item/projectile/bullet lethal_projectile = /obj/item/projectile/bullet lethal_projectile_sound = 'sound/weapons/gunshot.ogg' @@ -694,6 +696,24 @@ stun_projectile = /obj/item/projectile/bullet/syndicate_turret lethal_projectile = /obj/item/projectile/bullet/syndicate_turret +/obj/machinery/porta_turret/syndicate/shuttle + scan_range = 9 + shot_delay = 3 + stun_projectile = /obj/item/projectile/bullet/p50/penetrator/shuttle + lethal_projectile = /obj/item/projectile/bullet/p50/penetrator/shuttle + lethal_projectile_sound = 'sound/weapons/gunshot_smg.ogg' + stun_projectile_sound = 'sound/weapons/gunshot_smg.ogg' + armor = list("melee" = 50, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 80, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90) + +/obj/machinery/porta_turret/syndicate/shuttle/target(atom/movable/target) + if(target) + setDir(get_dir(base, target))//even if you can't shoot, follow the target + shootAt(target) + addtimer(CALLBACK(src, .proc/shootAt, target), 5) + addtimer(CALLBACK(src, .proc/shootAt, target), 10) + addtimer(CALLBACK(src, .proc/shootAt, target), 15) + return TRUE + /obj/machinery/porta_turret/ai faction = list("silicon") nonlethal_projectile = /obj/item/projectile/beam/disabler diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index e9216ca736..ec53cc3210 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -243,7 +243,7 @@ else line1 = "CARGO" line2 = SSshuttle.supply.getTimerStr() - if(lentext(line2) > CHARS_PER_LINE) + if(length(line2) > CHARS_PER_LINE) line2 = "Error" update_display(line1, line2) diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index ea51693135..431d4c30b3 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -3,3 +3,9 @@ internal_damage_threshold = 50 armor = list("melee" = 30, "bullet" = 30, "laser" = 15, "energy" = 20, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) mouse_pointer = 'icons/mecha/mecha_mouse.dmi' + var/spawn_tracked = TRUE + +/obj/mecha/combat/Initialize() + . = ..() + if(spawn_tracked) + trackers += new /obj/item/mecha_parts/mecha_tracking(src) \ No newline at end of file diff --git a/code/game/mecha/combat/durand.dm b/code/game/mecha/combat/durand.dm index cd7051d074..caaa3e3a00 100644 --- a/code/game/mecha/combat/durand.dm +++ b/code/game/mecha/combat/durand.dm @@ -19,7 +19,3 @@ /obj/mecha/combat/durand/RemoveActions(mob/living/user, human_occupant = 0) ..() defense_action.Remove(user) - -/obj/mecha/combat/Initialize() - . = ..() - trackers += new /obj/item/mecha_parts/mecha_tracking(src) diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index 564f308df3..c7c180af41 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -29,6 +29,7 @@ operation_req_access = list(ACCESS_SYNDICATE) wreckage = /obj/structure/mecha_wreckage/gygax/dark max_equip = 4 + spawn_tracked = FALSE /obj/mecha/combat/gygax/dark/loaded/Initialize() . = ..() @@ -48,7 +49,6 @@ return cell = new /obj/item/stock_parts/cell/hyper(src) - /obj/mecha/combat/gygax/GrantActions(mob/living/user, human_occupant = 0) ..() overload_action.Grant(user, src) @@ -65,7 +65,3 @@ /obj/mecha/combat/gygax/dark/RemoveActions(mob/living/user, human_occupant = 0) ..() thrusters_action.Remove(user) - -/obj/mecha/combat/Initialize() - . = ..() - trackers += new /obj/item/mecha_parts/mecha_tracking(src) diff --git a/code/game/mecha/combat/honker.dm b/code/game/mecha/combat/honker.dm index 4c32e9c367..ed29809f91 100644 --- a/code/game/mecha/combat/honker.dm +++ b/code/game/mecha/combat/honker.dm @@ -152,8 +152,4 @@ var/color="" for (var/i=0;i<6;i++) color = color+pick(colors) - return color - -/obj/mecha/combat/Initialize() - . = ..() - trackers += new /obj/item/mecha_parts/mecha_tracking(src) + return color \ No newline at end of file diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index 21f8259e69..42817b586c 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -16,6 +16,7 @@ force = 45 max_equip = 4 bumpsmash = 1 + spawn_tracked = FALSE /obj/mecha/combat/marauder/GrantActions(mob/living/user, human_occupant = 0) ..() diff --git a/code/game/mecha/combat/neovgre.dm b/code/game/mecha/combat/neovgre.dm index 2b2ed150e2..b1f2cdd02a 100644 --- a/code/game/mecha/combat/neovgre.dm +++ b/code/game/mecha/combat/neovgre.dm @@ -13,6 +13,7 @@ breach_time = 100 //ten seconds till all goes to shit recharge_rate = 100 wreckage = /obj/structure/mecha_wreckage/durand/neovgre + spawn_tracked = FALSE /obj/mecha/combat/neovgre/GrantActions(mob/living/user, human_occupant = 0) //No Eject action for you sonny jim, your life for Ratvar! internals_action.Grant(user, src) diff --git a/code/game/mecha/combat/phazon.dm b/code/game/mecha/combat/phazon.dm index 1264a647c4..15b865c1e9 100644 --- a/code/game/mecha/combat/phazon.dm +++ b/code/game/mecha/combat/phazon.dm @@ -27,7 +27,3 @@ ..() switch_damtype_action.Remove(user) phasing_action.Remove(user) - -/obj/mecha/combat/Initialize() - . = ..() - trackers += new /obj/item/mecha_parts/mecha_tracking(src) diff --git a/code/game/mecha/combat/reticence.dm b/code/game/mecha/combat/reticence.dm index 4cd8c01517..7e8c865517 100644 --- a/code/game/mecha/combat/reticence.dm +++ b/code/game/mecha/combat/reticence.dm @@ -18,6 +18,7 @@ stepsound = null turnsound = null opacity = 0 + spawn_tracked = FALSE /obj/mecha/combat/reticence/loaded/Initialize() . = ..() diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 7348c8a575..717c94362c 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1025,7 +1025,7 @@ /obj/mecha/log_message(message as text, message_type=LOG_GAME, color=null, log_globally) log.len++ - log[log.len] = list("time"="[STATION_TIME_TIMESTAMP("hh:mm:ss")]","date","year"="[GLOB.year_integer+540]","message"="[color?"":null][message][color?"":null]") + log[log.len] = list("time"="[STATION_TIME_TIMESTAMP("hh:mm:ss")]","date","year"="[GLOB.year_integer]","message"="[color?"":null][message][color?"":null]") ..() return log.len @@ -1034,9 +1034,6 @@ last_entry["message"] += "
[red?"":null][message][red?"":null]" return -GLOBAL_VAR_INIT(year, time2text(world.realtime,"YYYY")) -GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013??? - /////////////////////// ///// Power stuff ///// /////////////////////// diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 693d32e545..9c3df5395f 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -89,7 +89,6 @@ buckled_mob.clear_alert("buckled") buckled_mobs -= buckled_mob SEND_SIGNAL(src, COMSIG_MOVABLE_UNBUCKLE, buckled_mob, force) - SEND_SIGNAL(src, COMSIG_MOVABLE_UNBUCKLE, src, force) post_unbuckle_mob(.) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 2eb4a6aa0c..cab4a66fdd 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -45,11 +45,11 @@ if(!reagents.total_volume) //scooped up all of it qdel(src) return - if(W.is_hot()) //todo: make heating a reagent holder proc + if(W.get_temperature()) //todo: make heating a reagent holder proc if(istype(W, /obj/item/clothing/mask/cigarette)) return else - var/hotness = W.is_hot() + var/hotness = W.get_temperature() reagents.expose_temperature(hotness) to_chat(user, "You heat [name] with [W]!") else diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 32d91ee76a..08f698e018 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -170,7 +170,7 @@ if(!victim.client || !istype(victim)) return to_chat(victim, "You feel fast!") - ADD_TRAIT(victim, TRAIT_GOTTAGOREALLYFAST, "yellow_orb") + victim.add_movespeed_modifier(MOVESPEED_ID_YELLOW_ORB, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) sleep(duration) - REMOVE_TRAIT(victim, TRAIT_GOTTAGOREALLYFAST, "yellow_orb") + victim.remove_movespeed_modifier(MOVESPEED_ID_YELLOW_ORB) to_chat(victim, "You slow down.") diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 9ce2e66abf..953036e970 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -97,9 +97,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) // non-clothing items var/datum/dog_fashion/dog_fashion = null - var/datum/rpg_loot/rpg_loot = null - - //Tooltip vars var/force_string //string form of an item's force. Edit this var only to set a custom force string var/last_force_string_check = 0 @@ -124,7 +121,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) actions_types = null if(GLOB.rpg_loot_items) - rpg_loot = new(src) + AddComponent(/datum/component/fantasy) if(force_string) item_flags |= FORCE_STRING_OVERRIDE @@ -149,7 +146,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) m.temporarilyRemoveItemFromInventory(src, TRUE) for(var/X in actions) qdel(X) - QDEL_NULL(rpg_loot) return ..() /obj/item/proc/check_allowed_items(atom/target, not_inside, target_self) @@ -557,7 +553,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/throw_impact(atom/A, datum/thrownthing/throwingdatum) if(A && !QDELETED(A)) SEND_SIGNAL(src, COMSIG_MOVABLE_IMPACT, A, throwingdatum) - if(is_hot() && isliving(A)) + if(get_temperature() && isliving(A)) var/mob/living/L = A L.IgniteMob() var/itempush = 1 @@ -624,10 +620,10 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(flags & ITEM_SLOT_NECK) owner.update_inv_neck() -/obj/item/proc/is_hot() +/obj/item/proc/get_temperature() return heat -/obj/item/proc/is_sharp() +/obj/item/proc/get_sharpness() return sharpness /obj/item/proc/get_dismemberment_chance(obj/item/bodypart/affecting) @@ -654,7 +650,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) location.hotspot_expose(flame_heat, 1) /obj/item/proc/ignition_effect(atom/A, mob/user) - if(is_hot()) + if(get_temperature()) . = "[user] lights [A] with [src]." else . = "" diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index cf706359f7..8763089464 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -441,13 +441,16 @@ RLD var/list/rcd_results = A.rcd_vals(user, src) if(!rcd_results) return FALSE + var/turf/the_turf = get_turf(A) + var/turf_coords = "[COORD(the_turf)]" + investigate_log("[user] is attempting to use [src] on [A] (loc [turf_coords] at [the_turf]) with cost [rcd_results["cost"]], delay [rcd_results["delay"]], mode [rcd_results["mode"]].", INVESTIGATE_RCD) if(do_after(user, rcd_results["delay"] * delay_mod, target = A)) if(checkResource(rcd_results["cost"], user)) var/atom/cached = A if(A.rcd_act(user, src, rcd_results["mode"])) useResource(rcd_results["cost"], user) activate() - investigate_log("[user] used [src] on [cached] (now [A]) with cost [rcd_results["cost"]], delay [rcd_results["delay"]], mode [rcd_results["mode"]].", INVESTIGATE_RCD) + investigate_log("[user] used [src] on [cached] (loc [turf_coords] at [the_turf]) with cost [rcd_results["cost"]], delay [rcd_results["delay"]], mode [rcd_results["mode"]].", INVESTIGATE_RCD) playsound(src, 'sound/machines/click.ogg', 50, 1) return TRUE diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm index 1165501d9a..fa9c25960a 100644 --- a/code/game/objects/items/candle.dm +++ b/code/game/objects/items/candle.dm @@ -34,7 +34,7 @@ light() //honk return ..() -/obj/item/candle/is_hot() +/obj/item/candle/get_temperature() return lit * heat /obj/item/candle/proc/light(show_message) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 09a128c558..cf8d38d9c9 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -90,7 +90,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(istype(mask_item, /obj/item/clothing/mask/cigarette)) return mask_item -/obj/item/match/is_hot() +/obj/item/match/get_temperature() return lit * heat ////////////////// @@ -255,7 +255,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/cigarette/fire_act(exposed_temperature, exposed_volume) light() -/obj/item/clothing/mask/cigarette/is_hot() +/obj/item/clothing/mask/cigarette/get_temperature() return lit * heat // Cigarette brands. @@ -530,7 +530,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM add_overlay(lighter_overlay) /obj/item/lighter/ignition_effect(atom/A, mob/user) - if(is_hot()) + if(get_temperature()) . = "With a single flick of [user.p_their()] wrist, [user] smoothly lights [A] with [src]. Damn [user.p_theyre()] cool." /obj/item/lighter/proc/set_lit(new_lit) @@ -605,7 +605,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/lighter/process() open_flame() -/obj/item/lighter/is_hot() +/obj/item/lighter/get_temperature() return lit * heat @@ -654,7 +654,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM add_overlay(lighter_overlay) /obj/item/lighter/greyscale/ignition_effect(atom/A, mob/user) - if(is_hot()) + if(get_temperature()) . = "After some fiddling, [user] manages to light [A] with [src]." diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index b0494539ce..fa1ae55282 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -140,7 +140,7 @@ GLOBAL_LIST_EMPTY(PDAs) var/choice = input(M, "Choose the a reskin for [src]","Reskin Object") as null|anything in GLOB.pda_reskins var/new_icon = GLOB.pda_reskins[choice] - if(QDELETED(src) || isnull(new_icon) || new_icon == icon || M.incapacitated() || !in_range(M,src)) + if(QDELETED(src) || isnull(new_icon) || new_icon == icon || !M.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) return icon = new_icon update_icon(FALSE, TRUE) @@ -274,7 +274,7 @@ GLOBAL_LIST_EMPTY(PDAs) dat += text("
[id ? "Update PDA Info" : ""]

") dat += "[STATION_TIME_TIMESTAMP("hh:mm:ss")]
" //:[world.time / 100 % 6][world.time / 100 % 10]" - dat += "[time2text(world.realtime, "MMM DD")] [GLOB.year_integer+540]" + dat += "[time2text(world.realtime, "MMM DD")] [GLOB.year_integer]" dat += "

" diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index 679dbecd10..7c21ac9144 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -17,6 +17,11 @@ desc = "A stylish upgrade (?) to the intelliCard." icon_state = "aitater" +/obj/item/aicard/aispook + name = "intelliLantern" + desc = "A spoOoOoky upgrade to the intelliCard." + icon_state = "aispook" + /obj/item/aicard/suicide_act(mob/living/user) user.visible_message("[user] is trying to upload [user.p_them()]self into [src]! That's not going to work out well!") return BRUTELOSS @@ -26,16 +31,18 @@ if(!proximity || !target) return if(AI) //AI is on the card, implies user wants to upload it. - target.transfer_ai(AI_TRANS_FROM_CARD, user, AI, src) log_combat(user, AI, "carded", src) + target.transfer_ai(AI_TRANS_FROM_CARD, user, AI, src) else //No AI on the card, therefore the user wants to download one. target.transfer_ai(AI_TRANS_TO_CARD, user, null, src) + if(AI) + log_combat(user, AI, "carded", src) update_icon() //Whatever happened, update the card's state (icon, name) to match. /obj/item/aicard/update_icon() cut_overlays() if(AI) - name = "[initial(name)]- [AI.name]" + name = "[initial(name)] - [AI.name]" if(AI.stat == DEAD) icon_state = "[initial(icon_state)]-404" else diff --git a/code/game/objects/items/devices/compressionkit.dm b/code/game/objects/items/devices/compressionkit.dm index 5ac958328d..a5a9377690 100644 --- a/code/game/objects/items/devices/compressionkit.dm +++ b/code/game/objects/items/devices/compressionkit.dm @@ -89,30 +89,23 @@ else to_chat(user, "Anomalous error. Summon a coder.") - if(istype(target, /mob/living)) - var/mob/living/victim = target - if(istype(victim, /mob/living/carbon/human)) - if(user.zone_selected == "groin") // pp smol. There's probably a smarter way to do this but im retarded. If you have a simpler method let me know. - var/list/organs = victim.getorganszone("groin") - for(var/internal_organ in organs) - if(istype(internal_organ, /obj/item/organ/genital/penis)) - var/obj/item/organ/genital/penis/O = internal_organ - playsound(get_turf(src), 'sound/weapons/flash.ogg', 50, 1) - victim.visible_message("[user] is preparing to shrink [victim]\'s [O.name] with their bluespace compression kit!") - if(do_mob(user, victim, 40) && charges > 0 && O.length > 0) - victim.visible_message("[user] has shrunk [victim]\'s [O.name]!") - playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 50, 1) - sparks() - flash_lighting_fx(3, 3, LIGHT_COLOR_CYAN) - charges -= 1 - O.length -= 5 - if(O.length < 1) - victim.visible_message("[user]\'s [O.name] vanishes!") - qdel(O) // no pp for you - else - O.update_size() - O.update_appearance() - + else if(ishuman(target) && user.zone_selected == BODY_ZONE_PRECISE_GROIN) + var/mob/living/carbon/human/H = target + var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) + if(!P) + return + playsound(get_turf(src), 'sound/weapons/flash.ogg', 50, 1) + H.visible_message("[user] is preparing to shrink [H]\'s [P.name] with their bluespace compression kit!") + if(do_mob(user, H, 40) && charges > 0 && P.length > 0) + H.visible_message("[user] has shrunk [H]\'s [P.name]!") + playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 50, 1) + sparks() + flash_lighting_fx(3, 3, LIGHT_COLOR_CYAN) + charges -= 1 + var/p_name = P.name + P.modify_size(-5) + if(QDELETED(P)) + H.visible_message("[H]\'s [p_name] vanishes!") /obj/item/compressionkit/attackby(obj/item/I, mob/user, params) diff --git a/code/game/objects/items/devices/dogborg_sleeper.dm b/code/game/objects/items/devices/dogborg_sleeper.dm index 8e8de41753..c6573fc76c 100644 --- a/code/game/objects/items/devices/dogborg_sleeper.dm +++ b/code/game/objects/items/devices/dogborg_sleeper.dm @@ -6,8 +6,7 @@ icon = 'icons/mob/dogborg.dmi' icon_state = "sleeper" w_class = WEIGHT_CLASS_TINY - var/mob/living/carbon/patient = null - var/mob/living/silicon/robot/hound = null + var/mob/living/carbon/patient var/inject_amount = 10 var/min_health = -100 var/cleaning = FALSE @@ -61,8 +60,18 @@ /obj/item/dogborg/sleeper/Exit(atom/movable/O) return 0 +/obj/item/dogborg/sleeper/proc/get_host() + if(!loc) + return + if(iscyborg(loc)) + return loc + else if(iscyborg(loc.loc)) + return loc.loc //cursed cyborg code + /obj/item/dogborg/sleeper/afterattack(mob/living/carbon/target, mob/living/silicon/user, proximity) - hound = loc + var/mob/living/silicon/robot/hound = get_host() + if(!hound) + return if(!proximity) return if(!iscarbon(target)) @@ -82,7 +91,8 @@ if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. return //If they moved away, you can't eat them. - if(patient) return //If you try to eat two people at once, you can only eat one. + if(patient) + return //If you try to eat two people at once, you can only eat one. else //If you don't have someone in you, proceed. if(!isjellyperson(target) && ("toxin" in injection_chems)) @@ -94,14 +104,17 @@ target.forceMove(src) target.reset_perspective(src) target.ExtinguishMob() //The tongue already puts out fire stacks but being put into the sleeper shouldn't allow you to keep burning. - update_gut() + update_gut(hound) user.visible_message("[voracious ? "[hound]'s [src.name] lights up and expands as [target] slips inside into their [src.name]." : "[hound]'s sleeper indicator lights up as [target] is scooped up into [hound.p_their()] [src]."]", \ "Your [voracious ? "[src.name] lights up as [target] slips into" : "sleeper indicator light shines brightly as [target] is scooped inside"] your [src]. Life support functions engaged.") message_admins("[key_name(hound)] has sleeper'd [key_name(patient)] as a dogborg. [ADMIN_JMP(src)]") playsound(hound, 'sound/effects/bin_close.ogg', 100, 1) /obj/item/dogborg/sleeper/container_resist(mob/living/user) - hound = loc + var/mob/living/silicon/robot/hound = get_host() + if(!hound) + go_out(user) + return user.changeNext_move(CLICK_CD_BREAKOUT) user.last_special = world.time + CLICK_CD_BREAKOUT if(user.a_intent == INTENT_HELP) @@ -113,54 +126,41 @@ "[voracious ? "You start struggling inside of [src]'s tight, flexible confines," : "You start pounding against the metallic walls of [src],"] trying to trigger the release... (this will take about [DisplayTimeText(breakout_time)].)", \ "You hear a [voracious ? "couple of thumps" : "loud banging noise"] coming from within [hound].") if(do_after(user, breakout_time, target = src)) - if(!user || user.stat != CONSCIOUS || user.loc != src ) - return user.visible_message("[user] successfully broke out of [hound.name]!", \ "You successfully break out of [hound.name]!") - go_out() + go_out(user, hound) -/obj/item/dogborg/sleeper/proc/go_out(var/target) - hound = loc - var/voracious = TRUE - if(!hound.client || !(hound.client.prefs.cit_toggles & MEDIHOUND_SLEEPER)) - voracious = FALSE - else - for(var/mob/M in contents) - if(!M.client || !(M.client.prefs.cit_toggles & MEDIHOUND_SLEEPER)) - voracious = FALSE - if(length(contents) > 0) - hound.visible_message("[voracious ? "[hound] empties out [hound.p_their()] contents via [hound.p_their()] release port." : "[hound]'s underside slides open with an audible clunk before [hound.p_their()] [src] flips over, carelessly dumping its contents onto the ground below [hound.p_them()] before closing right back up again."]", \ - "[voracious ? "You empty your contents via your release port." : "You open your sleeper hatch, quickly releasing all of the contents within before closing it again."]") - if(target) - if(iscarbon(target)) - var/mob/living/carbon/person = target - person.forceMove(get_turf(src)) - person.reset_perspective() - else - var/obj/T = target - T.loc = hound.loc +/obj/item/dogborg/sleeper/proc/go_out(atom/movable/target, mob/living/silicon/robot/hound) + var/voracious = hound ? TRUE : FALSE + var/list/targets = target && hound ? list(target) : contents + if(hound) + hound.setClickCooldown(50) + if(!hound.client || !(hound.client.prefs.cit_toggles & MEDIHOUND_SLEEPER)) + voracious = FALSE else - for(var/C in contents) - if(iscarbon(C)) - var/mob/living/carbon/person = C - person.forceMove(get_turf(src)) - person.reset_perspective() - else - var/obj/T = C - T.loc = hound.loc - items_preserved.Cut() - update_gut() - cleaning = FALSE + for(var/mob/M in targets) + if(!M.client || !(M.client.prefs.cit_toggles & MEDIHOUND_SLEEPER)) + voracious = FALSE + if(length(targets)) + if(hound) + hound.visible_message("[voracious ? "[hound] empties out [hound.p_their()] contents via [hound.p_their()] release port." : "[hound]'s underside slides open with an audible clunk before [hound.p_their()] [src] flips over, carelessly dumping its contents onto the ground below [hound.p_them()] before closing right back up again."]", \ + "[voracious ? "You empty your contents via your release port." : "You open your sleeper hatch, quickly releasing all of the contents within before closing it again."]") + for(var/a in contents) + var/atom/movable/AM = a + AM.forceMove(get_turf(src)) + if(ismob(AM)) + var/mob/M = AM + M.reset_perspective() playsound(loc, voracious ? 'sound/effects/splat.ogg' : 'sound/effects/bin_close.ogg', 50, 1) - - else //You clicked eject with nothing in you, let's just reset stuff to be sure. - items_preserved.Cut() - cleaning = FALSE - update_gut() + items_preserved.Cut() + cleaning = FALSE + if(hound) + update_gut(hound) /obj/item/dogborg/sleeper/attack_self(mob/user) - if(..()) + . = ..() + if(. || !iscyborg(user)) return ui_interact(user) @@ -218,30 +218,31 @@ return data /obj/item/dogborg/sleeper/ui_act(action, params) - if(..()) + . = ..() + if(. || !iscyborg(usr)) return switch(action) if("eject") - go_out() + go_out(null, usr) . = TRUE if("inject") var/chem = params["chem"] if(!patient) return - inject_chem(chem) + inject_chem(chem, usr) . = TRUE if("cleaning") if(!contents) to_chat(src, "Your [src] is already cleaned.") return if(patient) - to_chat(patient, "[hound.name]'s [src] fills with caustic enzymes around you!") + to_chat(patient, "[usr.name]'s [src] fills with caustic enzymes around you!") to_chat(src, "Cleaning process enabled.") - clean_cycle() + clean_cycle(usr) . = TRUE -/obj/item/dogborg/sleeper/proc/update_gut() +/obj/item/dogborg/sleeper/proc/update_gut(mob/living/silicon/robot/hound) //Well, we HAD one, what happened to them? var/prociconupdate = FALSE var/currentenvy = hound.sleeper_nv @@ -290,7 +291,7 @@ //Update icon and return new patient hound.update_icons() - return(C) + return //Cleaning looks better with red on, even with nobody in it if(cleaning && !patient) @@ -306,8 +307,10 @@ hound.update_icons() //Gurgleborg process -/obj/item/dogborg/sleeper/proc/clean_cycle() +/obj/item/dogborg/sleeper/proc/clean_cycle(mob/living/silicon/robot/hound) //Sanity + if(!hound) + return for(var/I in items_preserved) if(!(I in contents)) items_preserved -= I @@ -319,13 +322,12 @@ if(cleaning_cycles) cleaning_cycles-- cleaning = TRUE - for(var/mob/living/carbon/human/T in (touchable_items)) - if((T.status_flags & GODMODE) || !T.digestable) - items_preserved += T + for(var/mob/living/carbon/C in (touchable_items)) + if((C.status_flags & GODMODE) || !C.digestable) + items_preserved += C else - T.adjustBruteLoss(2) - T.adjustFireLoss(3) - update_gut() + C.adjustBruteLoss(2) + C.adjustFireLoss(3) if(contents) var/atom/target = pick(touchable_items) if(iscarbon(target)) //Handle the target being a mob @@ -358,7 +360,6 @@ if(!T.dropItemToGround(W)) qdel(W) qdel(T) - update_gut() //Handle the target being anything but a mob else if(isobj(target)) var/obj/T = target @@ -373,12 +374,10 @@ cleaning_cycles = initial(cleaning_cycles) cleaning = FALSE to_chat(hound, "Your [src] chimes it ends its self-cleaning cycle.")//Belly is entirely empty - update_gut() if(!length(contents)) to_chat(hound, "Your [src] is now clean. Ending self-cleaning cycle.") cleaning = FALSE - update_gut() //sound effects if(prob(50)) @@ -396,13 +395,17 @@ else if(H in contents) H.playsound_local(source, null, 65, falloff = 0, S = prey_digest) + update_gut(hound) + if(cleaning) - addtimer(CALLBACK(src, .proc/clean_cycle), 50) + addtimer(CALLBACK(src, .proc/clean_cycle, hound), 50) /obj/item/dogborg/sleeper/proc/CheckAccepted(obj/item/I) return is_type_in_typecache(I, important_items) -/obj/item/dogborg/sleeper/proc/inject_chem(chem) +/obj/item/dogborg/sleeper/proc/inject_chem(chem, mob/living/silicon/robot/hound) + if(!hound) + return if(hound.cell.charge <= 800) //This is so borgs don't kill themselves with it. Remember, 750 charge used every injection. to_chat(hound, "You don't have enough power to synthesize fluids.") return @@ -437,40 +440,27 @@ else . = ..() -/obj/item/dogborg/sleeper/K9/afterattack(var/atom/movable/target, mob/living/silicon/user, proximity) - hound = loc +/obj/item/dogborg/sleeper/K9/afterattack(mob/living/carbon/target, mob/living/silicon/user, proximity) + var/mob/living/silicon/robot/hound = get_host() + if(!hound || !istype(target) || !proximity || target.anchored) + return + if (!target.devourable) + to_chat(user, "The target registers an error code. Unable to insert into [src].") + return + if(target) + to_chat(user,"Your [src] is already occupied.") + return + if(target.buckled) + to_chat(user,"[target] is buckled and can not be put into your [src].") + return + user.visible_message("[hound.name] is ingesting [target] into their [src].", "You start ingesting [target] into your [src.name]...") + if(do_after(user, 30, target = target) && !patient && !target.buckled) + target.forceMove(src) + target.reset_perspective(src) + update_gut(hound) + user.visible_message("[hound.name]'s mobile brig clunks in series as [target] slips inside.", "Your mobile brig groans lightly as [target] slips inside.") + playsound(hound, 'sound/effects/bin_close.ogg', 80, 1) // Really don't need ERP sound effects for robots - if(!istype(target)) - return - if(!proximity) - return - if(target.anchored) - return - if(isobj(target)) - to_chat(user, "You are above putting such trash inside of yourself.") - return - if(iscarbon(target)) - var/mob/living/carbon/brigman = target - if (!brigman.devourable) - to_chat(user, "The target registers an error code. Unable to insert into [src].") - return - if(patient) - to_chat(user,"Your [src] is already occupied.") - return - if(brigman.buckled) - to_chat(user,"[brigman] is buckled and can not be put into your [src].") - return - user.visible_message("[hound.name] is ingesting [brigman] into their [src].", "You start ingesting [brigman] into your [src.name]...") - if(do_after(user, 30, target = brigman) && !patient && !brigman.buckled) - if(!in_range(src, brigman)) //Proximity is probably old news by now, do a new check. - return //If they moved away, you can't eat them. - brigman.forceMove(src) - brigman.reset_perspective(src) - update_gut() - user.visible_message("[hound.name]'s mobile brig clunks in series as [brigman] slips inside.", "Your mobile brig groans lightly as [brigman] slips inside.") - playsound(hound, 'sound/effects/bin_close.ogg', 80, 1) // Really don't need ERP sound effects for robots - return - return /obj/item/dogborg/sleeper/compactor //Janihound gut. name = "garbage processor" @@ -488,31 +478,25 @@ else . = ..() -/obj/item/dogborg/sleeper/compactor/afterattack(var/atom/movable/target, mob/living/silicon/user, proximity)//GARBO NOMS - hound = loc - var/obj/item/target_obj = target - if(!istype(target)) - return - if(!proximity) - return - if(target.anchored) +/obj/item/dogborg/sleeper/compactor/afterattack(atom/movable/target, mob/living/silicon/user, proximity)//GARBO NOMS + var/mob/living/silicon/robot/hound = get_host() + if(!hound || !istype(target) || !proximity || target.anchored) return if(length(contents) > (max_item_count - 1)) to_chat(user,"Your [src] is full. Eject or process contents to continue.") return - if(isobj(target)) - if(CheckAccepted(target)) - to_chat(user,"\The [target] registers an error code to your [src]") + if(isitem(target)) + var/obj/item/I = target + if(CheckAccepted(I)) + to_chat(user,"[I] registers an error code to your [src]") return - if(target_obj.w_class > WEIGHT_CLASS_NORMAL) - to_chat(user,"\The [target] is too large to fit into your [src]") + if(I.w_class > WEIGHT_CLASS_NORMAL) + to_chat(user,"[I] is too large to fit into your [src]") return - user.visible_message("[hound.name] is ingesting [target.name] into their [src.name].", "You start ingesting [target] into your [src.name]...") + user.visible_message("[hound.name] is ingesting [I] into their [src.name].", "You start ingesting [target] into your [src.name]...") if(do_after(user, 15, target = target) && length(contents) < max_item_count) - if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. - return //If they moved away, you can't eat them. This still applies to items, don't magically eat things I picked up already. - target.forceMove(src) - user.visible_message("[hound.name]'s garbage processor groans lightly as [target.name] slips inside.", "Your garbage compactor groans lightly as [target] slips inside.") + I.forceMove(src) + I.visible_message("[hound.name]'s garbage processor groans lightly as [I] slips inside.", "Your garbage compactor groans lightly as [I] slips inside.") playsound(hound, 'sound/machines/disposalflush.ogg', 50, 1) if(length(contents) > 11) //grow that tum after a certain junk amount hound.sleeper_r = 1 @@ -522,9 +506,9 @@ hound.update_icons() return - else if(iscarbon(target)) - var/mob/living/carbon/trashman = target - if (!trashman.devourable) + if(iscarbon(target) || issilicon(target)) + var/mob/living/trashman = target + if(!trashman.devourable) to_chat(user, "[target] registers an error code to your [src]") return if(patient) @@ -535,38 +519,12 @@ return user.visible_message("[hound.name] is ingesting [trashman] into their [src].", "You start ingesting [trashman] into your [src.name]...") if(do_after(user, 30, target = trashman) && !patient && !trashman.buckled && length(contents) < max_item_count) - if(!in_range(src, trashman)) //Proximity is probably old news by now, do a new check. - return //If they moved away, you can't eat them. trashman.forceMove(src) trashman.reset_perspective(src) update_gut() user.visible_message("[hound.name]'s garbage processor groans lightly as [trashman] slips inside.", "Your garbage compactor groans lightly as [trashman] slips inside.") playsound(hound, 'sound/effects/bin_close.ogg', 80, 1) - return - else if(issilicon(target)) - var/mob/living/silicon/trashbot = target - if (!trashbot.devourable) - to_chat(user, "[target] registers an error code to your [src]") - return - if(patient) - to_chat(user,"Your [src] is already occupied.") - return - if(trashbot.buckled) - to_chat(user,"[trashbot] is buckled and can not be put into your [src].") - return - user.visible_message("[hound.name] is ingesting [trashbot] into their [src].", "You start ingesting [trashbot] into your [src.name]...") - if(do_after(user, 30, target = trashbot) && !patient && !trashbot.buckled && length(contents) < max_item_count) - if(!in_range(src, trashbot)) //Proximity is probably old news by now, do a new check. - return //If they moved away, you can't eat them. - trashbot.forceMove(src) - trashbot.reset_perspective(src) - update_gut() - user.visible_message("[hound.name]'s garbage processor groans lightly as [trashbot] slips inside.", "Your garbage compactor groans lightly as [trashbot] slips inside.") - playsound(hound, 'sound/effects/bin_close.ogg', 80, 1) - return - - return - + /obj/item/dogborg/sleeper/K9/flavour name = "Mobile Sleeper" desc = "A mounted, underslung sleeper, intended for holding willing occupants for leisurely purposes." \ No newline at end of file diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index b937f961c0..8d7fa05ec6 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -324,7 +324,7 @@ damtype = "fire" START_PROCESSING(SSobj, src) -/obj/item/flashlight/flare/is_hot() +/obj/item/flashlight/flare/get_temperature() return on * heat /obj/item/flashlight/flare/torch diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 207497922e..cf55d4178e 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -48,7 +48,7 @@ /obj/item/multitool/chaplain/Initialize() . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE) + AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE) /obj/item/multitool/examine(mob/user) ..() diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 1f69db1bbc..7dc2f1d60b 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -148,9 +148,11 @@ if(10) src.add_overlay("pai-null") if(11) - src.add_overlay(mutable_appearance('modular_citadel/icons/obj/aicards.dmi', "pai-exclamation")) // CITADEL EDIT + src.add_overlay("pai-exclamation") if(12) - src.add_overlay(mutable_appearance('modular_citadel/icons/obj/aicards.dmi', "pai-question")) // CITADEL EDIT + src.add_overlay("pai-question") + if(13) + src.add_overlay("pai-sunglasses") /obj/item/paicard/proc/alertUpdate() visible_message("[src] flashes a message across its screen, \"Additional personalities available for download.\"", "[src] bleeps electronically.") diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index d644e0637e..5ad5b41e95 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -338,17 +338,17 @@ SLIME SCANNER if(report_organs) //we either finish the list, or set it to be empty if no organs were reported in that category if(!max_damage) - max_damage = "\tNon-Functional Organs: " + max_damage = "\tNon-Functional Organs: \n" else - max_damage += "" + max_damage += "\n" if(!major_damage) - major_damage = "\tSeverely Damaged Organs: " + major_damage = "\tSeverely Damaged Organs: \n" else - major_damage += "" + major_damage += "\n" if(!minor_damage) - minor_damage = "\tMildly Damaged Organs: " + minor_damage = "\tMildly Damaged Organs: \n" else - minor_damage += "" + minor_damage += "\n" msg += "[minor_damage]" msg += "[major_damage]" msg += "[max_damage]" @@ -382,10 +382,11 @@ SLIME SCANNER else if (S.mutantstomach != initial(S.mutantstomach)) mutant = TRUE - msg += "Species: [H.dna.custom_species ? H.dna.custom_species : S.name] Base: [S.name]\n" + msg += "\tReported Species: [H.dna.custom_species ? H.dna.custom_species : S.name]\n" + msg += "\tBase Species: [S.name]\n" if(mutant) - msg += "Subject has mutations present." - msg += "Body temperature: [round(M.bodytemperature-T0C,0.1)] °C ([round(M.bodytemperature*1.8-459.67,0.1)] °F)\n" + msg += "\tSubject has mutations present.\n" + msg += "\tBody temperature: [round(M.bodytemperature-T0C,0.1)] °C ([round(M.bodytemperature*1.8-459.67,0.1)] °F)\n" // Time of death if(M.tod && (M.stat == DEAD || ((HAS_TRAIT(M, TRAIT_FAKEDEATH)) && !advanced))) diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index ccb82f7029..84439985b2 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -233,7 +233,7 @@ /obj/item/nullrod/Initialize() . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE) + AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE) /obj/item/nullrod/suicide_act(mob/user) user.visible_message("[user] is killing [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to get closer to god!") diff --git a/code/game/objects/items/implants/implant_storage.dm b/code/game/objects/items/implants/implant_storage.dm index 1f44b5318e..1dfc0b4580 100644 --- a/code/game/objects/items/implants/implant_storage.dm +++ b/code/game/objects/items/implants/implant_storage.dm @@ -12,7 +12,7 @@ /obj/item/implant/storage/removed(source, silent = FALSE, special = 0) if(!special) - qdel(pocket) + QDEL_NULL(pocket) else pocket?.moveToNullspace() return ..() @@ -29,7 +29,7 @@ return FALSE . = ..() if(.) - if(pocket) + if(!QDELETED(pocket)) pocket.forceMove(target) else pocket = new(target) @@ -41,7 +41,6 @@ desc = "A tiny yet spacious pocket, usually found implanted inside sneaky syndicate agents and nowhere else." component_type = /datum/component/storage/concrete/implant resistance_flags = INDESTRUCTIBLE //A bomb! - item_flags = DROPDEL /obj/item/implanter/storage name = "implanter (storage)" diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm index 709bc6662a..11be6b88e9 100644 --- a/code/game/objects/items/latexballoon.dm +++ b/code/game/objects/items/latexballoon.dm @@ -52,5 +52,5 @@ var/obj/item/tank/T = W blow(T, user) return - if (W.is_sharp() || W.is_hot() || is_pointed(W)) + if (W.get_sharpness() || W.get_temperature() || is_pointed(W)) burst() diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 624dbdd8ef..51fd2c50d8 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -28,7 +28,7 @@ /obj/item/melee/transforming/energy/add_blood_DNA(list/blood_dna) return FALSE -/obj/item/melee/transforming/energy/is_sharp() +/obj/item/melee/transforming/energy/get_sharpness() return active * sharpness /obj/item/melee/transforming/energy/process() @@ -46,7 +46,7 @@ STOP_PROCESSING(SSobj, src) set_light(0) -/obj/item/melee/transforming/energy/is_hot() +/obj/item/melee/transforming/energy/get_temperature() return active * heat /obj/item/melee/transforming/energy/ignition_effect(atom/A, mob/user) diff --git a/code/game/objects/items/melee/transforming.dm b/code/game/objects/items/melee/transforming.dm index 850810bdb2..7eb35ed06b 100644 --- a/code/game/objects/items/melee/transforming.dm +++ b/code/game/objects/items/melee/transforming.dm @@ -23,7 +23,7 @@ else if(attack_verb_off.len) attack_verb = attack_verb_off - if(is_sharp()) + if(get_sharpness()) AddComponent(/datum/component/butchering, 50, 100, 0, hitsound, !active) /obj/item/melee/transforming/attack_self(mob/living/carbon/user) @@ -65,7 +65,7 @@ icon_state = initial(icon_state) w_class = initial(w_class) total_mass = initial(total_mass) - if(is_sharp()) + if(get_sharpness()) var/datum/component/butchering/BT = LoadComponent(/datum/component/butchering) BT.butchering_enabled = TRUE else diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index 48588cf9f3..cece0068b8 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -117,7 +117,7 @@ to_chat(user, "You try to pet [src], but it has no stuffing. Aww...") /obj/item/toy/plush/attackby(obj/item/I, mob/living/user, params) - if(I.is_sharp()) + if(I.get_sharpness()) if(!grenade) if(!stuffed) to_chat(user, "You already murdered it!") @@ -366,10 +366,10 @@ /obj/item/toy/plush/random name = "Illegal plushie" desc = "Something fucked up" + var/blacklisted_plushes = list(/obj/item/toy/plush/carpplushie/dehy_carp, /obj/item/toy/plush/awakenedplushie, /obj/item/toy/plush/random) /obj/item/toy/plush/random/Initialize() - ..() - var/newtype = pick(subtypesof(/obj/item/toy/plush)) + var/newtype = pick(subtypesof(/obj/item/toy/plush) - typecacheof(blacklisted_plushes)) new newtype(loc) return INITIALIZE_HINT_QDEL @@ -558,6 +558,37 @@ item_state = "almaz" squeak_override = list('modular_citadel/sound/voice/raptor_purr.ogg' = 1) +/obj/item/toy/plush/lizardplushie/garou + icon_state = "garou" + item_state = "garou" + +/obj/item/toy/plush/lizardplushie/augments + icon_state = "augments" + item_state = "augments" + squeak_override = list('modular_citadel/sound/voice/weh.ogg' = 1) //I have no mouth and I must weh + attack_verb = list("hugged", "patted", "snugged", "booped") + +/obj/item/toy/plush/lizardplushie/xekov + icon_state = "xekov" + item_state = "xekov" + +/obj/item/toy/plush/lizardplushie/greg + icon_state = "greg" + item_state = "greg" + +/obj/item/toy/plush/lizardplushie/sin + icon_state = "sin" + item_state = "sin" + desc = "An adorable stuffed toy that resembles a lizardperson.. It faintly smells of sulfur." + +/obj/item/toy/plush/lizardplushie/ends + icon_state = "ends" + item_state = "ends" + +/obj/item/toy/plush/lizardplushie/lyssa + icon_state = "lyssa" + item_state = "lyssa" + /obj/item/toy/plush/snakeplushie name = "snake plushie" desc = "An adorable stuffed toy that resembles a snake. Not to be mistaken for the real thing." @@ -715,6 +746,14 @@ item_state = "bhijn" attack_verb = list("closed", "reworked", "merged") +/obj/item/toy/plush/aiplush + name = "AI plushie" + desc = "A little stuffed toy AI core... it appears to be malfunctioning." + icon_state = "exo" + item_state = "exo" + attack_verb = list("hacked", "detonated", "overloaded") + squeak_override = list('sound/machines/beep.ogg' = 9, 'sound/machines/buzz-two.ogg' = 1) + /obj/item/toy/plush/bird name = "bird plushie" desc = "An adorable stuffed plushie that resembles an avian." @@ -862,6 +901,18 @@ item_state = "redwood" attack_verb = list("ordered", "bapped", "reprimanded") +/obj/item/toy/plush/mammal/marisol + desc = "An adorable stuffed toy resembling a demi-wolf security officer." + icon_state = "marisol" + item_state = "marisol" + attack_verb = list("arrested", "harmbattoned", "lasered") + +/obj/item/toy/plush/mammal/minty + desc = "An adorable stuffed toy resembling some sort of crew member. It smells like mint.." + icon_state = "minty" + item_state = "minty" + attack_verb = list("freshened", "brushed") + /obj/item/toy/plush/mammal/dog desc = "An adorable stuffed toy that resembles a canine." icon_state = "katlin" @@ -929,8 +980,8 @@ /obj/item/toy/plush/catgirl/skylar desc = "An adorable stuffed toy that resembles a degenerate." - icon_state = "skylar" - item_state = "skylar" + icon_state = "skylar2" + item_state = "skylar2" attack_verb = list("powergamed", "merged", "tabled") squeak_override = list('sound/effects/meow1.ogg' = 1) @@ -942,7 +993,7 @@ desc = "A masked stuffed toy that resembles a feline scientist." icon_state = "trilby" item_state = "trilby" - attack_verb = list("pred", "coded", "remembered") + attack_verb = list("PR'd", "coded", "remembered") /obj/item/toy/plush/catgirl/fermis name = "medcat plushie" diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 0e5d3add5f..77bc7ed810 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -313,7 +313,7 @@ if(M.get_ear_protection() == FALSE) M.confused += 6 audible_message("HUMAN HARM") - playsound(get_turf(src), 'sound/ai/harmalarm.ogg', 70, 3) + playsound(get_turf(src), 'sound/effects/harmalarm.ogg', 70, 3) cooldown = world.time + 200 log_game("[key_name(user)] used a Cyborg Harm Alarm in [AREACOORD(user)]") if(iscyborg(user)) @@ -430,7 +430,7 @@ A.BB.nodamage = FALSE A.BB.speed = 0.5 playsound(src.loc, 'sound/machines/click.ogg', 50, 1) - A.fire_casing(target, user, params, 0, 0, null, 0) + A.fire_casing(target, user, params, 0, 0, null, 0, src) user.visible_message("[user] blasts a flying lollipop at [target]!") check_amount() @@ -446,7 +446,7 @@ A.BB.speed = 0.5 A.BB.color = rgb(rand(0, 255), rand(0, 255), rand(0, 255)) playsound(src.loc, 'sound/weapons/bulletflyby3.ogg', 50, 1) - A.fire_casing(target, user, params, 0, 0, null, 0) + A.fire_casing(target, user, params, 0, 0, null, 0, src) user.visible_message("[user] shoots a high-velocity gumball at [target]!") check_amount() diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 9a32b8463c..6e6db2feae 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -89,32 +89,36 @@ R.speed = initial(R.speed) /obj/item/borg/upgrade/disablercooler - name = "cyborg rapid disabler cooling module" - desc = "Used to cool a mounted disabler, increasing the potential current in it and thus its recharge rate." + name = "cyborg rapid energy blaster cooling module" + desc = "Used to cool a mounted energy-based firearm, increasing the potential current in it and thus its recharge rate." icon_state = "cyborg_upgrade3" require_module = 1 /obj/item/borg/upgrade/disablercooler/action(mob/living/silicon/robot/R, user = usr) . = ..() if(.) - var/obj/item/gun/energy/disabler/cyborg/T = locate() in R.module.modules - if(!T) - to_chat(user, "There's no disabler in this unit!") + var/successflag + for(var/obj/item/gun/energy/T in R.module.modules) + if(T.charge_delay <= 2) + successflag = successflag || 2 + continue + T.charge_delay = max(2, T.charge_delay - 4) + successflag = 1 + if(!successflag) + to_chat(user, "There's no energy-based firearm in this unit!") return FALSE - if(T.charge_delay <= 2) + if(successflag == 2) to_chat(R, "A cooling unit is already installed!") to_chat(user, "There's no room for another cooling unit!") return FALSE - T.charge_delay = max(2 , T.charge_delay - 4) - /obj/item/borg/upgrade/disablercooler/deactivate(mob/living/silicon/robot/R, user = usr) . = ..() if (.) - var/obj/item/gun/energy/disabler/cyborg/T = locate() in R.module.modules - if(!T) - return FALSE - T.charge_delay = initial(T.charge_delay) + for(var/obj/item/gun/energy/T in R.module.modules) + T.charge_delay = initial(T.charge_delay) + return . + return FALSE /obj/item/borg/upgrade/thrusters name = "ion thruster upgrade" diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 886997eab9..9f3e5f6bd4 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -128,7 +128,7 @@ /obj/item/stack/medical/gauze/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/wirecutters) || I.is_sharp()) + if(istype(I, /obj/item/wirecutters) || I.get_sharpness()) if(get_amount() < 2) to_chat(user, "You need at least two gauzes to do this!") return diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 01351ab2e2..7297bb3aae 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -219,7 +219,7 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \ //Step one - dehairing. /obj/item/stack/sheet/animalhide/attackby(obj/item/W, mob/user, params) - if(W.is_sharp()) + if(W.get_sharpness()) playsound(loc, 'sound/weapons/slice.ogg', 50, 1, -1) user.visible_message("[user] starts cutting hair off \the [src].", "You start cutting the hair off \the [src]...", "You hear the sound of a knife rubbing against flesh.") if(do_after(user, 50, target = src)) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 46c0d47388..96546d6eb6 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -178,11 +178,11 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \ . = ..() /obj/item/stack/sheet/mineral/plasma/attackby(obj/item/W as obj, mob/user as mob, params) - if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite + if(W.get_temperature() > 300)//If the temperature of the object is over 300, then ignite var/turf/T = get_turf(src) message_admins("Plasma sheets ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") log_game("Plasma sheets ignited by [key_name(user)] in [AREACOORD(T)]") - fire_act(W.is_hot()) + fire_act(W.get_temperature()) else return ..() diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index 13efe72686..eafa79798e 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -49,6 +49,8 @@ STR.max_combined_w_class = 30 STR.max_items = 30 STR.cant_hold = typecacheof(list(/obj/item/disk/nuclear)) + STR.limited_random_access = TRUE + STR.limited_random_access_stack_position = 3 /obj/item/storage/bag/trash/suicide_act(mob/user) user.visible_message("[user] puts [src] over [user.p_their()] head and starts chomping at the insides! Disgusting!") @@ -88,6 +90,7 @@ var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 60 STR.max_items = 60 + STR.limited_random_access_stack_position = 5 /obj/item/storage/bag/trash/bluespace/cyborg insertable = FALSE diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index dde0e0715b..e053ff2a5c 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -855,7 +855,7 @@ if(SMILEY) desc = "A paper sack with a crude smile etched onto the side." return 0 - else if(W.is_sharp()) + else if(W.get_sharpness()) if(!contents.len) if(item_state == "paperbag_None") user.show_message("You cut eyeholes into [src].", 1) @@ -1144,7 +1144,7 @@ if(can_expire) expiration_date = rand(expiration_date_min, expiration_date_max) desc += "\nAn expiry date is listed on it. It reads: [expiration_date]" - var/spess_current_year = GLOB.year_integer + 540 + var/spess_current_year = GLOB.year_integer if(expiration_date < spess_current_year) var/gross_risk = min(round(spess_current_year - expiration_date * 0.1), 1) var/toxic_risk = min(round(spess_current_year - expiration_date * 0.01), 1) diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index f0a9ad019b..44e122e4b9 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -309,9 +309,10 @@ if(fancy_open) icon_state = "[initial(icon_state)]_open" - var/cigar_position = 1 //generate sprites for cigars in the box + var/cigar_position = 0 //to keep track of the pixel_x offset of each new overlay. for(var/obj/item/clothing/mask/cigarette/cigar/smokes in contents) - var/mutable_appearance/cigar_overlay = mutable_appearance(icon, "[smokes.icon_off]_[cigar_position]") + var/mutable_appearance/cigar_overlay = mutable_appearance(icon, "[smokes.icon_off]") + cigar_overlay.pixel_x = 3 * cigar_position add_overlay(cigar_overlay) cigar_position++ diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index bfe630ba01..ee126971a7 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -1,4 +1,5 @@ #define STUNBATON_CHARGE_LENIENCY 0.3 +#define STUNBATON_DEPLETION_RATE 0.006 /obj/item/melee/baton name = "stunbaton" @@ -76,7 +77,7 @@ update_icon() /obj/item/melee/baton/process() - deductcharge(hitcost * 0.004, FALSE, FALSE) + deductcharge(round(hitcost * STUNBATON_DEPLETION_RATE), FALSE, FALSE) /obj/item/melee/baton/update_icon() if(status) @@ -250,4 +251,5 @@ sparkler?.activate() . = ..() -#undef STUNBATON_CHARGE_LENIENCY \ No newline at end of file +#undef STUNBATON_CHARGE_LENIENCY +#undef STUNBATON_DEPLETION_RATE diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm index b672eb01ca..f592055338 100644 --- a/code/game/objects/items/tanks/jetpack.dm +++ b/code/game/objects/items/tanks/jetpack.dm @@ -17,7 +17,7 @@ /obj/item/tank/jetpack/New() ..() if(gas_type) - air_contents.gases[gas_type] = (6 * ONE_ATMOSPHERE) * volume / (R_IDEAL_GAS_EQUATION * T20C) + air_contents.gases[gas_type] = ((6 * ONE_ATMOSPHERE) * volume / (R_IDEAL_GAS_EQUATION * T20C)) ion_trail = new ion_trail.set_up(src) @@ -37,42 +37,50 @@ return if(!on) - turn_on() + turn_on(user) to_chat(user, "You turn the jetpack on.") else - turn_off() + turn_off(user) to_chat(user, "You turn the jetpack off.") for(var/X in actions) var/datum/action/A = X A.UpdateButtonIcon() -/obj/item/tank/jetpack/proc/turn_on() +/obj/item/tank/jetpack/proc/turn_on(mob/user) on = TRUE icon_state = "[initial(icon_state)]-on" ion_trail.start() + RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/move_react) + if(full_speed) + user.add_movespeed_modifier(MOVESPEED_ID_JETPACK, priority=100, multiplicative_slowdown=-2, movetypes=FLOATING, conflict=MOVE_CONFLICT_JETPACK) -/obj/item/tank/jetpack/proc/turn_off() +/obj/item/tank/jetpack/proc/turn_off(mob/user) on = FALSE stabilizers = FALSE icon_state = initial(icon_state) ion_trail.stop() + UnregisterSignal(user, COMSIG_MOVABLE_MOVED) + user.remove_movespeed_modifier(MOVESPEED_ID_JETPACK) + +/obj/item/tank/jetpack/proc/move_react(mob/user) + allow_thrust(0.01, user) /obj/item/tank/jetpack/proc/allow_thrust(num, mob/living/user) if(!on) return if((num < 0.005 || air_contents.total_moles() < num)) - turn_off() + turn_off(user) return var/datum/gas_mixture/removed = air_contents.remove(num) if(removed.total_moles() < 0.005) - turn_off() + turn_off(user) return var/turf/T = get_turf(user) T.assume_air(removed) - return 1 + return TRUE /obj/item/tank/jetpack/suicide_act(mob/user) if (istype(user, /mob/living/carbon/human/)) @@ -96,22 +104,22 @@ if(!on) return if((num < 0.005 || air_contents.total_moles() < num)) - turn_off() + turn_off(user) return if(rand(0,250) == 0) to_chat(user, "You feel your jetpack's engines cut out.") - turn_off() + turn_off(user) return var/datum/gas_mixture/removed = air_contents.remove(num) if(removed.total_moles() < 0.005) - turn_off() + turn_off(user) return var/turf/T = get_turf(user) T.assume_air(removed) - return 1 + return TRUE /obj/item/tank/jetpack/void name = "void jetpack (oxygen)" @@ -178,6 +186,7 @@ full_speed = FALSE var/datum/gas_mixture/temp_air_contents var/obj/item/tank/internals/tank = null + var/mob/living/carbon/human/cur_user /obj/item/tank/jetpack/suit/New() ..() @@ -198,28 +207,30 @@ return ..() -/obj/item/tank/jetpack/suit/turn_on() - if(!istype(loc, /obj/item/clothing/suit/space/hardsuit) || !ishuman(loc.loc)) +/obj/item/tank/jetpack/suit/turn_on(mob/user) + if(!istype(loc, /obj/item/clothing/suit/space/hardsuit) || !ishuman(loc.loc) || loc.loc != user) return - var/mob/living/carbon/human/H = loc.loc + var/mob/living/carbon/human/H = user tank = H.s_store air_contents = tank.air_contents START_PROCESSING(SSobj, src) + cur_user = user ..() -/obj/item/tank/jetpack/suit/turn_off() +/obj/item/tank/jetpack/suit/turn_off(mob/user) tank = null air_contents = temp_air_contents STOP_PROCESSING(SSobj, src) + cur_user = null ..() /obj/item/tank/jetpack/suit/process() if(!istype(loc, /obj/item/clothing/suit/space/hardsuit) || !ishuman(loc.loc)) - turn_off() + turn_off(cur_user) return var/mob/living/carbon/human/H = loc.loc if(!tank || tank != H.s_store) - turn_off() + turn_off(cur_user) return ..() diff --git a/code/game/objects/items/teleprod.dm b/code/game/objects/items/teleprod.dm index 40392c19c3..f427bf6c4c 100644 --- a/code/game/objects/items/teleprod.dm +++ b/code/game/objects/items/teleprod.dm @@ -6,11 +6,11 @@ item_state = "teleprod" slot_flags = null -/obj/item/melee/baton/cattleprod/teleprod/baton_stun(mob/living/carbon/M, mob/living/carbon/user)//handles making things teleport when hit +/obj/item/melee/baton/cattleprod/teleprod/baton_stun(mob/living/L, mob/living/carbon/user)//handles making things teleport when hit . = ..() - if(!. || !istype(M) || M.anchored) + if(!. || L.anchored) return - do_teleport(M, get_turf(M), 15, channel = TELEPORT_CHANNEL_BLUESPACE) + do_teleport(L, get_turf(L), 15, channel = TELEPORT_CHANNEL_BLUESPACE) /obj/item/melee/baton/cattleprod/teleprod/clowning_around(mob/living/user) user.visible_message("[user] accidentally hits [user.p_them()]self with [src]!", \ diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm index b99be7e988..d52c280f1b 100644 --- a/code/game/objects/items/theft_tools.dm +++ b/code/game/objects/items/theft_tools.dm @@ -49,6 +49,10 @@ lefthand_file = 'icons/mob/inhands/misc/sheets_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/sheets_righthand.dmi' var/obj/item/nuke_core/core + var/nt =FALSE //For the lid + +/obj/item/nuke_core_container/nt + nt = TRUE /obj/item/nuke_core_container/Destroy() QDEL_NULL(core) @@ -67,10 +71,13 @@ /obj/item/nuke_core_container/proc/seal() if(istype(core)) STOP_PROCESSING(SSobj, core) - icon_state = "core_container_sealed" playsound(src, 'sound/items/deconstruct.ogg', 60, 1) if(ismob(loc)) to_chat(loc, "[src] is permanently sealed, [core]'s radiation is contained.") + if(nt != TRUE) + icon_state = "core_container_sealed" + else + icon_state = "core_container_sealed_nt" /obj/item/nuke_core_container/attackby(obj/item/nuke_core/core, mob/user) if(istype(core)) @@ -92,6 +99,11 @@ toolspeed = 0.5 random_color = FALSE +/obj/item/screwdriver/nuke/nt + desc = "A screwdriver with an ultra thin diamon tip." + toolspeed = 0.25 + icon_state = "screwdriver_nt" + /obj/item/paper/guides/antag/nuke_instructions info = "How to break into a Nanotrasen self-destruct terminal and remove its plutonium core:
\
    \ @@ -103,6 +115,18 @@
  • ???
  • \
" +/obj/item/paper/guides/nt/nuke_instructions + info = "How to remove its plutonium core:
\ +
    \ +
  • Use a screwdriver with a very thin tip (provided) to unscrew the terminal's front panel
  • \ +
  • Dislodge and remove the front panel with a crowbar
  • \ +
  • Cut the inner metal plate with a welding tool
  • \ +
  • Pry off the inner plate with a crowbar to expose the radioactive core
  • \ +
  • Use the core container to remove the plutonium core; the container will take some time to seal
  • \ +
  • Send core back to CC
  • \ +
" + + // STEALING SUPERMATTER /obj/item/paper/guides/antag/supermatter_sliver diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index fb38e4335e..b04d96dc80 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -223,7 +223,7 @@ ..() to_chat(user, "It contains [get_fuel()] unit\s of fuel out of [max_fuel].") -/obj/item/weldingtool/is_hot() +/obj/item/weldingtool/get_temperature() return welding * heat //Returns whether or not the welding tool is currently on. diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 638dcd3556..de5a53fd9c 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -79,7 +79,7 @@ to_chat(user, "You fill the balloon with the contents of [I].") I.reagents.trans_to(src, 10) update_icon() - else if(I.is_sharp()) + else if(I.get_sharpness()) balloon_burst() else return ..() diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index 9b2ec5c98f..14f924a27e 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -506,7 +506,7 @@ /obj/item/twohanded/dualsaber/hypereutactic/chaplain/Initialize() . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE) + AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE) /obj/item/twohanded/dualsaber/hypereutactic/chaplain/IsReflect() return FALSE diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index 4552e846ad..fec17cfa69 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -528,7 +528,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /obj/item/melee/baseball_bat/chaplain/Initialize() . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE) + AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE) /obj/item/melee/baseball_bat/homerun name = "home run bat" diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index dde9bce1bc..cec97d5d8b 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -495,7 +495,25 @@ icon_state = "sofamiddle" icon = 'icons/obj/sofa.dmi' buildstackamount = 1 - item_chair = null + var/mutable_appearance/armrest + +/obj/structure/chair/sofa/Initialize() + armrest = mutable_appearance(icon, "[icon_state]_armrest") + return ..() + +/obj/structure/chair/sofa/post_buckle_mob(mob/living/M) + . = ..() + update_armrest() + +/obj/structure/chair/sofa/proc/update_armrest() + if(has_buckled_mobs()) + add_overlay(armrest) + else + cut_overlay(armrest) + +/obj/structure/chair/sofa/post_unbuckle_mob() + . = ..() + update_armrest() /obj/structure/chair/sofa/left icon_state = "sofaend_left" @@ -504,4 +522,7 @@ icon_state = "sofaend_right" /obj/structure/chair/sofa/corner - icon_state = "sofacorner" \ No newline at end of file + icon_state = "sofacorner" + +/obj/structure/chair/sofa/corner/handle_layer() //only the armrest/back of this chair should cover the mob. + return \ No newline at end of file diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 1f7f0ab391..1e1fee0bfe 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -41,7 +41,7 @@ LINEN BINS return /obj/item/bedsheet/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/wirecutters) || I.is_sharp()) + if(istype(I, /obj/item/wirecutters) || I.get_sharpness()) var/obj/item/stack/sheet/cloth/C = new (get_turf(src), 3) transfer_fingerprints_to(C) C.add_fingerprint(user) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 172120861b..b9b08802d0 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -44,7 +44,7 @@ update_icon() PopulateContents() if(mapload && !opened) // if closed, any item at the crate's loc is put in the contents - take_contents() + addtimer(CALLBACK(src, .proc/take_contents), 0) if(secure) lockerelectronics = new(src) lockerelectronics.accesses = req_access diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index a7adafdad4..f173ac0662 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -10,7 +10,7 @@ new /obj/item/clothing/under/rank/chief_engineer(src) new /obj/item/clothing/under/rank/chief_engineer/skirt(src) new /obj/item/clothing/head/hardhat/white(src) - new /obj/item/clothing/head/welding(src) + new /obj/item/clothing/head/hardhat/weldhat/white(src) new /obj/item/clothing/gloves/color/yellow(src) new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/tank/jetpack/suit(src) diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index 585f60a347..6ef6f2d5ce 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -26,7 +26,7 @@ if (prob(40)) new /obj/item/storage/toolbox/emergency(src) - switch (pickweight(list("small" = 40, "aid" = 25, "tank" = 20, "both" = 10, "nothing" = 4, "delete" = 1))) + switch (pickweight(list("small" = 40, "aid" = 25, "tank" = 20, "both" = 10, "nothing" = 5))) if ("small") new /obj/item/tank/internals/emergency_oxygen(src) new /obj/item/tank/internals/emergency_oxygen(src) @@ -49,9 +49,7 @@ if ("nothing") // doot - // teehee - if ("delete") - qdel(src) + return /* * Fire Closet diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index d52ec81a05..d7e2d5564a 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -236,7 +236,7 @@ canSmoothWith = list(/obj/structure/falsewall/plasma, /turf/closed/wall/mineral/plasma) /obj/structure/falsewall/plasma/attackby(obj/item/W, mob/user, params) - if(W.is_hot() > 300) + if(W.get_temperature() > 300) var/turf/T = get_turf(src) message_admins("Plasma falsewall ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") log_game("Plasma falsewall ignited by [key_name(user)] in [AREACOORD(T)]") diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 7c73a1fd8c..12529fb9e0 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -300,18 +300,9 @@ throw_speed = 2 throw_range = 4 - -/obj/item/twohanded/required/kirbyplants/equipped(mob/living/user) - var/image/I = image(icon = 'icons/obj/flora/plants.dmi' , icon_state = src.icon_state, loc = user) - I.copy_overlays(src) - I.override = 1 - add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/everyone, "sneaking_mission", I) - I.layer = ABOVE_MOB_LAYER - ..() - -/obj/item/twohanded/required/kirbyplants/dropped(mob/living/user) - ..() - user.remove_alt_appearance("sneaking_mission") +/obj/item/twohanded/required/kirbyplants/Initialize() + . = ..() + AddComponent(/datum/component/tactical) /obj/item/twohanded/required/kirbyplants/random icon = 'icons/obj/flora/_flora.dmi' diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 5733ea123c..efb12ae34a 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -193,7 +193,7 @@ return /obj/structure/mineral_door/transparent/plasma/attackby(obj/item/W, mob/user, params) - if(W.is_hot()) + if(W.get_temperature()) var/turf/T = get_turf(src) message_admins("Plasma mineral door ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") log_game("Plasma mineral door ignited by [key_name(user)] in [AREACOORD(T)]") diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index 0e2f951f38..36dbcc1e28 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -104,12 +104,12 @@ playing = FALSE hearing_mobs = null return - if(!lentext(note)) + if(!length(note)) continue var/cur_note = text2ascii(note) - 96 if(cur_note < 1 || cur_note > 7) continue - for(var/i=2 to lentext(note)) + for(var/i=2 to length(note)) var/ni = copytext(note,i,i+1) if(!text2num(ni)) if(ni == "#" || ni == "b" || ni == "n") @@ -209,7 +209,7 @@ lines.Cut(MUSIC_MAXLINES + 1) var/linenum = 1 for(var/l in lines) - if(lentext(l) > MUSIC_MAXLINECHARS) + if(length(l) > MUSIC_MAXLINECHARS) to_chat(usr, "Line [linenum] too long!") lines.Remove(l) else @@ -236,11 +236,11 @@ if(!in_range(instrumentObj, usr)) return - if(lentext(t) >= MUSIC_MAXLINES * MUSIC_MAXLINECHARS) + if(length(t) >= MUSIC_MAXLINES * MUSIC_MAXLINECHARS) var/cont = input(usr, "Your message is too long! Would you like to continue editing it?", "", "yes") in list("yes", "no") if(cont == "no") break - while(lentext(t) > MUSIC_MAXLINES * MUSIC_MAXLINECHARS) + while(length(t) > MUSIC_MAXLINES * MUSIC_MAXLINECHARS) ParseSong(t) else if(href_list["help"]) @@ -272,7 +272,7 @@ return if(lines.len > MUSIC_MAXLINES) return - if(lentext(newline) > MUSIC_MAXLINECHARS) + if(length(newline) > MUSIC_MAXLINECHARS) newline = copytext(newline, 1, MUSIC_MAXLINECHARS) lines.Add(newline) @@ -287,7 +287,7 @@ var/content = html_encode(input("Enter your line: ", instrumentObj.name, lines[num]) as text|null) if(!content || !in_range(instrumentObj, usr)) return - if(lentext(content) > MUSIC_MAXLINECHARS) + if(length(content) > MUSIC_MAXLINECHARS) content = copytext(content, 1, MUSIC_MAXLINECHARS) if(num > lines.len || num < 1) return diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index dd28168ccc..5e6b35ba4f 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -127,11 +127,11 @@ ..() /obj/structure/statue/plasma/attackby(obj/item/W, mob/user, params) - if(W.is_hot() > 300 && !QDELETED(src))//If the temperature of the object is over 300, then ignite + if(W.get_temperature() > 300 && !QDELETED(src))//If the temperature of the object is over 300, then ignite var/turf/T = get_turf(src) message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") log_game("Plasma statue ignited by [key_name(user)] in [AREACOORD(T)]") - ignite(W.is_hot()) + ignite(W.get_temperature()) else return ..() diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm index ffc2c344f9..176779abd7 100644 --- a/code/game/objects/structures/traps.dm +++ b/code/game/objects/structures/traps.dm @@ -65,6 +65,8 @@ var/mob/M = AM if(M.mind in immune_minds) return + if(M.anti_magic_check()) + flare() if(charges <= 0) return flare() diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 9fc055c2ba..794776cfa5 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -731,8 +731,8 @@ /obj/structure/window/paperframe/attackby(obj/item/W, mob/user) - if(W.is_hot()) - fire_act(W.is_hot()) + if(W.get_temperature()) + fire_act(W.get_temperature()) return if(user.a_intent == INTENT_HARM) return ..() diff --git a/code/game/turfs/simulated/floor/mineral_floor.dm b/code/game/turfs/simulated/floor/mineral_floor.dm index a77417e4e4..b71fb51123 100644 --- a/code/game/turfs/simulated/floor/mineral_floor.dm +++ b/code/game/turfs/simulated/floor/mineral_floor.dm @@ -43,10 +43,10 @@ PlasmaBurn(exposed_temperature) /turf/open/floor/mineral/plasma/attackby(obj/item/W, mob/user, params) - if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite + if(W.get_temperature() > 300)//If the temperature of the object is over 300, then ignite message_admins("Plasma flooring was ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(src)]") log_game("Plasma flooring was ignited by [key_name(user)] in [AREACOORD(src)]") - ignite(W.is_hot()) + ignite(W.get_temperature()) return ..() diff --git a/code/game/turfs/simulated/wall/mineral_walls.dm b/code/game/turfs/simulated/wall/mineral_walls.dm index dbffd1010b..9962f72d4a 100644 --- a/code/game/turfs/simulated/wall/mineral_walls.dm +++ b/code/game/turfs/simulated/wall/mineral_walls.dm @@ -94,10 +94,10 @@ canSmoothWith = list(/turf/closed/wall/mineral/plasma, /obj/structure/falsewall/plasma) /turf/closed/wall/mineral/plasma/attackby(obj/item/W, mob/user, params) - if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite + if(W.get_temperature() > 300)//If the temperature of the object is over 300, then ignite message_admins("Plasma wall ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(src)]") log_game("Plasma wall ignited by [key_name(user)] in [AREACOORD(src)]") - ignite(W.is_hot()) + ignite(W.get_temperature()) return ..() diff --git a/code/game/turfs/simulated/wall/reinf_walls.dm b/code/game/turfs/simulated/wall/reinf_walls.dm index d52a3bcc23..0d9bff1bdf 100644 --- a/code/game/turfs/simulated/wall/reinf_walls.dm +++ b/code/game/turfs/simulated/wall/reinf_walls.dm @@ -227,3 +227,29 @@ /turf/closed/wall/r_wall/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) if(the_rcd.canRturf) return ..() + +/turf/closed/wall/r_wall/syndicate + name = "hull" + desc = "The armored hull of an ominous looking ship." + icon = 'icons/turf/walls/plastitanium_wall.dmi' + icon_state = "map-shuttle" + explosion_block = 20 + sheet_type = /obj/item/stack/sheet/mineral/plastitanium + smooth = SMOOTH_MORE|SMOOTH_DIAGONAL + canSmoothWith = list(/turf/closed/wall/r_wall/syndicate, /turf/closed/wall/mineral/plastitanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock, /obj/structure/window/plastitanium, /obj/structure/shuttle/engine, /obj/structure/falsewall/plastitanium) + +/turf/closed/wall/r_wall/syndicate/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) + return FALSE + +/turf/closed/wall/r_wall/syndicate/nodiagonal + smooth = SMOOTH_MORE + icon_state = "map-shuttle_nd" + +/turf/closed/wall/r_wall/syndicate/nosmooth + icon = 'icons/turf/shuttle.dmi' + icon_state = "wall" + smooth = SMOOTH_FALSE + +/turf/closed/wall/r_wall/syndicate/overspace + icon_state = "map-overspace" + fixed_underlay = list("space"=1) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 555c35980d..7fafca69f0 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -682,7 +682,7 @@ log_admin("[key_name(usr)] delayed the round start.") else to_chat(world, "The game will start in [DisplayTimeText(newtime)].") - SEND_SOUND(world, sound('sound/ai/attention.ogg')) + SEND_SOUND(world, sound(get_announcer_sound("attention"))) log_admin("[key_name(usr)] set the pre-game delay to [DisplayTimeText(newtime)].") SSblackbox.record_feedback("tally", "admin_verb", 1, "Delay Game Start") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index cff7faadd8..eae59fcb93 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -25,6 +25,9 @@ H.facial_hair_color = H.hair_color H.eye_color = random_eye_color() H.dna.blood_type = random_blood_type() + H.saved_underwear = H.underwear + H.saved_undershirt = H.undershirt + H.saved_socks = H.socks // Mutant randomizing, doesn't affect the mob appearance unless it's the specific mutant. H.dna.features["mcolor"] = random_short_color() diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index 58fd627c74..70ae133a31 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -400,7 +400,7 @@ SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Chinese Cartoons")) message_admins("[key_name_admin(usr)] made everything kawaii.") for(var/mob/living/carbon/human/H in GLOB.carbon_list) - SEND_SOUND(H, sound('sound/ai/animes.ogg')) + SEND_SOUND(H, sound(get_announcer_sound("animes"))) if(H.dna.species.id == "human") if(H.dna.features["tail_human"] == "None" || H.dna.features["ears"] == "None") @@ -469,7 +469,7 @@ if(is_station_level(W.z) && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison)) W.req_access = list() message_admins("[key_name_admin(usr)] activated Egalitarian Station mode") - priority_announce("CentCom airlock control override activated. Please take this time to get acquainted with your coworkers.", null, 'sound/ai/commandreport.ogg') + priority_announce("CentCom airlock control override activated. Please take this time to get acquainted with your coworkers.", null, "commandreport") if("ak47s") if(!check_rights(R_FUN)) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index b0b9190556..8b105da43b 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1347,7 +1347,7 @@ else if(href_list["f_secret"]) return HandleFSecret() - + else if(href_list["f_dynamic_roundstart"]) if(!check_rights(R_ADMIN)) return @@ -1593,7 +1593,7 @@ GLOB.dynamic_stacking_limit = input(usr,"Change the threat limit at which round-endings rulesets will start to stack.", "Change stacking limit", null) as num log_admin("[key_name(usr)] set 'stacking_limit' to [GLOB.dynamic_stacking_limit].") message_admins("[key_name(usr)] set 'stacking_limit' to [GLOB.dynamic_stacking_limit].") - dynamic_mode_options(usr) + dynamic_mode_options(usr) else if(href_list["f_dynamic_high_pop_limit"]) if(!check_rights(R_ADMIN)) @@ -1612,7 +1612,7 @@ log_admin("[key_name(usr)] set 'high_pop_limit' to [GLOB.dynamic_high_pop_limit].") message_admins("[key_name(usr)] set 'high_pop_limit' to [GLOB.dynamic_high_pop_limit].") - dynamic_mode_options(usr) + dynamic_mode_options(usr) else if(href_list["f_dynamic_forced_threat"]) if(!check_rights(R_ADMIN)) @@ -1631,7 +1631,7 @@ log_admin("[key_name(usr)] set 'forced_threat_level' to [GLOB.dynamic_forced_threat_level].") message_admins("[key_name(usr)] set 'forced_threat_level' to [GLOB.dynamic_forced_threat_level].") - dynamic_mode_options(usr) + dynamic_mode_options(usr) else if(href_list["c_mode2"]) if(!check_rights(R_ADMIN|R_SERVER)) @@ -2442,7 +2442,7 @@ return src.admincaster_feed_channel.channel_name = stripped_input(usr, "Provide a Feed Channel Name.", "Network Channel Handler", "") while (findtext(src.admincaster_feed_channel.channel_name," ") == 1) - src.admincaster_feed_channel.channel_name = copytext(src.admincaster_feed_channel.channel_name,2,lentext(src.admincaster_feed_channel.channel_name)+1) + src.admincaster_feed_channel.channel_name = copytext(src.admincaster_feed_channel.channel_name,2,length(src.admincaster_feed_channel.channel_name)+1) src.access_news_network() else if(href_list["ac_set_channel_lock"]) @@ -2484,7 +2484,7 @@ return src.admincaster_feed_message.body = adminscrub(input(usr, "Write your Feed story.", "Network Channel Handler", "")) while (findtext(src.admincaster_feed_message.returnBody(-1)," ") == 1) - src.admincaster_feed_message.body = copytext(src.admincaster_feed_message.returnBody(-1),2,lentext(src.admincaster_feed_message.returnBody(-1))+1) + src.admincaster_feed_message.body = copytext(src.admincaster_feed_message.returnBody(-1),2,length(src.admincaster_feed_message.returnBody(-1))+1) src.access_news_network() else if(href_list["ac_submit_new_message"]) @@ -2545,7 +2545,7 @@ return src.admincaster_wanted_message.criminal = adminscrub(input(usr, "Provide the name of the Wanted person.", "Network Security Handler", "")) while(findtext(src.admincaster_wanted_message.criminal," ") == 1) - src.admincaster_wanted_message.criminal = copytext(admincaster_wanted_message.criminal,2,lentext(admincaster_wanted_message.criminal)+1) + src.admincaster_wanted_message.criminal = copytext(admincaster_wanted_message.criminal,2,length(admincaster_wanted_message.criminal)+1) src.access_news_network() else if(href_list["ac_set_wanted_desc"]) @@ -2553,7 +2553,7 @@ return src.admincaster_wanted_message.body = adminscrub(input(usr, "Provide the a description of the Wanted person and any other details you deem important.", "Network Security Handler", "")) while (findtext(src.admincaster_wanted_message.body," ") == 1) - src.admincaster_wanted_message.body = copytext(src.admincaster_wanted_message.body,2,lentext(src.admincaster_wanted_message.body)+1) + src.admincaster_wanted_message.body = copytext(src.admincaster_wanted_message.body,2,length(src.admincaster_wanted_message.body)+1) src.access_news_network() else if(href_list["ac_submit_wanted"]) diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index e70ea1c1b3..644b2729e0 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -307,11 +307,11 @@ GLOBAL_PROTECT(VVpixelmovement) // the type with the base type removed from the begaining var/fancytype = types[D.type] if (findtext(fancytype, types[type])) - fancytype = copytext(fancytype, lentext(types[type])+1) - var/shorttype = copytext("[D.type]", lentext("[type]")+1) - if (lentext(shorttype) > lentext(fancytype)) + fancytype = copytext(fancytype, length(types[type])+1) + var/shorttype = copytext("[D.type]", length("[type]")+1) + if (length(shorttype) > length(fancytype)) shorttype = fancytype - if (!lentext(shorttype)) + if (!length(shorttype)) shorttype = "/" .["[D]([shorttype])[REF(D)]#[i]"] = D diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 246ccb1d07..d7dd8db08d 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -560,7 +560,7 @@ Traitors and the like can also be revived with the previous role mostly intact. var/announce_command_report = TRUE switch(confirm) if("Yes") - priority_announce(input, null, 'sound/ai/commandreport.ogg') + priority_announce(input, null, "commandreport") announce_command_report = FALSE if("Cancel") return diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm index 42719e28bd..1894d8c7ae 100644 --- a/code/modules/antagonists/_common/antag_datum.dm +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -96,7 +96,6 @@ GLOBAL_LIST_EMPTY(antagonists) LAZYREMOVE(owner.antag_datums, src) if(!silent && owner.current) farewell() - owner.objectives -= objectives var/datum/team/team = get_team() if(team) team.remove_member(owner) @@ -132,14 +131,14 @@ GLOBAL_LIST_EMPTY(antagonists) report += printplayer(owner) var/objectives_complete = TRUE - if(owner.objectives.len) - report += printobjectives(owner) - for(var/datum/objective/objective in owner.objectives) + if(objectives.len) + report += printobjectives(objectives) + for(var/datum/objective/objective in objectives) if(!objective.check_completion()) objectives_complete = FALSE break - if(owner.objectives.len == 0 || objectives_complete) + if(objectives.len == 0 || objectives_complete) report += "The [name] was successful!" else report += "The [name] has failed!" @@ -216,25 +215,6 @@ GLOBAL_LIST_EMPTY(antagonists) return antag_memory = new_memo -//This datum will autofill the name with special_role -//Used as placeholder for minor antagonists, please create proper datums for these -/datum/antagonist/auto_custom - show_in_antagpanel = FALSE - antagpanel_category = "Other" - show_name_in_check_antagonists = TRUE - -/datum/antagonist/auto_custom/on_gain() - ..() - name = owner.special_role - //Add all objectives not already owned by other datums to this one. - var/list/already_registered_objectives = list() - for(var/datum/antagonist/A in owner.antag_datums) - if(A == src) - continue - else - already_registered_objectives |= A.objectives - objectives = owner.objectives - already_registered_objectives - //This one is created by admin tools for custom objectives /datum/antagonist/custom antagpanel_category = "Custom" diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index 3d874aac58..c1088cbb3d 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -345,8 +345,8 @@ if(QDELETED(G)) return - if(istype(C.get_item_by_slot(SLOT_HEAD), /obj/item/clothing/head/foilhat)) - to_chat(user, "Your target seems to have some sort of protective headgear on, blocking the message from being sent!") + if(C.anti_magic_check(FALSE, FALSE, TRUE, 0)) + to_chat(user, "Your target seems to have some sort of tinfoil protection on, blocking the message from being sent!") return G.mind_control(command, user) @@ -524,10 +524,10 @@ Congratulations! You are now trained for invasive xenobiology research!"} /obj/item/abductor_baton/proc/SleepAttack(mob/living/L,mob/living/user) if(L.incapacitated(TRUE, TRUE)) - if(istype(L.get_item_by_slot(SLOT_HEAD), /obj/item/clothing/head/foilhat)) - to_chat(user, "The specimen's protective headgear is interfering with the sleep inducement!") - L.visible_message("[user] tried to induced sleep in [L] with [src], but [L.p_their()] headgear protected [L.p_them()]!", \ - "You feel a strange wave of heavy drowsiness wash over you, but your headgear deflects most of it!") + if(L.anti_magic_check(FALSE, FALSE, TRUE, 0)) + to_chat(user, "The specimen's tinfoil protection is interfering with the sleep inducement!") + L.visible_message("[user] tried to induced sleep in [L] with [src], but [L.p_their()] tinfoil protected [L.p_them()]!", \ + "You feel a strange wave of heavy drowsiness wash over you, but your tinfoil protection deflects most of it!") L.drowsyness += 2 return L.visible_message("[user] has induced sleep in [L] with [src]!", \ @@ -536,10 +536,10 @@ Congratulations! You are now trained for invasive xenobiology research!"} L.Sleeping(1200) log_combat(user, L, "put to sleep") else - if(istype(L.get_item_by_slot(SLOT_HEAD), /obj/item/clothing/head/foilhat)) - to_chat(user, "The specimen's protective headgear is completely blocking our sleep inducement methods!") - L.visible_message("[user] tried to induce sleep in [L] with [src], but [L.p_their()] headgear completely protected [L.p_them()]!", \ - "Any sense of drowsiness is quickly diminished as your headgear deflects the effects!") + if(L.anti_magic_check(FALSE, FALSE, TRUE, 0)) + to_chat(user, "The specimen's tinfoil protection is completely blocking our sleep inducement methods!") + L.visible_message("[user] tried to induce sleep in [L] with [src], but [L.p_their()] tinfoil completely protected [L.p_them()]!", \ + "Any sense of drowsiness is quickly diminished as your tinfoil protection deflects the effects!") return L.drowsyness += 1 to_chat(user, "Sleep inducement works fully only on stunned specimens! ") diff --git a/code/modules/antagonists/abductor/machinery/console.dm b/code/modules/antagonists/abductor/machinery/console.dm index 9a9b1a6ba0..bcf02bda01 100644 --- a/code/modules/antagonists/abductor/machinery/console.dm +++ b/code/modules/antagonists/abductor/machinery/console.dm @@ -178,8 +178,8 @@ c.console = src /obj/machinery/abductor/console/proc/AddSnapshot(mob/living/carbon/human/target) - if(istype(target.get_item_by_slot(SLOT_HEAD), /obj/item/clothing/head/foilhat)) - say("Subject wearing specialized protective headgear, unable to get a proper scan!") + if(target.anti_magic_check(FALSE, FALSE, TRUE, 0)) + say("Subject wearing specialized protective tinfoil gear, unable to get a proper scan!") return var/datum/icon_snapshot/entry = new entry.name = target.name diff --git a/code/modules/antagonists/blob/blob.dm b/code/modules/antagonists/blob/blob.dm index 964bc99311..3d6db983dc 100644 --- a/code/modules/antagonists/blob/blob.dm +++ b/code/modules/antagonists/blob/blob.dm @@ -30,7 +30,6 @@ var/datum/objective/blob_takeover/main = new main.owner = owner objectives += main - owner.objectives |= objectives /datum/antagonist/blob/apply_innate_effects(mob/living/mob_override) if(!isovermind(owner.current)) diff --git a/code/modules/antagonists/blob/blob/blobs/core.dm b/code/modules/antagonists/blob/blob/blobs/core.dm index 81792ca4f6..58f79e1c73 100644 --- a/code/modules/antagonists/blob/blob/blobs/core.dm +++ b/code/modules/antagonists/blob/blob/blobs/core.dm @@ -27,7 +27,7 @@ . = ..() /obj/structure/blob/core/proc/generate_announcement() - priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak5.ogg') + priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", "outbreak5") /obj/structure/blob/core/scannerreport() return "Directs the blob's expansion, gradually expands, and sustains nearby blob spores and blobbernauts." diff --git a/code/modules/antagonists/blood_contract/blood_contract.dm b/code/modules/antagonists/blood_contract/blood_contract.dm new file mode 100644 index 0000000000..4e7238647e --- /dev/null +++ b/code/modules/antagonists/blood_contract/blood_contract.dm @@ -0,0 +1,33 @@ + +/datum/antagonist/blood_contract + name = "Blood Contract Target" + show_in_roundend = FALSE + show_in_antagpanel = FALSE + +/datum/antagonist/blood_contract/on_gain() + . = ..() + give_objective() + start_the_hunt() + +/datum/antagonist/blood_contract/proc/give_objective() + var/datum/objective/survive/survive = new + survive.owner = owner + objectives += survive + +/datum/antagonist/blood_contract/greet() + . = ..() + to_chat(owner, "You've been marked for death! Don't let the demons get you! KILL THEM ALL!") + +/datum/antagonist/blood_contract/proc/start_the_hunt() + var/mob/living/carbon/human/H = owner.current + if(!istype(H)) + return + H.add_atom_colour("#FF0000", ADMIN_COLOUR_PRIORITY) + var/obj/effect/mine/pickup/bloodbath/B = new(H) + INVOKE_ASYNC(B, /obj/effect/mine/pickup/bloodbath/.proc/mineEffect, H) //could use moving out from the mine + + for(var/mob/living/carbon/human/P in GLOB.player_list) + if(P == H) + continue + to_chat(P, "You have an overwhelming desire to kill [H]. [H.p_theyve(TRUE)] been marked red! Whoever [H.p_they()] [H.p_were()], friend or foe, go kill [H.p_them()]!") + P.put_in_hands(new /obj/item/kitchen/knife/butcher(P), TRUE) diff --git a/code/modules/antagonists/brainwashing/brainwashing.dm b/code/modules/antagonists/brainwashing/brainwashing.dm index f1cff2bff4..491ee9d2e5 100644 --- a/code/modules/antagonists/brainwashing/brainwashing.dm +++ b/code/modules/antagonists/brainwashing/brainwashing.dm @@ -9,7 +9,6 @@ for(var/O in directives) var/datum/objective/brainwashing/objective = new(O) B.objectives += objective - M.objectives += objective B.greet() else B = new() @@ -32,10 +31,6 @@ antagpanel_category = "Other" show_name_in_check_antagonists = TRUE -/datum/antagonist/brainwashed/on_gain() - owner.objectives |= objectives - . = ..() - /datum/antagonist/brainwashed/greet() to_chat(owner, "Your mind reels as it begins focusing on a single purpose...") to_chat(owner, "Follow the Directives, at any cost!") diff --git a/code/modules/antagonists/brother/brother.dm b/code/modules/antagonists/brother/brother.dm index f63e81acbf..7c589bb3ab 100644 --- a/code/modules/antagonists/brother/brother.dm +++ b/code/modules/antagonists/brother/brother.dm @@ -20,7 +20,6 @@ /datum/antagonist/brother/on_gain() SSticker.mode.brothers += owner objectives += team.objectives - owner.objectives += objectives owner.special_role = special_role finalize_brother() return ..() diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm index b6e3d66c35..0d68660d9d 100644 --- a/code/modules/antagonists/changeling/changeling.dm +++ b/code/modules/antagonists/changeling/changeling.dm @@ -459,8 +459,6 @@ objectives += identity_theft escape_objective_possible = FALSE - owner.objectives |= objectives - /datum/antagonist/changeling/proc/update_changeling_icons_added() var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_CHANGELING] hud.join_hud(owner.current) diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index c428c56d45..92a4f28308 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -334,7 +334,7 @@ /obj/item/projectile/tentacle/proc/tentacle_stab(mob/living/carbon/human/H, mob/living/carbon/C) if(H.Adjacent(C)) for(var/obj/item/I in H.held_items) - if(I.is_sharp()) + if(I.get_sharpness()) C.visible_message("[H] impales [C] with [H.p_their()] [I.name]!", "[H] impales you with [H.p_their()] [I.name]!") C.apply_damage(I.force, BRUTE, BODY_ZONE_CHEST) H.do_item_attack_animation(C, used_item = I) diff --git a/code/modules/antagonists/changeling/powers/strained_muscles.dm b/code/modules/antagonists/changeling/powers/strained_muscles.dm index 081b1181dc..1f25e06324 100644 --- a/code/modules/antagonists/changeling/powers/strained_muscles.dm +++ b/code/modules/antagonists/changeling/powers/strained_muscles.dm @@ -21,7 +21,7 @@ to_chat(user, "Our muscles tense and strengthen.") changeling.chem_recharge_slowdown += 0.5 else - REMOVE_TRAIT(user, TRAIT_GOTTAGOFAST, "changeling_muscles") + user.remove_movespeed_modifier(MOVESPEED_ID_CHANGELING_MUSCLES) to_chat(user, "Our muscles relax.") changeling.chem_recharge_slowdown -= 0.5 if(stacks >= 20) @@ -36,12 +36,12 @@ /obj/effect/proc_holder/changeling/strained_muscles/proc/muscle_loop(mob/living/carbon/user) var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) while(active) - ADD_TRAIT(user, TRAIT_GOTTAGOFAST, "changeling_muscles") + user.add_movespeed_modifier(MOVESPEED_ID_CHANGELING_MUSCLES, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) if(user.stat != CONSCIOUS || user.staminaloss >= 90) active = !active to_chat(user, "Our muscles relax without the energy to strengthen them.") user.Knockdown(40) - REMOVE_TRAIT(user, TRAIT_GOTTAGOFAST, "changeling_muscles") + user.remove_movespeed_modifier(MOVESPEED_ID_CHANGELING_MUSCLES) changeling.chem_recharge_slowdown -= 0.5 break diff --git a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm index 8000be87e6..b5a218131b 100644 --- a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm +++ b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm @@ -147,6 +147,11 @@ if(iscarbon(L)) var/mob/living/carbon/M = L M.uncuff() + var/brutedamage = L.getBruteLoss() + var/burndamage = L.getFireLoss() + if(brutedamage || burndamage) + L.adjustBruteLoss(-(brutedamage * 0.25)) + L.adjustFireLoss(-(burndamage * 0.25)) L.Knockdown(50) //Completely defenseless for five seconds - mainly to give them time to read over the information they've just been presented with if(iscarbon(L)) var/mob/living/carbon/C = L @@ -262,7 +267,7 @@ clockwork_desc = "A sigil that will drain non-Servants that remain on it. Servants that remain on it will be healed if it has any vitality drained." icon_state = "sigilvitality" layer = SIGIL_LAYER - alpha = 75 + alpha = 125 color = "#123456" affects_servants = TRUE stat_affected = DEAD diff --git a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm index 3ad6684725..07b4366194 100644 --- a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm +++ b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm @@ -35,7 +35,7 @@ /obj/item/clockwork/weapon/ratvarian_spear/attack(mob/living/target, mob/living/carbon/human/user) . = ..() - if(!QDELETED(target) && target.stat != DEAD && !target.anti_magic_check() && !is_servant_of_ratvar(target)) //we do bonus damage on attacks unless they're a servant, have a null rod, or are dead + if(!QDELETED(target) && target.stat != DEAD && !target.anti_magic_check(chargecost = 0) && !is_servant_of_ratvar(target)) //we do bonus damage on attacks unless they're a servant, have a null rod, or are dead var/bonus_damage = bonus_burn //normally a total of 20 damage, 30 with ratvar if(issilicon(target)) target.visible_message("[target] shudders violently at [src]'s touch!", "ERROR: Temperature rising!") diff --git a/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm b/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm index 28deba679b..644d9eedd5 100644 --- a/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm +++ b/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm @@ -190,8 +190,8 @@ for(var/mob/living/L in range(1, src)) if(is_servant_of_ratvar(L)) continue - if(L.anti_magic_check()) - var/atom/I = L.anti_magic_check() + var/atom/I = L.anti_magic_check() + if(I) if(isitem(I)) L.visible_message("Strange energy flows into [L]'s [I.name]!", \ "Your [I.name] shields you from [src]!") diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm index 82c1291433..4ab481cfe2 100644 --- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm +++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm @@ -80,7 +80,7 @@ power_cost = 125 whispered = TRUE object_path = /obj/effect/clockwork/sigil/submission - creator_message = "A luminous sigil appears below you. Any non-Servants to cross it will be converted after 8 seconds if they do not move." + creator_message = "A luminous sigil appears below you. Any non-Servants to cross it will be converted and healed of some of their wounds after 8 seconds if they do not move." usage_tip = "This is the primary conversion method, though it will not penetrate mindshield implants." tier = SCRIPTURE_DRIVER one_per_tile = TRUE diff --git a/code/modules/antagonists/clockcult/clock_structures/_trap_object.dm b/code/modules/antagonists/clockcult/clock_structures/_trap_object.dm index 00a3406da1..491f1d24b3 100644 --- a/code/modules/antagonists/clockcult/clock_structures/_trap_object.dm +++ b/code/modules/antagonists/clockcult/clock_structures/_trap_object.dm @@ -71,6 +71,7 @@ return TRUE /obj/structure/destructible/clockwork/trap/proc/activate() + return //These objects send signals to normal traps to activate /obj/structure/destructible/clockwork/trap/trigger @@ -79,6 +80,14 @@ break_message = "The trigger breaks apart!" density = FALSE +/obj/structure/destructible/clockwork/trap/trigger/Initialize() + . = ..() + for(var/obj/structure/destructible/clockwork/trap/T in get_turf(src)) + if(!istype(T, /obj/structure/destructible/clockwork/trap/trigger)) + wired_to += T + T.wired_to += src + to_chat(usr, "[src] automatically links with [T] beneath it.") + /obj/structure/destructible/clockwork/trap/trigger/activate() for(var/obj/structure/destructible/clockwork/trap/T in wired_to) if(istype(T, /obj/structure/destructible/clockwork/trap/trigger)) //Triggers don't go off multiple times diff --git a/code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm b/code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm index df0083e845..35c1ea7bdd 100644 --- a/code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm +++ b/code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm @@ -60,7 +60,7 @@ else if(isliving(target)) var/mob/living/L = target - if(!L.anti_magic_check()) + if(!L.anti_magic_check(chargecost = 0)) if(isrevenant(L)) var/mob/living/simple_animal/revenant/R = L if(R.revealed) @@ -110,9 +110,7 @@ if(!(BI.resistance_flags & ON_FIRE)) BI.fire_act() continue - if(is_servant_of_ratvar(L) || (HAS_TRAIT(L, TRAIT_BLIND)) || L.anti_magic_check(TRUE, TRUE)) - continue - if(L.stat || L.lying) + if(is_servant_of_ratvar(L) || (HAS_TRAIT(L, TRAIT_BLIND)) || L.anti_magic_check(TRUE, TRUE) || L.incapacitated(TRUE)) continue if (iscarbon(L)) var/mob/living/carbon/c = L diff --git a/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm b/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm index 10c68b606f..1158b02a4c 100644 --- a/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm +++ b/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm @@ -53,7 +53,7 @@ /obj/structure/destructible/clockwork/taunting_trail/proc/affect_mob(mob/living/L) if(istype(L) && !is_servant_of_ratvar(L)) - if(!L.anti_magic_check()) + if(!L.anti_magic_check(chargecost = 0)) L.confused = min(L.confused + 15, 50) L.dizziness = min(L.dizziness + 15, 50) if(L.confused >= 25) diff --git a/code/modules/antagonists/clockcult/clock_structures/trap_triggers/pressure_sensor.dm b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/pressure_sensor.dm index 94f0ba7112..af29bc9b31 100644 --- a/code/modules/antagonists/clockcult/clock_structures/trap_triggers/pressure_sensor.dm +++ b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/pressure_sensor.dm @@ -7,18 +7,10 @@ icon_state = "pressure_sensor" alpha = 50 -/obj/structure/destructible/clockwork/trap/trigger/Initialize() - . = ..() - for(var/obj/structure/destructible/clockwork/trap/T in get_turf(src)) - if(!istype(T, /obj/structure/destructible/clockwork/trap/trigger)) - wired_to += T - T.wired_to += src - to_chat(usr, "[src] automatically links with [T] beneath it.") - /obj/structure/destructible/clockwork/trap/trigger/pressure_sensor/Crossed(atom/movable/AM) if(isliving(AM) && !is_servant_of_ratvar(AM)) var/mob/living/L = AM - if(L.stat || L.m_intent == MOVE_INTENT_WALK || L.lying) + if(L.stat || L.m_intent == MOVE_INTENT_WALK || L.movement_type & (FLYING|FLOATING)) return audible_message("*click*") playsound(src, 'sound/items/screwdriver2.ogg', 50, TRUE) diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index 47cf2abf3f..9989058d43 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -35,7 +35,6 @@ /datum/antagonist/cult/proc/add_objectives() objectives |= cult_team.objectives - owner.objectives |= objectives /datum/antagonist/cult/Destroy() QDEL_NULL(communion) diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 10759afcd0..06ea2cbe0a 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -275,7 +275,7 @@ desc = "A torn, dust-caked hood. Strange letters line the inside." flags_inv = HIDEFACE|HIDEHAIR|HIDEEARS flags_cover = HEADCOVERSEYES - armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 20, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) + armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 20, "bomb" = 65, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) cold_protection = HEAD min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT heat_protection = HEAD @@ -288,7 +288,7 @@ item_state = "cultrobes" body_parts_covered = CHEST|GROIN|LEGS|ARMS allowed = list(/obj/item/tome, /obj/item/melee/cultblade) - armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 20, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) + armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 20, "bomb" = 65, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) flags_inv = HIDEJUMPSUIT cold_protection = CHEST|GROIN|LEGS|ARMS min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT diff --git a/code/modules/antagonists/cult/ritual.dm b/code/modules/antagonists/cult/ritual.dm index 69941f582d..b9e4da8677 100644 --- a/code/modules/antagonists/cult/ritual.dm +++ b/code/modules/antagonists/cult/ritual.dm @@ -107,7 +107,7 @@ This file contains the cult dagger and rune list code if(!(A in summon_objective.summon_spots)) // Check again to make sure they didn't move to_chat(user, "The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!") return - priority_announce("Figments from an eldritch god are being summoned by [user] into [A.map_name] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", 'sound/ai/spanomalies.ogg') + priority_announce("Figments from an eldritch god are being summoned by [user] into [A.map_name] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", "spanomalies") for(var/B in spiral_range_turfs(1, user, 1)) var/obj/structure/emergency_shield/sanguine/N = new(B) shields += N diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 2e233d26e4..f0fc59834c 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -237,7 +237,7 @@ structure_check() searches for nearby cultist structures required for the invoca to_chat(M, "You need at least two invokers to convert [convertee]!") log_game("Offer rune failed - tried conversion with one invoker") return 0 - if(convertee.anti_magic_check(TRUE, TRUE, FALSE, 0)) //Not chargecost because it can be spammed + if(convertee.anti_magic_check(TRUE, TRUE, chargecost = 0)) //Not major because it can be spammed for(var/M in invokers) to_chat(M, "Something is shielding [convertee]'s mind!") log_game("Offer rune failed - convertee had anti-magic") @@ -767,7 +767,7 @@ structure_check() searches for nearby cultist structures required for the invoca set_light(6, 1, color) for(var/mob/living/L in viewers(T)) if(!iscultist(L) && L.blood_volume) - var/atom/I = L.anti_magic_check() + var/atom/I = L.anti_magic_check(chargecost = 0) if(I) if(isitem(I)) to_chat(L, "[I] suddenly burns hotly before returning to normal!") @@ -797,7 +797,7 @@ structure_check() searches for nearby cultist structures required for the invoca set_light(6, 1, color) for(var/mob/living/L in viewers(T)) if(!iscultist(L) && L.blood_volume) - if(L.anti_magic_check()) + if(L.anti_magic_check(chargecost = 0)) continue L.take_overall_damage(tick_damage*multiplier, tick_damage*multiplier) if(is_servant_of_ratvar(L)) diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm index dc649025d2..2e38734b6f 100644 --- a/code/modules/antagonists/devil/devil.dm +++ b/code/modules/antagonists/devil/devil.dm @@ -549,7 +549,7 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", var/list/parts = list() parts += printplayer(owner) parts += printdevilinfo() - parts += printobjectives(owner) + parts += printobjectives(objectives) return parts.Join("
") //A simple super light weight datum for the codex gigas. diff --git a/code/modules/antagonists/devil/imp/imp.dm b/code/modules/antagonists/devil/imp/imp.dm index da51a5d698..fa5263059a 100644 --- a/code/modules/antagonists/devil/imp/imp.dm +++ b/code/modules/antagonists/devil/imp/imp.dm @@ -57,3 +57,18 @@ visible_message("[src] screams in agony as it sublimates into a sulfurous smoke.") ghostize() qdel(src) + +/datum/antagonist/imp + name = "Imp" + antagpanel_category = "Devil" + show_in_roundend = FALSE + +/datum/antagonist/imp/on_gain() + . = ..() + give_objectives() + +/datum/antagonist/imp/proc/give_objectives() + var/datum/objective/newobjective = new + newobjective.explanation_text = "Try to get a promotion to a higher devilic rank." + newobjective.owner = owner + objectives += newobjective \ No newline at end of file diff --git a/code/modules/antagonists/devil/true_devil/_true_devil.dm b/code/modules/antagonists/devil/true_devil/_true_devil.dm index afe439f02c..df761ac183 100644 --- a/code/modules/antagonists/devil/true_devil/_true_devil.dm +++ b/code/modules/antagonists/devil/true_devil/_true_devil.dm @@ -147,13 +147,8 @@ if(ascended || user.mind.soulOwner == src.mind) var/mob/living/simple_animal/imp/S = new(get_turf(loc)) user.transfer_ckey(S, FALSE) - S.mind.assigned_role = "Imp" - S.mind.special_role = "Imp" - var/datum/objective/newobjective = new - newobjective.explanation_text = "Try to get a promotion to a higher devilic rank." - S.mind.objectives += newobjective - to_chat(S, S.playstyle_string) - to_chat(S, "Objective #[1]: [newobjective.explanation_text]") + var/datum/antagonist/imp/A = new() + S.mind.add_antag_datum(A) else return ..() diff --git a/code/modules/antagonists/disease/disease_datum.dm b/code/modules/antagonists/disease/disease_datum.dm index eb0feac0a2..1aef9ceba6 100644 --- a/code/modules/antagonists/disease/disease_datum.dm +++ b/code/modules/antagonists/disease/disease_datum.dm @@ -10,12 +10,10 @@ var/datum/objective/O = new /datum/objective/disease_infect() O.owner = owner objectives += O - owner.objectives += O O = new /datum/objective/disease_infect_centcom() O.owner = owner objectives += O - owner.objectives += O . = ..() diff --git a/code/modules/antagonists/ert/ert.dm b/code/modules/antagonists/ert/ert.dm index bb24af4f7a..5968c7643a 100644 --- a/code/modules/antagonists/ert/ert.dm +++ b/code/modules/antagonists/ert/ert.dm @@ -113,7 +113,6 @@ /datum/antagonist/ert/proc/forge_objectives() if(ert_team) objectives |= ert_team.objectives - owner.objectives |= objectives /datum/antagonist/ert/proc/equipERT() var/mob/living/carbon/human/H = owner.current diff --git a/code/modules/antagonists/greentext/greentext.dm b/code/modules/antagonists/greentext/greentext.dm index ffaab71aca..13a3c2a07a 100644 --- a/code/modules/antagonists/greentext/greentext.dm +++ b/code/modules/antagonists/greentext/greentext.dm @@ -8,7 +8,6 @@ O.completed = TRUE //YES! O.owner = owner objectives += O - owner.objectives += objectives /datum/antagonist/greentext/on_gain() forge_objectives() diff --git a/code/modules/antagonists/highlander/highlander.dm b/code/modules/antagonists/highlander/highlander.dm index 51e8d9a13b..49635356ac 100644 --- a/code/modules/antagonists/highlander/highlander.dm +++ b/code/modules/antagonists/highlander/highlander.dm @@ -24,8 +24,6 @@ hijack_objective.owner = owner objectives += hijack_objective - owner.objectives |= objectives - /datum/antagonist/highlander/on_gain() forge_objectives() owner.special_role = "highlander" diff --git a/code/modules/antagonists/magic_servant/magic_servant.dm b/code/modules/antagonists/magic_servant/magic_servant.dm new file mode 100644 index 0000000000..31b51f59f6 --- /dev/null +++ b/code/modules/antagonists/magic_servant/magic_servant.dm @@ -0,0 +1,9 @@ +/datum/antagonist/magic_servant + name = "Magic Servant" + show_in_roundend = FALSE + show_in_antagpanel = FALSE + +/datum/antagonist/magic_servant/proc/setup_master(mob/M) + var/datum/objective/O = new("Serve [M.real_name].") + O.owner = owner + objectives |= O \ No newline at end of file diff --git a/code/modules/antagonists/monkey/monkey.dm b/code/modules/antagonists/monkey/monkey.dm index 9ce28eb60d..e480eb8674 100644 --- a/code/modules/antagonists/monkey/monkey.dm +++ b/code/modules/antagonists/monkey/monkey.dm @@ -63,7 +63,6 @@ /datum/antagonist/monkey/proc/forge_objectives() objectives |= monkey_team.objectives - owner.objectives |= objectives /datum/antagonist/monkey/admin_remove(mob/admin) var/mob/living/carbon/monkey/M = owner.current diff --git a/code/modules/antagonists/ninja/ninja.dm b/code/modules/antagonists/ninja/ninja.dm index a8bce90f1c..52e13bdc69 100644 --- a/code/modules/antagonists/ninja/ninja.dm +++ b/code/modules/antagonists/ninja/ninja.dm @@ -96,7 +96,6 @@ var/datum/objective/O = new /datum/objective/survive() O.owner = owner objectives += O - owner.objectives |= objectives /proc/remove_ninja(mob/living/L) if(!L || !L.mind) diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index add3c1d9b0..d0e6dafbc1 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -343,10 +343,10 @@ /obj/machinery/nuclearbomb/proc/set_anchor() - if(!isinspace()) - anchored = !anchored - else + if(isinspace() && !anchored) to_chat(usr, "There is nothing to anchor to!") + else + anchored = !anchored /obj/machinery/nuclearbomb/proc/set_safety() safety = !safety diff --git a/code/modules/antagonists/nukeop/nukeop.dm b/code/modules/antagonists/nukeop/nukeop.dm index 800448c02f..4604439fc8 100644 --- a/code/modules/antagonists/nukeop/nukeop.dm +++ b/code/modules/antagonists/nukeop/nukeop.dm @@ -87,7 +87,7 @@ /datum/antagonist/nukeop/proc/forge_objectives() if(nuke_team) - owner.objectives |= nuke_team.objectives + objectives |= nuke_team.objectives /datum/antagonist/nukeop/proc/move_to_spawnpoint() var/team_number = 1 diff --git a/code/modules/antagonists/official/official.dm b/code/modules/antagonists/official/official.dm index 26de196cb4..9165a99d42 100644 --- a/code/modules/antagonists/official/official.dm +++ b/code/modules/antagonists/official/official.dm @@ -36,8 +36,6 @@ missionobj.completed = 1 mission = missionobj objectives |= mission - owner.objectives |= objectives - /datum/antagonist/official/on_gain() forge_objectives() diff --git a/code/modules/antagonists/overthrow/overthrow.dm b/code/modules/antagonists/overthrow/overthrow.dm index 075b9f13bc..c8b253793e 100644 --- a/code/modules/antagonists/overthrow/overthrow.dm +++ b/code/modules/antagonists/overthrow/overthrow.dm @@ -26,7 +26,6 @@ // Sets objectives, equips all antags with the storage implant. /datum/antagonist/overthrow/on_gain() objectives += team.objectives - owner.objectives += objectives ..() owner.announce_objectives() equip_overthrow() @@ -34,7 +33,6 @@ /datum/antagonist/overthrow/on_removal() owner.special_role = null - owner.objectives -= objectives ..() // Creates the overthrow team, or sets it. The objectives are static for all the team members. diff --git a/code/modules/antagonists/overthrow/overthrow_team.dm b/code/modules/antagonists/overthrow/overthrow_team.dm index 7f5d010013..a22f08d45c 100644 --- a/code/modules/antagonists/overthrow/overthrow_team.dm +++ b/code/modules/antagonists/overthrow/overthrow_team.dm @@ -35,7 +35,9 @@ objectives += heads_obj for(var/i in members) var/datum/mind/M = i - M.objectives += heads_obj + var/datum/antagonist/overthrow/O = M.has_antag_datum(/datum/antagonist/overthrow) + if(O) + O.objectives += heads_obj heads_obj.find_targets() addtimer(CALLBACK(src,.proc/update_objectives),OBJECTIVE_UPDATING_TIME,TIMER_UNIQUE) diff --git a/code/modules/antagonists/pirate/pirate.dm b/code/modules/antagonists/pirate/pirate.dm index 96830562e9..ff33477909 100644 --- a/code/modules/antagonists/pirate/pirate.dm +++ b/code/modules/antagonists/pirate/pirate.dm @@ -31,12 +31,7 @@ /datum/antagonist/pirate/on_gain() if(crew) - owner.objectives |= crew.objectives - . = ..() - -/datum/antagonist/pirate/on_removal() - if(crew) - owner.objectives -= crew.objectives + objectives |= crew.objectives . = ..() /datum/team/pirate @@ -53,7 +48,9 @@ getbooty.update_explanation_text() objectives += getbooty for(var/datum/mind/M in members) - M.objectives |= objectives + var/datum/antagonist/pirate/P = M.has_antag_datum(/datum/antagonist/pirate) + if(P) + P.objectives |= objectives /datum/objective/loot diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index f380fa68e9..b43024fb31 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -69,7 +69,7 @@ /mob/living/simple_animal/revenant/Initialize(mapload) . = ..() AddSpell(new /obj/effect/proc_holder/spell/targeted/night_vision/revenant(null)) - AddSpell(new /obj/effect/proc_holder/spell/targeted/revenant_transmit(null)) + AddSpell(new /obj/effect/proc_holder/spell/targeted/telepathy/revenant(null)) AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/defile(null)) AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/overload(null)) AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/blight(null)) diff --git a/code/modules/antagonists/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm index a03151e2d7..17d200a685 100644 --- a/code/modules/antagonists/revenant/revenant_abilities.dm +++ b/code/modules/antagonists/revenant/revenant_abilities.dm @@ -66,7 +66,7 @@ if(target.anti_magic_check(FALSE, TRUE)) to_chat(src, "Something's wrong! [target] seems to be resisting the siphoning, leaving you vulnerable!") target.visible_message("[target] slumps onto the ground.", \ - "Violets lights, dancing in your vision, receding--") + "Violet lights, dancing in your vision, receding--") draining = FALSE return var/datum/beam/B = Beam(target,icon_state="drain_life",time=INFINITY) @@ -105,36 +105,16 @@ action_background_icon_state = "bg_revenant" //Transmit: the revemant's only direct way to communicate. Sends a single message silently to a single mob -/obj/effect/proc_holder/spell/targeted/revenant_transmit - name = "Transmit" - desc = "Telepathically transmits a message to the target." +/obj/effect/proc_holder/spell/targeted/telepathy/revenant + name = "Revenant Transmit" panel = "Revenant Abilities" - charge_max = 0 - clothes_req = 0 - range = 7 - include_user = 0 action_icon = 'icons/mob/actions/actions_revenant.dmi' action_icon_state = "r_transmit" action_background_icon_state = "bg_revenant" - -/obj/effect/proc_holder/spell/targeted/revenant_transmit/cast(list/targets, mob/living/simple_animal/revenant/user = usr) - for(var/mob/living/M in targets) - var/msg = stripped_input(usr, "What do you wish to tell [M]?", null, "") - if(!msg) - charge_counter = charge_max - return - log_directed_talk(user, M, msg, LOG_SAY, "revenant whisper") - to_chat(user, "You transmit to [M]: [msg]") - if(!M.anti_magic_check(FALSE, TRUE)) //hear no evil - to_chat(M, "You hear something behind you talking... [msg]") - for(var/ded in GLOB.dead_mob_list) - if(!isobserver(ded)) - continue - var/follow_rev = FOLLOW_LINK(ded, user) - var/follow_whispee = FOLLOW_LINK(ded, M) - to_chat(ded, "[follow_rev] [user] Revenant Transmit: \"[msg]\" to [follow_whispee] [M]") - - + notice = "revennotice" + boldnotice = "revenboldnotice" + holy_check = TRUE + tinfoil_check = FALSE /obj/effect/proc_holder/spell/aoe_turf/revenant clothes_req = 0 diff --git a/code/modules/antagonists/revenant/revenant_antag.dm b/code/modules/antagonists/revenant/revenant_antag.dm index 476db96fb8..8d99edf26e 100644 --- a/code/modules/antagonists/revenant/revenant_antag.dm +++ b/code/modules/antagonists/revenant/revenant_antag.dm @@ -14,8 +14,6 @@ objective2.owner = owner objectives += objective2 - owner.objectives |= objectives - /datum/antagonist/revenant/on_gain() forge_objectives() . = ..() diff --git a/code/modules/antagonists/revenant/revenant_blight.dm b/code/modules/antagonists/revenant/revenant_blight.dm index 3e05b8d945..235e50008c 100644 --- a/code/modules/antagonists/revenant/revenant_blight.dm +++ b/code/modules/antagonists/revenant/revenant_blight.dm @@ -46,11 +46,11 @@ if(!depression) SEND_SIGNAL(affected_mob, COMSIG_ADD_MOOD_EVENT, "rev_blight", /datum/mood_event/revenant_blight) depression = TRUE - SEND_SIGNAL(affected_mob, COMSIG_DECREASE_SANITY, 0.12, SANITY_CRAZY) + SEND_SIGNAL(affected_mob, COMSIG_MODIFY_SANITY, -0.12, SANITY_CRAZY) if(prob(10)) affected_mob.emote(pick("pale","shiver")) if(4) - SEND_SIGNAL(affected_mob, COMSIG_DECREASE_SANITY, 0.18, SANITY_CRAZY) + SEND_SIGNAL(affected_mob, COMSIG_MODIFY_SANITY, -0.18, SANITY_CRAZY) if(prob(15)) affected_mob.emote(pick("pale","shiver","cries")) if(5) diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm index e10d83ffb7..fef7061488 100644 --- a/code/modules/antagonists/revolution/revolution.dm +++ b/code/modules/antagonists/revolution/revolution.dm @@ -66,10 +66,10 @@ return rev_team /datum/antagonist/rev/proc/create_objectives() - owner.objectives |= rev_team.objectives + objectives |= rev_team.objectives /datum/antagonist/rev/proc/remove_objectives() - owner.objectives -= rev_team.objectives + objectives -= rev_team.objectives //Bump up to head_rev /datum/antagonist/rev/proc/promote() @@ -265,7 +265,8 @@ new_target.update_explanation_text() objectives += new_target for(var/datum/mind/M in members) - M.objectives |= objectives + var/datum/antagonist/rev/R = M.has_antag_datum(/datum/antagonist/rev) + R.objectives |= objectives addtimer(CALLBACK(src,.proc/update_objectives),HEAD_UPDATE_PERIOD,TIMER_UNIQUE) diff --git a/code/modules/antagonists/santa/santa.dm b/code/modules/antagonists/santa/santa.dm new file mode 100644 index 0000000000..bf42188cf6 --- /dev/null +++ b/code/modules/antagonists/santa/santa.dm @@ -0,0 +1,29 @@ +/datum/antagonist/santa + name = "Santa" + show_in_antagpanel = FALSE + +/datum/antagonist/santa/on_gain() + . = ..() + give_equipment() + give_objective() + +/datum/antagonist/santa/greet() + . = ..() + to_chat(owner, "You are Santa! Your objective is to bring joy to the people on this station. You can conjure more presents using a spell, and there are several presents in your bag.") + +/datum/antagonist/santa/proc/give_equipment() + var/mob/living/carbon/human/H = owner.current + if(istype(H)) + H.equipOutfit(/datum/outfit/santa) + + owner.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/presents) + var/obj/effect/proc_holder/spell/targeted/area_teleport/teleport/telespell = new + telespell.clothes_req = 0 //santa robes aren't actually magical. + owner.AddSpell(telespell) //does the station have chimneys? WHO KNOWS! + +/datum/antagonist/santa/proc/give_objective() + var/datum/objective/santa_objective = new() + santa_objective.explanation_text = "Bring joy and presents to the station!" + santa_objective.completed = 1 //lets cut our santas some slack. + santa_objective.owner = owner + objectives |= santa_objective \ No newline at end of file diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm index 03a176b054..f45555a6ee 100644 --- a/code/modules/antagonists/slaughter/slaughter.dm +++ b/code/modules/antagonists/slaughter/slaughter.dm @@ -34,7 +34,6 @@ melee_damage_upper = 30 see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE - var/boost = 0 bloodcrawl = BLOODCRAWL_EAT var/playstyle_string = "You are a slaughter demon, a terrible creature from another realm. You have a single desire: To kill. \ You may use the \"Blood Crawl\" ability near blood pools to travel through them, appearing and disappearing from the station at will. \ @@ -54,24 +53,18 @@ if(istype(loc, /obj/effect/dummy/phased_mob/slaughter)) bloodspell.phased = TRUE -/mob/living/simple_animal/slaughter/Life() - ..() - if(boost Target eliminated: [victim.name]") LAZYINITLIST(targets_stolen) - for(var/objective_ in victim.objectives) + for(var/objective_ in victim.get_all_objectives()) if(istype(objective_, /datum/objective/assassinate/internal)) var/datum/objective/assassinate/internal/objective = objective_ if(objective.target==owner) @@ -159,7 +158,7 @@ var/status_text = objective.check_completion() ? "neutralised" : "active" to_chat(owner.current, " New target added to database: [objective.target.name] ([status_text]) ") last_man_standing = TRUE - for(var/objective_ in owner.objectives) + for(var/objective_ in objectives) if(!is_internal_objective(objective_)) continue var/datum/objective/assassinate/internal/objective = objective_ @@ -175,7 +174,7 @@ /datum/antagonist/traitor/internal_affairs/proc/iaa_process() if(owner&&owner.current&&owner.current.stat!=DEAD) - for(var/objective_ in owner.objectives) + for(var/objective_ in objectives) if(!is_internal_objective(objective_)) continue var/datum/objective/assassinate/internal/objective = objective_ diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index e43c2f6254..5dfc08b6cf 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -55,12 +55,10 @@ owner.special_role = null ..() -/datum/antagonist/traitor/proc/add_objective(var/datum/objective/O) - owner.objectives += O +/datum/antagonist/traitor/proc/add_objective(datum/objective/O) objectives += O -/datum/antagonist/traitor/proc/remove_objective(var/datum/objective/O) - owner.objectives -= O +/datum/antagonist/traitor/proc/remove_objective(datum/objective/O) objectives -= O /datum/antagonist/traitor/proc/forge_traitor_objectives() @@ -89,7 +87,7 @@ forge_single_objective() if(is_hijacker && objective_count <= toa) //Don't assign hijack if it would exceed the number of objectives set in config.traitor_objectives_amount - if (!(locate(/datum/objective/hijack) in owner.objectives)) + if (!(locate(/datum/objective/hijack) in objectives)) var/datum/objective/hijack/hijack_objective = new hijack_objective.owner = owner add_objective(hijack_objective) @@ -97,7 +95,7 @@ var/martyr_compatibility = 1 //You can't succeed in stealing if you're dead. - for(var/datum/objective/O in owner.objectives) + for(var/datum/objective/O in objectives) if(!O.martyr_compatible) martyr_compatibility = 0 break @@ -109,7 +107,7 @@ return else - if(!(locate(/datum/objective/escape) in owner.objectives)) + if(!(locate(/datum/objective/escape) in objectives)) var/datum/objective/escape/escape_objective = new escape_objective.owner = owner add_objective(escape_objective) @@ -159,7 +157,7 @@ kill_objective.find_target() add_objective(kill_objective) else - if(prob(15) && !(locate(/datum/objective/download) in owner.objectives) && !(owner.assigned_role in list("Research Director", "Scientist", "Roboticist"))) + if(prob(15) && !(locate(/datum/objective/download) in objectives) && !(owner.assigned_role in list("Research Director", "Scientist", "Roboticist"))) var/datum/objective/download/download_objective = new download_objective.owner = owner download_objective.gen_amount_goal() diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm index ff4f7276bc..e1d607c34b 100644 --- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm +++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm @@ -304,7 +304,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( sleep(30) if(!owner || QDELETED(owner)) return - priority_announce("Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.", "Anomaly Alert", 'sound/ai/aimalf.ogg') + priority_announce("Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.", "Anomaly Alert", "aimalf") set_security_level("delta") var/obj/machinery/doomsday_device/DOOM = new(owner_AI) owner_AI.nuking = TRUE diff --git a/code/modules/antagonists/valentines/heartbreaker.dm b/code/modules/antagonists/valentines/heartbreaker.dm index 4f228910d7..b78e8d574f 100644 --- a/code/modules/antagonists/valentines/heartbreaker.dm +++ b/code/modules/antagonists/valentines/heartbreaker.dm @@ -9,7 +9,6 @@ var/datum/objective/martyr/normiesgetout = new normiesgetout.owner = owner objectives += normiesgetout - owner.objectives += objectives /datum/antagonist/heartbreaker/on_gain() forge_objectives() diff --git a/code/modules/antagonists/valentines/valentine.dm b/code/modules/antagonists/valentines/valentine.dm index 21e54374a4..19c08f3076 100644 --- a/code/modules/antagonists/valentines/valentine.dm +++ b/code/modules/antagonists/valentines/valentine.dm @@ -12,7 +12,6 @@ protect_objective.human_check = FALSE protect_objective.explanation_text = "Protect [date.name], your date." objectives += protect_objective - owner.objectives += objectives /datum/antagonist/valentine/on_gain() forge_objectives() @@ -34,8 +33,8 @@ //Squashed up a bit /datum/antagonist/valentine/roundend_report() var/objectives_complete = TRUE - if(owner.objectives.len) - for(var/datum/objective/objective in owner.objectives) + if(objectives.len) + for(var/datum/objective/objective in objectives) if(!objective.check_completion()) objectives_complete = FALSE break @@ -51,8 +50,8 @@ /datum/antagonist/valentine/chem/roundend_report() var/objectives_complete = TRUE - if(owner.objectives.len) - for(var/datum/objective/objective in owner.objectives) + if(objectives.len) + for(var/datum/objective/objective in objectives) if(!objective.check_completion()) objectives_complete = FALSE break diff --git a/code/modules/antagonists/wishgranter/wishgranter.dm b/code/modules/antagonists/wishgranter/wishgranter.dm index 318de51eb4..21cab26d1e 100644 --- a/code/modules/antagonists/wishgranter/wishgranter.dm +++ b/code/modules/antagonists/wishgranter/wishgranter.dm @@ -8,7 +8,6 @@ var/datum/objective/hijack/hijack = new hijack.owner = owner objectives += hijack - owner.objectives |= objectives /datum/antagonist/wishgranter/on_gain() owner.special_role = "Avatar of the Wish Granter" diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index 576fc6b9bf..38aa0ad7f5 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -255,7 +255,7 @@ /obj/item/voodoo/attackby(obj/item/I, mob/user, params) if(target && cooldown < world.time) - if(I.is_hot()) + if(I.get_temperature()) to_chat(target, "You suddenly feel very hot") target.adjust_bodytemperature(50) GiveHint(target) diff --git a/code/modules/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm index 8a20a81555..89324f0691 100644 --- a/code/modules/antagonists/wizard/wizard.dm +++ b/code/modules/antagonists/wizard/wizard.dm @@ -57,19 +57,19 @@ if(!GLOB.wizardstart.len) SSjob.SendToLateJoin(owner.current) to_chat(owner, "HOT INSERTION, GO GO GO") - owner.current.forceMove(pick(GLOB.wizardstart)) + else + owner.current.forceMove(pick(GLOB.wizardstart)) /datum/antagonist/wizard/proc/create_objectives() var/datum/objective/new_objective = new("Cause as much creative mayhem as you can aboard the station! The more outlandish your methods of achieving this, the better! Make sure there's a decent amount of crew alive to tell of your tale.") + new_objective.completed = TRUE //So they can greentext without admin intervention. new_objective.owner = owner objectives += new_objective - var/datum/objective/escape/escape_objective = new - escape_objective.owner = owner - objectives += escape_objective - - for(var/datum/objective/O in objectives) - owner.objectives += O + if (!(locate(/datum/objective/escape) in objectives)) + var/datum/objective/escape/escape_objective = new + escape_objective.owner = owner + objectives += escape_objective /datum/antagonist/wizard/on_removal() unregister() @@ -183,7 +183,6 @@ new_objective.owner = owner new_objective.target = master new_objective.explanation_text = "Protect [master.current.real_name], the wizard." - owner.objectives += new_objective objectives += new_objective //Random event wizard @@ -251,7 +250,6 @@ /datum/antagonist/wizard/academy/create_objectives() var/datum/objective/new_objective = new("Protect Wizard Academy from the intruders") new_objective.owner = owner - owner.objectives += new_objective objectives += new_objective //Solo wizard report diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index 186eb1b024..6b87278e00 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -201,8 +201,10 @@ /obj/item/assembly/flash/cyborg /obj/item/assembly/flash/cyborg/attack(mob/living/M, mob/user) - ..() + . = ..() new /obj/effect/temp_visual/borgflash(get_turf(src)) + if(. && !CONFIG_GET(flag/disable_borg_flash_knockdown) && iscarbon(M) && !M.resting && !M.get_eye_protection()) + M.Knockdown(80) /obj/item/assembly/flash/cyborg/attack_self(mob/user) ..() diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 2631491350..a0927a2578 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -17,6 +17,7 @@ var/faction = null var/permanent = FALSE //If true, the spawner will not disappear upon running out of uses. var/random = FALSE //Don't set a name or gender, just go random + var/antagonist_type var/objectives = null var/uses = 1 //how many times can we spawn from it. set to -1 for infinite. var/brute_damage = 0 @@ -111,9 +112,16 @@ if(show_flavour) to_chat(M, "[flavour_text]") var/datum/mind/MM = M.mind + var/datum/antagonist/A + if(antagonist_type) + A = MM.add_antag_datum(antagonist_type) if(objectives) + if(!A) + A = MM.add_antag_datum(/datum/antagonist/custom) for(var/objective in objectives) - MM.objectives += new/datum/objective(objective) + var/datum/objective/O = new/datum/objective(objective) + O.owner = MM + A.objectives += O if(assignedrole) M.mind.assigned_role = assignedrole special(M, name) diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index b7b21bbb9b..77cdf8441b 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -264,8 +264,9 @@ var/mob/living/carbon/human/H = new(drop_location()) H.equipOutfit(/datum/outfit/butler) var/datum/mind/servant_mind = new /datum/mind() - var/datum/objective/O = new("Serve [user.real_name].") - servant_mind.objectives += O + var/datum/antagonist/magic_servant/A = new + servant_mind.add_antag_datum(A) + A.setup_master(user) servant_mind.transfer_to(H) var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [user.real_name] Servant?", ROLE_WIZARD, null, ROLE_WIZARD, 50, H) diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm index 88ff5f4729..ce4502ba99 100644 --- a/code/modules/cargo/exports/large_objects.dm +++ b/code/modules/cargo/exports/large_objects.dm @@ -178,7 +178,7 @@ worth += gases[/datum/gas/bz]*4 worth += gases[/datum/gas/stimulum]*25 worth += gases[/datum/gas/hypernoblium]*1000 - worth += gases[/datum/gas/miasma]*15 + worth += gases[/datum/gas/miasma]*4 worth += gases[/datum/gas/tritium]*7 worth += gases[/datum/gas/pluoxium]*6 worth += gases[/datum/gas/nitryl]*30 diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 89c463f3e3..4c9ddfe3bc 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1,20 +1,20 @@ /datum/supply_pack var/name = "Crate" var/group = "" - var/hidden = FALSE - var/contraband = FALSE + var/hidden = FALSE //Aka emag only + var/contraband = FALSE //Hacking the console with a multitool var/cost = 700 // Minimum cost, or infinite points are possible. - var/access = FALSE - var/access_any = FALSE - var/list/contains = null - var/crate_name = "crate" + var/access = FALSE //What access does the Crate itself need? + var/access_any = FALSE //Do we care about access? + var/list/contains = null //What items are in the crate + var/crate_name = "crate" //The crate that comes with each order var/desc = ""//no desc by default - var/crate_type = /obj/structure/closet/crate + var/crate_type = /obj/structure/closet/crate //what kind of crate - Locked crates needed for access locked crates var/dangerous = FALSE // Should we message admins? var/special = FALSE //Event/Station Goals/Admin enabled packs var/special_enabled = FALSE - var/DropPodOnly = FALSE//only usable by the Bluespace Drop Pod via the express cargo console - var/admin_spawned = FALSE + var/DropPodOnly = FALSE //only usable by the Bluespace Drop Pod via the express cargo console + var/admin_spawned = FALSE //Can only an admin spawn this crate? /datum/supply_pack/proc/generate(atom/A) var/obj/structure/closet/crate/C = new crate_type(A) diff --git a/code/modules/cargo/packs/armory.dm b/code/modules/cargo/packs/armory.dm index 11aae8a054..ee983784fe 100644 --- a/code/modules/cargo/packs/armory.dm +++ b/code/modules/cargo/packs/armory.dm @@ -87,7 +87,7 @@ /datum/supply_pack/security/armory/mindshield name = "Mindshield Implants Crate" desc = "Prevent against radical thoughts with three Mindshield implants. Requires Armory access to open." - cost = 3000 //Lowered untill cargo rework MK II is done + cost = 4000 contains = list(/obj/item/storage/lockbox/loyalty) crate_name = "mindshield implant crate" diff --git a/code/modules/cargo/packs/livestock.dm b/code/modules/cargo/packs/livestock.dm index 6479869ee0..8708562a06 100644 --- a/code/modules/cargo/packs/livestock.dm +++ b/code/modules/cargo/packs/livestock.dm @@ -112,13 +112,6 @@ contains = list(/mob/living/simple_animal/hostile/retaliate/goose) crate_name = "goose crate" -/datum/supply_pack/critter/monkey - name = "Monkey Cube Crate" - desc = "Stop monkeying around! Contains seven monkey cubes. Just add water!" - cost = 2000 - contains = list (/obj/item/storage/box/monkeycubes) - crate_name = "monkey cube crate" - /datum/supply_pack/critter/pug name = "Pug Crate" desc = "Like a normal dog, but... squished. Comes with a nice collar!" diff --git a/code/modules/cargo/packs/science.dm b/code/modules/cargo/packs/science.dm index c4fbc0bfe5..ace64b21fb 100644 --- a/code/modules/cargo/packs/science.dm +++ b/code/modules/cargo/packs/science.dm @@ -10,6 +10,47 @@ group = "Science" crate_type = /obj/structure/closet/crate/science +/* For later +/datum/supply_pack/science/monkey + name = "Ape Cube Crate" + desc = "Pss what a new test subject with supper strangth, speed, and love for bananas all at the same time? Say no more... Contains a single ape cube. Dont add water!" + contraband = TRUE + cost = 2500 + contains = list (/obj/item/reagent_containers/food/snacks/monkeycube/ape) + crate_name = "ape cube crate" +*/ + +/datum/supply_pack/science/aliens + name = "Advanced Alien Alloy Crate Crate" + desc = "Hello brothers from the stars!!! Our fellow brethren have made contact at long last and gave us gifts man! They really did build the prymi- Connection Error- Bro we’ll send you a sheet of advanced alien alloy." + cost = 15000 + contraband = TRUE + DropPodOnly = TRUE + contains = list(/obj/item/stack/sheet/mineral/abductor) + crate_name = "alien bro alloy crate" + +/datum/supply_pack/science/beakers + name = "Chemistry Beackers Crate" + desc = "Glassware for any chemistry lab! Contains four small beakers, three large, two plastic, and one metamaterial. As well as three droppers and two pairs of latex gloves." + cost = 1500 + contains = list(/obj/item/reagent_containers/glass/beaker, + /obj/item/reagent_containers/glass/beaker, + /obj/item/reagent_containers/glass/beaker, + /obj/item/reagent_containers/glass/beaker, + /obj/item/reagent_containers/glass/beaker/large, + /obj/item/reagent_containers/glass/beaker/large, + /obj/item/reagent_containers/glass/beaker/large, + /obj/item/reagent_containers/glass/beaker/plastic, + /obj/item/reagent_containers/glass/beaker/plastic, + /obj/item/reagent_containers/glass/beaker/meta, + /obj/item/reagent_containers/glass/beaker/noreact, + /obj/item/reagent_containers/dropper, + /obj/item/reagent_containers/dropper, + /obj/item/reagent_containers/dropper, + /obj/item/clothing/gloves/color/latex, + /obj/item/clothing/gloves/color/latex) + crate_name = "chemistry beaker crate" + /datum/supply_pack/science/robotics/mecha_odysseus name = "Circuit Crate (Odysseus)" desc = "Ever wanted to build your own giant medical robot? Well, now you can! Contains the Odysseus main control board and Odysseus peripherals board. Requires Robotics access to open." @@ -41,6 +82,33 @@ /obj/item/integrated_electronics/wirer) crate_name = "circuitry starter pack crate" +/datum/supply_pack/science/monkey + name = "Monkey Cube Crate" + desc = "Stop monkeying around! Contains seven monkey cubes. Just add water!" + cost = 2000 + contains = list (/obj/item/storage/box/monkeycubes) + crate_name = "monkey cube crate" + +/datum/supply_pack/science/nitrilegloves + name = "Nitrile Gloves Crate" + desc = "Handling toxic chemicals? Well worry not, keep your flesh intact with some nitrile made gloves! Contains three pairs of nitrile gloves." + cost = 1500 + contains = list(/obj/item/clothing/gloves/color/latex/nitrile, + /obj/item/clothing/gloves/color/latex/nitrile, + /obj/item/clothing/gloves/color/latex/nitrile) + crate_name = "nitrile gloves crate" + +/datum/supply_pack/science/nuke_b_gone + name = "Nuke Defusal Kit" + desc = "Contains set of tools to defuse a nuke." + cost = 7500 //Usefull for traitors/nukies that fucked up + dangerous = TRUE + DropPodOnly = TRUE + contains = list(/obj/item/nuke_core_container/nt, + /obj/item/screwdriver/nuke/nt, + /obj/item/paper/guides/nt/nuke_instructions) + crate_name = "safe defusal kit storage" + /datum/supply_pack/science/plasma name = "Plasma Assembly Crate" desc = "Everything you need to burn something to the ground, this contains three plasma assembly sets. Each set contains a plasma tank, igniter, proximity sensor, and timer! Warranty void if exposed to high temperatures. Requires Toxins access to open." @@ -61,6 +129,15 @@ crate_name = "plasma assembly crate" crate_type = /obj/structure/closet/crate/secure/plasma +/datum/supply_pack/science/relic + name = "Relic Crate" + desc = "Ever want to play with old discounted toys? Look no more. Contains two relics." + cost = 1000 + contraband = TRUE + contains = list(/obj/item/relic, + /obj/item/relic) + crate_name = "relic crate" + /datum/supply_pack/science/robotics name = "Robotics Assembly Crate" desc = "The tools you need to replace those finicky humans with a loyal robot army! Contains three proximity sensors, two high-powered cells, six flashes, and an electrical toolbox. Requires Robotics access to open." @@ -88,10 +165,30 @@ crate_name = "shield generators crate" crate_type = /obj/structure/closet/crate/secure/science +/datum/supply_pack/science/slime + name = "Slime Core Crate" + desc = "Ran out of slimes? No problem, contains one gray slime core. Requires Xenobio access to open." + cost = 1000 + access = ACCESS_XENOBIOLOGY + contains = list(/obj/item/slime_extract/grey) + crate_name = "slime core crate" + crate_type = /obj/structure/closet/crate/secure/science + +/datum/supply_pack/science/supermater + name = "Supermatter Extraction Tools Crate" + desc = "Contains a set of tools to extract a sliver of supermatter. Consult your CE today!" + cost = 7500 //Usefull for traitors that fucked up + hidden = TRUE + contains = list(/obj/item/nuke_core_container/supermatter, + /obj/item/scalpel/supermatter, + /obj/item/hemostat/supermatter, + /obj/item/paper/guides/antag/supermatter_sliver) + crate_name = "supermatter extraction kit crate" + /datum/supply_pack/science/tablets name = "Tablet Crate" desc = "What's a computer? Contains five cargo tablets." - cost = 5000 + cost = 3000 contains = list(/obj/item/modular_computer/tablet/preset/cargo, /obj/item/modular_computer/tablet/preset/cargo, /obj/item/modular_computer/tablet/preset/cargo, diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 47c3293c35..b3b6f0b576 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -113,7 +113,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) "xenohead" = "Standard", "xenotail" = "Xenomorph Tail", "taur" = "None", - "exhibitionist" = FALSE, "genitals_use_skintone" = FALSE, "has_cock" = FALSE, "cock_shape" = "Human", @@ -337,8 +336,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
" dat += "

Flavor Text

" dat += "Set Examine Text
" - if(lentext(features["flavor_text"]) <= 40) - if(!lentext(features["flavor_text"])) + if(length(features["flavor_text"]) <= 40) + if(!length(features["flavor_text"])) dat += "\[...\]" else dat += "[features["flavor_text"]]" @@ -826,7 +825,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat +="
" dat += "

Citadel Preferences

" //Because fuck me if preferences can't be fucking modularized and expected to update in a reasonable timeframe. dat += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
" - dat += "Exhibitionist:[features["exhibitionist"] == TRUE ? "Yes" : "No"]
" dat += "Voracious MediHound sleepers: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]
" dat += "Hear Vore Sounds: [(cit_toggles & EATING_NOISES) ? "Yes" : "No"]
" dat += "Hear Vore Digestion Sounds: [(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"]
" @@ -2057,8 +2055,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["has_womb"] = FALSE if("has_womb") features["has_womb"] = !features["has_womb"] - if("exhibitionist") - features["exhibitionist"] = !features["exhibitionist"] if("widescreenpref") widescreenpref = !widescreenpref user.client.change_view(CONFIG_GET(string/default_view)) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 01a46a44a0..98ef2ed0e8 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 23 +#define SAVEFILE_VERSION_MAX 24 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -109,6 +109,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car else if(current_version < 23) // we are fixing a gamebreaking bug. job_preferences = list() //It loaded null from nonexistant savefile field. + if(current_version < 24 && S["feature_exhibitionist"]) + var/datum/quirk/exhibitionism/E + var/quirk_name = initial(E.name) + neutral_quirks += quirk_name + all_quirks += quirk_name + /datum/preferences/proc/load_path(ckey,filename="preferences.sav") if(!ckey) return diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 54f0ebea45..d72e4ba1d7 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -17,19 +17,26 @@ dog_fashion = /datum/dog_fashion/head -/obj/item/clothing/head/hardhat/attack_self(mob/user) - on = !on - icon_state = "hardhat[on]_[item_color]" - item_state = "hardhat[on]_[item_color]" - user.update_inv_head() //so our mob-overlays update +/obj/item/clothing/head/hardhat/attack_self(mob/living/user) + toggle_helmet_light(user) +/obj/item/clothing/head/hardhat/proc/toggle_helmet_light(mob/living/user) + on = !on if(on) turn_on(user) else turn_off(user) + update_icon() + +/obj/item/clothing/head/hardhat/update_icon() + icon_state = "hardhat[on]_[item_color]" + item_state = "hardhat[on]_[item_color]" + if(ishuman(loc)) + var/mob/living/carbon/human/H = loc + H.update_inv_head() for(var/X in actions) var/datum/action/A = X - A.UpdateButtonIcon() + A.UpdateButtonIcon(force = TRUE) /obj/item/clothing/head/hardhat/proc/turn_on(mob/user) set_light(brightness_on, power_on) @@ -86,3 +93,68 @@ cold_protection = HEAD min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT mutantrace_variation = MUTANTRACE_VARIATION + +/obj/item/clothing/head/hardhat/weldhat + name = "welding hard hat" + desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight AND welding shield! The bulb seems a little smaller though." + brightness_on = 3 //Needs a little bit of tradeoff + dog_fashion = null + actions_types = list(/datum/action/item_action/toggle_helmet_light, /datum/action/item_action/toggle_welding_screen) + flash_protect = 2 + tint = 2 + flags_inv = HIDEEYES | HIDEFACE + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH + visor_vars_to_toggle = VISOR_FLASHPROTECT | VISOR_TINT + visor_flags_inv = HIDEEYES | HIDEFACE + visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH + +/obj/item/clothing/head/hardhat/weldhat/Initialize() + . = ..() + update_icon() + +/obj/item/clothing/head/hardhat/weldhat/attack_self(mob/living/user) + toggle_helmet_light(user) + +/obj/item/clothing/head/hardhat/weldhat/AltClick(mob/user) + if(user.canUseTopic(src, BE_CLOSE)) + toggle_welding_screen(user) + +/obj/item/clothing/head/hardhat/weldhat/proc/toggle_welding_screen(mob/living/user) + if(weldingvisortoggle(user)) + playsound(src, 'sound/mecha/mechmove03.ogg', 50, TRUE) //Visors don't just come from nothing + update_icon() + +/obj/item/clothing/head/hardhat/weldhat/worn_overlays(isinhands) + . = ..() + if(!isinhands) + . += mutable_appearance('icons/mob/head.dmi', "weldhelmet") + if(!up) + . += mutable_appearance('icons/mob/head.dmi', "weldvisor") + +/obj/item/clothing/head/hardhat/weldhat/update_icon() + cut_overlays() + if(!up) + add_overlay("weldvisor") + ..() + +/obj/item/clothing/head/hardhat/weldhat/orange + icon_state = "hardhat0_orange" + item_state = "hardhat0_orange" + item_color = "orange" + +/obj/item/clothing/head/hardhat/weldhat/white + desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight AND welding shield!" //This bulb is not smaller + icon_state = "hardhat0_white" + item_state = "hardhat0_white" + brightness_on = 4 //Boss always takes the best stuff + item_color = "white" + clothing_flags = STOPSPRESSUREDAMAGE + heat_protection = HEAD + max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT + cold_protection = HEAD + min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT + +/obj/item/clothing/head/hardhat/weldhat/dblue + icon_state = "hardhat0_dblue" + item_state = "hardhat0_dblue" + item_color = "dblue" \ No newline at end of file diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index fdaa0e8158..a3a4f1d859 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -77,7 +77,7 @@ hitsound = 'sound/weapons/tap.ogg' STOP_PROCESSING(SSobj, src) -/obj/item/clothing/head/hardhat/cakehat/is_hot() +/obj/item/clothing/head/hardhat/cakehat/get_temperature() return on * heat /* * Ushanka @@ -242,26 +242,62 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = -5,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = -5, "fire" = 0, "acid" = 0) equip_delay_other = 140 var/datum/brain_trauma/mild/phobia/paranoia + var/warped = FALSE clothing_flags = ANTI_TINFOIL_MANEUVER +/obj/item/clothing/head/foilhat/Initialize(mapload) + . = ..() + if(!warped) + AddComponent(/datum/component/anti_magic, FALSE, FALSE, TRUE, ITEM_SLOT_HEAD, 6, TRUE, null, CALLBACK(src, .proc/warp_up)) + else + warp_up() + /obj/item/clothing/head/foilhat/equipped(mob/living/carbon/human/user, slot) - ..() - if(slot == SLOT_HEAD) - if(paranoia) - QDEL_NULL(paranoia) - paranoia = new() - user.gain_trauma(paranoia, TRAUMA_RESILIENCE_MAGIC, "conspiracies") - to_chat(user, "As you don the foiled hat, an entire world of conspiracy theories and seemingly insane ideas suddenly rush into your mind. What you once thought unbelievable suddenly seems.. undeniable. Everything is connected and nothing happens just by accident. You know too much and now they're out to get you. ") + . = ..() + if(slot != SLOT_HEAD || warped) + return + if(paranoia) + QDEL_NULL(paranoia) + paranoia = new() + user.gain_trauma(paranoia, TRAUMA_RESILIENCE_MAGIC, "conspiracies") + to_chat(user, "As you don the foiled hat, an entire world of conspiracy theories and seemingly insane ideas suddenly rush into your mind. What you once thought unbelievable suddenly seems.. undeniable. Everything is connected and nothing happens just by accident. You know too much and now they're out to get you. ") + +/obj/item/clothing/head/foilhat/MouseDrop(atom/over_object) + //God Im sorry + if(!warped && iscarbon(usr)) + var/mob/living/carbon/C = usr + if(src == C.head) + to_chat(C, "Why would you want to take this off? Do you want them to get into your mind?!") + return + return ..() /obj/item/clothing/head/foilhat/dropped(mob/user) - ..() + . = ..() if(paranoia) QDEL_NULL(paranoia) +/obj/item/clothing/head/foilhat/proc/warp_up() + name = "scorched tinfoil hat" + desc = "A badly warped up hat. Quite unprobable this will still work against any of fictional and contemporary dangers it used to." + warped = TRUE + if(!isliving(loc) || !paranoia) + return + var/mob/living/target = loc + if(target.get_item_by_slot(SLOT_HEAD) != src) + return + QDEL_NULL(paranoia) + if(!target.IsUnconscious()) + to_chat(target, "Your zealous conspirationism rapidly dissipates as the donned hat warps up into a ruined mess. All those theories starting to sound like nothing but a ridicolous fanfare.") + /obj/item/clothing/head/foilhat/attack_hand(mob/user) - if(iscarbon(user)) + if(!warped && iscarbon(user)) var/mob/living/carbon/C = user if(src == C.head) to_chat(user, "Why would you want to take this off? Do you want them to get into your mind?!") return - ..() + return ..() + +/obj/item/clothing/head/foilhat/microwave_act(obj/machinery/microwave/M) + . = ..() + if(!warped) + warp_up() diff --git a/code/modules/clothing/head/vg_hats.dm b/code/modules/clothing/head/vg_hats.dm index dc245cd39a..87f64baf13 100644 --- a/code/modules/clothing/head/vg_hats.dm +++ b/code/modules/clothing/head/vg_hats.dm @@ -82,13 +82,6 @@ item_state = "nr_helmet" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' -/obj/item/clothing/head/stalhelm - name = "Stalhelm" - desc = "Ein Helm, um die Nazi-Interesse an fremden Raumstationen zu sichern." - icon_state = "stalhelm" - item_state = "stalhelm" - icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - /obj/item/clothing/head/panzer name = "Panzer Cap" desc = "Command any mech in style." @@ -96,13 +89,6 @@ item_state = "panzercap" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' -/obj/item/clothing/head/naziofficer - name = "Officer Cap" - desc = "Style is all that matters." - icon_state = "officercap" - item_state = "officercap" - icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - /obj/item/clothing/head/russobluecamohat name = "russian blue camo beret" desc = "A symbol of discipline, honor, and lots and lots of removal of some type of skewered food." diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index f6a35b88f0..fa6b01415e 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -5,7 +5,6 @@ icon_state = "hardsuit0-engineering" item_state = "eng_helm" max_integrity = 300 - clothing_flags = SNUG_FIT armor = list("melee" = 10, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 50, "acid" = 75) var/basestate = "hardsuit" var/brightness_on = 4 //luminosity when on @@ -136,7 +135,7 @@ to_chat(user, "You cannot remove the jetpack from [src] while wearing it.") return - jetpack.turn_off() + jetpack.turn_off(user) jetpack.forceMove(drop_location()) jetpack = null to_chat(user, "You successfully remove the jetpack from [src].") @@ -434,7 +433,7 @@ /obj/item/clothing/suit/space/hardsuit/wizard/Initialize() . = ..() - AddComponent(/datum/component/anti_magic, TRUE, FALSE) + AddComponent(/datum/component/anti_magic, TRUE, FALSE, FALSE, ITEM_SLOT_OCLOTHING, INFINITY, FALSE) //Medical hardsuit /obj/item/clothing/head/helmet/space/hardsuit/medical diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 5d718a8173..88e17d158c 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -368,6 +368,10 @@ Contains: resistance_flags = FIRE_PROOF mutantrace_variation = NO_MUTANTRACE_VARIATION +/obj/item/clothing/suit/space/hardsuit/ert/paranormal/Initialize() + . = ..() + AddComponent(/datum/component/anti_magic, FALSE, FALSE, TRUE, ITEM_SLOT_HEAD) + /obj/item/clothing/suit/space/hardsuit/ert/paranormal name = "paranormal response team suit" desc = "Powerful wards are built into this hardsuit, protecting the user from all manner of paranormal threats." @@ -380,7 +384,7 @@ Contains: /obj/item/clothing/suit/space/hardsuit/ert/paranormal/Initialize() . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE) + AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, ITEM_SLOT_OCLOTHING) /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor name = "inquisitor's hardsuit" diff --git a/code/modules/clothing/spacesuits/vg_spess.dm b/code/modules/clothing/spacesuits/vg_spess.dm index e6b1c7a1ee..517539f3af 100644 --- a/code/modules/clothing/spacesuits/vg_spess.dm +++ b/code/modules/clothing/spacesuits/vg_spess.dm @@ -1,24 +1,5 @@ //VG Ports -/obj/item/clothing/head/helmet/space/hardsuit/nazi - name = "nazi hardhelmet" - desc = "This is the face of das vaterland's top elite. Gas or energy are your only escapes." - item_state = "hardsuit0-nazi" - icon_state = "hardsuit0-nazi" - armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20) - item_color = "nazi" - icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - -/obj/item/clothing/suit/space/hardsuit/nazi - name = "nazi hardsuit" - desc = "The attire of a true krieger. All shall fall, and only das vaterland will remain." - item_state = "hardsuit-nazi" - icon_state = "hardsuit-nazi" - slowdown = 1 - armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20) - allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/melee/) - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/nazi - icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' /obj/item/clothing/head/helmet/space/hardsuit/soviet name = "soviet hardhelmet" diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index ec39f20b0b..6f188d513f 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -715,8 +715,9 @@ name = "gear harness" desc = "A simple, inconspicuous harness replacement for a jumpsuit." icon_state = "gear_harness" - item_state = "gear_harness" //We dont use golem do to being a item, item without faces making it default to error suit sprites. + item_state = "gear_harness" body_parts_covered = CHEST|GROIN + can_adjust = FALSE /obj/item/clothing/under/durathread name = "durathread jumpsuit" diff --git a/code/modules/crafting/recipes/recipes_misc.dm b/code/modules/crafting/recipes/recipes_misc.dm index f05c7bd94b..fdfb959fe6 100644 --- a/code/modules/crafting/recipes/recipes_misc.dm +++ b/code/modules/crafting/recipes/recipes_misc.dm @@ -4,7 +4,7 @@ /datum/crafting_recipe/showercurtain name = "Shower Curtains" - reqs = list(/obj/item/stack/sheet/cloth = 2, + reqs = list(/obj/item/stack/sheet/cloth = 2, /obj/item/stack/sheet/plastic = 2, /obj/item/stack/rods = 1) result = /obj/structure/curtain @@ -197,14 +197,6 @@ /obj/item/bikehorn = 1) category = CAT_MISC -/datum/crafting_recipe/aitater - name = "intelliTater" - result = /obj/item/aicard/aitater - time = 30 - reqs = list(/obj/item/aicard = 1, - /obj/item/reagent_containers/food/snacks/grown/potato = 1) - category = CAT_MISC - /datum/crafting_recipe/mousetrap name = "Mouse Trap" result = /obj/item/assembly/mousetrap diff --git a/code/modules/crafting/recipes/recipes_robot.dm b/code/modules/crafting/recipes/recipes_robot.dm index ae5bca7779..2b8ee0fe3a 100644 --- a/code/modules/crafting/recipes/recipes_robot.dm +++ b/code/modules/crafting/recipes/recipes_robot.dm @@ -77,8 +77,22 @@ time = 40 category = CAT_ROBOT -/datum/crafting_recipe/potatos - name = "Potat-OS" - reqs = list(/obj/item/stack/cable_coil = 1, /obj/item/stack/rods = 1, /obj/item/reagent_containers/food/snacks/grown/potato = 1, /obj/item/aicard = 1 ) - result = /obj/item/aicard/potato +/datum/crafting_recipe/aitater + name = "intelliTater" + result = /obj/item/aicard/aitater + time = 30 + tools = list(TOOL_WIRECUTTER) + reqs = list(/obj/item/aicard = 1, + /obj/item/reagent_containers/food/snacks/grown/potato = 1, + /obj/item/stack/cable_coil = 5) + category = CAT_ROBOT + +/datum/crafting_recipe/aispook + name = "intelliLantern" + result = /obj/item/aicard/aispook + time = 30 + tools = list(TOOL_WIRECUTTER) + reqs = list(/obj/item/aicard = 1, + /obj/item/reagent_containers/food/snacks/grown/pumpkin = 1, + /obj/item/stack/cable_coil = 5) category = CAT_ROBOT \ No newline at end of file diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm index ddc75830d6..762371886c 100644 --- a/code/modules/events/alien_infestation.dm +++ b/code/modules/events/alien_infestation.dm @@ -32,7 +32,7 @@ /datum/round_event/ghost_role/alien_infestation/announce(fake) if(successSpawn || fake) - priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/ai/aliens.ogg') + priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", "aliens") /datum/round_event/ghost_role/alien_infestation/spawn_role() diff --git a/code/modules/events/anomaly_bluespace.dm b/code/modules/events/anomaly_bluespace.dm index 44a66e0d27..8fc1a7ab3d 100644 --- a/code/modules/events/anomaly_bluespace.dm +++ b/code/modules/events/anomaly_bluespace.dm @@ -13,7 +13,7 @@ if(prob(90)) priority_announce("Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/anomaly_flux.dm b/code/modules/events/anomaly_flux.dm index cc22abe5ab..73562e49e5 100644 --- a/code/modules/events/anomaly_flux.dm +++ b/code/modules/events/anomaly_flux.dm @@ -14,7 +14,7 @@ if(prob(90)) priority_announce("Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/anomaly_grav.dm b/code/modules/events/anomaly_grav.dm index c240be50d4..6e9014f13c 100644 --- a/code/modules/events/anomaly_grav.dm +++ b/code/modules/events/anomaly_grav.dm @@ -12,7 +12,7 @@ if(prob(90)) priority_announce("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/anomaly_pyro.dm b/code/modules/events/anomaly_pyro.dm index 5a973db95a..988ccadb76 100644 --- a/code/modules/events/anomaly_pyro.dm +++ b/code/modules/events/anomaly_pyro.dm @@ -12,7 +12,7 @@ if(prob(90)) priority_announce("Pyroclastic anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/anomaly_vortex.dm b/code/modules/events/anomaly_vortex.dm index b57fe9e67e..2550dc191e 100644 --- a/code/modules/events/anomaly_vortex.dm +++ b/code/modules/events/anomaly_vortex.dm @@ -14,7 +14,7 @@ if(prob(90)) priority_announce("Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name]", "Anomaly Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm index 43fb264002..d2a5c27883 100644 --- a/code/modules/events/blob.dm +++ b/code/modules/events/blob.dm @@ -16,9 +16,9 @@ /datum/round_event/ghost_role/blob/announce(fake) if(prob(75)) - priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak5.ogg') + priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", "outbreak5") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/brand_intelligence.dm b/code/modules/events/brand_intelligence.dm index a838b62e0d..d422a0aa4f 100644 --- a/code/modules/events/brand_intelligence.dm +++ b/code/modules/events/brand_intelligence.dm @@ -38,7 +38,7 @@ if(prob(50)) priority_announce("Rampant brand intelligence has been detected aboard [station_name()]. Please stand by. The origin is believed to be \a [source].", "Machine Learning Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index 71f19e5fd7..5a592d7f34 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -17,7 +17,7 @@ if(prob(50)) priority_announce("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index f63ca39874..07a399a1b6 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -14,7 +14,7 @@ /datum/round_event/disease_outbreak/announce(fake) - priority_announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak7.ogg') + priority_announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", "outbreak7") /datum/round_event/disease_outbreak/setup() announceWhen = rand(15, 30) diff --git a/code/modules/events/electrical_storm.dm b/code/modules/events/electrical_storm.dm index 268a863ebc..10936409f9 100644 --- a/code/modules/events/electrical_storm.dm +++ b/code/modules/events/electrical_storm.dm @@ -15,7 +15,7 @@ if(prob(50)) priority_announce("An electrical storm has been detected in your area, please repair potential electronic overloads.", "Electrical Storm Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/grid_check.dm b/code/modules/events/grid_check.dm index 8006d63b97..b289c8ae1b 100644 --- a/code/modules/events/grid_check.dm +++ b/code/modules/events/grid_check.dm @@ -9,7 +9,7 @@ startWhen = 1 /datum/round_event/grid_check/announce(fake) - priority_announce("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Critical Power Failure", 'sound/ai/poweroff.ogg') + priority_announce("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Critical Power Failure", "poweroff") /datum/round_event/grid_check/start() diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm index 5f9873c387..65d96ad150 100644 --- a/code/modules/events/holiday/xmas.dm +++ b/code/modules/events/holiday/xmas.dm @@ -79,17 +79,5 @@ santa = new /mob/living/carbon/human(pick(GLOB.blobstart)) C.transfer_ckey(santa, FALSE) - santa.equipOutfit(/datum/outfit/santa) - santa.update_icons() - - var/datum/objective/santa_objective = new() - santa_objective.explanation_text = "Bring joy and presents to the station!" - santa_objective.completed = 1 //lets cut our santas some slack. - santa_objective.owner = santa.mind - santa.mind.objectives += santa_objective - santa.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/presents) - var/obj/effect/proc_holder/spell/targeted/area_teleport/teleport/telespell = new(santa) - telespell.clothes_req = 0 //santa robes aren't actually magical. - santa.mind.AddSpell(telespell) //does the station have chimneys? WHO KNOWS! - - to_chat(santa, "You are Santa! Your objective is to bring joy to the people on this station. You can conjure more presents using a spell, and there are several presents in your bag.") + var/datum/antagonist/santa/A = new + santa.mind.add_antag_datum(A) diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm index 3ae71f99d8..cd7c0e3b1f 100644 --- a/code/modules/events/ion_storm.dm +++ b/code/modules/events/ion_storm.dm @@ -26,7 +26,7 @@ /datum/round_event/ion_storm/announce(fake) if(announceEvent == ION_ANNOUNCE || (announceEvent == ION_RANDOM && prob(ionAnnounceChance)) || fake) - priority_announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", 'sound/ai/ionstorm.ogg') + priority_announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", "ionstorm") /datum/round_event/ion_storm/start() diff --git a/code/modules/events/major_dust.dm b/code/modules/events/major_dust.dm index d1570ea09d..c08de985fb 100644 --- a/code/modules/events/major_dust.dm +++ b/code/modules/events/major_dust.dm @@ -19,7 +19,7 @@ if(prob(50)) priority_announce(pick(reason), "Collision Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/meateor_wave.dm b/code/modules/events/meateor_wave.dm index 11af56526c..f668e2332c 100644 --- a/code/modules/events/meateor_wave.dm +++ b/code/modules/events/meateor_wave.dm @@ -1,11 +1,11 @@ -/datum/round_event_control/meteor_wave/meaty - name = "Meteor Wave: Meaty" - typepath = /datum/round_event/meteor_wave/meaty - weight = 2 - max_occurrences = 1 - -/datum/round_event/meteor_wave/meaty - wave_name = "meaty" - -/datum/round_event/meteor_wave/meaty/announce(fake) - priority_announce("Meaty ores have been detected on collision course with the station.", "Oh crap, get the mop.",'sound/ai/meteors.ogg') +/datum/round_event_control/meteor_wave/meaty + name = "Meteor Wave: Meaty" + typepath = /datum/round_event/meteor_wave/meaty + weight = 2 + max_occurrences = 1 + +/datum/round_event/meteor_wave/meaty + wave_name = "meaty" + +/datum/round_event/meteor_wave/meaty/announce(fake) + priority_announce("Meaty ores have been detected on collision course with the station.", "Oh crap, get the mop.", "meteors") diff --git a/code/modules/events/meteor_wave.dm b/code/modules/events/meteor_wave.dm index 604e203cd6..4aa9fb305d 100644 --- a/code/modules/events/meteor_wave.dm +++ b/code/modules/events/meteor_wave.dm @@ -58,7 +58,7 @@ kill() /datum/round_event/meteor_wave/announce(fake) - priority_announce("Meteors have been detected on collision course with the station. Estimated time until impact: [round(startWhen/60)] minutes.[GLOB.singularity_counter ? " Warning: Anomalous gravity pulse detected, Syndicate technology interference likely." : ""]", "Meteor Alert", 'sound/ai/meteors.ogg') + priority_announce("Meteors have been detected on collision course with the station. Estimated time until impact: [round(startWhen/60)] minutes.[GLOB.singularity_counter ? " Warning: Anomalous gravity pulse detected, Syndicate technology interference likely." : ""]", "Meteor Alert", "meteors") /datum/round_event/meteor_wave/tick() if(ISMULTIPLE(activeFor, 3)) diff --git a/code/modules/events/mice_migration.dm b/code/modules/events/mice_migration.dm index 48a9f00423..911ce1dfbc 100644 --- a/code/modules/events/mice_migration.dm +++ b/code/modules/events/mice_migration.dm @@ -23,7 +23,7 @@ into the [location].", "Migration Alert", 'sound/effects/mousesqueek.ogg') else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm index 7256ddb6ea..477655db8b 100644 --- a/code/modules/events/pirates.dm +++ b/code/modules/events/pirates.dm @@ -25,7 +25,7 @@ ship_name = pick(strings(PIRATE_NAMES_FILE, "ship_names")) /datum/round_event/pirates/announce(fake) - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak if(fake) return threat = new @@ -77,7 +77,7 @@ else notify_ghosts("Space pirates are waking up!", source = spawner, action=NOTIFY_ATTACK, flashwindow = FALSE) - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') //CITADEL EDIT also metabreak here too + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") //CITADEL EDIT also metabreak here too //Shuttle equipment diff --git a/code/modules/events/prison_break.dm b/code/modules/events/prison_break.dm index 4d3beacbeb..24be0e5644 100644 --- a/code/modules/events/prison_break.dm +++ b/code/modules/events/prison_break.dm @@ -33,7 +33,7 @@ if(prob(50)) priority_announce("Gr3y.T1d3 virus detected in [station_name()] door subroutines. Severity level of [severity]. Recommend station AI involvement.", "Security Alert") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/radiation_storm.dm b/code/modules/events/radiation_storm.dm index ba48779015..60e4e0e4b8 100644 --- a/code/modules/events/radiation_storm.dm +++ b/code/modules/events/radiation_storm.dm @@ -12,7 +12,7 @@ announceWhen = 1 /datum/round_event/radiation_storm/announce(fake) - priority_announce("High levels of radiation detected near the station. Maintenance is best shielded from radiation.", "Anomaly Alert", 'sound/ai/radiation.ogg') + priority_announce("High levels of radiation detected near the station. Maintenance is best shielded from radiation.", "Anomaly Alert", "radiation") //sound not longer matches the text, but an audible warning is probably good /datum/round_event/radiation_storm/start() diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm index 769e32275b..3fe52c338b 100644 --- a/code/modules/events/shuttle_loan.dm +++ b/code/modules/events/shuttle_loan.dm @@ -32,7 +32,7 @@ if(prob(50)) priority_announce("Cargo: The syndicate are trying to infiltrate your station. If you let them hijack your cargo shuttle, you'll save us a headache.","CentCom Counter Intelligence") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) @@ -43,7 +43,7 @@ if(prob(50)) priority_announce("Cargo: A group of angry Russians want to have a party. Can you send them your cargo shuttle then make them disappear?","CentCom Russian Outreach Program") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) @@ -54,7 +54,7 @@ if(prob(50)) priority_announce("Cargo: The Spider Clan has sent us a mysterious gift. Can we ship it to you to see what's inside?","CentCom Diplomatic Corps") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) @@ -65,7 +65,7 @@ if(prob(50)) priority_announce("Cargo: Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?","CentCom Supply Department") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) @@ -76,7 +76,7 @@ if(prob(50)) priority_announce("Cargo: Your station has been chosen for an epidemiological research project. Send us your cargo shuttle to receive your research samples.", "CentCom Research Initiatives") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) @@ -87,7 +87,7 @@ if(prob(50)) priority_announce("Cargo: It looks like a neighbouring station accidentally delivered their pizza to you instead.", "CentCom Spacepizza Division") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) @@ -98,7 +98,7 @@ if(prob(50)) priority_announce("Cargo: One of our freighters carrying a bee shipment has been attacked by eco-terrorists. Can you clean up the mess for us?", "CentCom Janitorial Division") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) @@ -110,7 +110,7 @@ if(prob(50)) priority_announce("Cargo: We have discovered an active Syndicate bomb near our VIP shuttle's fuel lines. If you feel up to the task, we will pay you for defusing it.", "CentCom Security Division") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) @@ -122,7 +122,7 @@ if(prob(50)) priority_announce("Cargo: We have discovered a warehouse of DELTA locked crates, we cant store any more of them at CC can you take them for us?.", "CentCom Security Division") else - priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "commandreport") // CITADEL EDIT metabreak for(var/obj/machinery/computer/communications/C in GLOB.machines) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) var/obj/item/paper/P = new(C.loc) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index d8906de036..cb25446e4a 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -251,7 +251,7 @@ holder.obj_integrity = holder.max_integrity /datum/spacevine_mutation/woodening/on_hit(obj/structure/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage) - if(I.is_sharp()) + if(I.get_sharpness()) . = expected_damage * 0.5 else . = expected_damage @@ -331,7 +331,7 @@ /obj/structure/spacevine/attacked_by(obj/item/I, mob/living/user) var/damage_dealt = I.force - if(I.is_sharp()) + if(I.get_sharpness()) damage_dealt *= 4 if(I.damtype == BURN) damage_dealt *= 4 diff --git a/code/modules/events/spider_infestation.dm b/code/modules/events/spider_infestation.dm index 58c52cbec3..a6c333145e 100644 --- a/code/modules/events/spider_infestation.dm +++ b/code/modules/events/spider_infestation.dm @@ -16,7 +16,7 @@ spawncount = rand(5, 8) /datum/round_event/spider_infestation/announce(fake) - priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/ai/aliens.ogg') + priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", "aliens") /datum/round_event/spider_infestation/start() diff --git a/code/modules/events/wizard/greentext.dm b/code/modules/events/wizard/greentext.dm index 356e83757f..82e72df3b9 100644 --- a/code/modules/events/wizard/greentext.dm +++ b/code/modules/events/wizard/greentext.dm @@ -40,7 +40,8 @@ /obj/item/greentext/equipped(mob/living/user as mob) to_chat(user, "So long as you leave this place with greentext in hand you know will be happy...") - if(user.mind && user.mind.objectives.len > 0) + var/list/other_objectives = user.mind.get_all_objectives() + if(user.mind && other_objectives.len > 0) to_chat(user, "... so long as you still perform your other objectives that is!") new_holder = user if(!last_holder) diff --git a/code/modules/events/wizard/rpgloot.dm b/code/modules/events/wizard/rpgloot.dm index 3d560aefb8..bf3104450e 100644 --- a/code/modules/events/wizard/rpgloot.dm +++ b/code/modules/events/wizard/rpgloot.dm @@ -8,8 +8,11 @@ /datum/round_event/wizard/rpgloot/start() var/upgrade_scroll_chance = 0 for(var/obj/item/I in world) - if(!istype(I.rpg_loot)) - I.rpg_loot = new(I) + CHECK_TICK + if(!(I.flags_1 & INITIALIZED_1)) + continue + + I.AddComponent(/datum/component/fantasy) if(istype(I, /obj/item/storage)) var/obj/item/storage/S = I @@ -31,86 +34,20 @@ var/upgrade_amount = 1 var/can_backfire = TRUE - var/one_use = TRUE + var/uses = 1 /obj/item/upgradescroll/afterattack(obj/item/target, mob/user , proximity) . = ..() if(!proximity || !istype(target)) return - var/datum/rpg_loot/rpg_loot_datum = target.rpg_loot - if(!istype(rpg_loot_datum)) - target.rpg_loot = rpg_loot_datum = new /datum/rpg_loot(target) + target.AddComponent(/datum/component/fantasy, upgrade_amount, null, null, can_backfire, TRUE) - var/quality = rpg_loot_datum.quality - - if(can_backfire && (quality > 9 && prob((quality - 9)*10))) - to_chat(user, "[target] violently glows blue for a while, then evaporates.") - target.burn() - else - to_chat(user, "[target] glows blue and seems vaguely \"better\"!") - rpg_loot_datum.modify(upgrade_amount) - - if(one_use) + if(--uses <= 0) qdel(src) /obj/item/upgradescroll/unlimited name = "unlimited foolproof item fortification scroll" desc = "Somehow, this piece of paper can be applied to items to make them \"better\". This scroll is made from the tongues of dead paper wizards, and can be used an unlimited number of times, with no drawbacks." - one_use = FALSE + uses = INFINITY can_backfire = FALSE - -/datum/rpg_loot - var/positive_prefix = "okay" - var/negative_prefix = "weak" - var/suffix = "something profound" - var/quality = 0 - - var/obj/item/attached - var/original_name - -/datum/rpg_loot/New(attached_item=null) - attached = attached_item - - randomise() - -/datum/rpg_loot/Destroy() - attached = null - -/datum/rpg_loot/proc/randomise() - var/static/list/prefixespositive = list("greater", "major", "blessed", "superior", "empowered", "honed", "true", "glorious", "robust") - var/static/list/prefixesnegative = list("lesser", "minor", "blighted", "inferior", "enfeebled", "rusted", "unsteady", "tragic", "gimped") - var/static/list/suffixes = list("orc slaying", "elf slaying", "corgi slaying", "strength", "dexterity", "constitution", "intelligence", "wisdom", "charisma", "the forest", "the hills", "the plains", "the sea", "the sun", "the moon", "the void", "the world", "the fool", "many secrets", "many tales", "many colors", "rending", "sundering", "the night", "the day") - - var/new_quality = pick(1;15, 2;14, 2;13, 2;12, 3;11, 3;10, 3;9, 4;8, 4;7, 4;6, 5;5, 5;4, 5;3, 6;2, 6;1, 6;0) - - suffix = pick(suffixes) - positive_prefix = pick(prefixespositive) - negative_prefix = pick(prefixesnegative) - - if(prob(50)) - new_quality = -new_quality - - modify(new_quality) - -/datum/rpg_loot/proc/rename() - var/obj/item/I = attached - if(!original_name) - original_name = I.name - if(quality < 0) - I.name = "[negative_prefix] [original_name] of [suffix] [quality]" - else if(quality == 0) - I.name = "[original_name] of [suffix]" - else if(quality > 0) - I.name = "[positive_prefix] [original_name] of [suffix] +[quality]" - -/datum/rpg_loot/proc/modify(quality_mod) - var/obj/item/I = attached - quality += quality_mod - - I.force = max(0,I.force + quality_mod) - I.throwforce = max(0,I.throwforce + quality_mod) - - I.armor = I.armor.modifyAllRatings(quality) - - rename() diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm index bb601b7c82..9dbe1443d1 100644 --- a/code/modules/events/wormholes.dm +++ b/code/modules/events/wormholes.dm @@ -29,7 +29,7 @@ wormholes += new /obj/effect/portal/wormhole(T, null, 0, null, FALSE) /datum/round_event/wormholes/announce(fake) - priority_announce("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert", 'sound/ai/spanomalies.ogg') + priority_announce("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert", "spanomalies") /datum/round_event/wormholes/tick() if(activeFor % shift_frequency == 0) diff --git a/code/modules/fields/timestop.dm b/code/modules/fields/timestop.dm index 11a5d416e7..a063296edf 100644 --- a/code/modules/fields/timestop.dm +++ b/code/modules/fields/timestop.dm @@ -133,6 +133,7 @@ /datum/proximity_monitor/advanced/timestop/proc/freeze_mob(mob/living/L) if(L.anti_magic_check(check_anti_magic, check_holy)) + immune += L return L.Stun(20, 1, 1) frozen_mobs[L] = L.anchored diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index bac2e0bb65..48704d7623 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -236,10 +236,10 @@ GLOBAL_LIST_INIT(hallucination_list, list( xeno = new(pump.loc,target) sleep(10) xeno.update_icon("alienh_leap",'icons/mob/alienleap.dmi',-32,-32) - xeno.throw_at(target,7,1, xeno, FALSE, TRUE) + xeno.throw_at(target,7,1, null, FALSE, TRUE) sleep(10) xeno.update_icon("alienh_leap",'icons/mob/alienleap.dmi',-32,-32) - xeno.throw_at(pump,7,1, xeno, FALSE, TRUE) + xeno.throw_at(pump,7,1, null, FALSE, TRUE) sleep(10) var/xeno_name = xeno.name to_chat(target, "[xeno_name] begins climbing into the ventilation system...") @@ -878,7 +878,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( if("blob alert") to_chat(target, "

Biohazard Alert

") to_chat(target, "

Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.

") - SEND_SOUND(target, 'sound/ai/outbreak5.ogg') + SEND_SOUND(target, get_announcer_sound("outbreak5")) if("ratvar") target.playsound_local(target, 'sound/machines/clockcult/ark_deathrattle.ogg', 50, FALSE, pressure_affected = FALSE) target.playsound_local(target, 'sound/effects/clockcult_gateway_disrupted.ogg', 50, FALSE, pressure_affected = FALSE) @@ -887,15 +887,15 @@ GLOBAL_LIST_INIT(hallucination_list, list( if("shuttle dock") to_chat(target, "

Priority Announcement

") to_chat(target, "

The Emergency Shuttle has docked with the station. You have 3 minutes to board the Emergency Shuttle.

") - SEND_SOUND(target, 'sound/ai/shuttledock.ogg') + SEND_SOUND(target, get_announcer_sound("shuttledock")) if("malf ai") //AI is doomsdaying! to_chat(target, "

Anomaly Alert

") to_chat(target, "

Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.

") - SEND_SOUND(target, 'sound/ai/aimalf.ogg') + SEND_SOUND(target, get_announcer_sound("aimalf")) if("meteors") //Meteors inbound! to_chat(target, "

Meteor Alert

") - to_chat(target, "

Meteors have been detected on collision course with the station.

") - SEND_SOUND(target, 'sound/ai/meteors.ogg') + to_chat(target, "

Meteors have been detected on collision course with the station. Estimated time until impact: [round(rand(300,600)/60)] minutes.

") + SEND_SOUND(target, get_announcer_sound("meteors")) if("supermatter") SEND_SOUND(target, 'sound/magic/charge.ogg') to_chat(target, "You feel reality distort for a moment...") diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 7b1d8be85e..5bf7e3dff3 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -95,7 +95,7 @@ to_chat(user, "You fill [src] with [trans] units of the contents of [target].") /obj/item/reagent_containers/food/drinks/attackby(obj/item/I, mob/user, params) - var/hotness = I.is_hot() + var/hotness = I.get_temperature() if(hotness && reagents) reagents.expose_temperature(hotness) to_chat(user, "You heat [name] with [I]!") diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index e72b624ae5..c5a962230a 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -455,7 +455,7 @@ ..() /obj/item/reagent_containers/food/drinks/bottle/molotov/attackby(obj/item/I, mob/user, params) - if(I.is_hot() && !active) + if(I.get_temperature() && !active) active = 1 var/message = "[ADMIN_LOOKUP(user)] has primed a [name] for detonation at [ADMIN_VERBOSEJMP(user)]." GLOB.bombers += message diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index 7eea6fb9ca..637e0b929c 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -181,7 +181,7 @@ All foods are distributed among various categories. Use common sense. var/obj/item/reagent_containers/food/snacks/customizable/C = new custom_food_type(get_turf(src)) C.initialize_custom_food(src, S, user) return 0 - var/sharp = W.is_sharp() + var/sharp = W.get_sharpness() if(sharp) if(slice(sharp, W, user)) return 1 @@ -337,7 +337,7 @@ All foods are distributed among various categories. Use common sense. /obj/item/reagent_containers/food/snacks/store/attackby(obj/item/W, mob/user, params) ..() if(W.w_class <= WEIGHT_CLASS_SMALL & !istype(W, /obj/item/reagent_containers/food/snacks)) //can't slip snacks inside, they're used for custom foods. - if(W.is_sharp()) + if(W.get_sharpness()) return 0 if(stored_item) return 0 diff --git a/code/modules/food_and_drinks/food/snacks_cake.dm b/code/modules/food_and_drinks/food/snacks_cake.dm index 98f80331a7..7dadd2b12e 100644 --- a/code/modules/food_and_drinks/food/snacks_cake.dm +++ b/code/modules/food_and_drinks/food/snacks_cake.dm @@ -272,7 +272,7 @@ /obj/item/reagent_containers/food/snacks/cakeslice/bscc name = "blackberry and strawberry chocolate cake slice" desc = "Just a slice of cake filled with assortment of blackberries and strawberries!" - icon_state = "blackbarry_strawberries_cake_coco_cake_slice" + icon_state = "blackbarry_strawberries_cake_coco_slice" filling_color = "#FFD700" tastes = list("blackberry" = 2, "strawberries" = 2, "chocolate" = 2, "sweetness" = 2,"cake" = 3) foodtype = GRAIN | DAIRY | FRUIT | SUGAR diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index f2d7fa1526..3cb05a8f7e 100644 --- a/code/modules/holiday/easter.dm +++ b/code/modules/holiday/easter.dm @@ -18,7 +18,7 @@ max_occurrences = 10 /datum/round_event/rabbitrelease/announce(fake) - priority_announce("Unidentified furry objects detected coming aboard [station_name()]. Beware of Adorable-ness.", "Fluffy Alert", 'sound/ai/aliens.ogg') + priority_announce("Unidentified furry objects detected coming aboard [station_name()]. Beware of Adorable-ness.", "Fluffy Alert", "aliens") /datum/round_event/rabbitrelease/start() diff --git a/code/modules/holiday/halloween/bartholomew.dm b/code/modules/holiday/halloween/bartholomew.dm index 4911082049..aa119dca84 100644 --- a/code/modules/holiday/halloween/bartholomew.dm +++ b/code/modules/holiday/halloween/bartholomew.dm @@ -77,7 +77,6 @@ /obj/item/clothing/head/welding = 1, /obj/item/clothing/mask/gas = 10, /obj/item/clothing/suit/hazardvest = 1, - /obj/item/clothing/under/rank/vice = 1, /obj/item/clothing/suit/hooded/flashsuit = 1, /obj/item/assembly/prox_sensor = 4, /obj/item/assembly/timer = 3, @@ -95,22 +94,20 @@ /obj/item/stack/sheet/metal = 1, /obj/item/stack/sheet/mineral/plasma = 1, /obj/item/stack/sheet/rglass = 1, - /obj/item/clothing/head/cone = 1, - /obj/item/coin = 2, - /obj/item/crowbar = 3, - /obj/item/crowbar/red = 1, + /obj/item/coin = 1, + /obj/item/crowbar = 4, /obj/item/extinguisher = 3, /obj/item/hand_labeler = 1, - /obj/item/paper = 4, - /obj/item/pen = 3, + /obj/item/paper = 6, + /obj/item/pen = 5, /obj/item/reagent_containers/spray/pestspray = 1, /obj/item/reagent_containers/rag = 3, /obj/item/stock_parts/cell = 3, /obj/item/storage/belt/utility = 2, /obj/item/storage/box = 4, - /obj/item/storage/box/cups = 1, + /obj/item/reagent_containers/food/drinks/sillycup = 1, /obj/item/storage/box/donkpockets = 1, - /obj/item/storage/box/lights/mixed = 3, + /obj/item/storage/box/lights/mixed = 1, /obj/item/storage/box/hug/medical = 1, /obj/item/storage/fancy/cigarettes = 1, /obj/item/storage/toolbox = 1, @@ -121,8 +118,6 @@ /obj/item/wirecutters = 2, /obj/item/wrench = 4, /obj/item/weaponcrafting/receiver = 1, - /obj/item/clothing/head/cone = 2, - /obj/item/grenade/smokebomb = 1, /obj/item/geiger_counter = 3, /obj/item/reagent_containers/food/snacks/grown/citrus/orange = 5, /obj/item/assembly/infra = 1, @@ -131,13 +126,13 @@ /obj/item/assembly/mousetrap = 5, /obj/item/reagent_containers/syringe = 5, /obj/item/clothing/gloves = 8, - /obj/item/clothing/shoes/laceup = 1, - /obj/item/storage/secure/briefcase = 3, - /obj/item/storage/toolbox/artistic = 2, - /obj/item/toy/eightball = 1, + /obj/item/storage/toolbox = 2, /obj/item/reagent_containers/pill = 2, - /obj/item/reagent_containers/food/snacks/cannedpeaches/maint = 1, - /obj/item/clothing/shoes = 8) + /obj/item/clothing/shoes = 8, + /obj/item/clothing/head = 3, + /obj/item/reagent_containers/food/snacks = 3, + /obj/item/reagent_containers/syringe/dart = 2, + /obj/item/reagent_containers/food/drinks/soda_cans = 5) if(length >= 5) return TRUE //var/metalist = pickweight(GLOB.maintenance_loot) diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm index 4cb83baf4b..d71e7c0f6a 100644 --- a/code/modules/holiday/halloween/jacqueen.dm +++ b/code/modules/holiday/halloween/jacqueen.dm @@ -95,43 +95,34 @@ last_poof = world.realtime var/datum/reagents/R = new/datum/reagents(100)//Hey, just in case. var/datum/effect_system/smoke_spread/chem/s = new() - R.add_reagent("secretcatchem", (10)) + R.add_reagent("secretcatchem", 10) s.set_up(R, 0, loc) s.start() visible_message("[src] disappears in a puff of smoke!") canmove = TRUE health = 25 - var/hp_list = list() - for(var/obj/machinery/holopad/hp in world) - hp_list += hp + //Try to go to populated areas + var/list/pop_areas = list() + for(var/mob/living/L in GLOB.player_list) + var/area/A = get_area(L) + pop_areas += A - var/nono_areas = list("AI Chamber", "AI Satellite Antechamber", "AI Satellite Foyer") - - for(var/i = 0, i <= 5, i+=1) //Attempts a jump 6 times. - var/obj/machinery/holopad/hp = pick(hp_list) - if(forceMove(pick(hp.loc))) - - for(var/no_area in nono_areas) - var/turf/L1 = hp.loc - if(!L1) //Incase the area isn't a turf (i.e. in a locker) - continue - var/area/L2 = L1.loc - if(L2) - if(no_area == L2.name) - continue - - //Try to go to populated areas - var/list/seen = viewers(8, get_turf(src)) - for(var/victim in seen) - if(ishuman(victim)) - if(z == cached_z) - return TRUE - - if(z == cached_z)//same z level please, if no humans - return TRUE + var/list/targets = list() + for(var/H in GLOB.network_holopads) + var/area/A = get_area(H) + if(!A || findtextEx(A.name, "AI") || !(A in pop_areas) || !is_station_level(H)) + continue + targets += H + if(!targets) + targets = GLOB.generic_event_spawns + for(var/i in 1 to 6) //Attempts a jump up to 6 times. + var/atom/A = pick(targets) + if(do_teleport(src, A, channel = TELEPORT_CHANNEL_MAGIC)) + return TRUE + targets -= A return FALSE /mob/living/simple_animal/jacq/proc/gender_check(mob/living/carbon/C) diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index 251d9de5c0..b25f76c1c8 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -11,7 +11,7 @@ growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_dead = "banana-dead" genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/repeated_harvest) - mutatelist = list(/obj/item/seeds/banana/mime, /obj/item/seeds/banana/bluespace) + mutatelist = list(/obj/item/seeds/banana/mime, /obj/item/seeds/banana/bluespace, /obj/item/seeds/banana/exotic_banana) reagents_add = list("banana" = 0.1, "potassium" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02) /obj/item/reagent_containers/food/snacks/grown/banana @@ -120,6 +120,41 @@ desc = "A peel from a bluespace banana." icon_state = "banana_peel_blue" +//Banana Spider. +/obj/item/seeds/banana/exotic_banana + name = "pack of exotic banana seeds" + desc = "They're seeds that grow into banana trees. However, those bananas might be alive." + icon_state = "seed_exoticbanana" + species = "exoticbanana" + icon_grow = "banana-grow" + plantname = "Exotic Banana Tree" + product = /obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable + mutatelist = list() + genes = list(/datum/plant_gene/trait/slip) + +/obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable + seed = /obj/item/seeds/banana/exotic_banana + name = "banana spider" + desc = "You do not know what it is, but you can bet the clown would love it." + icon_state = "exoticbanana" + list_reagents = list("nutriment" = 3, "vitamin" = 2) + foodtype = GROSS | MEAT | RAW | FRUIT + grind_results = list("blood" = 20, "liquidgibs" = 5) + var/awakening = 0 + +/obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable/attack_self(mob/user) + if(awakening || isspaceturf(user.loc)) + return + to_chat(user, "You decide to wake up the banana spider...") + awakening = 1 + + spawn(30) + if(!QDELETED(src)) + var/mob/living/simple_animal/banana_spider/S = new /mob/living/simple_animal/banana_spider(get_turf(src.loc)) + S.speed += round(10 / seed.potency) + S.visible_message("The banana spider chitters as it stretches its legs.") + qdel(src) + // Other /obj/item/grown/bananapeel/specialpeel //used by /obj/item/clothing/shoes/clown_shoes/banana_shoes name = "synthesized banana peel" diff --git a/code/modules/hydroponics/grown/corn.dm b/code/modules/hydroponics/grown/corn.dm index c259baaf2d..0e5b5272ed 100644 --- a/code/modules/hydroponics/grown/corn.dm +++ b/code/modules/hydroponics/grown/corn.dm @@ -40,7 +40,7 @@ throw_range = 7 /obj/item/grown/corncob/attackby(obj/item/grown/W, mob/user, params) - if(W.is_sharp()) + if(W.get_sharpness()) to_chat(user, "You use [W] to fashion a pipe out of the corn cob!") new /obj/item/clothing/mask/cigarette/pipe/cobpipe (user.loc) qdel(src) diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm index eb463e5f6d..87db12d892 100644 --- a/code/modules/hydroponics/grown/melon.dm +++ b/code/modules/hydroponics/grown/melon.dm @@ -58,7 +58,20 @@ wine_power = 70 //Water to wine, baby. wine_flavor = "divinity" +/* +/obj/item/reagent_containers/food/snacks/grown/holymelon/Initialize() + . = ..() + var/uses = 1 + if(seed) + uses = round(seed.potency / 20) + AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, ITEM_SLOT_HANDS, uses, TRUE, CALLBACK(src, .proc/block_magic), CALLBACK(src, .proc/expire)) //deliver us from evil o melon god -// /obj/item/reagent_containers/food/snacks/grown/holymelon/Initialize() -// . = ..() -// AddComponent(/datum/component/anti_magic, TRUE, TRUE) //deliver us from evil o melon god +/obj/item/reagent_containers/food/snacks/grown/holymelon/proc/block_magic(mob/user, major) + if(major) + to_chat(user, "[src] hums slightly, and seems to decay a bit.") + +/obj/item/reagent_containers/food/snacks/grown/holymelon/proc/expire(mob/user) + to_chat(user, "[src] rapidly turns into ash!") + qdel(src) + new /obj/effect/decal/cleanable/ash(drop_location()) +*/ \ No newline at end of file diff --git a/code/modules/hydroponics/grown/potato.dm b/code/modules/hydroponics/grown/potato.dm index 15378b368e..50341dfa3a 100644 --- a/code/modules/hydroponics/grown/potato.dm +++ b/code/modules/hydroponics/grown/potato.dm @@ -38,7 +38,7 @@ /obj/item/reagent_containers/food/snacks/grown/potato/attackby(obj/item/W, mob/user, params) - if(W.is_sharp()) + if(W.get_sharpness()) to_chat(user, "You cut the potato into wedges with [W].") var/obj/item/reagent_containers/food/snacks/grown/potato/wedges/Wedges = new /obj/item/reagent_containers/food/snacks/grown/potato/wedges remove_item_from_storage(user) diff --git a/code/modules/hydroponics/grown/pumpkin.dm b/code/modules/hydroponics/grown/pumpkin.dm index 644dedff3d..02bc776b78 100644 --- a/code/modules/hydroponics/grown/pumpkin.dm +++ b/code/modules/hydroponics/grown/pumpkin.dm @@ -28,7 +28,7 @@ wine_power = 20 /obj/item/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/W as obj, mob/user as mob, params) - if(W.is_sharp()) + if(W.get_sharpness()) user.show_message("You carve a face into [src]!", 1) new /obj/item/clothing/head/hardhat/pumpkinhead(user.loc) qdel(src) diff --git a/code/modules/hydroponics/grown/root.dm b/code/modules/hydroponics/grown/root.dm index 090809ca88..e28043e4b1 100644 --- a/code/modules/hydroponics/grown/root.dm +++ b/code/modules/hydroponics/grown/root.dm @@ -26,7 +26,7 @@ wine_power = 30 /obj/item/reagent_containers/food/snacks/grown/carrot/attackby(obj/item/I, mob/user, params) - if(I.is_sharp()) + if(I.get_sharpness()) to_chat(user, "You sharpen the carrot into a shiv with [I].") var/obj/item/kitchen/knife/carrotshiv/Shiv = new /obj/item/kitchen/knife/carrotshiv remove_item_from_storage(user) diff --git a/code/modules/hydroponics/grown/tea_coffee.dm b/code/modules/hydroponics/grown/tea_coffee.dm index 06cbb1df0c..bdb5bdb3f9 100644 --- a/code/modules/hydroponics/grown/tea_coffee.dm +++ b/code/modules/hydroponics/grown/tea_coffee.dm @@ -51,7 +51,6 @@ desc = "Long stocks with flowering tips that has a chemical to make feline attracted to it." species = "catnip" plantname = "Catnip Plant" - growthstages = 3 product = /obj/item/reagent_containers/food/snacks/grown/tea/catnip reagents_add = list("catnip" = 0.1, "vitamin" = 0.06, "teapowder" = 0.3) rarity = 50 @@ -59,7 +58,7 @@ /obj/item/reagent_containers/food/snacks/grown/tea/catnip seed = /obj/item/seeds/tea/catnip name = "Catnip buds" - icon_state = "catnip_leaves" + icon_state = "catnip" filling_color = "#4582B4" grind_results = list("catnp" = 2, "water" = 1) diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index 23f178edc9..9a660ac282 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -120,7 +120,7 @@ /obj/structure/bonfire/prelit/Initialize() . = ..() StartBurning() - + /obj/structure/bonfire/CanPass(atom/movable/mover, turf/target) if(istype(mover) && (mover.pass_flags & PASSTABLE)) return TRUE @@ -148,7 +148,7 @@ add_overlay("bonfire_grill") else return ..() - if(W.is_hot()) + if(W.get_temperature()) StartBurning() if(grill) if(user.a_intent != INTENT_HARM && !(W.item_flags & ABSTRACT)) diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index 81961c2d9c..fb00897eec 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -339,7 +339,7 @@ assembly.visible_message("[assembly] has thrown [A]!") log_attack("[assembly] [REF(assembly)] has thrown [A] with non-lethal force.") A.forceMove(drop_location()) - A.throw_at(locate(x_abs, y_abs, T.z), range, 3, , , , CALLBACK(src, .proc/post_throw, A)) + A.throw_at(locate(x_abs, y_abs, T.z), range, 3, null, null, null, CALLBACK(src, .proc/post_throw, A)) // If the item came from a grabber now we can update the outputs since we've thrown it. if(istype(G)) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 9b9d6dd3bb..fde856c4fb 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -453,7 +453,7 @@ /obj/item/immortality_talisman/Initialize() . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE) + AddComponent(/datum/component/anti_magic, TRUE, TRUE, TRUE) /datum/action/item_action/immortality name = "Immortality" @@ -1022,21 +1022,10 @@ message_admins("[ADMIN_LOOKUPFLW(L)] has been marked for death by [ADMIN_LOOKUPFLW(user)]!") - var/datum/objective/survive/survive = new - survive.owner = L.mind - L.mind.objectives += survive + var/datum/antagonist/blood_contract/A = new + L.mind.add_antag_datum(A) + log_combat(user, L, "took out a blood contract on", src) - to_chat(L, "You've been marked for death! Don't let the demons get you! KILL THEM ALL!") - L.add_atom_colour("#FF0000", ADMIN_COLOUR_PRIORITY) - var/obj/effect/mine/pickup/bloodbath/B = new(L) - INVOKE_ASYNC(B, /obj/effect/mine/pickup/bloodbath/.proc/mineEffect, L) - - for(var/mob/living/carbon/human/H in GLOB.player_list) - if(H == L) - continue - to_chat(H, "You have an overwhelming desire to kill [L]. [L.p_theyve(TRUE)] been marked red! Whoever [L.p_they()] [L.p_were()], friend or foe, go kill [L.p_them()]!") - H.put_in_hands(new /obj/item/kitchen/knife/butcher(H), TRUE) - qdel(src) //Colossus diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 6c1a00b020..c13408b24f 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -304,7 +304,9 @@ return var/alloy_id = params["id"] var/datum/design/alloy = stored_research.isDesignResearchedID(alloy_id) - if((check_access(inserted_scan_id) || allowed(usr)) && alloy) + var/mob/M = usr + var/obj/item/card/id/I = M.get_idcard(TRUE) + if((check_access(I) || allowed(usr)) && alloy) var/smelt_amount = can_smelt_alloy(alloy) var/desired = 0 if (params["sheets"]) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index d599d55886..a1242fa263 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -231,7 +231,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) var/r_val var/b_val var/g_val - var/color_format = lentext(input_color) + var/color_format = length(input_color) if(color_format == 3) r_val = hex2num(copytext(input_color, 1, 2))*16 g_val = hex2num(copytext(input_color, 2, 3))*16 @@ -285,10 +285,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp // CITADEL EDIT if(istype(loc, /obj/machinery/cryopod)) - var/response = alert(src, "Are you -sure- you want to ghost?\n(You are alive. If you ghost whilst still alive you won't be able to re-enter this round! You can't change your mind so choose wisely!!)","Are you sure you want to ghost?","Ghost","Stay in body") - if(response != "Ghost")//darn copypaste - return var/obj/machinery/cryopod/C = loc + var/response = alert(src, "Are you -sure- you want to ghost?\n(You are alive. If you ghost whilst still alive you won't be able to re-enter this round! You can't change your mind so choose wisely!!)","Are you sure you want to ghost?","Ghost","Stay in body") + if(response != "Ghost" || QDELETED(C) || QDELETED(src) || loc != C) + return C.despawn_occupant() return // END EDIT diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index 19500653d9..d1ace36b8c 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -152,8 +152,7 @@ newcolor = BLOOD_COLOR_XENO add_atom_colour(newcolor, TEMPORARY_COLOUR_PRIORITY) // but only for a few seconds - spawn(30) - remove_atom_colour(TEMPORARY_COLOUR_PRIORITY, newcolor) + addtimer(CALLBACK(src, /atom/.proc/remove_atom_colour, TEMPORARY_COLOUR_PRIORITY, newcolor), 6 SECONDS) /mob/living/proc/phasein(obj/effect/decal/cleanable/B) if(src.notransform) diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index 323bd408cf..ef6a372f9e 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -95,8 +95,14 @@ Doesn't work on other aliens/AI.*/ var/mob/living/M = input("Select who to whisper to:","Whisper to?",null) as null|mob in options if(!M) return 0 + if(M.anti_magic_check(FALSE, FALSE, TRUE, 0)) + to_chat(user, "As you try to communicate with [M], you're suddenly stopped by a vision of a massive tinfoil wall that streches beyond visible range. It seems you've been foiled.") + return FALSE var/msg = sanitize(input("Message:", "Alien Whisper") as text|null) if(msg) + if(M.anti_magic_check(FALSE, FALSE, TRUE, 0)) + to_chat(user, "As you try to communicate with [M], you're suddenly stopped by a vision of a massive tinfoil wall that streches beyond visible range. It seems you've been foiled.") + return log_directed_talk(user, M, msg, LOG_SAY, tag="alien whisper") to_chat(M, "You hear a strange, alien voice in your head...[msg]") to_chat(user, "You said: \"[msg]\" to [M]") diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 88aa5f86d0..6d52a5c01b 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -585,7 +585,7 @@ if(!isnull(E.lighting_alpha)) lighting_alpha = E.lighting_alpha - if(client.eye != src) + if(client.eye && client.eye != src) var/atom/A = client.eye if(A.update_remote_sight(src)) //returns 1 if we override all other sight updates. return diff --git a/code/modules/mob/living/carbon/carbon_movement.dm b/code/modules/mob/living/carbon/carbon_movement.dm index 8e6c888c40..155b0fc7de 100644 --- a/code/modules/mob/living/carbon/carbon_movement.dm +++ b/code/modules/mob/living/carbon/carbon_movement.dm @@ -36,7 +36,7 @@ /mob/living/carbon/Move(NewLoc, direct) . = ..() - if(. && mob_has_gravity()) //floating is easy + if(. && (movement_type & FLOATING)) //floating is easy if(HAS_TRAIT(src, TRAIT_NOHUNGER)) nutrition = NUTRITION_LEVEL_FED - 1 //just less than feeling vigorous else if(nutrition && stat != DEAD) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 0e6ac72abf..a737844f10 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -488,7 +488,7 @@ var/counter = 1 while(R.fields[text("com_[]", counter)]) counter++ - R.fields[text("com_[]", counter)] = text("Made by [] on [] [], []
[]", allowed_access, STATION_TIME_TIMESTAMP("hh:mm:ss"), time2text(world.realtime, "MMM DD"), GLOB.year_integer+540, t1) + R.fields[text("com_[]", counter)] = text("Made by [] on [] [], []
[]", allowed_access, STATION_TIME_TIMESTAMP("hh:mm:ss"), time2text(world.realtime, "MMM DD"), GLOB.year_integer, t1) to_chat(usr, "Successfully added comment.") return to_chat(usr, "Unable to locate a data core entry for this person.") @@ -946,7 +946,7 @@ return FALSE /mob/living/carbon/human/proc/clear_shove_slowdown() - remove_movespeed_modifier(SHOVE_SLOWDOWN_ID) + remove_movespeed_modifier(MOVESPEED_ID_SHOVE) var/active_item = get_active_held_item() if(is_type_in_typecache(active_item, GLOB.shove_disarming_types)) visible_message("[src.name] regains their grip on \the [active_item]!", "You regain your grip on \the [active_item]", null, COMBAT_MESSAGE_RANGE) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index a44779e05e..2ab7c6d404 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -778,7 +778,7 @@ broken_plural = TRUE else var/holder = broken[1] //our one and only element - if(holder[lentext(holder)] == "s") + if(holder[length(holder)] == "s") broken_plural = TRUE //Put the items in that list into a string of text for(var/B in broken) @@ -790,7 +790,7 @@ damaged_plural = TRUE else var/holder = damaged[1] - if(holder[lentext(holder)] == "s") + if(holder[length(holder)] == "s") damaged_plural = TRUE for(var/D in damaged) damaged_message += D diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index d35df6b789..084dbd83ef 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -79,7 +79,8 @@ //This is an UNSAFE proc. Use mob_can_equip() before calling this one! Or rather use equip_to_slot_if_possible() or advanced_equip_to_slot_if_possible() /mob/living/carbon/human/equip_to_slot(obj/item/I, slot) - if(!..()) //a check failed or the item has already found its slot + . = ..() + if(!.) //a check failed or the item has already found its slot return var/not_handled = FALSE //Added in case we make this type path deeper one day @@ -136,6 +137,7 @@ update_inv_s_store() else to_chat(src, "You are trying to equip this item to an unsupported inventory slot. Report this to a coder!") + not_handled = TRUE //Item is handled and in slot, valid to call callback, for this proc should always be true if(!not_handled) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 9395283aeb..be52a8289b 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -18,7 +18,7 @@ #define THERMAL_PROTECTION_HAND_LEFT 0.025 #define THERMAL_PROTECTION_HAND_RIGHT 0.025 -/mob/living/carbon/human/Life() +/mob/living/carbon/human/Life(seconds, times_fired) set invisibility = 0 if (notransform) return @@ -41,7 +41,7 @@ if(stat != DEAD) //process your dick energy - handle_arousal() + handle_arousal(times_fired) //Update our name based on whether our face is obscured/disfigured name = get_visible_name() diff --git a/code/modules/mob/living/carbon/human/physiology.dm b/code/modules/mob/living/carbon/human/physiology.dm index ac9e9fe219..4d411deb53 100644 --- a/code/modules/mob/living/carbon/human/physiology.dm +++ b/code/modules/mob/living/carbon/human/physiology.dm @@ -21,8 +21,6 @@ var/bleed_mod = 1 // % bleeding modifier var/datum/armor/armor // internal armor datum - var/speed_mod = 0 //tick modifier for each step. Positive is slower, negative is faster. - var/hunger_mod = 1 //% of hunger rate taken per tick. var/do_after_speed = 1 //Speed mod for do_after. Lower is better. If temporarily adjusting, please only modify using *= and /=, so you don't interrupt other calculations. diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index f9b4654793..8445f340e6 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -332,6 +332,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if("meat_type" in default_features) //I can't believe it's come to the meat H.type_of_meat = GLOB.meat_types[H.dna.features["meat_type"]] + C.add_movespeed_modifier(MOVESPEED_ID_SPECIES, TRUE, 100, override=TRUE, multiplicative_slowdown=speedmod, movetypes=(~FLYING)) + SEND_SIGNAL(C, COMSIG_SPECIES_GAIN, src, old_species) @@ -348,6 +350,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) for(var/X in inherent_traits) REMOVE_TRAIT(C, X, SPECIES_TRAIT) + C.remove_movespeed_modifier(MOVESPEED_ID_SPECIES) + if("meat_type" in default_features) C.type_of_meat = GLOB.meat_types[C.dna.features["meat_type"]] else @@ -541,7 +545,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(H.hidden_underwear) H.underwear = "Nude" else - H.saved_underwear = H.underwear + H.underwear = H.saved_underwear var/datum/sprite_accessory/underwear/bottom/B = GLOB.underwear_list[H.underwear] if(B) var/mutable_appearance/MA = mutable_appearance(B.icon, B.icon_state, -BODY_LAYER) @@ -553,7 +557,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(H.hidden_undershirt) H.undershirt = "Nude" else - H.saved_undershirt = H.undershirt + H.undershirt = H.saved_undershirt var/datum/sprite_accessory/underwear/top/T = GLOB.undershirt_list[H.undershirt] if(T) var/mutable_appearance/MA @@ -569,7 +573,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(H.hidden_socks) H.socks = "Nude" else - H.saved_socks = H.socks + H.socks = H.saved_socks var/datum/sprite_accessory/underwear/socks/S = GLOB.socks_list[H.socks] if(S) var/digilegs = (DIGITIGRADE in species_traits) ? "_d" : "" @@ -1389,39 +1393,16 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) /datum/species/proc/movement_delay(mob/living/carbon/human/H) . = 0 //We start at 0. var/flight = 0 //Check for flight and flying items - var/ignoreslow = 0 var/gravity = 0 if(H.movement_type & FLYING) flight = 1 gravity = H.has_gravity() - if(gravity && !flight) //Check for chemicals and innate speedups and slowdowns if we're on the ground - if(HAS_TRAIT(H, TRAIT_GOTTAGOFAST)) - . -= 1 - if(HAS_TRAIT(H, TRAIT_GOTTAGOREALLYFAST)) - . -= 2 - . += speedmod - . += H.physiology.speed_mod - if (H.m_intent == MOVE_INTENT_WALK && HAS_TRAIT(H, TRAIT_SPEEDY_STEP)) . -= 1.5 - if(HAS_TRAIT(H, TRAIT_IGNORESLOWDOWN)) - ignoreslow = 1 - - if(!gravity) - var/obj/item/tank/jetpack/J = H.back - var/obj/item/clothing/suit/space/hardsuit/C = H.wear_suit - var/obj/item/organ/cyberimp/chest/thrusters/T = H.getorganslot(ORGAN_SLOT_THRUSTERS) - if(!istype(J) && istype(C)) - J = C.jetpack - if(istype(J) && J.full_speed && J.allow_thrust(0.01, H)) //Prevents stacking - . -= 0.4 - else if(istype(T) && T.allow_thrust(0.01, H)) - . -= 0.4 - - if(!ignoreslow && gravity) + if(!HAS_TRAIT(H, TRAIT_IGNORESLOWDOWN) && gravity) if(H.wear_suit) . += H.wear_suit.slowdown if(H.shoes) @@ -1448,16 +1429,6 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/grav_force = min(gravity - STANDARD_GRAVITY,3) . += 1 + grav_force - var/datum/component/mood/mood = H.GetComponent(/datum/component/mood) - if(mood && !flight) //How can depression slow you down if you can just fly away from your problems? - switch(mood.sanity) - if(SANITY_INSANE to SANITY_CRAZY) - . += 1.5 - if(SANITY_CRAZY to SANITY_UNSTABLE) - . += 1 - if(SANITY_UNSTABLE to SANITY_DISTURBED) - . += 0.5 - if(HAS_TRAIT(H, TRAIT_FAT)) . += (1.5 - flight) if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !HAS_TRAIT(H, TRAIT_RESISTCOLD)) @@ -1784,7 +1755,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) switch(hit_area) if(BODY_ZONE_HEAD) - if(!I.is_sharp() && armor_block < 50) + if(!I.get_sharpness() && armor_block < 50) if(prob(I.force)) H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 20) if(H.stat == CONSCIOUS) @@ -1817,7 +1788,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) H.update_inv_glasses() if(BODY_ZONE_CHEST) - if(H.stat == CONSCIOUS && !I.is_sharp() && armor_block < 50) + if(H.stat == CONSCIOUS && !I.get_sharpness() && armor_block < 50) if(prob(I.force)) H.visible_message("[H] has been knocked down!", \ "[H] has been knocked down!") @@ -1940,8 +1911,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/knocked_item = FALSE if(!is_type_in_typecache(target_held_item, GLOB.shove_disarming_types)) target_held_item = null - if(!target.has_movespeed_modifier(SHOVE_SLOWDOWN_ID)) - target.add_movespeed_modifier(SHOVE_SLOWDOWN_ID, multiplicative_slowdown = SHOVE_SLOWDOWN_STRENGTH) + if(!target.has_movespeed_modifier(MOVESPEED_ID_SHOVE)) + target.add_movespeed_modifier(MOVESPEED_ID_SHOVE, multiplicative_slowdown = SHOVE_SLOWDOWN_STRENGTH) if(target_held_item) target.visible_message("[target.name]'s grip on \the [target_held_item] loosens!", "Your grip on \the [target_held_item] loosens!", null, COMBAT_MESSAGE_RANGE) diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm index c1c848106c..7669a8c740 100644 --- a/code/modules/mob/living/carbon/human/species_types/angel.dm +++ b/code/modules/mob/living/carbon/human/species_types/angel.dm @@ -29,7 +29,7 @@ if(fly) fly.Remove(H) if(H.movement_type & FLYING) - H.movement_type &= ~FLYING + H.setMovetype(H.movement_type & ~FLYING) ToggleFlight(H,0) if(H.dna && H.dna.species && (H.dna.features["wings"] == "Angel")) if("wings" in H.dna.species.mutant_bodyparts) @@ -132,14 +132,14 @@ if(flight && CanFly(H)) stunmod = 2 speedmod = -0.35 - H.movement_type |= FLYING + H.setMovetype(H.movement_type | FLYING) override_float = TRUE H.pass_flags |= PASSTABLE H.OpenWings() else stunmod = 1 speedmod = 0 - H.movement_type &= ~FLYING + H.setMovetype(H.movement_type & ~FLYING) override_float = FALSE H.pass_flags &= ~PASSTABLE H.CloseWings() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index a7e952f430..edd0be01b0 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -796,7 +796,7 @@ if(resistance_flags & ON_FIRE) return - if(P.is_hot()) + if(P.get_temperature()) visible_message("[src] bursts into flames!") fire_act() diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index f416854838..71eaa5ae22 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -472,37 +472,25 @@ H.hair_style = new_style H.update_hair() else if (select_alteration == "Genitals") - var/list/organs = list() var/operation = input("Select organ operation.", "Organ Manipulation", "cancel") in list("add sexual organ", "remove sexual organ", "cancel") switch(operation) if("add sexual organ") - var/new_organ = input("Select sexual organ:", "Organ Manipulation") in list("Penis", "Testicles", "Breasts", "Vagina", "Womb", "Cancel") - if(new_organ == "Penis") - H.give_penis() - else if(new_organ == "Testicles") - H.give_balls() - else if(new_organ == "Breasts") - H.give_breasts() - else if(new_organ == "Vagina") - H.give_vagina() - else if(new_organ == "Womb") - H.give_womb() - else + var/new_organ = input("Select sexual organ:", "Organ Manipulation") as null|anything in GLOB.genitals_list + if(!new_organ) return + H.give_genital(GLOB.genitals_list[new_organ]) + if("remove sexual organ") + var/list/organs = list() for(var/obj/item/organ/genital/X in H.internal_organs) var/obj/item/organ/I = X organs["[I.name] ([I.type])"] = I - var/obj/item/organ = input("Select sexual organ:", "Organ Manipulation", null) in organs - organ = organs[organ] - if(!organ) + var/obj/item/O = input("Select sexual organ:", "Organ Manipulation", null) as null|anything in organs + var/obj/item/organ/genital/G = organs[O] + if(!G) return - var/obj/item/organ/genital/O - if(isorgan(organ)) - O = organ - O.Remove(H) - organ.forceMove(get_turf(H)) - qdel(organ) + G.forceMove(get_turf(H)) + qdel(G) H.update_genitals() else if (select_alteration == "Ears") @@ -592,8 +580,8 @@ if(new_shape) H.dna.features["cock_shape"] = new_shape H.update_genitals() - H.give_balls() - H.give_penis() + H.give_genital(/obj/item/organ/genital/testicles) + H.give_genital(/obj/item/organ/genital/penis) H.apply_overlay() @@ -605,8 +593,8 @@ if(new_shape) H.dna.features["vag_shape"] = new_shape H.update_genitals() - H.give_womb() - H.give_vagina() + H.give_genital(/obj/item/organ/genital/womb) + H.give_genital(/obj/item/organ/genital/vagina) H.apply_overlay() else if (select_alteration == "Penis Length") @@ -618,8 +606,8 @@ H.dna.features["cock_length"] = max(min( round(text2num(new_length)), COCK_SIZE_MAX),COCK_SIZE_MIN) H.update_genitals() H.apply_overlay() - H.give_balls() - H.give_penis() + H.give_genital(/obj/item/organ/genital/testicles) + H.give_genital(/obj/item/organ/genital/penis) else if (select_alteration == "Breast Size") for(var/obj/item/organ/genital/breasts/X in H.internal_organs) @@ -630,7 +618,7 @@ H.dna.features["breasts_size"] = new_size H.update_genitals() H.apply_overlay() - H.give_breasts() + H.give_genital(/obj/item/organ/genital/breasts) else if (select_alteration == "Breast Shape") for(var/obj/item/organ/genital/breasts/X in H.internal_organs) @@ -641,7 +629,7 @@ H.dna.features["breasts_shape"] = new_shape H.update_genitals() H.apply_overlay() - H.give_breasts() + H.give_genital(/obj/item/organ/genital/breasts) else return @@ -856,6 +844,8 @@ return FALSE if(HAS_TRAIT(M, TRAIT_MINDSHIELD)) //mindshield implant, no dice return FALSE + if(M.anti_magic_check(FALSE, FALSE, TRUE, 0)) + return FALSE if(M in linked_mobs) return FALSE linked_mobs.Add(M) @@ -941,9 +931,14 @@ var/mob/living/M = input("Select who to send your message to:","Send thought to?",null) as null|mob in options if(!M) return - + if(M.anti_magic_check(FALSE, FALSE, TRUE, 0)) + to_chat(H, "As you try to communicate with [M], you're suddenly stopped by a vision of a massive tinfoil wall that streches beyond visible range. It seems you've been foiled.") + return var/msg = sanitize(input("Message:", "Telepathy") as text|null) if(msg) + if(M.anti_magic_check(FALSE, FALSE, TRUE, 0)) + to_chat(H, "As you try to communicate with [M], you're suddenly stopped by a vision of a massive tinfoil wall that streches beyond visible range. It seems you've been foiled.") + return log_directed_talk(H, M, msg, LOG_SAY, "slime telepathy") to_chat(M, "You hear an alien voice in your head... [msg]") to_chat(H, "You telepathically said: \"[msg]\" to [M]") diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index 53c6f1bd0f..7462d26ea6 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -45,14 +45,14 @@ C.adjustOxyLoss(-4) C.adjustCloneLoss(-4) return - C.blood_volume -= 0.75 + C.blood_volume -= 0.75 //Will take roughly 19.5 minutes to die from standard blood volume, roughly 83 minutes to die from max blood volume. if(C.blood_volume <= (BLOOD_VOLUME_SURVIVE*C.blood_ratio)) to_chat(C, "You ran out of blood!") C.dust() var/area/A = get_area(C) if(istype(A, /area/chapel)) to_chat(C, "You don't belong here!") - C.adjustFireLoss(20) + C.adjustFireLoss(5) C.adjust_fire_stacks(6) C.IgniteMob() @@ -88,7 +88,7 @@ to_chat(H, "[victim] doesn't have blood!") return V.drain_cooldown = world.time + 30 - if(victim.anti_magic_check(FALSE, TRUE)) + if(victim.anti_magic_check(FALSE, TRUE, FALSE, 0)) to_chat(victim, "[H] tries to bite you, but stops before touching you!") to_chat(H, "[victim] is blessed! You stop just in time to avoid catching fire.") return @@ -141,7 +141,7 @@ H = new(shape,src,caster) if(istype(H, /mob/living/simple_animal)) var/mob/living/simple_animal/SA = H - if(ventcrawl_nude_only && length(caster.get_equipped_items(include_pockets = TRUE))) + if((caster.blood_volume >= (BLOOD_VOLUME_BAD*caster.blood_ratio)) || (ventcrawl_nude_only && length(caster.get_equipped_items(include_pockets = TRUE)))) SA.ventcrawler = FALSE if(transfer_name) H.name = caster.name diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index a1dce4fb0f..c50677c54c 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -66,7 +66,7 @@ playsound(C, pick(spooks), 50, TRUE, 10) //Congrats you somehow died so hard you stopped being a zombie -/datum/species/zombie/infectious/spec_death(mob/living/carbon/C) +/datum/species/zombie/infectious/spec_death(gibbed, mob/living/carbon/C) . = ..() var/obj/item/organ/zombie_infection/infection infection = C.getorganslot(ORGAN_SLOT_ZOMBIE) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 5b18e95235..ca139cace7 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -98,7 +98,7 @@ var/datum/gas_mixture/breath if(!getorganslot(ORGAN_SLOT_BREATHING_TUBE)) - if(health <= HEALTH_THRESHOLD_FULLCRIT || (pulledby && pulledby.grab_state >= GRAB_KILL) || lungs.organ_flags & ORGAN_FAILING) + if(health <= HEALTH_THRESHOLD_FULLCRIT || (pulledby && pulledby.grab_state >= GRAB_KILL) || !lungs || lungs.organ_flags & ORGAN_FAILING) losebreath++ //You can't breath at all when in critical or when being choked, so you're going to miss a breath else if(health <= crit_threshold) diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index 63a83ac96b..66be8058f1 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -23,7 +23,7 @@ if(changed) animate(src, transform = ntransform, time = 2, pixel_y = final_pixel_y, dir = final_dir, easing = EASE_IN|EASE_OUT) - floating = 0 // If we were without gravity, the bouncing animation got stopped, so we make sure we restart it in next life(). + setMovetype(movement_type & ~FLOATING) // If we were without gravity, the bouncing animation got stopped, so we make sure we restart it in next life(). /mob/living/carbon diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 201e5fea24..2bf17bc265 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -4,7 +4,7 @@ if(digitalinvis) handle_diginvis() //AI becomes unable to see mob - if((movement_type & FLYING) && !floating) //TODO: Better floating + if((movement_type & FLYING) && !(movement_type & FLOATING)) //TODO: Better floating float(on = TRUE) if (client) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index d249cd1a61..e893426ee9 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -716,14 +716,14 @@ var/fixed = 0 if(anchored || (buckled && buckled.anchored)) fixed = 1 - if(on && !floating && !fixed) + if(on && !(movement_type & FLOATING) && !fixed) animate(src, pixel_y = pixel_y + 2, time = 10, loop = -1) sleep(10) animate(src, pixel_y = pixel_y - 2, time = 10, loop = -1) - floating = TRUE - else if(((!on || fixed) && floating)) + setMovetype(movement_type | FLOATING) + else if(((!on || fixed) && (movement_type & FLOATING))) animate(src, pixel_y = get_standard_pixel_y_offset(lying), time = 10) - floating = FALSE + setMovetype(movement_type & ~FLOATING) // The src mob is trying to strip an item from someone // Override if a certain type of mob should be behave differently when stripping items (can't, for example) @@ -795,7 +795,7 @@ var/final_pixel_y = get_standard_pixel_y_offset(lying) animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff , time = 2, loop = 6) animate(pixel_x = final_pixel_x , pixel_y = final_pixel_y , time = 2) - floating = 0 // If we were without gravity, the bouncing animation got stopped, so we make sure to restart it in next life(). + setMovetype(movement_type & ~FLOATING) // If we were without gravity, the bouncing animation got stopped, so we make sure to restart it in next life(). /mob/living/proc/get_temperature(datum/gas_mixture/environment) var/loc_temp = environment ? environment.temperature : T0C @@ -935,7 +935,7 @@ apply_effect((amount*RAD_MOB_COEFFICIENT)/max(1, (radiation**2)*RAD_OVERDOSE_REDUCTION), EFFECT_IRRADIATE, blocked) -/mob/living/anti_magic_check(magic = TRUE, holy = FALSE) +/mob/living/anti_magic_check(magic = TRUE, holy = FALSE, chargecost = 1, self = FALSE) . = ..() if(.) return diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 9d04f288cd..93e64fd4cc 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -422,4 +422,4 @@ if(!used_item) used_item = get_active_held_item() ..() - floating = 0 // If we were without gravity, the bouncing animation got stopped, so we make sure we restart the bouncing after the next movement. + setMovetype(movement_type & ~FLOATING) // If we were without gravity, the bouncing animation got stopped, so we make sure we restart the bouncing after the next movement. diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm index 301d2bd218..f72e03350e 100644 --- a/code/modules/mob/living/silicon/ai/death.dm +++ b/code/modules/mob/living/silicon/ai/death.dm @@ -36,6 +36,8 @@ if(istype(loc, /obj/item/aicard/aitater)) loc.icon_state = "aitater-404" + else if(istype(loc, /obj/item/aicard/aispook)) + loc.icon_state = "aispook-404" else if(istype(loc, /obj/item/aicard)) loc.icon_state = "aicard-404" diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index 0e8d37a807..9882d028d1 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -140,7 +140,7 @@ radio.attack_self(src) if("image") - var/newImage = input("Select your new display image.", "Display Image", "Happy") in list("Happy", "Cat", "Extremely Happy", "Face", "Laugh", "Off", "Sad", "Angry", "What" , "Exclamation" ,"Question") // CITADEL EDIT + var/newImage = input("Select your new display image.", "Display Image", "Happy") in list("Happy", "Cat", "Extremely Happy", "Face", "Laugh", "Off", "Sad", "Angry", "What" , "Exclamation" ,"Question", "Sunglasses") var/pID = 1 switch(newImage) @@ -164,10 +164,12 @@ pID = 9 if("Null") pID = 10 - if("Exclamation") // CITADEL EDIT + if("Exclamation") pID = 11 - if("Question") // CITADEL EDIT + if("Question") pID = 12 + if("Sunglasses") + pID = 13 card.setEmotion(pID) if("signaller") diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 3755ac4104..cae58c56c1 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -8,6 +8,8 @@ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' flags_1 = CONDUCT_1 + var/borghealth = 100 + var/list/basic_modules = list() //a list of paths, converted to a list of instances on New() var/list/emag_modules = list() //ditto var/list/ratvar_modules = list() //ditto ditto @@ -223,6 +225,8 @@ INVOKE_ASYNC(RM, .proc/do_transform_animation) if(RM.dogborg) RM.dogborg_equip() + R.maxHealth = borghealth + R.health = min(borghealth, R.health) qdel(src) return RM @@ -617,6 +621,14 @@ sleeper_overlay = "valesecsleeper" return ..() +/obj/item/robot_module/security/Initialize() + . = ..() + if(!CONFIG_GET(flag/weaken_secborg)) + for(var/obj/item/gun/energy/disabler/cyborg/pewpew in basic_modules) + basic_modules -= pewpew + basic_modules += new /obj/item/gun/energy/e_gun/advtaser/cyborg(src) + qdel(pewpew) + /obj/item/robot_module/peacekeeper name = "Peacekeeper" basic_modules = list( @@ -628,6 +640,7 @@ /obj/item/reagent_containers/borghypo/peace, /obj/item/holosign_creator/cyborg, /obj/item/borg/cyborghug/peacekeeper, + /obj/item/megaphone, /obj/item/borg/projectile_dampen) emag_modules = list(/obj/item/reagent_containers/borghypo/peace/hacked) ratvar_modules = list( diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index a72b71be85..77df764b43 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -101,7 +101,7 @@ if(ASSEMBLY_FOURTH_STEP) if(istype(W, /obj/item/weldingtool)) - if(W.use_tool(src, user, 0, volume=40)) + if(W.use_tool(src, user, 0, volume=40) && build_step == 4) name = "shielded frame assembly" to_chat(user, "You weld the vest to [src].") build_step++ @@ -183,7 +183,7 @@ if(8) if(istype(W, /obj/item/screwdriver)) to_chat(user, "You start attaching the gun to the frame...") - if(W.use_tool(src, user, 40, volume=100)) + if(W.use_tool(src, user, 40, volume=100) && build_step == 8) name = "armed [name]" to_chat(user, "Taser gun attached.") build_step++ diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 6b26b7cb23..50c331940a 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -383,7 +383,7 @@ if((!C.reagents.has_reagent(treatment_fire_avoid)) && (C.getFireLoss() >= heal_threshold) && (!C.reagents.has_reagent(treatment_fire))) return TRUE var/treatment_toxavoid = get_avoidchem_toxin(C) - if(((treatment_toxavoid && !C.reagents.has_reagent(treatment_toxavoid))) && (C.getToxLoss() >= heal_threshold) && (!C.reagents.has_reagent(get_healchem_toxin(C)))) + if(((isnull(treatment_toxavoid) || !C.reagents.has_reagent(treatment_toxavoid))) && (C.getToxLoss() >= heal_threshold) && (!C.reagents.has_reagent(get_healchem_toxin(C)))) return TRUE if(treat_virus && !C.reagents.has_reagent(treatment_virus_avoid) && !C.reagents.has_reagent(treatment_virus)) @@ -472,7 +472,7 @@ if(!reagent_id && (C.getToxLoss() >= heal_threshold)) var/toxin_heal_avoid = get_avoidchem_toxin(C) var/toxin_healchem = get_healchem_toxin(C) - if(!C.reagents.has_reagent(toxin_healchem) && (toxin_heal_avoid && !C.reagents.has_reagent(toxin_heal_avoid))) + if(!C.reagents.has_reagent(toxin_healchem) && (isnull(toxin_heal_avoid) || !C.reagents.has_reagent(toxin_heal_avoid))) reagent_id = toxin_healchem //If the patient is injured but doesn't have our special reagent in them then we should give it to them first diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 564fae48ad..b2971e8d01 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -323,6 +323,132 @@ else STOP_PROCESSING(SSobj, src) +// Space kiwis, ergo quite a copypasta of chickens. + +/mob/living/simple_animal/kiwi + name = "space kiwi" + desc = "Exposure to low gravity made them grow larger." + gender = FEMALE + icon_state = "kiwi" + icon_living = "kiwi" + icon_dead = "kiwi_dead" + speak = list("Chirp!","Cheep cheep chirp!!","Cheep.") + speak_emote = list("chirps","trills") + emote_hear = list("chirps.") + emote_see = list("pecks at the ground.","jumps in place.") + density = FALSE + speak_chance = 2 + turns_per_move = 3 + butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 3) + var/egg_type = /obj/item/reagent_containers/food/snacks/egg/kiwiEgg + var/food_type = /obj/item/reagent_containers/food/snacks/grown/wheat + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" + attacktext = "kicks" + health = 25 + maxHealth = 25 + ventcrawler = VENTCRAWLER_ALWAYS + var/eggsleft = 0 + var/eggsFertile = TRUE + pass_flags = PASSTABLE | PASSMOB + mob_size = MOB_SIZE_SMALL + var/list/feedMessages = list("It chirps happily.","It chirps happily.") + var/list/layMessage = list("lays an egg.","squats down and croons.","begins making a huge racket.","begins chirping raucously.") + gold_core_spawnable = FRIENDLY_SPAWN + var/static/kiwi_count = 0 + +/mob/living/simple_animal/kiwi/Destroy() + --kiwi_count + return ..() + +/mob/living/simple_animal/kiwi/Initialize() + . = ..() + ++kiwi_count + +/mob/living/simple_animal/kiwi/Life() + . =..() + if(!.) + return + if((!stat && prob(3) && eggsleft > 0) && egg_type) + visible_message("[src] [pick(layMessage)]") + eggsleft-- + var/obj/item/E = new egg_type(get_turf(src)) + E.pixel_x = rand(-6,6) + E.pixel_y = rand(-6,6) + if(eggsFertile) + if(kiwi_count < MAX_CHICKENS && prob(25)) + START_PROCESSING(SSobj, E) + +/obj/item/reagent_containers/food/snacks/egg/kiwiEgg/process() + if(isturf(loc)) + amount_grown += rand(1,2) + if(amount_grown >= 100) + visible_message("[src] hatches with a quiet cracking sound.") + new /mob/living/simple_animal/babyKiwi(get_turf(src)) + STOP_PROCESSING(SSobj, src) + qdel(src) + else + STOP_PROCESSING(SSobj, src) + +/mob/living/simple_animal/kiwi/attackby(obj/item/O, mob/user, params) + if(istype(O, food_type)) //feedin' dem kiwis + if(!stat && eggsleft < 8) + var/feedmsg = "[user] feeds [O] to [name]! [pick(feedMessages)]" + user.visible_message(feedmsg) + qdel(O) + eggsleft += rand(1, 4) + else + to_chat(user, "[name] doesn't seem hungry!") + else + ..() + +/mob/living/simple_animal/babyKiwi + name = "baby space kiwi" + desc = "So huggable." + icon_state = "babykiwi" + icon_living = "babykiwi" + icon_dead = "babykiwi_dead" + gender = FEMALE + speak = list("Cherp.","Cherp?","Chirrup.","Cheep!") + speak_emote = list("chirps") + emote_hear = list("chirps.") + emote_see = list("pecks at the ground.","Happily bounces in place.") + density = FALSE + speak_chance = 2 + turns_per_move = 2 + butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2) + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" + attacktext = "kicks" + health = 10 + maxHealth = 10 + ventcrawler = VENTCRAWLER_ALWAYS + var/amount_grown = 0 + pass_flags = PASSTABLE | PASSGRILLE | PASSMOB + mob_size = MOB_SIZE_TINY + gold_core_spawnable = FRIENDLY_SPAWN + +/mob/living/simple_animal/babyKiwi/Initialize() + . = ..() + pixel_x = rand(-6, 6) + pixel_y = rand(0, 10) + +/mob/living/simple_animal/babyKiwi/Life() + . =..() + if(!.) + return + if(!stat && !ckey) + amount_grown += rand(1,2) + if(amount_grown >= 100) + new /mob/living/simple_animal/kiwi(src.loc) + qdel(src) + +/obj/item/reagent_containers/food/snacks/egg/kiwiEgg + name = "kiwi egg" + desc = "A slightly bigger egg!" + icon_state = "kiwiegg" /obj/item/udder name = "udder" diff --git a/modular_citadel/code/modules/mob/living/simple_animal/banana_spider.dm b/code/modules/mob/living/simple_animal/hostile/banana_spider.dm similarity index 62% rename from modular_citadel/code/modules/mob/living/simple_animal/banana_spider.dm rename to code/modules/mob/living/simple_animal/hostile/banana_spider.dm index fdc271a158..823c26b4e9 100644 --- a/modular_citadel/code/modules/mob/living/simple_animal/banana_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/banana_spider.dm @@ -1,58 +1,8 @@ -/obj/item/seeds/banana/Initialize() - . = ..() - mutatelist += /obj/item/seeds/banana/exotic_banana - - -/obj/item/seeds/banana/exotic_banana - name = "pack of exotic banana seeds" - desc = "They're seeds that grow into banana trees. However, those bananas might be alive." - icon = 'modular_citadel/icons/mob/BananaSpider.dmi' - icon_state = "seed_ExoticBanana" - species = "banana" - plantname = "Exotic Banana Tree" - product = /obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable - growing_icon = 'modular_citadel/icons/mob/BananaSpider.dmi' - icon_dead = "banana-dead" - mutatelist = list() - genes = list(/datum/plant_gene/trait/slip) - reagents_add = list("banana" = 0.1, "potassium" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02) - - -/obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable - seed = /obj/item/seeds/banana/exotic_banana - name = "banana spider" - desc = "You do not know what it is, but you can bet the clown would love it." - icon = 'modular_citadel/icons/mob/BananaSpider.dmi' - icon_state = "banana" - item_state = "banana" - filling_color = "#FFFF00" - list_reagents = list("nutriment" = 3, "vitamin" = 2) - foodtype = GROSS | MEAT | RAW | FRUIT - grind_results = list("blood" = 20, "liquidgibs" = 5) - juice_results = list("banana" = 0) - var/awakening = 0 - - -/obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable/attack_self(mob/user) - if(awakening || isspaceturf(user.loc)) - return - to_chat(user, "You decide to wake up the banana spider...") - awakening = 1 - - spawn(30) - if(!QDELETED(src)) - var/mob/living/simple_animal/banana_spider/S = new /mob/living/simple_animal/banana_spider(get_turf(src.loc)) - S.speed += round(10 / seed.potency) - S.visible_message("The banana spider chitters as it stretches its legs.") - qdel(src) - - /mob/living/simple_animal/banana_spider - icon = 'modular_citadel/icons/mob/BananaSpider.dmi' name = "banana spider" desc = "What the fuck is this abomination?" - icon_state = "banana" - icon_dead = "banana_peel" + icon_state = "bananaspider" + icon_dead = "bananaspider_peel" health = 1 maxHealth = 1 turns_per_move = 5 //this isn't player speed =| @@ -136,8 +86,7 @@ /obj/item/reagent_containers/food/snacks/deadbanana_spider name = "dead banana spider" desc = "Thank god it's gone...but it does look slippery." - icon = 'modular_citadel/icons/mob/BananaSpider.dmi' - icon_state = "banana_peel" + icon_state = "bananaspider" bitesize = 3 eatverb = "devours" list_reagents = list("nutriment" = 3, "vitamin" = 2) diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index f5b1706f87..2f39ae13a1 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -175,14 +175,17 @@ status_flags = NONE mob_size = MOB_SIZE_LARGE gold_core_spawnable = NO_SPAWN + var/slowed_by_webs = FALSE -/mob/living/simple_animal/hostile/poison/giant_spider/tarantula/movement_delay() - var/turf/T = get_turf(src) - if(locate(/obj/structure/spider/stickyweb) in T) - speed = 2 - else - speed = 7 +/mob/living/simple_animal/hostile/poison/giant_spider/tarantula/Moved(atom/oldloc, dir) . = ..() + if(slowed_by_webs) + if(!(locate(/obj/structure/spider/stickyweb) in loc)) + remove_movespeed_modifier(MOVESPEED_ID_TARANTULA_WEB) + slowed_by_webs = FALSE + else if(locate(/obj/structure/spider/stickyweb) in loc) + add_movespeed_modifier(MOVESPEED_ID_TARANTULA_WEB, priority=100, multiplicative_slowdown=3) + slowed_by_webs = TRUE //midwives are the queen of the spiders, can send messages to all them and web faster. That rare round where you get a queen spider and turn your 'for honor' players into 'r6siege' players will be a fun one. /mob/living/simple_animal/hostile/poison/giant_spider/nurse/midwife diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm index 5d1db8d35e..6866df01d5 100644 --- a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm +++ b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm @@ -2,7 +2,7 @@ #define GORILLA_TOTAL_LAYERS 1 /mob/living/simple_animal/hostile/gorilla - name = "Gorilla" + name = "gorilla" desc = "A ground-dwelling, predominantly herbivorous ape that inhabits the forests of central Africa." icon = 'icons/mob/gorilla.dmi' icon_state = "crawling" @@ -108,3 +108,10 @@ playsound(src, 'sound/creatures/gorilla.ogg', 200) oogas = 0 +/mob/living/simple_animal/hostile/gorilla/familiar + name = "familiar gorilla" + desc = "There is no need to be upset." + unique_name = FALSE + AIStatus = AI_OFF + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 368c5ad4a8..9cd0504315 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -344,6 +344,7 @@ /mob/living/simple_animal/hostile/proc/AttackingTarget() + SEND_SIGNAL(src, COMSIG_HOSTILE_ATTACKINGTARGET, target) in_melee = TRUE if(vore_active) if(isliving(target)) @@ -426,12 +427,13 @@ if(casingtype) var/obj/item/ammo_casing/casing = new casingtype(startloc) playsound(src, projectilesound, 100, 1) - casing.fire_casing(targeted_atom, src, null, null, null, ran_zone()) + casing.fire_casing(targeted_atom, src, null, null, null, ran_zone(), src) else if(projectiletype) var/obj/item/projectile/P = new projectiletype(startloc) playsound(src, projectilesound, 100, 1) P.starting = startloc P.firer = src + P.fired_from = src P.yo = targeted_atom.y - startloc.y P.xo = targeted_atom.x - startloc.x if(AIStatus != AI_ON)//Don't want mindless mobs to have their movement screwed up firing in space diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index b43bf2bb51..c21166276a 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -388,7 +388,7 @@ Difficulty: Very Hard ActivationReaction(user, ACTIVATE_TOUCH) /obj/machinery/anomalous_crystal/attackby(obj/item/I, mob/user, params) - if(I.is_hot()) + if(I.get_temperature()) ActivationReaction(user, ACTIVATE_HEAT) else ActivationReaction(user, ACTIVATE_WEAPON) @@ -649,7 +649,7 @@ Difficulty: Very Hard L.heal_overall_damage(heal_power, heal_power) new /obj/effect/temp_visual/heal(get_turf(target), "#80F5FF") -/mob/living/simple_animal/hostile/lightgeist/ghostize(can_reenter_corpse = TRUE, send_the_signal = TRUE) +/mob/living/simple_animal/hostile/lightgeist/ghostize(can_reenter_corpse = TRUE, special = FALSE) . = ..() if(.) death() diff --git a/code/modules/mob/living/simple_animal/hostile/netherworld.dm b/code/modules/mob/living/simple_animal/hostile/netherworld.dm index 8210fd6490..dc2f942041 100644 --- a/code/modules/mob/living/simple_animal/hostile/netherworld.dm +++ b/code/modules/mob/living/simple_animal/hostile/netherworld.dm @@ -34,7 +34,7 @@ /mob/living/simple_animal/hostile/netherworld/migo/Initialize() . = ..() - migo_sounds = list('sound/items/bubblewrap.ogg', 'sound/items/change_jaws.ogg', 'sound/items/crowbar.ogg', 'sound/items/drink.ogg', 'sound/items/deconstruct.ogg', 'sound/items/carhorn.ogg', 'sound/items/change_drill.ogg', 'sound/items/dodgeball.ogg', 'sound/items/eatfood.ogg', 'sound/items/megaphone.ogg', 'sound/items/screwdriver.ogg', 'sound/items/weeoo1.ogg', 'sound/items/wirecutter.ogg', 'sound/items/welder.ogg', 'sound/items/zip.ogg', 'sound/items/rped.ogg', 'sound/items/ratchet.ogg', 'sound/items/polaroid1.ogg', 'sound/items/pshoom.ogg', 'sound/items/airhorn.ogg', 'sound/items/geiger/high1.ogg', 'sound/items/geiger/high2.ogg', 'sound/voice/beepsky/creep.ogg', 'sound/voice/beepsky/iamthelaw.ogg', 'sound/voice/ed209_20sec.ogg', 'sound/voice/hiss3.ogg', 'sound/voice/hiss6.ogg', 'sound/voice/medbot/patchedup.ogg', 'sound/voice/medbot/feelbetter.ogg', 'sound/voice/human/manlaugh1.ogg', 'sound/voice/human/womanlaugh.ogg', 'sound/weapons/sear.ogg', 'sound/ambience/antag/clockcultalr.ogg', 'sound/ambience/antag/ling_aler.ogg', 'sound/ambience/antag/tatoralert.ogg', 'sound/ambience/antag/monkey.ogg', 'sound/mecha/nominal.ogg', 'sound/mecha/weapdestr.ogg', 'sound/mecha/critdestr.ogg', 'sound/mecha/imag_enh.ogg', 'sound/effects/adminhelp.ogg', 'sound/effects/alert.ogg', 'sound/effects/attackblob.ogg', 'sound/effects/bamf.ogg', 'sound/effects/blobattack.ogg', 'sound/effects/break_stone.ogg', 'sound/effects/bubbles.ogg', 'sound/effects/bubbles2.ogg', 'sound/effects/clang.ogg', 'sound/effects/clockcult_gateway_disrupted.ogg', 'sound/effects/clownstep2.ogg', 'sound/effects/curse1.ogg', 'sound/effects/dimensional_rend.ogg', 'sound/effects/doorcreaky.ogg', 'sound/effects/empulse.ogg', 'sound/effects/explosion_distant.ogg', 'sound/effects/explosionfar.ogg', 'sound/effects/explosion1.ogg', 'sound/effects/grillehit.ogg', 'sound/effects/genetics.ogg', 'sound/effects/heart_beat.ogg', 'sound/effects/hyperspace_begin.ogg', 'sound/effects/hyperspace_end.ogg', 'sound/effects/his_grace_awaken.ogg', 'sound/effects/pai_boot.ogg', 'sound/effects/phasein.ogg', 'sound/effects/picaxe1.ogg', 'sound/effects/ratvar_reveal.ogg', 'sound/effects/sparks1.ogg', 'sound/effects/smoke.ogg', 'sound/effects/splat.ogg', 'sound/effects/snap.ogg', 'sound/effects/tendril_destroyed.ogg', 'sound/effects/supermatter.ogg', 'sound/misc/desceration-01.ogg', 'sound/misc/desceration-02.ogg', 'sound/misc/desceration-03.ogg', 'sound/misc/bloblarm.ogg', 'sound/misc/airraid.ogg', 'sound/misc/bang.ogg','sound/misc/highlander.ogg', 'sound/misc/interference.ogg', 'sound/misc/notice1.ogg', 'sound/misc/notice2.ogg', 'sound/misc/sadtrombone.ogg', 'sound/misc/slip.ogg', 'sound/misc/splort.ogg', 'sound/weapons/armbomb.ogg', 'sound/weapons/beam_sniper.ogg', 'sound/weapons/chainsawhit.ogg', 'sound/weapons/emitter.ogg', 'sound/weapons/emitter2.ogg', 'sound/weapons/blade1.ogg', 'sound/weapons/bladeslice.ogg', 'sound/weapons/blastcannon.ogg', 'sound/weapons/blaster.ogg', 'sound/weapons/bulletflyby3.ogg', 'sound/weapons/circsawhit.ogg', 'sound/weapons/cqchit2.ogg', 'sound/weapons/drill.ogg', 'sound/weapons/genhit1.ogg', 'sound/weapons/gunshot_silenced.ogg', 'sound/weapons/gunshot2.ogg', 'sound/weapons/handcuffs.ogg', 'sound/weapons/homerun.ogg', 'sound/weapons/kenetic_accel.ogg', 'sound/machines/clockcult/steam_whoosh.ogg', 'sound/machines/fryer/deep_fryer_emerge.ogg', 'sound/machines/airlock.ogg', 'sound/machines/airlock_alien_prying.ogg', 'sound/machines/airlockclose.ogg', 'sound/machines/airlockforced.ogg', 'sound/machines/airlockopen.ogg', 'sound/machines/alarm.ogg', 'sound/machines/blender.ogg', 'sound/machines/boltsdown.ogg', 'sound/machines/boltsup.ogg', 'sound/machines/buzz-sigh.ogg', 'sound/machines/buzz-two.ogg', 'sound/machines/chime.ogg', 'sound/machines/cryo_warning.ogg', 'sound/machines/defib_charge.ogg', 'sound/machines/defib_failed.ogg', 'sound/machines/defib_ready.ogg', 'sound/machines/defib_zap.ogg', 'sound/machines/deniedbeep.ogg', 'sound/machines/ding.ogg', 'sound/machines/disposalflush.ogg', 'sound/machines/door_close.ogg', 'sound/machines/door_open.ogg', 'sound/machines/engine_alert1.ogg', 'sound/machines/engine_alert2.ogg', 'sound/machines/hiss.ogg', 'sound/machines/honkbot_evil_laugh.ogg', 'sound/machines/juicer.ogg', 'sound/machines/ping.ogg', 'sound/machines/signal.ogg', 'sound/machines/synth_no.ogg', 'sound/machines/synth_yes.ogg', 'sound/machines/terminal_alert.ogg', 'sound/machines/triple_beep.ogg', 'sound/machines/twobeep.ogg', 'sound/machines/ventcrawl.ogg', 'sound/machines/warning-buzzer.ogg', 'sound/ai/outbreak5.ogg', 'sound/ai/outbreak7.ogg', 'sound/ai/poweroff.ogg', 'sound/ai/radiation.ogg', 'sound/ai/shuttlecalled.ogg', 'sound/ai/shuttledock.ogg', 'sound/ai/shuttlerecalled.ogg', 'sound/ai/aimalf.ogg') //hahahaha fuck you code divers + migo_sounds = list('sound/items/bubblewrap.ogg', 'sound/items/change_jaws.ogg', 'sound/items/crowbar.ogg', 'sound/items/drink.ogg', 'sound/items/deconstruct.ogg', 'sound/items/carhorn.ogg', 'sound/items/change_drill.ogg', 'sound/items/dodgeball.ogg', 'sound/items/eatfood.ogg', 'sound/items/megaphone.ogg', 'sound/items/screwdriver.ogg', 'sound/items/weeoo1.ogg', 'sound/items/wirecutter.ogg', 'sound/items/welder.ogg', 'sound/items/zip.ogg', 'sound/items/rped.ogg', 'sound/items/ratchet.ogg', 'sound/items/polaroid1.ogg', 'sound/items/pshoom.ogg', 'sound/items/airhorn.ogg', 'sound/items/geiger/high1.ogg', 'sound/items/geiger/high2.ogg', 'sound/voice/beepsky/creep.ogg', 'sound/voice/beepsky/iamthelaw.ogg', 'sound/voice/ed209_20sec.ogg', 'sound/voice/hiss3.ogg', 'sound/voice/hiss6.ogg', 'sound/voice/medbot/patchedup.ogg', 'sound/voice/medbot/feelbetter.ogg', 'sound/voice/human/manlaugh1.ogg', 'sound/voice/human/womanlaugh.ogg', 'sound/weapons/sear.ogg', 'sound/ambience/antag/clockcultalr.ogg', 'sound/ambience/antag/ling_aler.ogg', 'sound/ambience/antag/tatoralert.ogg', 'sound/ambience/antag/monkey.ogg', 'sound/mecha/nominal.ogg', 'sound/mecha/weapdestr.ogg', 'sound/mecha/critdestr.ogg', 'sound/mecha/imag_enh.ogg', 'sound/effects/adminhelp.ogg', 'sound/effects/alert.ogg', 'sound/effects/attackblob.ogg', 'sound/effects/bamf.ogg', 'sound/effects/blobattack.ogg', 'sound/effects/break_stone.ogg', 'sound/effects/bubbles.ogg', 'sound/effects/bubbles2.ogg', 'sound/effects/clang.ogg', 'sound/effects/clockcult_gateway_disrupted.ogg', 'sound/effects/clownstep2.ogg', 'sound/effects/curse1.ogg', 'sound/effects/dimensional_rend.ogg', 'sound/effects/doorcreaky.ogg', 'sound/effects/empulse.ogg', 'sound/effects/explosion_distant.ogg', 'sound/effects/explosionfar.ogg', 'sound/effects/explosion1.ogg', 'sound/effects/grillehit.ogg', 'sound/effects/genetics.ogg', 'sound/effects/heart_beat.ogg', 'sound/effects/hyperspace_begin.ogg', 'sound/effects/hyperspace_end.ogg', 'sound/effects/his_grace_awaken.ogg', 'sound/effects/pai_boot.ogg', 'sound/effects/phasein.ogg', 'sound/effects/picaxe1.ogg', 'sound/effects/ratvar_reveal.ogg', 'sound/effects/sparks1.ogg', 'sound/effects/smoke.ogg', 'sound/effects/splat.ogg', 'sound/effects/snap.ogg', 'sound/effects/tendril_destroyed.ogg', 'sound/effects/supermatter.ogg', 'sound/misc/desceration-01.ogg', 'sound/misc/desceration-02.ogg', 'sound/misc/desceration-03.ogg', 'sound/misc/bloblarm.ogg', 'sound/misc/airraid.ogg', 'sound/misc/bang.ogg','sound/misc/highlander.ogg', 'sound/misc/interference.ogg', 'sound/misc/notice1.ogg', 'sound/misc/notice2.ogg', 'sound/misc/sadtrombone.ogg', 'sound/misc/slip.ogg', 'sound/misc/splort.ogg', 'sound/weapons/armbomb.ogg', 'sound/weapons/beam_sniper.ogg', 'sound/weapons/chainsawhit.ogg', 'sound/weapons/emitter.ogg', 'sound/weapons/emitter2.ogg', 'sound/weapons/blade1.ogg', 'sound/weapons/bladeslice.ogg', 'sound/weapons/blastcannon.ogg', 'sound/weapons/blaster.ogg', 'sound/weapons/bulletflyby3.ogg', 'sound/weapons/circsawhit.ogg', 'sound/weapons/cqchit2.ogg', 'sound/weapons/drill.ogg', 'sound/weapons/genhit1.ogg', 'sound/weapons/gunshot_silenced.ogg', 'sound/weapons/gunshot2.ogg', 'sound/weapons/handcuffs.ogg', 'sound/weapons/homerun.ogg', 'sound/weapons/kenetic_accel.ogg', 'sound/machines/clockcult/steam_whoosh.ogg', 'sound/machines/fryer/deep_fryer_emerge.ogg', 'sound/machines/airlock.ogg', 'sound/machines/airlock_alien_prying.ogg', 'sound/machines/airlockclose.ogg', 'sound/machines/airlockforced.ogg', 'sound/machines/airlockopen.ogg', 'sound/machines/alarm.ogg', 'sound/machines/blender.ogg', 'sound/machines/boltsdown.ogg', 'sound/machines/boltsup.ogg', 'sound/machines/buzz-sigh.ogg', 'sound/machines/buzz-two.ogg', 'sound/machines/chime.ogg', 'sound/machines/cryo_warning.ogg', 'sound/machines/defib_charge.ogg', 'sound/machines/defib_failed.ogg', 'sound/machines/defib_ready.ogg', 'sound/machines/defib_zap.ogg', 'sound/machines/deniedbeep.ogg', 'sound/machines/ding.ogg', 'sound/machines/disposalflush.ogg', 'sound/machines/door_close.ogg', 'sound/machines/door_open.ogg', 'sound/machines/engine_alert1.ogg', 'sound/machines/engine_alert2.ogg', 'sound/machines/hiss.ogg', 'sound/machines/honkbot_evil_laugh.ogg', 'sound/machines/juicer.ogg', 'sound/machines/ping.ogg', 'sound/machines/signal.ogg', 'sound/machines/synth_no.ogg', 'sound/machines/synth_yes.ogg', 'sound/machines/terminal_alert.ogg', 'sound/machines/triple_beep.ogg', 'sound/machines/twobeep.ogg', 'sound/machines/ventcrawl.ogg', 'sound/machines/warning-buzzer.ogg', get_announcer_sound("outbreak5"), get_announcer_sound("outbreak7"), get_announcer_sound("poweroff"), get_announcer_sound("radiation"), get_announcer_sound("shuttlerecalled"), get_announcer_sound("shuttledock"), get_announcer_sound("shuttlecalled"), get_announcer_sound("aimalf")) //hahahaha fuck you code divers /mob/living/simple_animal/hostile/netherworld/migo/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null) ..() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 7ece4f792c..a2ef5b813b 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -363,7 +363,7 @@ density = initial(density) lying = 0 . = 1 - movement_type = initial(movement_type) + setMovetype(initial(movement_type)) /mob/living/simple_animal/proc/make_babies() // <3 <3 <3 if(gender != FEMALE || stat || next_scan_time > world.time || !childtype || !animal_species || !SSticker.IsRoundInProgress()) diff --git a/code/modules/mob/living/ventcrawling.dm b/code/modules/mob/living/ventcrawling.dm index 930656228d..cacd1c7c56 100644 --- a/code/modules/mob/living/ventcrawling.dm +++ b/code/modules/mob/living/ventcrawling.dm @@ -100,7 +100,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, typecacheof(list( A.pipe_vision_img.plane = ABOVE_HUD_PLANE client.images += A.pipe_vision_img pipes_shown += A.pipe_vision_img - movement_type |= VENTCRAWLING + setMovetype(movement_type | VENTCRAWLING) /mob/living/proc/remove_ventcrawl() @@ -108,7 +108,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, typecacheof(list( for(var/image/current_image in pipes_shown) client.images -= current_image pipes_shown.len = 0 - movement_type &= ~VENTCRAWLING + setMovetype(movement_type & ~VENTCRAWLING) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 5a7c6e21ab..f790d15d2d 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -737,15 +737,17 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) mob_spell_list -= S qdel(S) -/mob/proc/anti_magic_check(magic = TRUE, holy = FALSE) - if(!magic && !holy) +/mob/proc/anti_magic_check(magic = TRUE, holy = FALSE, tinfoil = FALSE, chargecost = 1, self = FALSE) + if(!magic && !holy && !tinfoil) return var/list/protection_sources = list() - if(SEND_SIGNAL(src, COMSIG_MOB_RECEIVE_MAGIC, magic, holy, protection_sources) & COMPONENT_BLOCK_MAGIC) + if(SEND_SIGNAL(src, COMSIG_MOB_RECEIVE_MAGIC, src, magic, holy, tinfoil, chargecost, self, protection_sources) & COMPONENT_BLOCK_MAGIC) if(protection_sources.len) return pick(protection_sources) else return src + if((magic && HAS_TRAIT(src, TRAIT_ANTIMAGIC)) || (holy && HAS_TRAIT(src, TRAIT_HOLY))) + return src //You can buckle on mobs if you're next to them since most are dense /mob/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE) @@ -862,7 +864,7 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) replace_identification_name(oldname,newname) for(var/datum/mind/T in SSticker.minds) - for(var/datum/objective/obj in T.objectives) + for(var/datum/objective/obj in T.get_all_objectives()) // Only update if this player is a target if(obj.target && obj.target.current && obj.target.current.real_name == name) obj.update_explanation_text() @@ -959,3 +961,7 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) var/datum/language_holder/H = get_language_holder() H.open_language_menu(usr) + +/mob/setMovetype(newval) + . = ..() + update_movespeed(FALSE) \ No newline at end of file diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index eb22ab7403..9674c73a88 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -67,8 +67,8 @@ /proc/slur(n,var/strength=50) strength = min(strength,50) var/phrase = html_decode(n) - var/leng = lentext(phrase) - var/counter=lentext(phrase) + var/leng = length(phrase) + var/counter=length(phrase) var/newphrase="" var/newletter="" while(counter>=1) @@ -102,8 +102,8 @@ /proc/cultslur(n) // Inflicted on victims of a stun talisman var/phrase = html_decode(n) - var/leng = lentext(phrase) - var/counter=lentext(phrase) + var/leng = length(phrase) + var/counter=length(phrase) var/newphrase="" var/newletter="" while(counter>=1) diff --git a/code/modules/mob/mob_movespeed.dm b/code/modules/mob/mob_movespeed.dm index 5114972493..a0be8ff7cb 100644 --- a/code/modules/mob/mob_movespeed.dm +++ b/code/modules/mob/mob_movespeed.dm @@ -1,23 +1,29 @@ /*Current movespeed modification list format: list(id = list( priority, + flags, legacy slowdown/speedup amount, + movetype_flags, + blacklisted_movetypes, + conflict )) */ //ANY ADD/REMOVE DONE IN UPDATE_MOVESPEED MUST HAVE THE UPDATE ARGUMENT SET AS FALSE! -/mob/proc/add_movespeed_modifier(id, update = TRUE, priority = 0, flags = NONE, override = FALSE, multiplicative_slowdown = 0) - var/list/temp = list(priority, flags, multiplicative_slowdown) //build the modification list +/mob/proc/add_movespeed_modifier(id, update=TRUE, priority=0, flags=NONE, override=FALSE, multiplicative_slowdown=0, movetypes=ALL, blacklisted_movetypes=NONE, conflict=FALSE) + var/list/temp = list(priority, flags, multiplicative_slowdown, movetypes, blacklisted_movetypes, conflict) //build the modification list + var/resort = TRUE if(LAZYACCESS(movespeed_modification, id)) - if(movespeed_modifier_identical_check(movespeed_modification[id], temp)) + var/list/existing_data = movespeed_modification[id] + if(movespeed_modifier_identical_check(existing_data, temp)) return FALSE if(!override) return FALSE - else - remove_movespeed_modifier(id, update) - LAZYSET(movespeed_modification, id, list(priority, flags, multiplicative_slowdown)) + if(priority == existing_data[MOVESPEED_DATA_INDEX_PRIORITY]) + resort = FALSE // We don't need to re-sort if we're replacing something already there and it's the same priority + LAZYSET(movespeed_modification, id, temp) if(update) - update_movespeed(TRUE) + update_movespeed(resort) return TRUE /mob/proc/remove_movespeed_modifier(id, update = TRUE) @@ -55,9 +61,23 @@ if(resort) sort_movespeed_modlist() . = 0 + var/list/conflict_tracker = list() for(var/id in get_movespeed_modifiers()) var/list/data = movespeed_modification[id] - . += data[MOVESPEED_DATA_INDEX_MULTIPLICATIVE_SLOWDOWN] + if(!(data[MOVESPEED_DATA_INDEX_MOVETYPE] & movement_type)) // We don't affect any of these move types, skip + continue + if(data[MOVESPEED_DATA_INDEX_BL_MOVETYPE] & movement_type) // There's a movetype here that disables this modifier, skip + continue + var/conflict = data[MOVESPEED_DATA_INDEX_CONFLICT] + var/amt = data[MOVESPEED_DATA_INDEX_MULTIPLICATIVE_SLOWDOWN] + if(conflict) + // Conflicting modifiers prioritize the larger slowdown or the larger speedup + // We purposefuly don't handle mixing speedups and slowdowns on the same id + if(abs(conflict_tracker[conflict]) < abs(amt)) + conflict_tracker[conflict] = amt + else + continue + . += amt cached_multiplicative_slowdown = . /mob/proc/get_movespeed_modifiers() diff --git a/code/modules/mob/mob_transformation_simple.dm b/code/modules/mob/mob_transformation_simple.dm index a11e7a228e..2c2efee534 100644 --- a/code/modules/mob/mob_transformation_simple.dm +++ b/code/modules/mob/mob_transformation_simple.dm @@ -47,7 +47,7 @@ D.updateappearance(mutcolor_update=1, mutations_overlay_update=1) else if(ishuman(M)) var/mob/living/carbon/human/H = M - client.prefs.copy_to(H) + client?.prefs.copy_to(H) H.dna.update_dna_identity() if(mind && isliving(M)) diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index 1fc97c31e4..4bbeef707a 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -25,7 +25,7 @@ if(flavor_text && flavor_text != "") // We are decoding and then encoding to not only get correct amount of characters, but also to prevent partial escaping characters being shown. var/msg = html_decode(replacetext(flavor_text, "\n", " ")) - if(lentext(msg) <= 40) + if(length(msg) <= 40) return "[html_encode(msg)]" else return "[html_encode(copytext(msg, 1, 37))]... More..." diff --git a/code/modules/modular_computers/computers/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm index 99d648d02b..b86d4e5d0d 100644 --- a/code/modules/modular_computers/computers/item/processor.dm +++ b/code/modules/modular_computers/computers/item/processor.dm @@ -17,8 +17,7 @@ machinery_computer = null /obj/item/modular_computer/processor/New(comp) - STOP_PROCESSING(SSobj, src) // Processed by its machine - + . = ..() if(!comp || !istype(comp, /obj/machinery/modular_computer)) CRASH("Inapropriate type passed to obj/item/modular_computer/processor/New()! Aborting.") return diff --git a/code/modules/modular_computers/file_system/programs/file_browser.dm b/code/modules/modular_computers/file_system/programs/file_browser.dm index 090d64e9d7..2de2d64754 100644 --- a/code/modules/modular_computers/file_system/programs/file_browser.dm +++ b/code/modules/modular_computers/file_system/programs/file_browser.dm @@ -146,7 +146,7 @@ t = replacetext(t, "\[u\]", "") t = replacetext(t, "\[/u\]", "") t = replacetext(t, "\[time\]", "[STATION_TIME_TIMESTAMP("hh:mm:ss")]") - t = replacetext(t, "\[date\]", "[time2text(world.realtime, "MMM DD")] [GLOB.year_integer+540]") + t = replacetext(t, "\[date\]", "[time2text(world.realtime, "MMM DD")] [GLOB.year_integer]") t = replacetext(t, "\[large\]", "") t = replacetext(t, "\[/large\]", "") t = replacetext(t, "\[h1\]", "

") diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm index 94be922fdf..8c304d8a2b 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm @@ -8,7 +8,7 @@ Contents: /obj/item/clothing/suit/space/space_ninja/proc/toggle_stealth() - if(!affecting) + if(!affecting || stealth_cooldown > world.time) return if(stealth) cancel_stealth() @@ -16,26 +16,34 @@ Contents: if(cell.charge <= 0) to_chat(affecting, "You don't have enough power to enable Stealth!") return - stealth = !stealth - animate(affecting, alpha = 10,time = 15) + stealth = TRUE + stealth_cooldown = world.time + 5 SECONDS + animate(affecting, alpha = 15, time = 3 SECONDS) affecting.visible_message("[affecting.name] vanishes into thin air!", \ "You are now mostly invisible to normal detection.") - RegisterSignal(affecting, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_ATTACK_RANGED, COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_THROW, COMSIG_PARENT_ATTACKBY), .proc/reduce_stealth) - RegisterSignal(affecting, COMSIG_MOVABLE_BUMP, .proc/bumping_stealth) + addtimer(CALLBACK(src, .proc/enable_signals), 3 SECONDS) -/obj/item/clothing/suit/space/space_ninja/proc/reduce_stealth() - affecting.alpha = min(affecting.alpha + 30, 80) +/obj/item/clothing/suit/space/space_ninja/proc/enable_signals() + if(!affecting) + return + RegisterSignal(affecting, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_ATTACK_RANGED, COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_THROW, COMSIG_PARENT_ATTACKBY, COMSIG_MOVABLE_TELEPORTED, COMSIG_LIVING_GUN_PROCESS_FIRE), .proc/reduce_stealth) + RegisterSignal(affecting, COMSIG_MOVABLE_BUMP, .proc/bumping_stealth) + + +/obj/item/clothing/suit/space/space_ninja/proc/reduce_stealth(datum/source) + affecting.alpha = min(affecting.alpha + 40, 100) /obj/item/clothing/suit/space/space_ninja/proc/bumping_stealth(datum/source, atom/A) if(isliving(A)) - affecting.alpha = min(affecting.alpha + 15, 80) + affecting.alpha = min(affecting.alpha + 20, 100) /obj/item/clothing/suit/space/space_ninja/proc/cancel_stealth() if(!affecting || !stealth) return FALSE stealth = !stealth - UnregisterSignal(affecting, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_ATTACK_RANGED, COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_THROW, COMSIG_PARENT_ATTACKBY, COMSIG_MOVABLE_BUMP)) - animate(affecting, alpha = 255, time = 15) + stealth_cooldown = world.time + 5 SECONDS + UnregisterSignal(affecting, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_ATTACK_RANGED, COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_THROW, COMSIG_PARENT_ATTACKBY, COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_TELEPORTED, COMSIG_LIVING_GUN_PROCESS_FIRE)) + animate(affecting, alpha = 255, time = 3 SECONDS) affecting.visible_message("[affecting.name] appears from thin air!", \ "You are now visible.") return TRUE diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm index ac1ef3b96a..d89bb9edf2 100644 --- a/code/modules/ninja/suit/suit.dm +++ b/code/modules/ninja/suit/suit.dm @@ -49,6 +49,7 @@ Contents: //Support function variables. var/stealth = FALSE//Stealth off. + var/stealth_cooldown = 0 var/s_busy = FALSE//Is the suit busy with a process? Like AI hacking. Used for safety functions. //Ability function variables. diff --git a/code/modules/ninja/suit/suit_process.dm b/code/modules/ninja/suit/suit_process.dm index 850fb837b4..5c1276e29a 100644 --- a/code/modules/ninja/suit/suit_process.dm +++ b/code/modules/ninja/suit/suit_process.dm @@ -7,9 +7,9 @@ s_coold--//Checks for ability s_cooldown first. cell.charge -= s_cost//s_cost is the default energy cost each tick, usually 5. - if(stealth)//If stealth is active. + if(stealth && stealth_cooldown <= world.time)//If stealth is active. cell.charge -= s_acost - affecting.alpha = max(affecting.alpha - 10, 10) + affecting.alpha = max(affecting.alpha - 10, 15) else cell.charge = 0 diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index 676774ff88..3009a3ebfd 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -173,7 +173,7 @@ attempt_signature(user) else if(istype(P, /obj/item/stamp)) to_chat(user, "You stamp the paper with your rubber stamp, however the ink ignites as you release the stamp.") - else if(P.is_hot()) + else if(P.get_temperature()) user.visible_message("[user] brings [P] next to [src], but [src] does not catch fire!", "[src] refuses to ignite!") else return ..() diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 471aca34c7..1d6326a3ed 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -323,7 +323,7 @@ to_chat(user, "You stamp the paper with your rubber stamp.") ui.render_all() - if(P.is_hot()) + if(P.get_temperature()) if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(10)) user.visible_message("[user] accidentally ignites [user.p_them()]self!", \ "You miss the paper and accidentally light yourself on fire!") diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index e0aeaa106d..6d9c6373ba 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -154,7 +154,7 @@ qdel(src) /obj/item/paper_bin/bundlenatural/attackby(obj/item/W, mob/user) - if(W.is_sharp()) + if(W.get_sharpness()) to_chat(user, "You snip \the [src], spilling paper everywhere.") var/turf/T = get_turf(src.loc) while(total_paper > 0) diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index 4b08ccf608..b547089aef 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -76,7 +76,7 @@ internalPaper.attackby(P, user) //spoofed attack to update internal paper. update_icon() - else if(P.is_hot()) + else if(P.get_temperature()) if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(10)) user.visible_message("[user] accidentally ignites [user.p_them()]self!", \ "You miss [src] and accidentally light yourself on fire!") diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 0762ad46b0..bbbf8edae5 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -202,7 +202,7 @@ /obj/item/stock_parts/cell/lascarbine name = "laser carbine power supply" - maxcharge = 2500 + maxcharge = 1500 //20 laser shots. /obj/item/stock_parts/cell/pulse //200 pulse shots name = "pulse rifle power cell" diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 4d6ede69d1..71a8565d26 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -199,6 +199,7 @@ if(prob(35)) sparks.start() P.firer = user ? user : src + P.fired_from = src if(last_projectile_params) P.p_x = last_projectile_params[2] P.p_y = last_projectile_params[3] diff --git a/code/modules/projectiles/ammunition/_firing.dm b/code/modules/projectiles/ammunition/_firing.dm index 441088c78c..a83042c90a 100644 --- a/code/modules/projectiles/ammunition/_firing.dm +++ b/code/modules/projectiles/ammunition/_firing.dm @@ -1,8 +1,8 @@ -/obj/item/ammo_casing/proc/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread) +/obj/item/ammo_casing/proc/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread, atom/fired_from) distro += variance for (var/i = max(1, pellets), i > 0, i--) var/targloc = get_turf(target) - ready_proj(target, user, quiet, zone_override) + ready_proj(target, user, quiet, zone_override, fired_from) if(distro) //We have to spread a pixel-precision bullet. throw_proj was called before so angles should exist by now... if(randomspread) spread = round((rand() - 0.5) * distro) @@ -20,11 +20,12 @@ update_icon() return 1 -/obj/item/ammo_casing/proc/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") +/obj/item/ammo_casing/proc/ready_proj(atom/target, mob/living/user, quiet, zone_override = "", fired_from) if (!BB) return BB.original = target BB.firer = user + BB.fired_from = fired_from if (zone_override) BB.def_zone = zone_override else diff --git a/code/modules/projectiles/ammunition/caseless/_caseless.dm b/code/modules/projectiles/ammunition/caseless/_caseless.dm index a6b65f79e3..11f7b8670d 100644 --- a/code/modules/projectiles/ammunition/caseless/_caseless.dm +++ b/code/modules/projectiles/ammunition/caseless/_caseless.dm @@ -3,7 +3,7 @@ firing_effect_type = null heavy_metal = FALSE -/obj/item/ammo_casing/caseless/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread) +/obj/item/ammo_casing/caseless/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread, atom/fired_from) if (..()) //successfully firing moveToNullspace() QDEL_NULL(src) diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm index 65724e503a..783b8b895b 100644 --- a/code/modules/projectiles/boxes_magazines/external/smg.dm +++ b/code/modules/projectiles/boxes_magazines/external/smg.dm @@ -3,11 +3,11 @@ icon_state = "46x30mmt-20" ammo_type = /obj/item/ammo_casing/c46x30mm caliber = "4.6x30mm" - max_ammo = 20 + max_ammo = 32 /obj/item/ammo_box/magazine/wt550m9/update_icon() ..() - icon_state = "46x30mmt-[round(ammo_count(),4)]" + icon_state = "46x30mmt-[round(20*(ammo_count()/max_ammo),4)]" /obj/item/ammo_box/magazine/wt550m9/wtap name = "wt550 magazine (Armour Piercing 4.6x30mm)" @@ -16,7 +16,7 @@ /obj/item/ammo_box/magazine/wt550m9/wtap/update_icon() ..() - icon_state = "46x30mmtA-[round(ammo_count(),4)]" + icon_state = "46x30mmtA-[round(20*(ammo_count()/max_ammo),4)]" /obj/item/ammo_box/magazine/wt550m9/wtic name = "wt550 magazine (Incendiary 4.6x30mm)" @@ -25,7 +25,7 @@ /obj/item/ammo_box/magazine/wt550m9/wtic/update_icon() ..() - icon_state = "46x30mmtI-[round(ammo_count(),4)]" + icon_state = "46x30mmtI-[round(20*(ammo_count()/max_ammo),4)]" /obj/item/ammo_box/magazine/uzim9mm name = "uzi magazine (9mm)" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 13fd834657..96b396243b 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -34,6 +34,7 @@ var/semicd = 0 //cooldown handler var/weapon_weight = WEAPON_LIGHT //currently only used for inaccuracy var/spread = 0 //Spread induced by the gun itself. + var/burst_spread = 0 //Spread induced by the gun itself during burst fire per iteration. Only checked if spread is 0. var/randomspread = 1 //Set to 0 for shotguns. This is used for weapons that don't fire all their bullets at once. var/inaccuracy_modifier = 1 @@ -64,6 +65,8 @@ var/zoom_out_amt = 0 var/datum/action/item_action/toggle_scope_zoom/azoom + var/dualwield_spread_mult = 1 //dualwield spread multiplier + /obj/item/gun/Initialize() . = ..() if(pin) @@ -185,7 +188,7 @@ if(G == src || G.weapon_weight >= WEAPON_MEDIUM) continue else if(G.can_trigger_gun(user)) - bonus_spread += 24 * G.weapon_weight + bonus_spread += 24 * G.weapon_weight * G.dualwield_spread_mult loop_counter++ addtimer(CALLBACK(G, /obj/item/gun.proc/process_fire, target, user, TRUE, params, null, bonus_spread), loop_counter) @@ -226,11 +229,11 @@ to_chat(user, " [src] is lethally chambered! You don't want to risk harming anyone...") return if(randomspread) - sprd = round((rand() - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread)) + sprd = round((rand() - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread), 1) else //Smart spread - sprd = round((((rand_spr/burst_size) * iteration) - (0.5 + (rand_spr * 0.25))) * (randomized_gun_spread + randomized_bonus_spread)) + sprd = round((((rand_spr/burst_size) * iteration) - (0.5 + (rand_spr * 0.25))) * (randomized_gun_spread + randomized_bonus_spread), 1) - if(!chambered.fire_casing(target, user, params, ,suppressed, zone_override, sprd)) + if(!chambered.fire_casing(target, user, params, ,suppressed, zone_override, sprd, src)) shoot_with_empty_chamber(user) firing_burst = FALSE return FALSE @@ -259,7 +262,9 @@ var/randomized_gun_spread = 0 var/rand_spr = rand() if(spread) - randomized_gun_spread = rand(0,spread) + randomized_gun_spread = rand(0, spread) + else if(burst_size > 1 && burst_spread) + randomized_gun_spread = rand(0, burst_spread) if(HAS_TRAIT(user, TRAIT_POOR_AIM)) //nice shootin' tex bonus_spread += 25 var/randomized_bonus_spread = rand(0, bonus_spread) @@ -275,7 +280,7 @@ to_chat(user, " [src] is lethally chambered! You don't want to risk harming anyone...") return sprd = round((rand() - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread)) - if(!chambered.fire_casing(target, user, params, , suppressed, zone_override, sprd)) + if(!chambered.fire_casing(target, user, params, , suppressed, zone_override, sprd, src)) shoot_with_empty_chamber(user) return else @@ -293,6 +298,7 @@ if(user) user.update_inv_hands() + SEND_SIGNAL(user, COMSIG_LIVING_GUN_PROCESS_FIRE, target, params, zone_override) SSblackbox.record_feedback("tally", "gun_fired", 1, type) return TRUE diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 06ce7b91e4..2f198c1319 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -26,7 +26,6 @@ else icon_state = "[initial(icon_state)][suppressed ? "-suppressed" : ""][sawn_off ? "-sawn" : ""]" - /obj/item/gun/ballistic/process_chamber(empty_chamber = 1) var/obj/item/ammo_casing/AC = chambered //Find chambered round if(istype(AC)) //there's a chambered round diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index cd86b0b06c..5182c96671 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -2,6 +2,7 @@ w_class = WEIGHT_CLASS_NORMAL var/alarmed = 0 var/select = 1 + var/automatic_burst_overlay = TRUE can_suppress = TRUE burst_size = 3 fire_delay = 2 @@ -19,10 +20,11 @@ /obj/item/gun/ballistic/automatic/update_icon() ..() - if(!select) - add_overlay("[initial(icon_state)]semi") - if(select == 1) - add_overlay("[initial(icon_state)]burst") + if(automatic_burst_overlay) + if(!select) + add_overlay("[initial(icon_state)]semi") + if(select == 1) + add_overlay("[initial(icon_state)]burst") icon_state = "[initial(icon_state)][magazine ? "-[magazine.max_ammo]" : ""][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]" /obj/item/gun/ballistic/automatic/attackby(obj/item/A, mob/user, params) @@ -61,12 +63,10 @@ var/mob/living/carbon/human/user = usr select = !select if(!select) - burst_size = 1 - fire_delay = 0 + disable_burst() to_chat(user, "You switch to semi-automatic.") else - burst_size = initial(burst_size) - fire_delay = initial(fire_delay) + enable_burst() to_chat(user, "You switch to [burst_size]-rnd burst.") playsound(user, 'sound/weapons/empty.ogg', 100, 1) @@ -75,6 +75,14 @@ var/datum/action/A = X A.UpdateButtonIcon() +/obj/item/gun/ballistic/automatic/proc/enable_burst() + burst_size = initial(burst_size) + fire_delay = initial(fire_delay) + +/obj/item/gun/ballistic/automatic/proc/disable_burst() + burst_size = 1 + fire_delay = 0 + /obj/item/gun/ballistic/automatic/can_shoot() return get_ammo() @@ -109,7 +117,6 @@ /obj/item/gun/ballistic/automatic/c20r/afterattack() . = ..() empty_alarm() - return /obj/item/gun/ballistic/automatic/c20r/update_icon() ..() @@ -121,17 +128,25 @@ icon_state = "wt550" item_state = "arg" mag_type = /obj/item/ammo_box/magazine/wt550m9 - fire_delay = 2 can_suppress = FALSE - burst_size = 0 - actions_types = list() + burst_size = 2 + fire_delay = 1 can_bayonet = TRUE knife_x_offset = 25 knife_y_offset = 12 + automatic_burst_overlay = FALSE + +/obj/item/gun/ballistic/automatic/wt550/enable_burst() + . = ..() + spread = 15 + +/obj/item/gun/ballistic/automatic/wt550/disable_burst() + . = ..() + spread = 0 /obj/item/gun/ballistic/automatic/wt550/update_icon() ..() - icon_state = "wt550[magazine ? "-[CEILING(get_ammo(0)/4, 1)*4]" : ""]" + icon_state = "wt550[magazine ? "-[CEILING(( (get_ammo(FALSE) / magazine.max_ammo) * 20) /4, 1)*4]" : "-0"]" //Sprites only support up to 20. /obj/item/gun/ballistic/automatic/mini_uzi name = "\improper Type U3 Uzi" diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm index de738c9047..163deae0ed 100644 --- a/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/code/modules/projectiles/guns/energy/energy_gun.dm @@ -55,7 +55,7 @@ desc = "This is an expensive, modern recreation of an antique laser gun. This gun has several unique firemodes, but lacks the ability to recharge over time." icon_state = "hoslaser" force = 10 - ammo_type = list(/obj/item/ammo_casing/energy/electrode/hos, /obj/item/ammo_casing/energy/laser/hos, /obj/item/ammo_casing/energy/disabler) + ammo_type = list(/obj/item/ammo_casing/energy/electrode/hos, /obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser/hos) ammo_x_offset = 4 resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF @@ -97,7 +97,7 @@ pin = null can_charge = 0 ammo_x_offset = 1 - ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser, /obj/item/ammo_casing/energy/disabler) + ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser) selfcharge = EGUN_SELFCHARGE var/fail_tick = 0 var/fail_chance = 0 diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index a4ec979a06..646b4bd57d 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -78,6 +78,12 @@ else to_chat(user, "There are no modifications currently installed.") +/obj/item/gun/energy/kinetic_accelerator/Exited(atom/movable/AM) + . = ..() + if((AM in modkits) && istype(AM, /obj/item/borg/upgrade/modkit)) + var/obj/item/borg/upgrade/modkit/M = AM + M.uninstall(src, FALSE) + /obj/item/gun/energy/kinetic_accelerator/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/borg/upgrade/modkit)) var/obj/item/borg/upgrade/modkit/MK = I @@ -261,7 +267,7 @@ icon_state = "modkit" w_class = WEIGHT_CLASS_SMALL require_module = 1 - module_type = /obj/item/robot_module/miner + module_type = list(/obj/item/robot_module/miner) var/denied_type = null var/maximum_of_type = 1 var/cost = 30 @@ -287,6 +293,8 @@ /obj/item/borg/upgrade/modkit/proc/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user) . = TRUE + if(src in KA.modkits) // Sanity check to prevent installing the same modkit twice thanks to occasional click/lag delays. + return if(minebot_upgrade) if(minebot_exclusive && !istype(KA.loc, /mob/living/simple_animal/hostile/mining_drone)) to_chat(user, "The modkit you're trying to install is only rated for minebot use.") @@ -322,11 +330,10 @@ for(var/obj/item/gun/energy/kinetic_accelerator/cyborg/KA in R.module.modules) uninstall(KA) -/obj/item/borg/upgrade/modkit/proc/uninstall(obj/item/gun/energy/kinetic_accelerator/KA) - forceMove(get_turf(KA)) +/obj/item/borg/upgrade/modkit/proc/uninstall(obj/item/gun/energy/kinetic_accelerator/KA, forcemove = TRUE) KA.modkits -= src - - + if(forcemove) + forceMove(get_turf(KA)) /obj/item/borg/upgrade/modkit/proc/modify_projectile(obj/item/projectile/kinetic/K) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index bb97f9cf99..2bb813d793 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -181,7 +181,7 @@ /obj/item/gun/energy/laser/redtag/hitscan/chaplain/Initialize() . = ..() - AddComponent(/datum/component/anti_magic, TRUE, TRUE) + AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE) /obj/item/gun/energy/laser/redtag/hitscan/chaplain/handle_suicide(mob/living/carbon/human/user, mob/living/carbon/human/target, params, bypass_timer) if(!ishuman(user) || !ishuman(target)) diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index 9dd25bf3e3..55f21a5a2b 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -9,6 +9,7 @@ fire_sound = 'sound/weapons/emitter.ogg' flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_HUGE + var/checks_antimagic = FALSE var/max_charges = 6 var/charges = 0 var/recharge_rate = 4 @@ -31,6 +32,9 @@ return else no_den_usage = 0 + if(checks_antimagic && user.anti_magic_check(TRUE, FALSE, FALSE, 0, TRUE)) + to_chat(user, "Something is interfering with [src].") + return . = ..() /obj/item/gun/magic/can_shoot() diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 42033d8c88..4cdfc6d70d 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -87,14 +87,17 @@ max_charges = 10 //10, 5, 5, 4 /obj/item/gun/magic/wand/resurrection/zap_self(mob/living/user) + ..() + charges-- + if(user.anti_magic_check()) + user.visible_message("[src] has no effect on [user]!") + return user.revive(full_heal = 1) if(iscarbon(user)) var/mob/living/carbon/C = user C.regenerate_limbs() C.regenerate_organs() to_chat(user, "You feel great!") - charges-- - ..() /obj/item/gun/magic/wand/resurrection/debug //for testing name = "debug wand of healing" diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 8b881b57ed..88e766edfc 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -17,6 +17,7 @@ resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF var/def_zone = "" //Aiming at var/atom/movable/firer = null//Who shot it + var/atom/fired_from = null // the atom that the projectile was fired from (gun, turret) var/suppressed = FALSE //Attack message var/candink = FALSE //Can this projectile play the dink sound when hitting the head? var/yo = null @@ -131,6 +132,8 @@ return TRUE /obj/item/projectile/proc/on_hit(atom/target, blocked = FALSE) + if(fired_from) + SEND_SIGNAL(fired_from, COMSIG_PROJECTILE_ON_HIT, firer, target, Angle) var/turf/target_loca = get_turf(target) var/hitx @@ -164,7 +167,7 @@ if(starting) splatter_dir = get_dir(starting, target_loca) var/obj/item/bodypart/B = L.get_bodypart(def_zone) - if(B.status == BODYPART_ROBOTIC) // So if you hit a robotic, it sparks instead of bloodspatters + if(B && B.status == BODYPART_ROBOTIC) // So if you hit a robotic, it sparks instead of bloodspatters do_sparks(2, FALSE, target.loc) if(prob(25)) new /obj/effect/decal/cleanable/oil(target_loca) @@ -232,8 +235,8 @@ beam_segments[beam_index] = null /obj/item/projectile/Bump(atom/A) - var/datum/point/pcache = trajectory.copy_to() - if(check_ricochet(A) && check_ricochet_flag(A) && ricochets < ricochets_max) + if(trajectory && check_ricochet(A) && check_ricochet_flag(A) && ricochets < ricochets_max) + var/datum/point/pcache = trajectory.copy_to() ricochets++ if(A.handle_ricochet(src)) on_ricochet(A) @@ -356,6 +359,8 @@ pixel_move(1, FALSE) /obj/item/projectile/proc/fire(angle, atom/direct_target) + if(fired_from) + SEND_SIGNAL(fired_from, COMSIG_PROJECTILE_BEFORE_FIRE, src, original) //If no angle needs to resolve it from xo/yo! if(!log_override && firer && original) log_combat(firer, original, "fired at", src, "from [get_area_name(src, TRUE)]") diff --git a/code/modules/projectiles/projectile/bullets/smg.dm b/code/modules/projectiles/projectile/bullets/smg.dm index 42aef1ec9d..94ec2d3c2b 100644 --- a/code/modules/projectiles/projectile/bullets/smg.dm +++ b/code/modules/projectiles/projectile/bullets/smg.dm @@ -1,69 +1,69 @@ -// .45 (M1911 & C20r) - -/obj/item/projectile/bullet/c45 - name = ".45 bullet" - damage = 20 - stamina = 65 - -/obj/item/projectile/bullet/c45_nostamina - name = ".45 bullet" - damage = 30 - -/obj/item/projectile/bullet/c45_cleaning - name = ".45 bullet" - damage = 24 - stamina = 10 - -/obj/item/projectile/bullet/c45_cleaning/on_hit(atom/target, blocked = FALSE) - . = ..() - var/turf/T = get_turf(target) - SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) - for(var/A in T) - if(is_cleanable(A)) - qdel(A) - else if(isitem(A)) - var/obj/item/cleaned_item = A - SEND_SIGNAL(cleaned_item, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) - cleaned_item.clean_blood() - if(ismob(cleaned_item.loc)) - var/mob/M = cleaned_item.loc - M.regenerate_icons() - else if(ishuman(A)) - var/mob/living/carbon/human/cleaned_human = A - if(cleaned_human.lying) - if(cleaned_human.head) - SEND_SIGNAL(cleaned_human.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) - cleaned_human.head.clean_blood() - cleaned_human.update_inv_head() - if(cleaned_human.wear_suit) - SEND_SIGNAL(cleaned_human.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) - cleaned_human.wear_suit.clean_blood() - cleaned_human.update_inv_wear_suit() - else if(cleaned_human.w_uniform) - SEND_SIGNAL(cleaned_human.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) - cleaned_human.w_uniform.clean_blood() - cleaned_human.update_inv_w_uniform() - if(cleaned_human.shoes) - SEND_SIGNAL(cleaned_human.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) - cleaned_human.shoes.clean_blood() - cleaned_human.update_inv_shoes() - SEND_SIGNAL(cleaned_human, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) - cleaned_human.clean_blood() - cleaned_human.wash_cream() - cleaned_human.regenerate_icons() - -// 4.6x30mm (Autorifles) - -/obj/item/projectile/bullet/c46x30mm - name = "4.6x30mm bullet" - damage = 20 - -/obj/item/projectile/bullet/c46x30mm_ap - name = "4.6x30mm armor-piercing bullet" - damage = 15 - armour_penetration = 40 - -/obj/item/projectile/bullet/incendiary/c46x30mm - name = "4.6x30mm incendiary bullet" - damage = 10 - fire_stacks = 1 \ No newline at end of file +// .45 (M1911 & C20r) + +/obj/item/projectile/bullet/c45 + name = ".45 bullet" + damage = 20 + stamina = 65 + +/obj/item/projectile/bullet/c45_nostamina + name = ".45 bullet" + damage = 30 + +/obj/item/projectile/bullet/c45_cleaning + name = ".45 bullet" + damage = 24 + stamina = 10 + +/obj/item/projectile/bullet/c45_cleaning/on_hit(atom/target, blocked = FALSE) + . = ..() + var/turf/T = get_turf(target) + SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + for(var/A in T) + if(is_cleanable(A)) + qdel(A) + else if(isitem(A)) + var/obj/item/cleaned_item = A + SEND_SIGNAL(cleaned_item, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_item.clean_blood() + if(ismob(cleaned_item.loc)) + var/mob/M = cleaned_item.loc + M.regenerate_icons() + else if(ishuman(A)) + var/mob/living/carbon/human/cleaned_human = A + if(cleaned_human.lying) + if(cleaned_human.head) + SEND_SIGNAL(cleaned_human.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_human.head.clean_blood() + cleaned_human.update_inv_head() + if(cleaned_human.wear_suit) + SEND_SIGNAL(cleaned_human.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_human.wear_suit.clean_blood() + cleaned_human.update_inv_wear_suit() + else if(cleaned_human.w_uniform) + SEND_SIGNAL(cleaned_human.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_human.w_uniform.clean_blood() + cleaned_human.update_inv_w_uniform() + if(cleaned_human.shoes) + SEND_SIGNAL(cleaned_human.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_human.shoes.clean_blood() + cleaned_human.update_inv_shoes() + SEND_SIGNAL(cleaned_human, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK) + cleaned_human.clean_blood() + cleaned_human.wash_cream() + cleaned_human.regenerate_icons() + +// 4.6x30mm (Autorifles) + +/obj/item/projectile/bullet/c46x30mm + name = "4.6x30mm bullet" + damage = 15 + +/obj/item/projectile/bullet/c46x30mm_ap + name = "4.6x30mm armor-piercing bullet" + damage = 12.5 + armour_penetration = 40 + +/obj/item/projectile/bullet/incendiary/c46x30mm + name = "4.6x30mm incendiary bullet" + damage = 7.5 + fire_stacks = 1 diff --git a/code/modules/projectiles/projectile/bullets/sniper.dm b/code/modules/projectiles/projectile/bullets/sniper.dm index 78be94339c..3ffac7804e 100644 --- a/code/modules/projectiles/projectile/bullets/sniper.dm +++ b/code/modules/projectiles/projectile/bullets/sniper.dm @@ -38,3 +38,9 @@ dismemberment = 0 //It goes through you cleanly. knockdown = 0 breakthings = FALSE + +/obj/item/projectile/bullet/p50/penetrator/shuttle //Nukeop Shuttle Variety + icon_state = "gaussstrong" + damage = 25 + speed = 0.3 + range = 16 diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 9a228b28e3..b5bfa06786 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -157,8 +157,8 @@ if(beaker) beaker.ex_act(severity, target) -/obj/machinery/chem_dispenser/handle_atom_del(atom/A) - ..() +/obj/machinery/chem_dispenser/Exited(atom/movable/A, atom/newloc) + . = ..() if(A == beaker) beaker = null cut_overlays() @@ -252,7 +252,7 @@ if(!is_operational()) return var/amount = text2num(params["amount"]) - if(beaker && amount in beaker.possible_transfer_amounts) + if(beaker && (amount in beaker.possible_transfer_amounts)) beaker.reagents.remove_all(amount) work_animation() . = TRUE diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index dd51ce2bc7..1afbed3533 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -407,10 +407,10 @@ /datum/reagent/consumable/nuka_cola/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id) + L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/consumable/nuka_cola/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_GOTTAGOFAST, id) + L.remove_movespeed_modifier(id) ..() /datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/M) diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 1475f94f53..15d517a0f5 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -469,7 +469,7 @@ /datum/reagent/drug/skooma/on_mob_metabolize(mob/living/L) . = ..() - ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id) + L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) L.next_move_modifier *= 2 if(ishuman(L)) var/mob/living/carbon/human/H = L @@ -480,7 +480,7 @@ /datum/reagent/drug/skooma/on_mob_end_metabolize(mob/living/L) . = ..() - REMOVE_TRAIT(L, TRAIT_GOTTAGOFAST, id) + L.remove_movespeed_modifier(id) L.next_move_modifier *= 0.5 if(ishuman(L)) var/mob/living/carbon/human/H = L diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 3db5c4c4dc..592f7bc592 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -984,10 +984,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/stimulants/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id) + L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/medicine/stimulants/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_GOTTAGOFAST, id) + L.remove_movespeed_modifier(id) ..() /datum/reagent/medicine/stimulants/on_mob_life(mob/living/carbon/M) @@ -1308,10 +1308,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/changelinghaste/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_GOTTAGOREALLYFAST, id) + L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/medicine/changelinghaste/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_GOTTAGOREALLYFAST, id) + L.remove_movespeed_modifier(id) ..() /datum/reagent/medicine/changelinghaste/on_mob_life(mob/living/carbon/M) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 8f8902503c..af6a65ebe1 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1529,10 +1529,10 @@ /datum/reagent/nitryl/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id) + L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/nitryl/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_GOTTAGOFAST, id) + L.remove_movespeed_modifier(id) ..() /////////////////////////Coloured Crayon Powder//////////////////////////// @@ -2265,24 +2265,6 @@ M.emote("nya") ..() -//Kept for legacy, I think it will break everything if you enable it. -/datum/reagent/penis_enlargement - name = "Penis Enlargement" - id = "penis_enlargement" - description = "A patented chemical forumula by Doctor Ronald Hyatt that is guaranteed to bring maximum GROWTH and LENGTH to your penis, today!" - color = "#888888" - taste_description = "chinese dragon powder" - metabolization_rate = INFINITY //So it instantly removes all of itself. Don't want to put strain on the system. - -/datum/reagent/penis_enlargement/on_mob_life(mob/living/carbon/C) - var/obj/item/organ/genital/penis/P = C.getorganslot(ORGAN_SLOT_PENIS) - if(P) - var/added_length = round(volume/30,0.01) //Every 30u gives an extra inch. Rounded to the nearest 0.01 so float fuckery doesn't occur with the division by 30. - if(added_length >= 0.20) //Only add the length if it's greater than or equal to 0.2. This is to prevent people from smoking the reagents and causing the penis to update constantly. - P.length += added_length - P.update() - ..() - /datum/reagent/changeling_string name = "UNKNOWN" id = "changeling_sting_real" diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 257106aaa7..3ed505c360 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -89,7 +89,7 @@ reagents.clear_reagents() /obj/item/reagent_containers/glass/attackby(obj/item/I, mob/user, params) - var/hotness = I.is_hot() + var/hotness = I.get_temperature() if(hotness && reagents) reagents.expose_temperature(hotness) to_chat(user, "You heat [name] with [I]!") diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 14245e3232..432b9289dd 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -219,6 +219,7 @@ /obj/item/hypospray/mkii name = "hypospray mk.II" icon_state = "hypo2" + icon = 'icons/obj/syringe.dmi' desc = "A new development from DeForest Medical, this hypospray takes 30-unit vials as the drug supply for easy swapping." w_class = WEIGHT_CLASS_TINY var/list/allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/tiny, /obj/item/reagent_containers/glass/bottle/vial/small) diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index d2e3f95bdc..424d7b9ed0 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -125,7 +125,7 @@ to_chat(user, "You switch the nozzle setting to [stream_mode ? "\"stream\"":"\"spray\""]. You'll now use [amount_per_transfer_from_this] units per use.") /obj/item/reagent_containers/spray/attackby(obj/item/I, mob/user, params) - var/hotness = I.is_hot() + var/hotness = I.get_temperature() if(hotness && reagents) reagents.expose_temperature(hotness) to_chat(user, "You heat [name] with [I]!") diff --git a/code/modules/research/designs/stock_parts_designs.dm b/code/modules/research/designs/stock_parts_designs.dm index ea67fad434..6526599179 100644 --- a/code/modules/research/designs/stock_parts_designs.dm +++ b/code/modules/research/designs/stock_parts_designs.dm @@ -288,7 +288,7 @@ departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE /datum/design/subspace_analyzer - name = "Subspace Analyzer" + name = "Subspace Wavelength Analyzer" desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths." id = "s-analyzer" build_type = PROTOLATHE diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index 6ad4ec34f8..9c9542ed17 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -372,15 +372,11 @@ datum/status_effect/rebreathing/tick() duration = 30 /datum/status_effect/tarfoot/on_apply() - var/mob/living/carbon/human/H = owner - if(istype(H)) - H.physiology.speed_mod += 0.5 + owner.add_movespeed_modifier(MOVESPEED_ID_TARFOOT, update=TRUE, priority=100, multiplicative_slowdown=0.5, blacklisted_movetypes=(FLYING|FLOATING)) return ..() /datum/status_effect/tarfoot/on_remove() - var/mob/living/carbon/human/H = owner - if(istype(H)) - H.physiology.speed_mod -= 0.5 + owner.remove_movespeed_modifier(MOVESPEED_ID_TARFOOT) /datum/status_effect/spookcookie id = "spookcookie" @@ -567,7 +563,7 @@ datum/status_effect/stabilized/blue/on_remove() name = "burning fingertips" desc = "You shouldn't see this." -/obj/item/hothands/is_hot() +/obj/item/hothands/get_temperature() return 290 //Below what's required to ignite plasma. /datum/status_effect/stabilized/darkpurple @@ -692,20 +688,15 @@ datum/status_effect/stabilized/blue/on_remove() /datum/status_effect/stabilized/sepia/tick() if(prob(50) && mod > -1) mod-- - var/mob/living/carbon/human/H = owner - if(istype(H)) - H.physiology.speed_mod-- + owner.add_movespeed_modifier(MOVESPEED_ID_SEPIA, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) else if(mod < 1) mod++ - var/mob/living/carbon/human/H = owner - if(istype(H)) - H.physiology.speed_mod++ + // yeah a value of 0 does nothing but replacing the trait in place is cheaper than removing and adding repeatedly + owner.add_movespeed_modifier(MOVESPEED_ID_SEPIA, update=TRUE, priority=100, multiplicative_slowdown=0, blacklisted_movetypes=(FLYING|FLOATING)) return ..() /datum/status_effect/stabilized/sepia/on_remove() - var/mob/living/carbon/human/H = owner - if(istype(H)) - H.physiology.speed_mod += -mod //Reset the changes. + owner.remove_movespeed_modifier(MOVESPEED_ID_SEPIA) /datum/status_effect/stabilized/cerulean id = "stabilizedcerulean" @@ -913,7 +904,7 @@ datum/status_effect/stabilized/blue/on_remove() colour = "light pink" /datum/status_effect/stabilized/lightpink/on_apply() - ADD_TRAIT(owner, TRAIT_GOTTAGOFAST,"slimestatus") + owner.add_movespeed_modifier(MOVESPEED_ID_SLIME_STATUS, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) return ..() /datum/status_effect/stabilized/lightpink/tick() @@ -924,7 +915,7 @@ datum/status_effect/stabilized/blue/on_remove() return ..() /datum/status_effect/stabilized/lightpink/on_remove() - REMOVE_TRAIT(owner, TRAIT_GOTTAGOFAST,"slimestatus") + owner.remove_movespeed_modifier(MOVESPEED_ID_SLIME_STATUS) /datum/status_effect/stabilized/adamantine id = "stabilizedadamantine" diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 119023d465..b581a54095 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -232,7 +232,7 @@ SSshuttle.emergencyLastCallLoc = null if(!silent) - priority_announce("The emergency shuttle has been called. [redAlert ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [timeLeft(600)] minutes.[reason][SSshuttle.emergencyLastCallLoc ? "\n\nCall signal traced. Results can be viewed on any communications console." : "" ]", null, 'sound/ai/shuttlecalled.ogg', "Priority") + priority_announce("The emergency shuttle has been called. [redAlert ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [timeLeft(600)] minutes.[reason][SSshuttle.emergencyLastCallLoc ? "\n\nCall signal traced. Results can be viewed on any communications console." : "" ]", null, "shuttlecalled", "Priority") /obj/docking_port/mobile/emergency/cancel(area/signalOrigin) if(mode != SHUTTLE_CALL) @@ -247,7 +247,7 @@ SSshuttle.emergencyLastCallLoc = signalOrigin else SSshuttle.emergencyLastCallLoc = null - priority_announce("The emergency shuttle has been recalled.[SSshuttle.emergencyLastCallLoc ? " Recall signal traced. Results can be viewed on any communications console." : "" ]", null, 'sound/ai/shuttlerecalled.ogg', "Priority") + priority_announce("The emergency shuttle has been recalled.[SSshuttle.emergencyLastCallLoc ? " Recall signal traced. Results can be viewed on any communications console." : "" ]", null, "shuttlerecalled", "Priority") /obj/docking_port/mobile/emergency/proc/is_hijacked() var/has_people = FALSE @@ -319,7 +319,7 @@ mode = SHUTTLE_DOCKED setTimer(SSshuttle.emergencyDockTime) send2irc("Server", "The Emergency Shuttle has docked with the station.") - priority_announce("The Emergency Shuttle has docked with the station. You have [timeLeft(600)] minutes to board the Emergency Shuttle.", null, 'sound/ai/shuttledock.ogg', "Priority") + priority_announce("The Emergency Shuttle has docked with the station. You have [timeLeft(600)] minutes to board the Emergency Shuttle.", null, "shuttledock", "Priority") ShuttleDBStuff() diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm index 9bea790957..ab08c162a1 100644 --- a/code/modules/shuttle/special.dm +++ b/code/modules/shuttle/special.dm @@ -187,7 +187,7 @@ var/mob/living/M = AM var/throwtarget = get_edge_target_turf(src, boot_dir) M.Knockdown(40) - M.throw_at(throwtarget, 5, 1,src) + M.throw_at(throwtarget, 5, 1) to_chat(M, "No climbing on the bar please.") else . = ..() diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm index 6861676971..bffce9e7ab 100644 --- a/code/modules/shuttle/syndicate.dm +++ b/code/modules/shuttle/syndicate.dm @@ -27,6 +27,11 @@ board.moved = TRUE ..() +/obj/machinery/computer/shuttle/syndicate/allowed(mob/M) + if(issilicon(M) && !(ROLE_SYNDICATE in M.faction)) + return FALSE + return ..() + /obj/machinery/computer/shuttle/syndicate/drop_pod name = "syndicate assault pod control" desc = "Controls the drop pod's launch system." diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index 98eb6f56bf..22dee60eb4 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -115,6 +115,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th var/nonabstract_req = 0 //spell can only be cast by mobs that are physical entities var/stat_allowed = 0 //see if it requires being conscious/alive, need to set to 1 for ghostpells var/phase_allowed = 0 // If true, the spell can be cast while phased, eg. blood crawling, ethereal jaunting + var/antimagic_allowed = TRUE // If false, the spell cannot be cast while under the effect of antimagic var/invocation = "HURP DURP" //what is uttered when the wizard casts the spell var/invocation_emote_self = null var/invocation_type = "none" //can be none, whisper, emote and shout @@ -147,27 +148,36 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th if(player_lock) if(!user.mind || !(src in user.mind.spell_list) && !(src in user.mob_spell_list)) to_chat(user, "You shouldn't have this spell! Something's wrong.") - return 0 + return FALSE else if(!(src in user.mob_spell_list)) - return 0 + return FALSE var/turf/T = get_turf(user) if(is_centcom_level(T.z) && !centcom_cancast) //Certain spells are not allowed on the centcom zlevel to_chat(user, "You can't cast this spell here.") - return 0 + return FALSE if(!skipcharge) if(!charge_check(user)) - return 0 + return FALSE if(user.stat && !stat_allowed) to_chat(user, "Not when you're incapacitated.") - return 0 + return FALSE + + if(!antimagic_allowed) + var/antimagic = user.anti_magic_check(TRUE, FALSE, chargecost = 0, self = TRUE) + if(antimagic) + if(isitem(antimagic)) + to_chat(user, "[antimagic] is interfering with your magic.") + else + to_chat(user, "Magic seems to flee from you, you can't gather enough power to cast this spell.") + return FALSE if(!phase_allowed && istype(user.loc, /obj/effect/dummy)) to_chat(user, "[name] cannot be cast unless you are completely manifested in the material plane.") - return 0 + return FALSE if(ishuman(user)) @@ -175,7 +185,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th if((invocation_type == "whisper" || invocation_type == "shout") && !H.can_speak_vocal()) to_chat(user, "You can't get the words out!") - return 0 + return FALSE var/list/casting_clothes = typecacheof(list(/obj/item/clothing/suit/wizrobe, /obj/item/clothing/suit/space/hardsuit/wizard, @@ -187,24 +197,24 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th if(clothes_req) //clothes check if(!is_type_in_typecache(H.wear_suit, casting_clothes)) to_chat(H, "I don't feel strong enough without my robe.") - return 0 + return FALSE if(!is_type_in_typecache(H.head, casting_clothes)) to_chat(H, "I don't feel strong enough without my hat.") - return 0 + return FALSE if(cult_req) //CULT_REQ CLOTHES CHECK if(!istype(H.wear_suit, /obj/item/clothing/suit/magusred) && !istype(H.wear_suit, /obj/item/clothing/suit/space/hardsuit/cult)) to_chat(H, "I don't feel strong enough without my armor.") - return 0 + return FALSE if(!istype(H.head, /obj/item/clothing/head/magus) && !istype(H.head, /obj/item/clothing/head/helmet/space/hardsuit/cult)) to_chat(H, "I don't feel strong enough without my helmet.") - return 0 + return FALSE else if(clothes_req || human_req) to_chat(user, "This spell can only be cast by humans!") - return 0 + return FALSE if(nonabstract_req && (isbrain(user) || ispAI(user))) to_chat(user, "This spell can only be cast by physical beings!") - return 0 + return FALSE if(!skipcharge) @@ -499,6 +509,9 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th if(user.stat && !stat_allowed) return FALSE + if(!antimagic_allowed && user.anti_magic_check(TRUE, FALSE, chargecost = 0, self = TRUE)) + return FALSE + if(!ishuman(user)) if(clothes_req || human_req) return FALSE diff --git a/code/modules/spells/spell_types/forcewall.dm b/code/modules/spells/spell_types/forcewall.dm index 47d6f71f9b..ed78e3315a 100644 --- a/code/modules/spells/spell_types/forcewall.dm +++ b/code/modules/spells/spell_types/forcewall.dm @@ -35,6 +35,6 @@ return TRUE if(ismob(mover)) var/mob/M = mover - if(M.anti_magic_check()) + if(M.anti_magic_check(chargecost = 0)) return TRUE return FALSE diff --git a/code/modules/spells/spell_types/mind_transfer.dm b/code/modules/spells/spell_types/mind_transfer.dm index 107f303049..d78b32c643 100644 --- a/code/modules/spells/spell_types/mind_transfer.dm +++ b/code/modules/spells/spell_types/mind_transfer.dm @@ -61,7 +61,7 @@ Also, you never added distance checking after target is selected. I've went ahea return var/datum/mind/TM = target.mind - if((target.anti_magic_check() || TM.has_antag_datum(/datum/antagonist/wizard) || TM.has_antag_datum(/datum/antagonist/cult) || TM.has_antag_datum(/datum/antagonist/clockcult) || TM.has_antag_datum(/datum/antagonist/changeling) || TM.has_antag_datum(/datum/antagonist/rev)) || cmptext(copytext(target.key,1,2),"@")) + if((target.anti_magic_check(TRUE, FALSE) || TM.has_antag_datum(/datum/antagonist/wizard) || TM.has_antag_datum(/datum/antagonist/cult) || TM.has_antag_datum(/datum/antagonist/clockcult) || TM.has_antag_datum(/datum/antagonist/changeling) || TM.has_antag_datum(/datum/antagonist/rev)) || cmptext(copytext(target.key,1,2),"@")) if(!silent) to_chat(user, "[target.p_their(TRUE)] mind is resisting your spell!") return diff --git a/code/modules/spells/spell_types/spacetime_distortion.dm b/code/modules/spells/spell_types/spacetime_distortion.dm index 7fd857dc51..7a19787675 100644 --- a/code/modules/spells/spell_types/spacetime_distortion.dm +++ b/code/modules/spells/spell_types/spacetime_distortion.dm @@ -86,7 +86,7 @@ /obj/effect/cross_action/spacetime_dist/proc/walk_link(atom/movable/AM) if(ismob(AM)) var/mob/M = AM - if(M.anti_magic_check()) + if(M.anti_magic_check(chargecost = 0)) return if(linked_dist && walks_left > 0) flick("purplesparkles", src) diff --git a/code/modules/spells/spell_types/telepathy.dm b/code/modules/spells/spell_types/telepathy.dm new file mode 100644 index 0000000000..34f100f753 --- /dev/null +++ b/code/modules/spells/spell_types/telepathy.dm @@ -0,0 +1,32 @@ +/obj/effect/proc_holder/spell/targeted/telepathy + name = "Telepathy" + desc = "Telepathically transmits a message to the target." + charge_max = 0 + clothes_req = 0 + range = 7 + include_user = 0 + action_icon = 'icons/mob/actions/actions_revenant.dmi' + action_icon_state = "r_transmit" + action_background_icon_state = "bg_spell" + var/notice = "notice" + var/boldnotice = "boldnotice" + var/magic_check = FALSE + var/holy_check = FALSE + var/tinfoil_check = TRUE + +/obj/effect/proc_holder/spell/targeted/telepathy/cast(list/targets, mob/living/user = usr) + for(var/mob/living/M in targets) + var/msg = stripped_input(usr, "What do you wish to tell [M]?", null, "") + if(!msg) + charge_counter = charge_max + return + log_directed_talk(user, M, msg, LOG_SAY, "[name]") + to_chat(user, "You transmit to [M]: [msg]") + if(!M.anti_magic_check(magic_check, holy_check, tinfoil_check, 0)) //hear no evil + to_chat(M, "You hear something behind you talking... [msg]") + for(var/ded in GLOB.dead_mob_list) + if(!isobserver(ded)) + continue + var/follow_rev = FOLLOW_LINK(ded, user) + var/follow_whispee = FOLLOW_LINK(ded, M) + to_chat(ded, "[follow_rev] [user] [name]: \"[msg]\" to [follow_whispee] [M]") diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm index 3073a6fcc3..2aae17b0f3 100644 --- a/code/modules/station_goals/dna_vault.dm +++ b/code/modules/station_goals/dna_vault.dm @@ -276,7 +276,7 @@ ADD_TRAIT(H, TRAIT_PIERCEIMMUNE, "dna_vault") if(VAULT_SPEED) to_chat(H, "Your legs feel faster.") - ADD_TRAIT(H, TRAIT_GOTTAGOFAST, "dna_vault") + H.add_movespeed_modifier(MOVESPEED_ID_DNA_VAULT, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) if(VAULT_QUICK) to_chat(H, "Your arms move as fast as lightning.") H.next_move_modifier = 0.5 diff --git a/code/modules/station_goals/station_goal.dm b/code/modules/station_goals/station_goal.dm index 88377455c6..b68fef3e2f 100644 --- a/code/modules/station_goals/station_goal.dm +++ b/code/modules/station_goals/station_goal.dm @@ -12,7 +12,7 @@ var/report_message = "Complete this goal." /datum/station_goal/proc/send_report() - priority_announce("Priority Nanotrasen directive received. Project \"[name]\" details inbound.", "Incoming Priority Message", 'sound/ai/commandreport.ogg') + priority_announce("Priority Nanotrasen directive received. Project \"[name]\" details inbound.", "Incoming Priority Message", "commandreport") print_command_report(get_report(),"Nanotrasen Directive [pick(GLOB.phonetic_alphabet)] \Roman[rand(1,50)]", announce=FALSE) on_report() diff --git a/code/modules/surgery/advanced/lobotomy.dm b/code/modules/surgery/advanced/lobotomy.dm index 5667a2132d..0149fc6c27 100644 --- a/code/modules/surgery/advanced/lobotomy.dm +++ b/code/modules/surgery/advanced/lobotomy.dm @@ -25,7 +25,7 @@ /obj/item/shard = 25, /obj/item = 20) time = 100 /datum/surgery_step/lobotomize/tool_check(mob/user, obj/item/tool) - if(implement_type == /obj/item && !tool.is_sharp()) + if(implement_type == /obj/item && !tool.get_sharpness()) return FALSE return TRUE diff --git a/code/modules/surgery/advanced/viral_bonding.dm b/code/modules/surgery/advanced/viral_bonding.dm index e6e24238c1..87e6a8a99f 100644 --- a/code/modules/surgery/advanced/viral_bonding.dm +++ b/code/modules/surgery/advanced/viral_bonding.dm @@ -24,7 +24,7 @@ /datum/surgery_step/viral_bond/tool_check(mob/user, obj/item/tool) if(implement_type == TOOL_WELDER || implement_type == /obj/item) - return tool.is_hot() + return tool.get_temperature() return TRUE /datum/surgery_step/viral_bond/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index b46be627fb..9aa89dcaf5 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -13,8 +13,7 @@ var/needs_processing = FALSE var/body_zone //BODY_ZONE_CHEST, BODY_ZONE_L_ARM, etc , used for def_zone - var/aux_zone // used for hands - var/aux_layer + var/list/aux_icons // associative list, currently used for hands var/body_part = null //bitflag used to check which clothes cover this bodypart var/use_digitigrade = NOT_DIGITIGRADE //Used for alternate legs, useless elsewhere var/list/embedded_objects = list() @@ -434,9 +433,9 @@ . += image(body_markings_icon, "[body_markings]_[digitigrade_type]_[use_digitigrade]_[body_zone]", -MARKING_LAYER, image_dir) var/image/limb = image(layer = -BODYPARTS_LAYER, dir = image_dir) - var/image/aux + var/list/aux = list() var/image/marking - var/image/auxmarking + var/list/auxmarking = list() . += limb @@ -502,13 +501,15 @@ // Citadel End - if(aux_zone) - aux = image(limb.icon, "[species_id]_[aux_zone]", -aux_layer, image_dir) - if(!isnull(aux_marking)) - if(species_id == "husk") - auxmarking = image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[aux_zone]", -aux_layer, image_dir) - else - auxmarking = image(body_markings_icon, "[body_markings]_[aux_zone]", -aux_layer, image_dir) + if(aux_icons) + for(var/I in aux_icons) + var/aux_layer = aux_icons[I] + aux += image(limb.icon, "[species_id]_[I]", -aux_layer, image_dir) + if(!isnull(aux_marking)) + if(species_id == "husk") + auxmarking += image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[I]", -aux_layer, image_dir) + else + auxmarking += image(body_markings_icon, "[body_markings]_[I]", -aux_layer, image_dir) . += aux . += auxmarking @@ -519,15 +520,17 @@ else limb.icon_state = "[body_zone]" - if(aux_zone) - aux = image(limb.icon, "[aux_zone]", -aux_layer, image_dir) + if(aux_icons) + for(var/I in aux_icons) + var/aux_layer = aux_icons[I] + aux += image(limb.icon, "[I]", -aux_layer, image_dir) + if(!isnull(aux_marking)) + if(species_id == "husk") + auxmarking += image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[I]", -aux_layer, image_dir) + else + auxmarking += image(body_markings_icon, "[body_markings]_[I]", -aux_layer, image_dir) + . += auxmarking . += aux - if(!isnull(aux_marking)) - if(species_id == "husk") - auxmarking = image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[aux_zone]", -aux_layer, image_dir) - else - auxmarking = image(body_markings_icon, "[body_markings]_[aux_zone]", -aux_layer, image_dir) - . += auxmarking if(!isnull(body_markings)) if(species_id == "husk") @@ -549,13 +552,17 @@ var/draw_color = mutation_color || species_color || (skin_tone && skintone2hex(skin_tone)) if(draw_color) limb.color = "#[draw_color]" - if(aux_zone) - aux.color = "#[draw_color]" + if(aux_icons) + for(var/a in aux) + var/image/I = a + I.color = "#[draw_color]" if(!isnull(aux_marking)) - if(species_id == "husk") - auxmarking.color = "#141414" - else - auxmarking.color = list(markings_color) + for(var/a in auxmarking) + var/image/I = a + if(species_id == "husk") + I.color = "#141414" + else + I.color = list(markings_color) if(!isnull(body_markings)) if(species_id == "husk") @@ -633,8 +640,7 @@ max_stamina_damage = 50 body_zone = BODY_ZONE_L_ARM body_part = ARM_LEFT - aux_zone = BODY_ZONE_PRECISE_L_HAND - aux_layer = HANDS_PART_LAYER + aux_icons = list(BODY_ZONE_PRECISE_L_HAND = HANDS_PART_LAYER, "l_hand_behind" = BODY_BEHIND_LAYER) body_damage_coeff = 0.75 held_index = 1 px_x = -6 @@ -697,8 +703,7 @@ max_damage = 50 body_zone = BODY_ZONE_R_ARM body_part = ARM_RIGHT - aux_zone = BODY_ZONE_PRECISE_R_HAND - aux_layer = HANDS_PART_LAYER + aux_icons = list(BODY_ZONE_PRECISE_R_HAND = HANDS_PART_LAYER, "r_hand_behind" = BODY_BEHIND_LAYER) body_damage_coeff = 0.75 held_index = 2 px_x = 6 diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index c6e2da0849..704a377fa8 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -112,14 +112,14 @@ /mob/proc/get_leg_ignore() return FALSE -/mob/living/carbon/alien/larva/get_leg_ignore() - return TRUE - -/mob/living/carbon/human/get_leg_ignore() - if((movement_type & FLYING) || floating) +/mob/living/carbon/get_leg_ignore() + if(movement_type & (FLYING|FLOATING)) return TRUE return FALSE +/mob/living/carbon/alien/larva/get_leg_ignore() + return TRUE + /mob/living/proc/get_missing_limbs() return list() diff --git a/code/modules/surgery/cavity_implant.dm b/code/modules/surgery/cavity_implant.dm index e50f8ddcac..200e33b5f8 100644 --- a/code/modules/surgery/cavity_implant.dm +++ b/code/modules/surgery/cavity_implant.dm @@ -15,7 +15,7 @@ /datum/surgery_step/handle_cavity/tool_check(mob/user, obj/item/tool) if(istype(tool, /obj/item/cautery) || istype(tool, /obj/item/gun/energy/laser)) return FALSE - return !tool.is_hot() + return !tool.get_temperature() /datum/surgery_step/handle_cavity/preop(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) var/obj/item/bodypart/chest/CH = target.get_bodypart(BODY_ZONE_CHEST) IC = CH.cavity_item diff --git a/code/modules/surgery/mechanic_steps.dm b/code/modules/surgery/mechanic_steps.dm index 23f9c167a0..9366e585c3 100644 --- a/code/modules/surgery/mechanic_steps.dm +++ b/code/modules/surgery/mechanic_steps.dm @@ -14,7 +14,7 @@ "[user] begins to unscrew the shell of [target]'s [parse_zone(target_zone)].") /datum/surgery_step/mechanic_incise/tool_check(mob/user, obj/item/tool) - if(implement_type == /obj/item && !tool.is_sharp()) + if(implement_type == /obj/item && !tool.get_sharpness()) return FALSE return TRUE //close shell @@ -33,7 +33,7 @@ "[user] begins to screw the shell of [target]'s [parse_zone(target_zone)].") /datum/surgery_step/mechanic_close/tool_check(mob/user, obj/item/tool) - if(implement_type == /obj/item && !tool.is_sharp()) + if(implement_type == /obj/item && !tool.get_sharpness()) return FALSE return TRUE //prepare electronics diff --git a/code/modules/surgery/organic_steps.dm b/code/modules/surgery/organic_steps.dm index 392244fb4b..3b05873a0a 100644 --- a/code/modules/surgery/organic_steps.dm +++ b/code/modules/surgery/organic_steps.dm @@ -11,7 +11,7 @@ "[user] begins to make an incision in [target]'s [parse_zone(target_zone)].") /datum/surgery_step/incise/tool_check(mob/user, obj/item/tool) - if(implement_type == /obj/item && !tool.is_sharp()) + if(implement_type == /obj/item && !tool.get_sharpness()) return FALSE return TRUE /datum/surgery_step/incise/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -79,7 +79,7 @@ /datum/surgery_step/close/tool_check(mob/user, obj/item/tool) if(implement_type == TOOL_WELDER || implement_type == /obj/item) - return tool.is_hot() + return tool.get_temperature() return TRUE /datum/surgery_step/close/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) if(locate(/datum/surgery_step/saw) in surgery.steps) diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm index 7156b8180b..8af52abc47 100644 --- a/code/modules/surgery/organs/augments_chest.dm +++ b/code/modules/surgery/organs/augments_chest.dm @@ -129,7 +129,7 @@ var/datum/effect_system/trail_follow/ion/ion_trail /obj/item/organ/cyberimp/chest/thrusters/Insert(mob/living/carbon/M, special = 0) - ..() + . = ..() if(!ion_trail) ion_trail = new ion_trail.set_up(M) @@ -151,10 +151,14 @@ on = TRUE if(allow_thrust(0.01)) ion_trail.start() + RegisterSignal(owner, COMSIG_MOVABLE_MOVED, .proc/move_react) + owner.add_movespeed_modifier(MOVESPEED_ID_CYBER_THRUSTER, priority=100, multiplicative_slowdown=-2, movetypes=FLOATING, conflict=MOVE_CONFLICT_JETPACK) if(!silent) to_chat(owner, "You turn your thrusters set on.") else ion_trail.stop() + UnregisterSignal(owner, COMSIG_MOVABLE_MOVED) + owner.remove_movespeed_modifier(MOVESPEED_ID_CYBER_THRUSTER) if(!silent) to_chat(owner, "You turn your thrusters set off.") on = FALSE @@ -169,6 +173,9 @@ var/datum/action/A = X A.UpdateButtonIcon() +/obj/item/organ/cyberimp/chest/thrusters/proc/move_react() + allow_thrust(0.01) + /obj/item/organ/cyberimp/chest/thrusters/proc/allow_thrust(num) if(!on || !owner) return 0 diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index 114b92f10d..f487e61d38 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -142,22 +142,3 @@ if(prob(60/severity)) to_chat(owner, "Your breathing tube suddenly closes!") owner.losebreath += 2 - -//BOX O' IMPLANTS - -/obj/item/storage/box/cyber_implants - name = "boxed cybernetic implants" - desc = "A sleek, sturdy box." - icon_state = "cyber_implants" - var/list/boxed = list( - /obj/item/autosurgeon/thermal_eyes, - /obj/item/autosurgeon/xray_eyes, - /obj/item/autosurgeon/anti_stun, - /obj/item/autosurgeon/reviver) - var/amount = 5 - -/obj/item/storage/box/cyber_implants/PopulateContents() - var/implant - while(contents.len <= amount) - implant = pick(boxed) - new implant(src) diff --git a/code/modules/surgery/organs/autosurgeon.dm b/code/modules/surgery/organs/autosurgeon.dm index 27bf575627..70959e6253 100644 --- a/code/modules/surgery/organs/autosurgeon.dm +++ b/code/modules/surgery/organs/autosurgeon.dm @@ -103,6 +103,26 @@ /obj/item/autosurgeon/anti_drop starting_organ = /obj/item/organ/cyberimp/brain/anti_drop +//BOX O' IMPLANTS + +/obj/item/storage/box/cyber_implants + name = "boxed cybernetic implants" + desc = "A sleek, sturdy box." + icon_state = "syndiebox" + illustration = "cyber_implants" + var/list/boxed = list( + /obj/item/autosurgeon/thermal_eyes, + /obj/item/autosurgeon/xray_eyes, + /obj/item/autosurgeon/anti_stun, + /obj/item/autosurgeon/reviver) + var/amount = 5 + +/obj/item/storage/box/cyber_implants/PopulateContents() + var/implant + while(contents.len <= amount) + implant = pick(boxed) + new implant(src) + /obj/item/autosurgeon/penis desc = "A single use autosurgeon that contains a penis. A screwdriver can be used to remove it, but implants can't be placed back in." uses = 1 diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index 95258c709a..d877af7451 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -227,7 +227,7 @@ terminate_effects() . = ..() -/obj/item/organ/eyes/robotic/glow/Remove() +/obj/item/organ/eyes/robotic/glow/Remove(mob/living/carbon/M, special = FALSE) terminate_effects() . = ..() @@ -338,7 +338,7 @@ /obj/item/organ/eyes/robotic/glow/proc/start_visuals() if(!islist(eye_lighting)) regenerate_light_effects() - if((eye_lighting.len < light_beam_distance) || !on_mob) + if((LAZYLEN(eye_lighting) < light_beam_distance) || !on_mob) regenerate_light_effects() sync_light_effects() update_visuals() diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 593614372a..194a10f4c4 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -31,7 +31,7 @@ /obj/item/organ/proc/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE) if(!iscarbon(M) || owner == M) - return + return FALSE var/obj/item/organ/replaced = M.getorganslot(slot) if(replaced) @@ -53,6 +53,8 @@ A.Grant(M) STOP_PROCESSING(SSobj, src) + return TRUE + //Special is for instant replacement like autosurgeons /obj/item/organ/proc/Remove(mob/living/carbon/M, special = FALSE) owner = null @@ -67,6 +69,8 @@ A.Remove(M) START_PROCESSING(SSobj, src) + return TRUE + /obj/item/organ/proc/on_find(mob/living/finder) return @@ -184,7 +188,7 @@ if(owner) // The special flag is important, because otherwise mobs can die // while undergoing transformation into different mobs. - Remove(owner, special=TRUE) + Remove(owner, TRUE) return ..() /obj/item/organ/attack(mob/living/carbon/M, mob/user) diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index cee20dddee..a9e2b331bb 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -233,7 +233,6 @@ name = "plasma bone \"tongue\"" desc = "Like animated skeletons, Plasmamen vibrate their teeth in order to produce speech." icon_state = "tongueplasma" - maxHealth = "alien" modifies_speech = FALSE /obj/item/organ/tongue/robot diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index e81cbf528f..a920ea765a 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -92,7 +92,7 @@ return TRUE if(iscyborg(user) && user.a_intent != INTENT_HARM) //to save asimov borgs a LOT of heartache return TRUE - if(tool.item_flags & SURGICAL_TOOL) //Just because you used the wrong tool it doesn't mean you meant to whack the patient with it + if(tool && tool.item_flags & SURGICAL_TOOL) //Just because you used the wrong tool it doesn't mean you meant to whack the patient with it to_chat(user, "This step requires a different tool!") return TRUE diff --git a/code/modules/tooltip/tooltip.html b/code/modules/tooltip/tooltip.html index 3e2f26a09f..3cab68da6a 100644 --- a/code/modules/tooltip/tooltip.html +++ b/code/modules/tooltip/tooltip.html @@ -122,8 +122,8 @@ //Get the real icon size according to the client view var mapWidth = map['view-size'].x, mapHeight = map['view-size'].y, - tilesShown = tooltip.client_view_w - realIconSize = mapWidth / tilesShown, + tilesShown = tooltip.client_view_h + realIconSize = mapHeight / tilesShown, resizeRatio = realIconSize / tooltip.tileSize, //Calculate letterboxing offsets leftOffset = (map.size.x - mapWidth) / 2, diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index ba531cac93..280740688e 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1714,7 +1714,7 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes /datum/uplink_item/role_restricted/alientech name = "Alien Research Disk" desc = "A technology disk holding a terabyte of highly confidential abductor technology. \ - Simply insert into research console of choice and import the files from the disk. You might research some useful gear from this." + Simply insert into research console of choice and import the files from the disk. Because of its foreign nature, it may require multiple uploads to work properly." item = /obj/item/disk/tech_disk/abductor cost = 12 restricted_roles = list("Research Director", "Scientist", "Roboticist") diff --git a/code/modules/vehicles/secway.dm b/code/modules/vehicles/secway.dm index 33f0d794c8..114a6373f4 100644 --- a/code/modules/vehicles/secway.dm +++ b/code/modules/vehicles/secway.dm @@ -4,9 +4,59 @@ desc = "A brave security cyborg gave its life to help you look like a complete tool." icon_state = "secway" key_type = /obj/item/key/security + var/chargemax = 150 + var/chargerate = 0.35 + var/charge = 150 + var/chargespeed = 1 + var/normalspeed = 2 + var/last_tick = 0 + var/list/progressbars_by_rider = list() /obj/vehicle/ridden/secway/Initialize() . = ..() var/datum/component/riding/D = LoadComponent(/datum/component/riding) D.vehicle_move_delay = 1 D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 4), TEXT_SOUTH = list(0, 4), TEXT_EAST = list(0, 4), TEXT_WEST = list( 0, 4))) + START_PROCESSING(SSfastprocess, src) + +/obj/vehicle/ridden/secway/process() + var/diff = world.time - last_tick + var/regen = chargerate * diff + charge = CLAMP(charge + regen, 0, chargemax) + last_tick = world.time + +/obj/vehicle/ridden/secway/relaymove(mob/user, direction) + var/new_speed = normalspeed + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(H.sprinting && charge) + charge-- + new_speed = chargespeed + var/datum/component/riding/D = GetComponent(/datum/component/riding) + D.vehicle_move_delay = new_speed + for(var/i in progressbars_by_rider) + var/datum/progressbar/B = progressbars_by_rider[i] + B.update(charge) + return ..() + +/obj/vehicle/ridden/secway/buckle_mob(mob/living/M, force, check_loc) + . = ..(M, force, check_loc) + if(.) + if(progressbars_by_rider[M]) + qdel(progressbars_by_rider[M]) + var/datum/progressbar/D = new(M, chargemax, src) + D.update(charge) + progressbars_by_rider[M] = D + +/obj/vehicle/ridden/secway/unbuckle_mob(mob/living/M, force) + . = ..(M, force) + if(.) + qdel(progressbars_by_rider[M]) + progressbars_by_rider -= M + +/obj/vehicle/ridden/secway/Destroy() + for(var/i in progressbars_by_rider) + qdel(progressbars_by_rider[i]) + progressbars_by_rider.Cut() + STOP_PROCESSING(SSfastprocess, src) + return ..() diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index fbc7713f25..e64435accc 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -63,7 +63,7 @@ product_ads = "Guaranteed to protect your feet from industrial accidents!;Afraid of radiation? Then wear yellow!" vend_reply = "Thank you for using the EngiDrobe!" products = list(/obj/item/clothing/accessory/pocketprotector = 5, - /obj/item/storage/backpack/duffelbag/engineering = 2, + /obj/item/storage/backpack/duffelbag/engineering = 3, /obj/item/storage/backpack/industrial = 3, /obj/item/storage/backpack/satchel/eng = 3, /obj/item/clothing/suit/hooded/wintercoat/engineering = 3, @@ -71,7 +71,8 @@ /obj/item/clothing/under/rank/engineer/skirt = 5, /obj/item/clothing/suit/hazardvest = 5, /obj/item/clothing/shoes/workboots = 5, - /obj/item/clothing/head/hardhat = 5) + /obj/item/clothing/head/hardhat = 5, + /obj/item/clothing/head/hardhat/weldhat = 3) refill_canister = /obj/item/vending_refill/wardrobe/engi_wardrobe /obj/item/vending_refill/wardrobe/engi_wardrobe @@ -87,7 +88,8 @@ /obj/item/storage/backpack/duffelbag/engineering = 3, /obj/item/storage/backpack/satchel/eng = 3, /obj/item/storage/backpack/industrial = 3, - /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos = 5, + /obj/item/clothing/head/hardhat/weldhat/dblue = 3, + /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos = 3, /obj/item/clothing/under/rank/atmospheric_technician = 5, /obj/item/clothing/under/rank/atmospheric_technician/skirt = 5, /obj/item/clothing/shoes/sneakers/black = 5) diff --git a/code/modules/vore/eating/belly_obj.dm b/code/modules/vore/eating/belly_obj.dm index 741aff5f9a..5c2b45dace 100644 --- a/code/modules/vore/eating/belly_obj.dm +++ b/code/modules/vore/eating/belly_obj.dm @@ -158,7 +158,7 @@ /obj/belly/Destroy() SSbellies.belly_list -= src - if(owner) + if(owner?.vore_organs) owner.vore_organs -= src owner = null . = ..() diff --git a/config/game_options.txt b/config/game_options.txt index ca58e58a5b..c06845cde3 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -258,6 +258,12 @@ EVENTS_MIN_PLAYERS_MUL 1 ### DYNAMIC MODE ### +## Injection delays: how long (in minutes) will pass before a midround or latejoin antag is injected. +DYNAMIC_MIDROUND_DELAY_MIN 15 +DYNAMIC_MIDROUND_DELAY_MAX 35 +DYNAMIC_LATEJOIN_DELAY_MIN 5 +DYNAMIC_LATEJOIN_DELAY_MAX 25 + ## How many roundstart players required for high population override to take effect. DYNAMIC_HIGH_POP_LIMIT 55 @@ -398,7 +404,14 @@ ALLOW_AI ## Allow the AI Multicamera feature to be used by AI players ALLOW_AI_MULTICAM +## CYBORG ## +## Uncomment to disable the ability for cyborg flashes to knock down carbon targets +#DISABLE_BORG_FLASH_KNOCKDOWN + ## Secborg ### +## Uncomment to bring secborgs and K-9s back in line with the rest of the modules available. This is strongly recommended if you have secborgs configured to be available at all times. +#WEAKEN_SECBORG + ## Uncomment to prevent the security cyborg module from being chosen #DISABLE_SECBORG diff --git a/config/maps.txt b/config/maps.txt index 99a4543853..87e86a0800 100644 --- a/config/maps.txt +++ b/config/maps.txt @@ -10,6 +10,8 @@ Format: maxplayers [number] (0 or less disables this requirement) default (The last map with this defined will get all votes of players who have not explicitly voted for a map) voteweight [number] (How much to count each player vote as, defaults to 1, setting to 0.5 counts each vote as half a vote, 2 as double, etc, Setting to 0 disables the map but allows players to still pick it) + max_round_search_span [number] (If this is nonzero, then if this map has been played more than a specified amount of times within this number of rounds, the map won't show up in votes. Max for this value determined by a define in persistence.dm) + max_rounds_played [number] (This determines how many times a map can be played within the above number of rounds before it's forbidden from votes.) disabled (disables the map) endmap diff --git a/html/changelog.html b/html/changelog.html index 31935bd1c1..61bc43a99b 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -35,15 +35,15 @@
- Current Project Maintainers: deathride58, LetterJay, kevinz000
+ Current Project Maintainers: deathride58, LetterJay, kevinz000, BlackMajor, Izzy
Currently Active GitHub contributor list: -Click Here-
- Coders: Poojawa, deathride58, kevinz000, Trilbyspaceclone, nik707, as well as the /tg/ crew.
+ Coders: Fermis, Poojawa, deathride58, kevinz000, Trilbyspaceclone, nik707, Ghommie as well as the /tg/ crew.
Spriters: Michiyamenotehifunana, CameronWoof, and the folks who contributed to /tg/ station project.
Sounds: /tg/ Sound crew.
Main Testers: You poor saps, our player base.
Thanks to: /tg/station, Baystation 12, /vg/station, NTstation, CDK Station devs, FacepunchStation, GoonStation devs, the original SpaceStation developers and Invisty for the title image.
Also a thanks to anybody who has contributed who is not listed here :( Ask to be added here on irc.

Have a bug to report?
Visit our Issue Tracker.
- Please ensure that the bug has not already been reported upstream and use the template provided here!. + Please ensure that the bug has not already been reported upstream and use the template provided here!.
@@ -56,1487 +56,2065 @@ -->
-

27 September 2018

-

Alexch2 updated:

+

04 November 2019

+

4dplanner, MMiracles updated:

    -
  • Fixes tons of typos related to integrated circuits.
  • -
  • Re-writes the descriptions of a few parts of integrated circuits.
  • +
  • Wizard shapeshift now converts damage taken while transformed
  • +
  • transform spell transfers damage correctly instead of healing most of the time
  • +
  • 0% simplemob health maps to 0 carbon health, 100% simplemob to 100% carbon
  • +
  • transforming to a form with brute resistance no longer heals you
  • +
  • transforming back to a species with brute resistance no longer heals you
-

Armhulen code, Keekenox sprites and S_____ as the ideas guy :roll_eyes: updated:

+

AdmiralPancakes1 updated:

    -
  • New drinks: Peppermint Patty and the Candyland Extract!!
  • +
  • Cryo cell shortcuts: alt-click toggles the doors, ctrl-click toggles the power
-

Astatineguy12 updated:

+

Alonefromhell updated:

    -
  • The experimentor is less likely to produce food when it transforms an item
  • -
  • The experimentor no longer breaks when the toxic waste malfunction occurs multiple times and isn't cleaned up
  • -
  • The experimentor irridiate function actually chooses what item to make properly rather than picking from the start of the list
  • -
  • The mime blockade spell now shows up under the right tab
  • +
  • Ported Oracle UI, a framework for self-updating and neat UI's
  • +
  • Paper now uses OUI
  • +
  • Bins now use OUI
  • +
  • fixes tootip offset
-

Beachsprites updated:

+

AnalWerewolf updated:

    -
  • added directional beach sprites
  • +
  • Fritz plushie
  • +
  • Donor item
-

Big Tobacco updated:

+

Anonymous updated:

    -
  • Cheap lighters now come in four different shapes and Zippos can have one of four different designs, collect them all and improve our sales!
  • -
  • All existing lighter sprites have been given a face-lift and the flames are now subtly animated.
  • -
  • Cheap lighters now use a fixed list of 16 colors to pick from instead of using totally randomized colors.
  • -
  • Cigar cases have been tweaked to be a bit smaller and to have a modified design.
  • -
  • Cohiba Robusto and Havanan cigars now use separate case sprites from the generic premium cigar cases.
  • +
  • More crusader armor variants to pick from armament: Teutonic and Hospitaller.
  • +
+

Arturlang updated:

+
    +
  • You can now use CTRL and ALT click on pumps and filters to toggle them on and off and max their output respectively
  • +
  • You can now use RPDs on windows and grilles.
  • +
  • The RD can now suplex a immovable rod. Good fucking luck.
  • +
  • Fixes high alert ERT suit sprites. You can see them now!
  • +
  • Traitor codewords are now highlighted for traitors.
  • +
  • You can now examine pumps filters and mixers to see if you can use CTRL and Alt click on them.
  • +
  • Fixes brain damage/trauma healing nanites so they actually work while there are only traumas.
  • +
  • Advanced toxin filtration nanites now heal slimes
  • +
+

Bhijn updated:

+
    +
  • It's now possible to forcefully eject the occupants of a dogborg's sleeper by using a crowbar on them. This action is instant.
  • +
  • Resist values for dogborg sleepers have been adjusted. The baseline has been decreased from 30 seconds to 15 seconds. Medihound sleepers have a resist timer of 3 seconds. Sechound sleepers retain a resist timer of 30 seconds.
  • +
  • It now takes 10 full seconds to insert people into your sleeper. This should hopefully give people some more room to breathe and react to a dogborg attempting to sleeper someone either for no reason or in a way that violates law 2.
  • +
  • Warp whistles no longer grant permanent invulnerability and invisibility
  • +
  • You can now actually use the resist hotkey to resist out of handcuffs. Woah, revolutionary
  • +
  • the `!tgs poly` command now actually works
  • +
  • Poly now has a 0.01% chance per squawk to speak through the TGS relay.
  • +
  • The point production mode of radiation collectors has been reverted to the original behavior of using all of the stored power every process cycle instead of just 4% of it
  • +
  • Radiation collectors now display the amount of power/research points they're producing per minute rather than per process cycle, which should hopefully clear up a lot of confusion.
  • +
  • Radiation collectors also display what's happening to the gas within them, which should make it a lot more obvious as to how you get tritium.
  • +
  • Security borgs and K9s are now only available during red alert or higher.
  • +
  • Headmins or other folks with access to the server's config can choose the minimum alert level for secborgs to be chosen via the MINIMUM_SECBORG_ALERT config option. See the default game_options.txt for more info.
  • +
  • The server no longer attempts to check if the CID matches the IP of any bans, or if the IP matches any CIDs of any active bans, during client analyzation
  • +
  • Vampires can now only ventcrawl in bat form if their blood level is below the bad blood volume (224 blood total)
  • +
  • Vampires now only take 5 burn per mob life cycle while within chapel areas, down from the original 20 burn per life cycle.
  • +
  • K9 pounces have received a minor rework. It now has an effective cooldown of 2.5 seconds, can now only deal up to 120 staminaloss, deals a maximum of 80 stamloss on hit, has a spoolup of half a second, and now has telegraphing in the form of a quiet noise.
  • +
  • K9s now only have 80 health
  • +
  • Secborgs (but not k9s) now have a hybrid taser. This can be toggled via server config.
  • +
  • The disabler cooler upgrade now applies to all energy-based firearms for borgs
  • +
  • Dogborg jaws are now capable of incapacitating targets if using help intent. This deals a hard stun depending on how much staminaloss the target has, and whether or not they're resting. This behavior can be toggled via server config.
  • +
  • K9 jaws now have 15 force, up from their nerfed 10 force.
  • +
  • Borg flashes regained their ability to cause knockdown. This can be toggled via server config.
  • +
  • The WEAKEN_SECBORG config option will disable the new dogborg jaws mechanic and make secborgs spawn with a standard disabler.
  • +
  • The DISABLE_BORG_FLASH_KNOCKDOWN will disable the ability for borg flashes to knockdown.
  • +
  • Jukeboxes now have 6 audio channels available to them, up from the previous accidental 2 and previously intended 5 channels.
  • +
  • Jukeboxes now work again on clients running versions higher than 512.1459.
  • +
  • People will no longer have their ears consumed by an eldritch god if multiple jukeboxes are active and the first jukebox in the jukebox list stops playing, then tries to play again
  • +
  • Instead of the debug text for invalid jukebox behavior being printed to world, the debug text is now restricted to the runtime panel.
  • +
+

BurgerB updated:

+
    +
  • Tweaked the UI of the loadout to be less cluttered due to an issue with formatting.
  • +
+

BurgerBB updated:

+
    +
  • Adds the bonermeter; a device that measures arousal based statistics.
  • +
  • Added a new input to the electrostimulator that controls the strength of the shock. It accepts negative inputs which reduce arousal. Added a new output to the electrostimulator that displays the amount of arousal gained.
  • +
  • Rebalanced the electro-stimulator to be less spammy by giving it a 2.5 second enforced cooldown per circuit contraption. Increased the complexity of electro stimulator from 10 to 15.
  • +
  • Reworked the Vent Clog event to spray smoke instead of foam, also made it shoot smoke over time instead through each vent instead of all at once.
  • +
  • Increased the spawn area of the City of Cogs (Reebe). This does not affect the area in which builders can build.
  • +
  • Significantly tweaks the Wizard race transformation event to be less unreasonably troublesome.
  • +
  • Adds a new 0 cost trait that makes you immune* to Crocin and Hexacrocin
  • +
  • Tweaks how slurring works so it's more of a gradual change into slurring instead of immediate.
  • +
  • Slurring is now directly proportional to your drunkenness, with other sources of slur being added on top of it.
  • +
  • Bras are now separate from underwear, meaning you can mix and match bras if you're into that.
  • +
  • Men can wear female accessory clothing, and females can wear men accessory clothing. It's not a fetish, mom, it's PROGRESSIVE.
  • +
  • Reorganized accessories into their own files to prevent a massive 1000 line file.
  • +
  • i'm 10% sure that merging this PR will cause preference corruption sooooooooooo I just need to hear from @deathride58 or perhaps someone else on how much damage this could possibly do.
  • +
  • Tweaked penis.
  • +
  • Rebalanced penis.
  • +
  • Added the following reagents to the common list of vent clog reagents: ~~Cooking Oil~~, ~~Frost Oil~~, Sodium Chloride, Corn Oil, Uranium, Carpet, Firefighting Foam, semen, femcum, tear juice, strange reagent, ~~spraytan~~.
  • +
  • Vent Clog smoke emits the same transparent smoke as a smoke machine, including how much it transfers. Vent Clogs also do not trigger in areas deemed "Safe" in code, such as in the dorms or trusted areas where dangerous things shouldn't occur.
  • +
  • Adds additional random brain damage text
  • +
  • Adds penis enlargement pills.
  • +
  • Adds Stun Circuit and Pneumatic Cannon Integrated Circuits
  • +
  • Fixed extinguisher and smoke circuits not accepting any reagents.
  • +
  • Adds a few important clockcult tips.
  • +
  • Added Mech Sensors, a brass-created trap that activates when a mech not controlled by a cultist crosses it.
  • +
  • Added power nullifiers, an emp trap that emps everything in a 3x3 area, with the center suffering a heavy EMP.
  • +
  • Brass Skewers now deal 50 damage to mechs.
  • +
  • Ass slapping only works if you're actually behind the target. Ass slapping now respects disarm blocking. You can no longer face/ass slap someone on an intent other than help, unless they are also face/ass slapping.
  • +
  • Fixed ass and face slapping grammar.
  • +
  • Adds meh effects for ass and face slapping.
  • +
  • "Unwillingly" eating food now sends a warning message instead of a notice. Unable to stuff food down your throat sends a danger message instead of a warning message.
  • +
  • Adds clockwork reflectors, a fragile anti-laser reflection shield object that can be constructed for 10 brass sheets. Upon firing on the object in the direction where it is shielded, it ricochets the bullet off of it relative to the shooting angle.
  • +
  • Renames some windows in the build menu for consistency.
  • +
  • Clockwork Cult walls can no longer be deconstructed by RCDs when heated.
  • +
  • Adds several new toy loot to the arcade machine.
  • +
  • Rebalanced the arcade machine loot. Battlemachines now have a 0.5 second delay instead of a second delay between actions.
  • +
  • Fixed a bug that would not allow the one in a million pulse rifle to spawn.
  • +
  • Adds a new trait "Buns of Steel" that makes you immune to the effects of ass slapping, and temporarily makes the user's arm useless like a stun baton hit. It costs 0 points.
  • +
  • Ass slapping blowback from the Buns of Steel perk now deals 20 stamina damage instead of 50, and no brute damage.
  • +
  • Gamemode voting results are displayed at the end-round screen.
  • +
  • Cloning no longer gives you positive mutations, but a chance for a negative one. Cloning has a chance to "scramble" your visual DNA.
  • +
  • Chestbursters no longer give and remove your brain. They just disembowel and kill you now.
  • +
  • Fixes WarOps miscalculating players.
  • +
  • Activating the nuclear device during war-ops informs the crew of the nuke's position.
  • +
  • The alert level is displayed at the job selection screen.
  • +
  • Central Command informs you when a Meteor Storm is about to hit 5 to 10 minutes before it happens.
  • +
+

BurgerLUA updated:

+
    +
  • Added a new framework for reagents. Reagents can now have a bool that determines if it can be detected by handheld medical analyzers. Currently only the changeling sting chemical does this.
  • +
  • Made changeling transformation string last between 10-15 minutes. Lowered the dna cost of changeling sting from 3 dna to 2 dna. Lowered the chemical cost from 50 to 10. Lowered the loudness from 2 to 1. Changeling sting transformation can be removed via high doses of calomel.
  • +
  • Fixed most reagents having a placeholder color.
  • +
  • Fixed autolathe wires not correctly shocking you when pulsed.
  • +
  • Rebalanced special jetpacks.
  • +
+

CalamaBanana updated:

+
    +
  • Added Deer taur
  • +
  • Added Elf ears to mammals

CameronWoof updated:

    -
  • Quartermaster added to the list of changeling and traitor restricted jobs
  • +
  • Medihounds now have rollerbeds for non-vore patient transport
  • +
  • The closed O2 crate now uses the same color scheme as the open one
  • +
  • air alarms are green now instead of blue when the atmosphere is ideal
  • +
  • Hexacrocin overdose no longer causes climaxes
  • +
  • Altered the icons for inventory backplates. Sleek! Stylish! New!
  • +
  • Attaching a beaker that contains water to an IV stand no longer causes a visual glitch
  • +
  • Fluid-producing sexual organs no longer start full
  • +
  • Sexual organ fluid capacity decreased from 50 to 15
  • +
  • Sexual organ production rate decreased from 5u to 0.035u per two seconds.
  • +
  • Sexual fluid decals no longer contain reagents
  • +
  • Sexual fluids cannot by synthesized (e.g., by the Odysseus)
-

CitadelStationBot updated:

+

CdrCross updated:

    -
  • The faint echoes of maracas grows louder, as if a past spirit once forgotten has come back with a vengeance...
  • -
  • Removing an ID card from a wallet now properly removes its visual and accesses.
  • -
  • You may now take unlimited neutral and negative quirks
  • -
  • the walls on the crashed abductor ship ruin in lavaland can now be broken down
  • -
  • Pipe icons in the RPD now show properly in older versions of IE.
  • -
  • Removing an ID from a PDA in a backpack no longer hides the ID until something else updates.
  • -
  • Opening and closing airlocks repeatedly no longer stacks queued autocloses.
  • -
  • Mindswapping with someone else no longer forces ambient occlusion on.
  • -
  • Admin AI interaction now works properly on firelocks.
  • -
  • IRV polls now use the same version of jQuery as everything else.
  • -
  • You can now view your last round end report window with the "Your last round" verb in the OOC tab
  • -
  • Hydroponics trays can no longer be deconstructed with their panels closed or unanchored while irrigated.
  • -
  • Frames for machines which do not require being anchored can now be un/anchored after the circuit has been added.
  • -
  • Fix "Your the wormhole jaunter" when a wormhole jaunter saves you from a chasm.
  • -
  • Analyzers can now scan all kinds of atmospheric machinery - unary, binary, ternary, quaternary, you name it. This means stuff like gas pumps, gas mixers, vents and so forth can be analyzed.
  • -
  • Analyzers now show temperature in kelvin as well as celsius.
  • -
  • Analyzers now show total mole count, volume, and mole count of all gases.
  • -
  • Analyzers show everything at slightly higher degrees of precision.
  • -
  • Any anomaly core can now be deconstructed for a one time boost of 10k points in the deconstructive analyzer.
  • -
  • Chasms no longer drop mobs buckled to undroppable mobs or objects.
  • -
  • Digital valves are once again operable by silicons.
  • -
  • Field generators are once again operable by adjacent cyborgs.
  • -
  • Entertainment monitors now view the real Thunderdome rather than the template.
  • -
  • Flipping and then rotating trinary pipe fittings no longer causes their icon to mismatch what they will become when wrenched.
  • -
  • RPD tooltips for flippable trinary components have been corrected.
  • -
  • The green overlay indicating where a map template will be placed is no longer invisible on space turfs.
  • -
  • Frost spiders now correctly inject frost oil on bite.
  • -
  • Inserting materials into protolathes with telekinesis is now possible.
  • -
  • Telekinesis no longer teleports items removed from deep fryers, constructed sandbags, and leftover materials not inserted into lathes.
  • -
  • Telekinetic sparkles now appear in the correct place when clicking on a turf and when clicking in the fog of war in widescreen.
  • -
  • Telekinetically adjusting power tools no longer causes them to exit the universe.
  • -
  • Examining a telekinetic grab in-hand will now examine the grabbed object.
  • -
  • Non-harmfully placing someone who is resting on a table no longer makes them get up.
  • -
  • The disco machine no longer lags the chat by spamming "You are now resting!" messages.
  • -
  • Clicking on the viewport to focus it no longer leaves the input bar red.
  • -
  • Running diagonally into space now properly continues the diagonal movement in zero-gravity.
  • -
  • Moving diagonally past delivery chutes, transit tube pods, &c. no longer causes your camera to be stuck on them.
  • -
  • The limit of monkey's spawned via monkey cubes is now configurable
  • -
  • Fixes cyborgs not being able to use two-handed modules while other modules are equipped.
  • -
  • Pubby's auxiliary mining base now works again.
  • -
  • The overlay effects of cult flooring are now on the floor plane, fixing their odd ambient occlusion appearance.
  • -
  • Cloning no longer breaks a character's connection to their family heirloom.
  • -
  • Beam rifle tracers no longer fall into chasms.
  • -
  • Vomiting on the same tile a second time no deletes the vomited reagents.
  • -
  • fixed the clockwork helmet not dropping to ground when used by non-clock cultists
  • -
  • The base machinery type is now anchored by default.
  • -
  • PDA style now gets loaded correctly.
  • -
  • Switching mobs into/out of a mech (by VR, ghosting, or mindswap) no longer improperly applies the mech's cursor.
  • -
  • roboticists have access to R&D windoors
  • -
  • switched the type of the space suit on the syndicate shuttle
  • -
  • fixed hydroponics tray weed light staying on when removing weeds with integrated circuits
  • -
  • Atom initialization and icon smoothing no longer race, causing late-loading mineral turfs to have no icon.
  • -
  • Faceless persons no longer "melt their face off" in energy gun suicides.
  • -
  • The Lightning Bolt spell now works again.
  • -
  • Vehicle speed changes now happen immediately instead of on the next movement cycle
  • -
  • Picture-in-picture objects now are no longer overlapped by other certain objects
  • -
  • A pAI dying while in holoform no longer deletes the card, instead merely emptying it.
  • -
  • The thermal sight benefits of lantern wisps no longer disappear if you change glasses.
  • -
  • sandstone wall sprite for indestructible object
  • -
  • Stabilized gold extracts now respawn the familiar properly.
  • -
  • Stabilized gold familiars retain the proper languages even after respawning.
  • -
  • Stabilized gold familiars can be renamed and have their positions reset at will.
  • -
  • Pulling objects diagonally no longer causes them to flail about when changing directions.
  • -
  • Riders are no longer left behind if you move while pulling something that has since been anchored.
  • -
  • Fire alarms now redden all the room's lights, and emit light themselves, rather than applying an area-wide overlay.
  • -
  • Fire alarms no longer visually conflict with radiation storms.
  • -
  • Plasmamen now receive their suit and internals when entering VR.
  • -
  • Deaf people can no longer hear cyborg system error alarms.
  • -
  • Lockboxes are now actually locked again.
  • -
  • Legion cores and admin revives now heal confusion.
  • -
  • checks to see if bullets are deleted if they are the ammo type and the bullet chambered.
  • -
  • Capitalization, propriety, and plurality on turfs have been improved.
  • -
  • Unbreakable ladders are now left behind when shuttles move.
  • -
  • Players who edited a circuit assembly can scan it as a ghost.
  • -
  • It is no longer possible to pull the mirages images at space transitions, and some other abstract effects.
  • -
  • Moving large amounts of items with bluespace launchpads no longer creates a laggy amount of sparks.
  • -
  • The escape pod hallways on MetaStation and DeltaStation now have air again.
  • -
  • It is no longer possible to repair cyborg headlamps even when their panel is closed.
  • -
  • Item fortification scrolls no longer add multiple prefixes when applied to the same item.
  • -
  • The blob core (and only the blob core) now respawns randomly on the station when the core is taken off z-level
  • -
  • Prevents the round from going into an unending state
  • -
  • Added a variable to the stationloving component for objects that can be destroyed but not moved off z-level
  • -
  • After years of protests NT decided to update the fire security standards by adding 3 (three) advanced fire extinguishers to all the new stations.
  • -
  • Hyperspace ripples now remain visible until the shuttle arrives, even during extreme lag.
  • -
  • Ripples now correctly take the shape of the shuttle, rather than always being a rectangle.
  • -
  • Non-secure windoors now properly support the "One Required" access mode of airlock electronics.
  • -
  • The gulag shuttle no longer moves instantly when returned via the claim console.
  • -
  • It is now possible to use the ".p" (Asay) and ".d" (Dsay) prefixes while an admin ghost.
  • -
  • Speaking in deadchat now shows your rank instead of ADMIN
  • -
  • Added a pink scarf to vendomats
  • -
  • Players can now ctrl-click the PDA to remove the item in its pen slot
  • -
  • added a clamp so you can't set a negative multiplier to create materials and create more than 50 items.
  • -
  • anomaly cores no longer tend to dust
  • -
  • Plant disks with potency genes clarify the percent is for potency scaling and not relative to max volume on examine.
  • -
  • Blast cannons have been fixed and are now available for purchase by traitorous scientists for a low low price of 14TC.
  • -
  • Blast cannons take the explosive power of a TTV bomb and ejects a linear projectile that will apply what the bomb would do to a certain tile at that distance to that tile. However, this will not cause breaches, or gib mobs, unless the gods (admins) so will it. experimental: Blast cannons do not respect maxcap. (Unless the admins so will it.)
  • -
  • Cyborgs now drop keys on deconstruction/detonation
  • -
  • The "Save Logs" option in the chat now actually works (IE 10+ only).
  • -
  • Fixed cyborgs not getting their names at round start
  • -
  • Fixed cyborgs and A.I.s being able to bypass appearance bans
  • -
  • fixes cult shuttle message repeating
  • -
  • Hardsuit helmets now protect the wearer from pepperspray
  • -
  • It is once again possible for Cargo to export mechs.
  • -
  • tourettes doesnt stack on itself anymore
  • -
  • AI static now uses visual contents and should perform better in theory.
  • -
  • Bucket helmets cannot have reagents transferred into them until after they are removed
  • -
  • R&D deconstructors can now destroy things regardless of if there's a point value or material
  • -
  • You should now receive your destroy AI objectives properly during IAA
  • -
  • Deconstructable TEG now propertly connects to pipes.
  • -
  • Fix of inverted TEG sprite of slow turbine turning. add:Now you can flip circulator and make TEG of your dream. add:Add TEG and circulator to "Advanced Power Manipulation" techweb node.
  • -
  • New icon for plastic flaps that actually looks airtight.
  • -
  • Update to plastic flaps code to use tool procs rather than attackby and removed two pointless states.
  • -
  • Printing the TEG and circulator boards no longer prints the completed machinery instead.
  • -
  • Medical HUDs will now show an icon if the body has died recently enough to be defibbed
  • +
  • Adds the ability for cloning consoles to read and write record lists to the circuit board, and provides a template for giving other machines local circuit board memory.
-

Cobby updated:

+

Cebutris updated:

    -
  • Decals are the exception to the recent removal of effects in Chameleon Projectors.
  • -
  • Removed Advanced Mining Scanner from roundstart voucher kits.
  • -
  • Removed Explorer Webbing from all voucher kits besides the shelter capsule pack.
  • -
  • Paper doesn't give illegal tech anymore
  • +
  • Hugs of the North Star! Get them from the arcades (if you're lucky) and hug your friends at INCREDIBLE hihg speeds!
  • +
  • Tea Aspera now properly contains tea powder
  • +
  • Breasts no longer lactate by default, lactation is now a preference
-

Cruix updated:

+

Chayse updated:

    -
  • AIs now have an experimental multi-camera mode that allows them to view up to six map areas at the same time, accessible through two new buttons on their HUD.
  • +
  • Changed the Warden's compact combat shotgun to instead be a regular combat shotgun with a foldable stock and penalties for being folded.
  • +
  • Assorted space-worthy helmets can now act as masks for internals.
  • +
  • Internals code can now check any item with the ALLOWSINTERNALS flag through the GET_INTERNAL_SLOTS define. For now this only checks head and mask slots, since those are the most realistically speaking usable ones.
  • +
  • Medbay doors can now be opened by anyone from the inside without having to press the exit button.
  • +
  • Borgs now have the necessary dexterity to unbuckle people from themselves and from bucklable objects.
  • +
  • Fixes the Trek Uniform/Suit worn icons
  • +
  • AIs can now once more talk through holopads successfully
-

Dax Dupont updated:

+

Code-Cygnet updated:

    -
  • Fixes the wrong tiles in Syndicate VR trainer and uses different tiny fans.
  • -
  • Access didn't append to VR IDs
  • -
  • Fixes missing curator hud icon.
  • -
  • Cult items will no longer be a long ride on the vomit coaster if picked up by a non cultist.
  • -
  • Cult space bases are kill again.
  • -
  • Cult floors now pass gas.
  • -
  • Fixed a few things deconning into the wrong circuit.
  • -
  • You can no longer do infinite bioware surgery.
  • -
  • Foam no longer gives infinite metal
  • -
  • Mulligan didn't work on lizards and other mutants. Now it does.
  • -
  • The BoH dialog now has Abort instead of Proceed as an default option.
  • -
  • Fixes accidental empty ahelp replies.
  • -
  • More chemicals can be found when vents get clogged.
  • -
  • Experimentor no longer shits out primed TB nades.
  • -
  • Fixed rpeds throwing stock part rating related runtimes.
  • -
  • Fixes a sentience related exploit by blacklisting it in restricted uplinks.
  • -
  • Botany trays don't magically refill anymore with a rped.
  • -
  • It's now easier to become fat. Don't eat so much.
  • -
  • Fixed missing grilles under brig windows of the pubby shuttle.
  • -
  • For the pubby shuttle, added some food in the fridge, mostly pie slices. Also added a sleeper to the minimedbay.
  • -
  • Reworded pubby shuttle description to be more inline with the new train shuttle.
  • -
  • Syndicate and Centcom messages have been squashed together.
  • -
  • You can now send both Syndicate and Centcom headset messages. Be mindful that the button was changed to HM in the playerpanel
  • -
  • Fixes missing cream pies in the cream pie fridge.
  • -
  • Chem synths overlays aren't all kinds of fucked anymore.
  • -
  • Unfucked all of the remaining chem synth code.
  • -
  • Reagents no longer have an unused var that's always set to true. Who did this?
  • -
  • Makes the xeno nest ruin harder to cheese.
  • -
  • Fixes the bathroom being airless in the Space Ninja anime jail.
  • -
  • Create antags now checks for people being on station before applying.
  • -
  • Malf AI machine overloads now are logged/admin messaged.
  • +
  • Added new things - Mind trait, alcohol reagent, chemical reagent, drink sprite and recipe.
  • +
  • added commander_and_chief sprite to drinks.dmi
-

Denton updated:

+

Coolgat3 updated:

    -
  • APC/air alarm/airlock/fire alarm/firelock electronics are now available once Industrial Engineering is researched..
  • -
  • Engi-Vend machines now contain fire alarm and firelock electronics!
  • -
  • Loose tech storage circuit boards have been replaced with spawners.
  • -
  • Added /syndicate subtypes for air alarms and APCs.
  • -
  • Added missing stock parts to the syndicate lavaland base.
  • -
  • Added kitchen related circuit boards to the syndie lavaland base.
  • -
  • There are rumors of the Tiger Cooperative adding a "special little something" to some of their bioterror kits.
  • -
  • Loose silver/gold/solar panel crates have been replaced with "proper" crates.
  • -
  • Skewium is much less likely to appear during the Clogged Vents event.
  • -
  • Navbeacon access requirements have been fixed: Now you need either Engineering or Robotics access, but not both at the same time.
  • -
  • Pubbystation: Added a dual-port vent pump to the toxins burn chamber.
  • -
  • Removed most airlock_controller/incinerator related varedits and replaced them with defines/subtypes.
  • -
  • The Deltastation toxins lab has its portable scrubber, air pump and intercom back.
  • -
  • Swarmers can no longer attack field generators and turret covers.
  • -
  • Arcades have been stocked with preloaded tactical snack rigs.
  • -
  • The Pubbystation maint bar Booze-O-Mat now shows its contents correctly.
  • -
  • Added a warning to the shuttle purchase menu.
  • -
  • Pirates and Syndicate salvage workers have been beefed up around the caravan ambush ruin.
  • -
  • NanoTours is proud to announce that the Lavaland beach club has been outfitted with a dance machine, state of the art bar equipment and more.
  • -
  • Did you know that honey has antibiotic properties?
  • -
  • Improved supply shuttle messages and firefighting foam descs.
  • -
  • Supply shuttles will no longer spill containers on docking.
  • +
  • Changed player number checks to 20 from 24 for cult and clockcult, also made nukeops 28 required players instead of 30.
  • +
  • Changed enemy minimum age from 14 to 7
  • +
  • Added the code for the semen donut and made it craftable
  • +
  • Added the donut sprites
  • +
  • Made the sec and warden berret offer as much protection like the helmet
  • +
  • Added berets for all the heads.
  • +
  • Added sprites for the berets.
  • +
  • Coded the berets to spawn in appropiate lockers.
  • +
  • Raised the ripley's movement speed and lights range by 1, also lowered its armor to compensate.
  • +
  • Added combat gloves sprite
  • +
  • Added said sprite
  • +
  • added combat boots sprite
-

Dimmadunk updated:

+

Coolgat3 / Avunia updated:

    -
  • There's a new type of reagent added to the booze dispenser: Fernet. With it you can make a couple of new digestif drinks that will help you reduce excess fat!
  • +
  • Made kindle put the target into stamcrit, which makes it an actually working, useful stun.
  • +
  • Added a stamina loss modifier to the vanguard spell which makes the user's stamina drain at a way slower rate. This doesn't make them immune to tasers, but it takes a few hits to actually get them to fall down.
  • +
  • Made it so that clock culties don't start with a chameleon suit. Instead they start with an engineer suit which is pretty much the same sprite and looks. If this is not perfect, then I am willing to make a slightly more brass-colored version of the engineer suit sprite and call it a ratvarian engineer jumpsuit.
  • +
  • Increased the cost of vanguard, as it is now a spell that works somewhat like adrenals, minus the move speed, making your stamina drain really slow and making you unable to get knocked onto the ground by just a single taser shot.
  • +
  • Lowered the charge time of kindle, reason being that you can usually have only one active spell on you, or two at max if you decide to run two slabs, but the fact that kindle silences people for such a small amount of time makes up for it, in my opinion.
  • +
  • Figured out that the consoles and their warp function actually work with the current code. The thing that makes them not work is when the gamemode is ran on debug mode, without the required players to actually support it. It also breaks the ark timer which is stuck on -1 seconds until activation. Whenever the gamemode starts properly, like any other gamemode, with player checks and all, everything seems to work just fine.
-

ElPresidentePoole updated:

+

CydiaButt13 updated:

    -
  • SFX for seppuku (on all katanas)
  • -
  • suicide message for energy katanas ("cyber-seppuku")
  • -
  • suicide message for replica katanas ("seppuku")
  • +
  • Lamp Plushie to loadout
  • +
  • added plushie_lamp to plush icons
  • +
  • added Lamp Plush to loadout and icons and items
-

Flatty updated:

+

EgoSumStultus updated:

    -
  • The blurry eye overlay has been replaced with an actual blur.
  • -
  • The vending machine UI is now prettier.
  • +
  • Fixed blood chiller's inhand
  • +
  • FIXED SHIELF
  • +
  • fixed magpistol magazine sprites
  • +
  • Added the Femur Breaker
  • +
  • Adds male AI vox.
-

Garen updated:

+

EmeraldSundisk updated:

    -
  • Thrower and Gun circuits put messages in chat when they're used.
  • -
  • Only the gun assembly can throw/shoot while in hand
  • -
  • Adds inhands for the gun assembly
  • -
  • grabber inventories update when a thrower takes from them
  • +
  • Adds a gun range to Box Station
  • +
  • Provides some extra power grid connections
  • +
  • Sunglasses and Earmuffs removed from the Warden's Office - they can be found at the range instead
  • +
  • Rearranges a few objects within the prison as to accommodate the new gun range
  • +
  • Adds a mass driver to Delta Station's chapel
  • +
  • Adds a second means of entry into the chapel
  • +
  • Slightly expands the chapel to make room for the driver, slight adjustment to air systems
  • +
  • Clears a path in the station exterior for the mass driver to work properly
  • +
  • Nearby maintenance loot has been relocated to accommodate the chapel expansion, surrounding area has been "cleaned up" somewhat
  • +
  • CentCom has noticed the lack of coffins in Delta Station's chapel and provided some, but in exchange for reducing the chapel morgue's capacity.
  • +
  • Fixed a maintenance door the chaplain should have been able to open.
  • +
  • Fixes space areas outside the driver removal: CentCom Defense Analysts have ordered the maintenance hatch to the Mass Driver room be removed citing "security concerns".
  • +
  • Increases the number of plots to 9 (from 5)
  • +
  • Additional lighting placed directly outside the garden
  • +
  • Cleans up the area to reflect use. Moves the seed extractor to a more central location
  • +
  • Relocates the seed packs on botany's counter to the garden removal: Removes wooden barricades outside the garden
  • +
  • Renames "Abandoned Garden" area designation to "Maintenance Garden", but does not replace the icon in Dream Maker
  • +
  • Expands the chapel mass driver room to make it easier to use
  • +
  • Rearranges the chapel backroom so there are now six coffins and burial garments roundstart
  • +
  • Cleans up the Janitor's office
  • +
  • Readjusts the station exterior so mass-driven coffins (hopefully) have less friction
  • +
  • Adds a fan to the chapel driver
  • +
  • The Janitor missed a few spots around the newly renovated Maintenance Garden
  • +
  • Readjusts positioning of Delta's QM keycard device
  • +
  • Cleaned up a few spots I missed in #9356, particularly around the janitor's office
  • +
  • Adds some potted plants around Box Station
  • +
  • The tile mentioned in #9409 should now be radiation-free.
  • +
+

Fermi updated:

+
    +
  • Fixes tiny runaway decimals in reagents system.
  • +
  • SDGF: Fixes infinite clones.
  • +
  • fixed an angery PR
  • +
+

Fermis updated:

+
    +
  • Added a panda simplemob
  • +
  • fixes empathy exploit.
  • +
  • Added the secbat, a box to hold it and the ability to dispense it from the SecTech vendor.
  • +
  • Adds 3 new music tracks.
  • +
  • tweaked Neurotoxin
  • +
  • added more depth to Neurotoxin
  • +
  • fixed the inability to create Neurotoxin
  • +
  • fixes fermichem reactions for tiny volumes work
  • +
  • makes quantisation level for chemistry finer
  • +
  • re-enables femichem explosions in grenades.
  • +
  • adds nuance to the SDGF and hatmium explosions.
  • +
  • Fixes analyse function on ChemMasters to correctly display purity.
  • +
  • Fixes the custom transfer for buffer to beaker button.
  • +
  • Debug option: Generate Wikichems
  • +
  • graft synthtissue surgery, new reagent synthtissue
  • +
  • neurine fixes brain objs merge: combines fermichem's lung damage with tg's
  • +
  • on_mob_dead(), bitflags and CHECK_MULTIPLE_BITFIELDS
  • +
  • refactored fermichem vars, moved impure chems into their own reagents subtype
  • +
  • Fixes small residues of chems that won't go away!
  • +
  • tweaked beaker health and allows use of syringes/droppers on chem_heaters
  • +
  • added a sound for when beakers take temperature damage.
  • +
  • added some icons for melting beakers
  • +
  • refactored how beakers take damage
  • +
  • fixes how beakers would only take one instance of damage on pH damage
  • +
  • fixes Janitor grenades.
  • +
  • fixes reaction mechanics at low volumes
  • +
  • stops reactions constantly bubbling on the edge of reaction temperature
  • +
  • stops small amount reactions from occurring, and prevents disappearing tiny numbers
  • +
  • Reduced minimum reaction volume from 1 to 0.01
  • +
  • cleaned up Fermichem
  • +
  • Adds Jacqueline the Pumpqueen and her familiar Bartholomew for the spooky season
  • +
  • Adds a giggle
  • +
  • Adds cauldron, Jacq and Jacq o lanterns, and a costume for halloween! mapedit: adds a new landmark so Bartholomew can spawn somewhere sensible.
  • +
  • fixes food reactions and explosion runtimes,
  • +
  • fixes the too much yes problem
  • +
  • Heart, Tongue and stomach regen.
  • +
  • lung damage threshholds.
  • +
  • Graft synthtissue
  • +
  • Skeleton's burning for no reason
  • +
  • Organ freezing handling.
  • +
  • Fixes chemistry books to point to the right wiki, and keeps tg's just in case
  • +
  • Changes top right wiki button location to go to both wikis
  • +
  • fixed Jacq's fondness for the AI
  • +
+

Ghom updated:

+
    +
  • minor clean up on hydroponics reagent containers.
  • +
  • fixes the perpetual lack of moisture that has affected genitalia descriptions since, like, forever.
  • +
  • implements the arousal state for mammary glands.
  • +
+

Ghommie updated:

+
    +
  • Fixes many possible situations of null icons for cit races' bodyparts.
  • +
  • Removes duplicate slimepeople' sprites.
  • +
  • Purges that draw_citadel_parts().
  • +
  • Fixes ISINRANGE_EX using the wrong relational operator.
  • +
  • The kindle status effect stun duration now properly proportional to the owner's remaining health.
  • +
  • Clockwork cult's kindle now affects silicons.
  • +
  • Cyborg mounted disablers/tasers/lasers now slowly self-recharge off the cyborg user's power cell instead of draining from it directly.
  • +
  • Borg rechargers now properly recharge the borg module's energy guns.
  • +
  • Prevents a couple more special/mounted guns from being preserved on cryo
  • +
  • Halved borg energy guns self-recharge delay and increased their cell capacity by 3/4
  • +
  • Fixes chemical patches always checking the suit slot even if the targetted limb was the head.
  • +
  • Skeleton, nightmare and golem races are once again available to get chemical patches applied onto.
  • +
  • Adds two cartons of space milk to the space skellie pirates cutter's fridge.
  • +
  • Refactored implants to not be located inside mobs codewise, akin to organs.
  • +
  • Fixed gps tracking implants.
  • +
  • Fixed item not being dumped out of storage implants onto the owner's turf upon removal.
  • +
  • Fixes cult potentially stalling if the target is erased from existence without being sacced.
  • +
  • Nukes the stunprod's 3 seconds delay.
  • +
  • Fixes teleprods.
  • +
  • Stops pulls of resting mobs breaking off whenever you swap turfs with someone else because of crawling delays.
  • +
  • fixes IAA.
  • +
  • EMPs now flick off stunbatons, they can be turned back on immediately by the user anyway.
  • +
  • Stunbatons now very slowly consume charge whilst kept on, at a rate of 4/1000th of a standard batoning charge cost per tick.
  • +
  • Softened up the charge cost checks to stop the above update from practically reducing the maximum uses of a stun baton by one. Now, should the remaining charge be lower than the hit cost, the resulting stun will be be proportional to the remaining charge divided by the hitcost, within a limit under which the stun batoning just won't happen.
  • +
  • Buffs condensed capsaicin, a yet another feature previously dunked by stam combat.
  • +
  • speeds up pepper spray puffs.
  • +
  • Buffed krav maga leg sweep stun and stamina damage. On the other hand, it's now unable to be used on already lying targets.
  • +
  • fixes eyestabbing people with cutlery while being a pacifist.
  • +
  • Reduces goonchat lag from being blasted by pellets and bullets repeatedly whilst wearing armor by properly removing the armor protection texts this times.
  • +
  • also reduced the size of armor protection messages in general. they clog up the chat box.
  • +
  • Fixes stunbatons icon not properly updating on cell removal and insertion.
  • +
  • Allows lower charge cells to be used with stun batons, and thus single use crapshots batons.
  • +
  • Adds in a 7 seconds delay to the jackhammer dismantling a superheated clockwork wall.
  • +
  • escape pods emergency suits storage can now be busted open by emags or excessive damage.
  • +
  • Fixes alt click bypassing the escape pods' suits storage lock.
  • +
  • Fixes emags wasting charges on un-emaggable & co stuff.
  • +
  • Ported some radials code updates.
  • +
  • Ported the RCL wiring menu and a comfier RCD interface.
  • +
  • A milder combat stance message will show up if the user switch combat mode on while on help intent.
  • +
  • Properly rewords the extinguisher's instructions on how to empty it on the floor since it was changed to be a screwdriver action instead of Alt Click a while ago.
  • +
  • Reskinnable PDAs. A related game preference.
  • +
  • Refactoring the pda, pda painter, obj reskinning and chameleon pda a bit to support this feature.
  • +
  • more PDA sprites and ported reskins.
  • +
  • turned virtual reality into a component datum, which is then applied to spawned virtual mobs. This fixes mob transformations (such as wabbajack and monkeyizing) breaking the previously hardcoded behaviour and trapping you in VR, also enabling a more concrete virtual reality inception experience.
  • +
  • Fixes power cells being unable to be rigged. Also prevents them from starting processing on init if they don't self recharge.
  • +
  • Fixes many, little or otherwise, issues with the stunbaton status refactor.
  • +
  • The sacrificial target icon will now display onto the cult objective ui alert once again.
  • +
  • Stopping borgs from sprinting into negative cell charge.
  • +
  • The default amount of z-levels reserved specifically for space ruin generation has been increased from 1 to 2
  • +
  • Moving some tablecrafting recipes to the appropriate categories: Kitty ears and lizard cloche hats to "clothing"; Hot dogs to "Sandwichs"; Cuban carb, fish and chips and fish fingers to "Fish".
  • +
  • Fixes the not-a-sandwich recipe being M.I.A.
  • +
  • Adding in peanuts, peanut butter, peanut butter toasts and sandwiches, and the PB&J sandwich. The peanuts contain a little bit of extractable cooking oil (similarly to soy beans) and can be microwaved or dried in a drying rack to make roasted peanuts, which can be mixed in a all-in-one-grinder for peanut butter, required to make those sandwiches.
  • +
  • Buffed wizard and artificier's Magic Missile, wizard and xeno queen's Repulse and juggernaut's Gauntlet Echo.
  • +
  • Fixes flashlights being unable to be used for rudimentary eyes and mouth exams.
  • +
  • Adds in a grey jumpsuit to the loadout choices, restricted to Assistants.
  • +
  • Fixes CWC construct shells being visible as ghost role to latejoiners.
  • +
  • new sprites for the flechette gun, its magazines and the toy ray gun
  • +
  • Merges the end-of-shift and its shuttle autocall announcements into one.
  • +
  • Prevents the end-of-shift shuttle from being recalled (even if to no avail).
  • +
  • Fixes being able to teleport papers to your location with TK.
  • +
  • Fixed some monkey-code shenanigeans making items sometimes disappear from pickpocketing.
  • +
  • New sprites for the some pda cartridges.
  • +
  • The crew monitor's entry for the Quartermaster will now appear bolded, while HoP's will be of the same color of the service/unknown/other jobs.
  • +
  • emergency pods' storage will now properly work.
  • +
  • The PDA skin preference will now properly save up.
  • +
  • Changed the default PDA icon var to match the default PDA skin preference.
  • +
  • Fixing the `(pointless) badassary` category appearing between the `dangerous and conspicious` and `stealthy and inconspicious` categories.
  • +
  • Combat gloves plus now properly use the combat gloves sprite.
  • +
  • Fixes the space ninja's energy netting.
  • +
  • Adding one pAI to the wizard shuttle and ERT prep room
  • +
  • Fixes the rocket launcher being unreloadable.
  • +
  • Buffed its accuracy a bit.
  • +
  • Replaced the grenade launcher emagged minesweeper loot with the rocket launcher like it was originally supposed to be.
  • +
  • Tweaked the :b: emoji.
  • +
  • Rubber Toolboxes.
  • +
  • Porting in two bar signs: Cyber Sylph's and Meow Mix.
  • +
  • Fixing stamina damage melee weaponry being unusable by pacifists, and still damaging objects and triggering electrified grilles when thrown.
  • +
  • refactored underwears to allow custom color preferences, instead of manually colored sprites.
  • +
  • The aforementioned manually colored pieces. Some of your char preferences may have been resetted as result.
  • +
  • More underwear choices, including: Bowling shirts, long johns, a tank top, fishnets, more bee socks, bee t-shirt and bee boxers (original PR for the latter three by nemvar from /tg/station).
  • +
  • random bodies will now have random underwear again.
  • +
  • Dressers will now properly change undergarment again.
  • +
  • Toned down many species' female chest sprites to fit the smaller cups.
  • +
  • Fixed some body parts sprites inconsistencies, such as the W/E female and male chest sprites being the same in some species, and jellypeople's legs being one tile off on W/E
  • +
  • Fixing baklava pies a bit.
  • +
  • Sweaters now cover groins too.
  • +
  • Improved the zelus flask to be more viable for bottle smashing than the average barman's selection.
  • +
  • Very slight bottle smashing code clean up, stupid const vars.
  • +
  • Fixes krav maga gloves, wizard spells knockdowns.
  • +
  • Added in an alert pop up to the cult convertees, on top of the older "click here to become a blood cultist" chat message.
  • +
  • The convertee's screen will now flash red to fit in the aforementioned message's fluff.
  • +
  • Made said message less verbose.
  • +
  • Towels. Crafted with 3 sheets of cloth, they can be worn on head, suit and belt slots even without uniform, or laid flat on the floor. Sprites from Baystation and Aurora Station.
  • +
  • You can combat mode right click people while wielding rags and towels to pat out their flames (to no use for rags) or otherwise drying them out.
  • +
  • toned down the stamina costs of some of the bulkier weapons.
  • +
  • repathed hypereutactic blades to be a subtype of dual sabers. Way less copypasta.
  • +
  • Fixing CX Shredder guns not accepting standard flechette mags.
  • +
  • Fixing missing magpistol magazines icon states.
  • +
  • sort of overhauled darkmode/lightmode to /vg/station's, also reincluding the pre-existing black'n'white theme.
  • +
  • Fixed LOOC color, fixed .userlove and .love span classes being a bit too blurry on dark mode.
  • +
  • The syndicate base's bathroom is now fitted with a shower, and a special towel.
  • +
  • Fixed many issues with towels.
  • +
  • The dry people off with rags/towels action can only be done if the object is NOT moist with reagents now. Also cleans banana creaming.
  • +
  • Towels deal more damage while soaked with reagents.
  • +
  • You can now squeeze rags/towels with Alt-Click.
  • +
  • deleted an old and crappier towel sprite that got in the way.
  • +
  • Fixes Pubby's disposal conveyor belts and lack of a second lawyer spawner.
  • +
  • Cleaned up the absolute state of the arousal module.
  • +
  • refactored exhibitionism into a quirk.
  • +
  • arousal states won't persist after death.
  • +
  • Fixes testicles size adjective thing.
  • +
  • undergarments toggling now works instead of just making underwear disappear and not come back.
  • +
  • The "Always visible" genitals setting will now display them above clothes.
  • +
  • combat pushes will now properly stop targets from using firearms, and will disarm the firearm if performed a second time, and also slow down people by 15%, and won't push people on tables blocked by shutters or other dense object anymore.
  • +
  • Fixes CHECK_BITFIELD macro.
  • +
  • Fixes hypovials being unable to transfer out liquids or be refilled by large dispensers like water tanks.
  • +
  • Fixes chem-masters machineries not dispensing newly made pills inside loaded in pill bottles.
  • +
  • Stunswords now fit in the captain's sabre sheat.
  • +
  • reworked ninja's stealth mode. Increased invisibility, but engaging in combat, attacking or throwing things, bumping people will temporarily lower it.
  • +
  • Ninja shoes are even stealthier.
  • +
  • cleaned up some 2014 tier processing code horror.
  • +
  • the oxyloss fullscreen overlays now also take in consideration 1/5 of the user stamina loss.
  • +
  • When you're jogging, you will only slip on water if you have more than 20% staminaloss, for real this time.
  • +
  • Different cuffs now come with different worn overlays instead of a generic one.
  • +
  • High luminosity eyes can now be properly deactivated and won't illuminate your surroundings again until turned back on.
  • +
  • Fixes freshly cloned people starting with undershirts. Fixes random characters possibly rolling with undergarments of the opposite gender (Doesn't affect preferences' freedom of choice).
  • +
  • MRE menu 3 has cuban nachos instead of a chili now.
  • +
  • Removed the illustration overlay from MREs, looks pretty weird otherwise.
  • +
  • MRE menu 4, vegetarian.
  • +
  • fixes a few bad touchs on combat mode pushing.
  • +
  • Fixes clock cult Abscond scripture not dragging pulled mobs into Reebe. Also fixes blood cult tele runes teleporting you from the source turf to the source turf.
  • +
  • fixes clock cult mass recall.
  • +
  • Fixes underwear colors a bit.
  • +
  • Fixes Blood Cult conversion prompts
  • +
  • Removes an obnoxious temporary overlay var.
  • +
  • colorable socks can be colored again.
  • +
  • Fixed undergarments color preferences resetting each round.
  • +
  • Fixed a few dozen suits' body coverage inconsistencies. These changes shouldn't affect armor and utility vests for most.
  • +
  • Fixed clown shoes and work boots.
  • +
  • Fixed some overlay bug that happens when legcuffed and then handcuffed.
  • +
  • Slowed down police baton and tele baton speed by 75%, should be still be faster than the legacy speed (2 seconds) by 0.6 seconds. Telescopic batons' stamina cost per swing is now on par with police batons, ergo more expensive.
  • +
  • Fixed undershirts n socks colors prefs.
  • +
  • You can now alt-click to rotate machinery such as the tachyon-droppler array or emitters again.
  • +
  • Sofas can't be wielded and transformed back into plain chairs anymore.
  • +
  • Enables emojis for PDA messages.
  • +
  • Removes revenant blight's shabby toxin damage in favor of mood maluses, and a dangerous necropolis curse if not cured in time. Remember
  • +
  • Blood cult altar, forge and archives now use radial menus.
  • +
  • Fixed some machineries' UIs.
  • +
  • blood and clock cultists messages from metabolizing
  • +
  • Fixed advanced medical scanners borg upgrades.
  • +
  • Fixes certain borg upgrades being unapplicable on dogborg counterparts of the target cyborg type.
  • +
  • Fixed people being shovable hrough windows, windoors and the such.
  • +
  • You can now shove people into disposal bins.
  • +
  • refactored altdisarm(), ergo the "shoving people around" proc.
  • +
  • war ops is now lowpop friendly and doesn't require roughly 54 starting players anymore.
  • +
  • Singularity beacons now also moderately increases the odds meteor waves, while lowering their estimeed arrival countdown.
  • +
  • non-alphanumeric graffiti decals will no longer display as "letter".
  • +
  • Nerfs cyborg disabler and its internal power cell to hold 25 disabler beam shots rather than 43/44, just like a normal disabler.
  • +
  • Adds some missing species_traits for cloth, clockwork and cult golems.
  • +
  • Added towel linen bins, found in dormitory restrooms. Also enhanced the bedsheet bins found in some stations' dormitories
  • +
  • Resprited bedsheet bins in 3/4 perspective
  • +
  • Made SDGF ghost poll message less verbose, made the experimental cloner's complaint with the former, and added ghost poll ignore options for both.
  • +
  • fixing some related onmob sprites issues with the above accessory.
  • +
  • Teleprods work on non-carbons mobs now.
  • +
  • Fixed tracking implant teleport issues.
  • +
  • Increased stunbatons power cell depletion rate when left on by 50%.
  • +
  • Gorlex Marauders are pleased to announce non-slip grooves were given to their .50 sniper rifles, and thus shouldn't accidentally flop on the floor like pocket spaghettis whenever taken out of a bag anymore.
  • +
  • Silicons can now operate teleporter, medical and security records console from a distance again.
  • +
  • Fixed custom say emotes conflict with drunk memes.
  • +
  • Fixes identity transfer (envy knife, changeling transformation, making a vr avatar) not copying digitigrade legs.
  • +
  • Fixes temporary transformation sting triggering heart attacks on heartless humans.
  • +
  • Fixed mobs folded inside bluespace bodybags getting their clothing and items deleted when passing through a recycler.
  • +
  • The alien-bursting-from-your-thorax and the xeno "hud" embryo stage images will now properly delete them once the embryo egg lifecycle is complete.
  • +
  • Fixed artificier lesser magic missile.
  • +
  • Phantom thief masks will now fancy your combat mode yet again.
  • +
  • Fixed gulag teleporter stripping the user of stuff it really shouldn't (like storage implant bags).
  • +
  • fixing cydonian armor a bit.
  • +
  • Resprited wooden and critter crates.
  • +
  • Improved the Cyber Sylph' good yet cumbersome bar sign a little.
  • +
  • Cyborgs can now use camera consoles on the edge of their widescreen. These consoles are also TK friendly now.
  • +
  • Updated gang dominator sprites.
  • +
  • Miner borgs can again have installed PKA mods.
  • +
  • Fixed invisible blackberry n strawberry chocolate cake slices.
  • +
  • Nuke ops / adminbus combat mechs will no longer spawn with tracking beacons.
  • +
  • Arcade machine directional sprites.
  • +
  • lowered the arcade's random plush / other prizes ratio from 1 : 2.5 circa to 1 : 5. Dehydratated carps and the awakened plush can not be achieved this way anymore.
  • +
  • Added armrests overlays to sofas and tweaked their sprites a little.
  • +
  • Fixed dogborg sleepers. Just don't tell me what is exactly fixed, cause I don't want to find out.
  • +
  • Buffed the deep space familiar gorilla against runtimes.
  • +
  • Updated ratvarian computer sprites.
  • +
  • Fixed storage implant transplant.
  • +
  • Refactored how Jacqueen teleportation destination is selected, preventing them from teleporting on off-station holopads.
  • +
+

Ghommie && Kevinz000 updated:

+
    +
  • Lichdom and necromantic stone skeletons are now of the spaceproof kind too.
  • +
  • skeletons now also like dairy products.
  • +
  • Halloween roundstart skeletons and zombies are no more spaceproof.
  • +
  • You can choose to set your species to zombie or skeleton through the pride mirror yet again, Alas they are not of the spaceproof kind either.
  • +
+

Ghommie (Credits to Kmc2000 for the original PR) updated:

+
    +
  • Porting in MRE boxes from Yogstation. But be careful, eating possibly expired MREs found in maintenance comes with an unrealistically large (actually small) chance of food poisoning. Otherwise just bail out and order actually safe-to-eat MREs from cargo for 2000 credits.
  • +
+

Ghommie (Original PR by Dennok) updated:

+
    +
  • Now areas_in_z get areas spawned by templates and blueprints.
  • +
+

Ghommie (Original PR by Dreamweaver) updated:

+
    +
  • Nanotrasen has received word of a high-tech research facility that may contain advancements in bluespace-based research. Any crew members who become aware of its whereabouts are to report it to CentCom immediately and are restricted from sharing said info.
  • +
  • The turf reservation system now dynamically creates new z levels if the current reserved levels are full.
  • +
+

Ghommie (Original PR by JJRcop) updated:

+
    +
  • Ports in more emojis, including : flushed :
  • +
+

Ghommie (Original PR by LaKiller8) updated:

+
    +
  • Goonchat options should now save properly.
  • +
+

Ghommie (Original PR by Vile Beggar) updated:

+
    +
  • Warden now has an added drill hat in his locker. You can change the loudness setting of it by using a screwdriver on it. Use wirecutters on it for a surprise.
  • +
+

Ghommie (Original PR by coiax) updated:

+
    +
  • atom/var/container_type has been moved into datum/reagents/var/reagents_holder_flags. There should be no visible changes to effects.
  • +
+

Ghommie (Original PR by nemvar) updated:

+
    +
  • Botanists can now get beeplushies (or cultivator and bucket) as an heirloom.
  • +
  • Clowns and mimes will now properly pick either a can of paint or their brand as heirloom now.
  • +
+

Ghommie (Original PR by tralezab) updated:

+
    +
  • Fixes an issue with spontaneous appendicitis picking incompatible mob biotypes.
  • +
+

Ghommie (Original PRs by Tortellini Tony and BuffEngineering) updated:

+
    +
  • E-cigs will continue to display their setting after being emagged.
  • +
  • Vapes now come out of the mouth. fix Fixes an E-cig initialize() runtime.
  • +
+

Ghommie (Original PRs by nemvar and Rowell) updated:

+
    +
  • Added beekini bras and panties, thigh-high and knee-high bee socks.
  • +
+

Ghommie (by Arkatos) updated:

+
    +
  • Fixed an issue with a Lizardwine drink crafting, where a final product would contain unwated 100u of Ethanol.
  • +
+

Ghommie (by Floyd / Qustinnus, Arathian) updated:

+
    +
  • The robotocist now has robe to show his love for toasters
  • +
+

Ghommie (by nemvar) updated:

+
    +
  • Dwarfs are now more robust.
  • +
+

Ghommie (original PR by 4dplanner) updated:

+
    +
  • thrown objects (but not mobs) no longer hit the thrower
  • +
  • mirror shield rebound no longer depends on the original thrower's momentum
  • +
+

Ghommie (original PR by 81Denton, kriskog and nemvar) updated:

+
    +
  • Sleepers now show a message if players try to unscrew the maintenance hatch while they're occupied or open. Fixed typos in sleeper/organ harvester messages.
  • +
  • Sleepers and dna scanners can now be pried open with crowbars.
  • +
  • You can open and close sleepers and dna scanners by alt-clicking them.
  • +
  • The scanner's hatch now must be closed (on top of being unoccupied), just like sleepers, before being screwdriverable. This fixes a tricky door stuck issue with the machine.
  • +
+

Ghommie (original PR by AffectedArc07 and Shazbot) updated:

+
    +
  • Added 8 new sock styles
  • +
+

Ghommie (original PR by AffectedArc07) updated:

+
    +
  • Religion is now a globalvar instead of being a subsystem for some reason
  • +
+

Ghommie (original PR by AnturK) updated:

+
    +
  • Supermatter now melt walls if it finds itself in one.
  • +
+

Ghommie (original PR by Anturk) updated:

+
    +
  • Recipe for fabled secret sauce can now be found in the deepest reaches of space.
  • +
+

Ghommie (original PR by Barhandar updated:

+
    +
  • Pumpkin meteors on Halloween now replace catastrophic meteor waves, instead of ALL OF THEM.
  • +
+

Ghommie (original PR by CrazyClown12) updated:

+
    +
  • The chloral hydrate inside of the sleepy pen is no longer slower acting than chloral hydrate made in chemistry.
  • +
  • The chloral hydrate inside of cookies synthesised by emagged borgs is no longer slower acting than chloral hydrate made in chemistry.
  • +
  • Slight tirizene buff.
  • +
  • Delayed chloral hydrate
  • +
+

Ghommie (original PR by Denton) updated:

+
    +
  • Nanotrasen has started shipping more types of bedsheets to its stations.
  • +
  • Added in Runtime, Pirate and Gondola bedsheets. The second one can also be found in some pirate ships, while the last can be crafted from gondola hides.
  • +
  • You can no longer reveal the 'illegal tech' research node by deconstructing .357 speedloaders, riot dart boxes, syndicate cigarettes, syndicate playing cards or syndicate balloons.
  • +
+

Ghommie (original PR by Mickyan) updated:

+
    +
  • Fixed being unable to smother people using the damp rag
  • +
+

Ghommie (original PR by MrDoomBringer) updated:

+
    +
  • morgues have had their proton packs removed and as such no longer suck in ghosts on closing.
  • +
+

Ghommie (original PR by MrDoomBringer, AnturK and YPOQ) updated:

+
    +
  • Explosions will no longer damage wizards in rod form, the supermatter monitoring radio and megafauna GPS.
  • +
  • Supplypods no longer detonate their contents.
  • +
  • Fixed silicon items (e.g. cyborg modules) being destroyed by explosion epicenters.
  • +
+

Ghommie (original PR by Naksu) updated:

+
    +
  • get_area() is now a define rather than a proc.
  • +
+

Ghommie (original PR by Nicjh) updated:

+
    +
  • Abductor console's select disguise option now uses a radial
  • +
+

Ghommie (original PR by ShizCalev) updated:

+
    +
  • Pineapple haters/lovers will get/no longer get pineapple pizzas respectively from infinite pizza boxes.
  • +
  • As a non-human mob, hovering your cursor over an inventory slot while holding an object in your active hand shouldn't runtime now.
  • +
+

Ghommie (original PR by Skoglol) updated:

+
    +
  • New helper proc for alt-click turf listing, bypasses any interaction overrides.
  • +
  • Ghosts and revenants now use the new proc.
  • +
  • Ghosts can no longer toggleopen sleepers, adjust skateboard speed or close laptops
  • +
  • Revenant can now alt-click turf to list contents.
  • +
  • Revenant now slightly less nosy, use shift click to examine.
  • +
  • Alt-clicking the same turf again no longer closes the turf listing tab.
  • +
  • Reduced ventcrawl lag greatly.
  • +
  • Mining bags will no longer drop ore into backpack.
  • +
  • Mining bags in backpack no longer interferes with other mining bags.
  • +
  • Fixes some storage size circumventions.
  • +
  • Moved machine and computer frames below objects, parts are now always on top.
  • +
  • Moved structures (chairs, closets, windows, cult altars etc etc) below objects.
  • +
  • Moves mineral doors to airlock layers
  • +
  • morgue/crematorium trays' layers shouldn't overlap bodybags' anymore.
  • +
+

Ghommie (original PR by SpaceManiac) updated:

+
    +
  • Disassembling a chem dispenser for the first time will no longer always yield a fully-charged cell.
  • +
+

Ghommie (original PR by Swindly) updated:

+
    +
  • Arm-mounted implants that contain more than one item use a radial menu instead of a list menu.
  • +
+

Ghommie (original PR by Tlaltecuhtli) updated:

+
    +
  • Other people's clothes burning no longer spam you
  • +
+

Ghommie (original PR by XDTM) updated:

+
    +
  • Reagents now stop their passive effects (for example, stun immunity) if the liver stops working while they're active.
  • +
+

Ghommie (original PR by YPOQ) updated:

+
    +
  • Fixing roffle waffle, mushroom halluginogen and some invalid reagents.
  • +
  • Fixes clockwork armor not actually having armor.
  • +
+

Ghommie (original PR by cacogen) updated:

+
    +
  • The font size of all text in the chat window now scales
  • +
  • High volume (megaphone/head of staff headset) is a slightly smaller
  • +
  • Admins have slightly larger OOC text
  • +
+

Ghommie (original PR by coiax) updated:

+
    +
  • Randomly coloured gloves and randomly coloured glowsticks now have slightly different typepaths, but otherwise function the same.
  • +
  • The Squeak subsystem has been renamed to Minor Mapping.
  • +
+

Ghommie (original PR by duckay) updated:

+
    +
  • Added better names and descriptions for blueshirt officer gear.
  • +
  • Added the above gear to the premium selection of the sectech
  • +
+

Ghommie (original PR by harmonyn) updated:

+
    +
  • Resisting out of bucklecuffs takes more/less time depending on the handcuffs you used, i.e., fake handcuffs will not bucklecuff someone for ages.
  • +
  • fake handcuffs shouldn't no longer demoralize restrained criminals scums.
  • +
+

Ghommie (original PR by monster860) updated:

+
    +
  • fixes advanced proccall
  • +
+

Ghommie (original PR by mrhugo13 on tgstation13) updated:

+
    +
  • The Syndicate has decided to equip their Syndicate leaders operative (Aswell as their clown counterparts) with the new Combat Glove Plus! The new Combat Glove Plus does everything the old boring Combat Gloves does but with the added extra of learning Krav Maga upon wearing them, any other Syndicate operative who wants to get in on the action will have to pay 5tc.
  • +
+

Ghommie (original PR by nemvar) updated:

+
    +
  • Some drinks have new icons or slightly altered icons. In particular Wizz Fizz, Bug Spray, Jack Rose, Champagne and Applejack.
  • +
+

Ghommie (original PR by ninjanomnom) updated:

+
    +
  • Orbiting is a little more aggressive about staying in orbit. The wisp as a result now correctly follows you over shuttle moves.
  • +
  • Gaps between sounds in some looping sound effects should no longer happen as much under heavy server lag.
  • +
+

Ghommie (original PR by variableundefined) updated:

+
    +
  • Cancel button to assault pod destination selector.
  • +
+

Ghommie (original PR by wesoda25) updated:

+
    +
  • disembowelment no longer works on mobs that aren't dead or in critical condition
  • +
+

Ghommie (original PRs by Akrilla, Arkatos and Denton) updated:

+
    +
  • Sprays cans have a cap on how dark you can make objects. Art is uneffected.
  • +
  • Fixed a bug where you could get cyborg spraycans via pyrite extracts.
  • +
  • Added an infinite spraycan for admins to spawn.
  • +
+

Ghommie (original PRs by Denton and Skoglol) updated:

+
    +
  • Reorganized the syndicate uplinks. Items are now mostly alphabetical, some misplaced items moved to more fitting categories. Bundles, random item and TC have been moved into a new category called "Bundles and Telecrystals". Gloves of the North Star and Box of Throwing Weapons have been moved to Conspicuous and Dangerous Weapons. Combat Gloves Plus have been moved to Stealthy and Inconspicuous Weapons. Moved all implants into the Implants category.
  • +
  • Added a new category to the uplink: Grenades and Explosives.
  • +
+

Ghommie (original PRs by Floyd/Qustinnus, optimumtact, Denton and coiax) updated:

+
    +
  • You can now select what your pills will look like when making pills from the Chem Master
  • +
  • Red pills can make you think.
  • +
+

Ghommie (original PRs by Jujumatic and PKPenguin321, respectively) updated:

+
    +
  • Minesweeper Arcade machines. The higher the difficulty setting, the better the prizes will be.
  • +
  • Also keep your eye out for another new (and rare) arcade game!
  • +
+

Ghommie (original PRs by Kmc2000 and actioninja) updated:

+
    +
  • Added darkmode! You can opt-in to this by clicking the new toggle darkmode button just beside the settings one.
  • +
  • Byond members will now have a new setting for their Antag OOC color, instead of using their OOC one. (Antag OOC still locked under admin discretion though)
  • +
  • Default black'n'white windows style.
  • +
+

Ghommie (original PRs by Mickyan, Anturk, ShizCalev, nemvar and Naksu) updated:

+
    +
  • After rigorous mandatory art training for the crew, many new graffiti styles are now available
  • +
  • Cleaned up some crayon and spraycan code for futureproofing.
  • +
  • Spraypainting blast doors no longer makes them see-through.
  • +
  • Paint remover now works on blast doors and the like.
  • +
  • Most objects can now be colored using a spray can.
  • +
  • Added visible message to spraying objects and windows.
  • +
  • Colored lights now shine in different colours.
  • +
  • Removed individual buttons text in crayon/spraycan UI, speeding it up.
  • +
  • Text mode buffer is actually visible in the UI.
  • +
  • Last letter of a text mode buffer no longer rotates out to be replaced with "a", allowing the text mode to be used for individual symbols.
  • +
+

Ghommie (original PRs by Naksu and XDTM) updated:

+
    +
  • Transferring quirks now properly removes the roundstart trait from the person losing the quirk.
  • +
  • Roundstart traits no longer block the removal of other sources of that trait.
  • +
  • status traits are now a datum var, the accessors are now defines rather than functions.
  • +
+

Ghommie (original PRs by Naksu and coiax, loser) updated:

+
    +
  • Cleaned up saycode
  • +
  • Taking mutadone while having the communication disorder brain trauma will no longer spam your chat with messages.
  • +
  • IPCs now come with a subtype of robotic tongue without the omnilingual ability, instead of innately having robotic voice spans.
  • +
+

Ghommie (original PRs by Nichlas0010 and ShizCalev) updated:

+
    +
  • AI core display screen can now be set in character preferences.
  • +
  • AI core display screen will now be restore when revived.
  • +
  • Corrected some inconsistent capitalization in the player preferences screen.
  • +
  • Readded some forgotten AI sprites.
  • +
  • Fixed Hades AI death animation not playing.
  • +
  • the AI icon-selection menu now uses a radial.
  • +
  • Added in the death icon_states for the "TechDemon" AI screen.
  • +
+

Ghommie (original PRs by ShizCalev and bobbahbrown) updated:

+
    +
  • Headsets now dynamically show in their description how to speak on any channels they can use when held or worn.
  • +
  • Radio channels names and keys now use defines.
  • +
  • The head arrival announcement will now be broadcast to the supply for the quartermaster.
  • +
+

Ghommie (original PRs by ShizCalev) updated:

+
    +
  • Fixed a bug that allowed you to teleport an ID in your possession to a PDA anywhere ingame.
  • +
  • Fixed an exploit allowing you to steal ID's/pens from PDA's not in your possession.
  • +
  • Fixed an exploit allowing you unlimited control of a PDA's interface even if it wasn't near you/in your possession.
  • +
  • Fixed Pride Mirror exploits.
  • +
  • Corgi collars can now be removed!
  • +
  • Updated the corgi & parrot inventory panels to use the same formatting as other mobs
  • +
  • Fixed corgi inventory panels not closing properly.
  • +
  • Fixed the parrot inventory panel not closing properly if you're not able to interact with it.
  • +
+

Ghommie (original PRs by ShizCalev, MrDoombringer, AnturK, bgobandit, 81Denton and actioninja) updated:

+
    +
  • Failsafe codes for uplinks are now available for purchase.
  • +
  • Nuke Ops now have the ability to purchase a usable RPG, the PML-9, as well as a couple different types of rockets for it. you can also suicide rocket jump with them!
  • +
  • Improved Uplink item descriptions and formatting.
  • +
+

Ghommie (original PRs by ShizCalev, coiax and Tlaltecuhtli) updated:

+
    +
  • Caks will no longer override the bonus reagents provided in a donut when frosting them.
  • +
  • Caks can no longer create frosted frosted jelly donuts.
  • +
  • Jelly donuts will no longer lose their vitamins when they're frosted.
  • +
  • Fixed chaos donuts potentially doubling the amount of reagents added when microwaved with something else.
  • +
  • Donuts now always contain 1 sprinkles as was stated on the wiki. Frosted donuts have a chance at adding an extra sprinkle.
  • +
  • Improved the code for ensuring that security members enjoy donuts and security-themed alcoholic drinks.
  • +
  • neurotoxin doesnt insta stun but gives you limb paralysis overtime and heart attacks if it stays in for too long and it is also alcholic
  • +
  • beepsky smash now summons imaginary beepskys that deal stamina damage instead of outright stunning
  • +
+

Ghommie (original PRs by Time-Green and Qustinnus) updated:

+
    +
  • loot crates can't explode after unlocking anymore
  • +
  • jumping into loot crates no longers causes them to go boom
  • +
  • You can now deconstruct abandoned crates with a welder without making them go boom. After unlocking them, of course.
  • +
+

Ghommie (original PRs by Tlaltecuhtli and nicbn) updated:

+
    +
  • alt click to eject beakers from chem masters + chem dispensers + grinders + chem heaters
  • +
  • hit chem master + chem dispenser + chem heaters with a beaker and if its loaded with another it swaps em
  • +
  • All-In-One Blender UI uses a radial menu now. You can see the contents and reagents by examining.
  • +
+

Ghommie (original PRs by XDTM, 4dplanner, nemvar and, yes, myself) updated:

+
    +
  • Merged tinfoil hat kind of protection into the anti_magic component.
  • +
  • Tinfoil hats can also be warped up from excessive dampening of mindray/though control/psicotronic anomalies, or by simply being microwaved in an oven, and become useless.
  • +
  • Immortality Talisman and Paranormal Hardsuit helmets now come with tinfoil protection too (minus the paranoia and limited charges).
  • +
  • Genetics/Slime/Alien Telepathy and Slime Link are now stopped by tinfoil protection.
  • +
+

Ghommie (original PRs by XDTM, optimumtact, Nichlas0010 and monster860) updated:

+
    +
  • Added Quantum Keycards, devices that can link to a quantum pad, and can be used on any other quantum pad to teleport to its linked pad. spellchecking: Renamed "Bluespace Teleportation Tech" tech node to "Bluespace Travel".
  • +
  • Moved roasting sticks from the "Bluespace Travel" to "Practical Bluespace".
  • +
  • Spraying holy water on tiles will now prevent cult-based teleportation from using them as a destination point.
  • +
  • Quantum, wormhole and magic teleportation is no longer disrupted by bags of holding.
  • +
  • You are now also blocked from teleporting IN to no-teleport areas, not just out of them.
  • +
  • Quantum teleportation now makes pretty rainbow sparks instead of the normal ones.
  • +
  • Non-bluespace teleportation (spells etc.) no longer makes sparks.
  • +
  • Fixed teleportation deleting mob spawners like golem shells and ashwalker eggs.
  • +
+

Ghommie (original PRs by carshalash, GranpaWalton, BebeYoshi & Hexmaniacosanna, Fire Chance, Ordonis, Krysonism and OnlineGirlfriend) updated:

+
    +
  • Reduced booze power of Mead, Red Mead, and Irish Cream.
  • +
  • Increased booze power of Grappa.
  • +
  • Added a new premium drink to the soda machine called "Grey Bull" which gives temporary shock resistance
  • +
  • A new drink called Blank Paper was added to the bar menu, it was made by a mime and it represents a new start.
  • +
  • Adds a variety of fine alcoholic beverages for discerning patrons of the bar: Wizz Fizz, Bug Spray, Champagne, Applejack, Jack Rose, Turbo, Old Timer, Rubberneck, Duplex, Trappist Beer, Blazaam and Planet Cracker!
  • +
  • Also more nonalcoholic drinks: Cream Soda, Lemonade and Red Queen.
  • +
  • Packs of a novel artificial sweetener have been added to the kitchen vendor.
  • +
  • Bottles of trappist beer and champagne are now available in the premium seection of the booze-o-mat.
  • +
  • Juicing parsnips now yields parsnip juice.
  • +
  • Maintenance peaches.
  • +
  • Grape soda now cools you down like other sodas.
  • +
  • tweaked the Arnold Palmer recipe, it now uses lemonade.
  • +
  • Added new drink, bottle, vomit and peach can sprites.
  • +
+

Ghommie (original PRs by grandpawalton and Mickyan) updated:

+
    +
  • the contents on the smartfridge icon now change depending on how many items it contains
  • +
  • opening the maintenance panel of smartfridges now correctly updates the icon
  • +
  • Screwing a disk compartmentalizer no longer makes it look like a smartfridge.
  • +
+

Ghommie (original PRs by nicbn and coiax) updated:

+
    +
  • Microwave UI uses a radial menu now. You can see the contents by examining.
  • +
  • Microwaves have a single wire accessible when open, the activation wire. When cut, the microwave will no longer function, when pulsed, the microwave will turn on.
  • +
  • Stabilized dark purple extracts now cook items in your hands, rather than dropping the cooked item on the floor.
  • +
+

Ghommie (original PRs by ninjanomnom and nemvar) updated:

+
    +
  • Trays now scatter their contents when used for attacks, like they are supposed to.
  • +
+

Ghommie (original PRs by ninjanomnom, coiax, yoyobatty) updated:

+
    +
  • Fixed slaughter demons not getting a speed boost when exiting a pool of blood. Fixed slaughter demon giblets not being visible.
  • +
+

Ghommie (original PRs by subject217, AarontheIdiot, pireamaineach, Gousaid67 and SouDescolado) updated:

+
    +
  • Removed plasmamen species speedmod in favor of a slowdown for envirosuits.
  • +
  • Nanotrasen has began deploying departementalized enviro plasmasuits to the station! plasmamens can now benefit from some of the bonuses aswell as the color pattern of their job, while allowing others to easily determine their profession!
  • +
  • Benevolent Nanotrasen makes gulag available for everyone! (Plasmamen retain their equipment and don't die.)
  • +
  • Removes code that theoretically limits plasmamen from being clowns and mimes, but actually doesn't.
  • +
+

Ghommie (original PRs by zeroisthebiggay, AnturK, MrDoomBringer, Cobby, ATHATH, optimumtact, GranpaWalton, Skoglol) updated:

+
    +
  • Blob overminds, sentient diseases, etc. can no longer dump out boxes. Sorry gamers.
  • +
  • Sentient Disease now has almost all symptoms at its disposal.
  • +
  • Adding single-symptom disease abilities is super easy now.
  • +
  • Sentient Disease can now hear (not sure if this was a bug or intentional).
  • +
  • Sentient Disease is a linguist and knows all languages. Still cannot speak.
  • +
  • Gives Sentient Diseases a medical hud to observe their victims further with.
  • +
  • Fixes and moves around some on_stage_change() and Start()-related things for virus symptoms and (sentient) diseases.
  • +
  • The inorganic biology symptom should work properly now when bought by a sentient disease.
  • +
  • Oxyloss icon no-longer shows up when someone has the self respiration symptom
  • +
  • The self respiration now makes you not contract diseases through the air and not breathe in smoke
  • +
  • Sentient diseases can no longer pick two cures that react and disappear when eaten.
  • +
  • Sentient disease cures are now consistently harder, will only pick cures from tier 6 and up.
  • +
  • Disease cures should now stay the same for all infected mobs.
  • +
  • The regenerative coma symptom has a new resistance 4 threshold effect! Said threshold effect will give hosts of the symptom's virus the TRAIT_STABLECRIT trait if its threshold is met.
  • +
  • An obscure, probably never reported before bug that may or may not exist involving sentient diseases and the self-respiration symptom should be fixed now (if it even existed in the first place).
  • +
  • The cooldown time between each removal or addition of a symptom for sentient diseases has been brought down from an agonizingly long 2 minutes to a more reasonable 1 minute.
  • +
+

Ghommie (original pr by Dennok on tgstation) updated:

+
    +
  • Now you don't lose your pulled thing on the z level edge.

GrayRachnid updated:

    -
  • Adds private rooms to the ninja holding center
  • -
  • Along with a few things to make it more tolerable, but fear not. There is now a suicide chamber for those who want the easy way out.
  • -
-

GuyonBroadway updated:

-
    -
  • Adds gloves of the north star to the traitor uplink. Wearing these gloves lets you punch people five times faster than normal.
  • -
  • Sprites for the gloves courtesy of Notamaniac
  • +
  • Added windoors to all the flaps on delta.
  • +
  • rebalanced k9dogborgs

Hatterhat updated:

    -
  • The plasma formerly present in some execution syringes was replaced with amatoxin.
  • +
  • Magnetic pistols now fit in boot pockets - jackboots, workboots, etc.
  • +
  • literally every pistol subtype fits in shoes now. go wild.
-

Hyacinth updated:

+

Hippie Circuit Port updated:

    -
  • Grenadine is now available in the bar!
  • -
  • Tequila sunrises now require grenadine to make!
  • +
  • Added all Atmospheric Circuits
  • +
  • Added the ability to color data disks
  • +
  • Added Selection and Storage Examiner Circuits
  • +
  • Added Smoke, Extinguisher, and Beaker Connector Circuits
  • +
  • Added Inserter, Renamer, Redescriber, and Repaint Circuits
  • +
  • Added MMI Tank and pAI Connector Circuits (The possibilities are endless!)
-

Iamgoofball updated:

+

Improving and Balancing Cyborgs updated:

    -
  • Lipolicide now only does damage if you're starving.
  • +
  • Added Crew Pinpointer to Security Borg
  • +
  • Added Crew Monitor to Medical Borg
  • +
  • Added Crew Pinpointer to MediHound Borg
  • +
  • Made the Disabler_Cooler compatible with both Security Borg and K9 Borg
  • +
  • Changed the Warning Text upon selecting Security or K9 module
-

Improvedgay updated:

+

ItzGabby updated:

    -
  • Naming immerions
  • +
  • Bat Species parts for more leeway for character customization.
  • +
  • Alphabetized decor wing selection window in character creator for simplicity.
-

Improvedname updated:

+

JTGSZ updated:

    -
  • Adds rubbershot secrifle shots
  • +
  • Added one more gang boss slot bringing total to 4 from 3
  • +
  • Fixed Gang Boss being able to be deconverted
  • +
  • Gave Qualifies_for_Rank Check back its checks in job controller.
  • +
  • Optional species based clothing restrictions
  • +
  • Gang Dominator excessive wall check tweaked to 25 open turfs
  • +
  • Gang Dominator no longer functions off-station.
  • +
  • Adds more control over species based offsets.
  • +
  • qualifies_for_rank now checks latejoin menu
  • +
  • Added Halloween Dwarves, for Halloween... Yep.
  • +
  • Can flip pipes once more.
  • +
  • barricade girder walls use PlaceOnTop instead of new
-

JStheguy updated:

+

Linzolle updated:

    -
  • Added the data card reader circuit, a circuit that is able to read data cards, as well as write to them.
  • -
  • Data cards are now longer inexplicably called data disks despite clearly being cards, and can be printed from the "tools" section of the integrated circuit printer.
  • -
  • Data cards no longer have a special "label card" verb and instead can have their names and descriptions changed with a pen.
  • -
  • Also, some aesthetically different variants of the data cards, because why not.
  • -
  • Data cards have new sprites, with support for coloring them via the assembly detailer.
  • +
  • ability to quickly max sensors
  • +
  • atmos helmet visual bug
  • +
  • supply display are now properly on the wall
  • +
  • consistency in hop and cap berets
  • +
  • slime people now enjoy eating toxic food and it will not disgust them
  • +
  • hos trenchcloak now properly has a sprite on digi characters
  • +
  • duplicate definition of hos and sec skirts
  • +
  • Krav Maga leg sweep now works properly.
  • +
  • shoes can have a different icon used for their item and mob icons
  • +
  • combat gloves plus having no mob icon
  • +
  • inhands sprite for rainbow knife
  • +
  • colour of highlight on the regular knife when held in the right hand
  • +
  • mining shuttle console can now be printed after computer consoles have been researched
  • +
  • can now carry people on your back by aggressive grabbing them while they are laying down and then dragging their sprite onto yours.
  • +
  • dragging people who are prone is now much slower, and carrying them will allow you to move faster at the cost of taking 5 seconds to lift them up onto your back.
  • +
  • pacifists can now aggressive grab (cannot table slam people though)
  • +
  • blood on your body floating a bit to your right if you're a taur
  • +
  • some suits having no icon on tauric characters
  • +
  • front facing CMO hardsuit icon for naga taurs
  • +
  • colour of medical cross on CMO hardsuit for taurs
  • +
  • taur body and jumpsuit showing through mining suits
  • +
  • all chaplain suits can hold the same items in suit storage
  • +
  • improvement to organisation for chaplain suits
  • +
  • blood halberd not going back to 17 force after unwielding
  • +
  • unnecessary 's at the end of blood rites healing
  • +
  • QoL to blood rites, examine the ritual aura to view how many blood charges are left
  • +
  • surgery cleanup
  • +
  • dissection available round-start
  • +
  • better dissection surgeries from RnD, gives more points
  • +
  • abductors can now see what glands do
  • +
  • antagonist abductors now have a surgeon trait that teaches them every surgery rather than having it just check if they're an abductor
  • +
  • muscled veins surgery
  • +
  • having one of your hands used up if you fireman carry but the person being carried dismounts any way other than you dropping them
  • +
  • Four colour variants of ankle coverings. Select them on the loadout screen.
  • +
  • ankle coverings
  • +
  • allows for shoes that don't cover your feet to be taken into account for footstep sound effects and glass shards
  • +
  • Tend Wounds surgery. Heal in the field, with better healing the more damage the patient has.
  • +
  • Reconstruction replaced by Tend Wounds
  • +
  • made Revival more accessible, more viable alternative to cloning.
  • +
  • advanced surgery tools can't perform lobectomy or coronary bypass
  • +
  • Decorative and insect wings can now be coloured individually, similar to horns.
  • +
  • people getting assigned wings if their savefile is old.
  • +
  • wings that take the hair colour. Unnecessary if you can just set the colour.
  • +
  • Cannot make horns pure black. Trying to do so will set it to a default value.
  • +
  • decorative angel wings being invisible
  • +
  • abductors now actually work
  • +
  • abductor scientist has their own greet message now
  • +
  • unable to read paper on airlocks
  • +
  • ai can see paper (still just shows stars)
  • +
  • Target head and throw a hat at someone to toss it onto their head, knocking whatever they're wearing off if they are wearing a hat. Some headgear can't be knocked off this way.
-

Jay updated:

+

MediHound updated:

    -
  • Bans CMO, RD, CE, and HoP from antag/ling
  • +
  • Made Cyborgs be affected by Ion Storm Law Changes like AIs
-

Jegub updated:

+

MrJWhit updated:

    -
  • Glowcaps now have their own sprite.
  • +
  • rebalance melee stamloss
-

Kor updated:

+

Multicam Config updated:

    -
  • The Quartermaster and HoP can now access the vault so they can use the bank machine.
  • -
  • Engineering can now create anomaly neutralizer devices, capable of instantly neutralizing the short lived anomalies created by the supermatter engine.
  • -
  • Bubblegum has regained his original (deadlier) move set.
  • -
-

LetterN updated:

-
    -
  • Fixes shock collars, they now fit on the neck slot
  • -
  • you can't put them on pockets anymore
  • -
-

MacHac updated:

-
    -
  • Bedsheets once again properly influence the dreams of those who sleep under them.
  • -
-

Mickyan updated:

-
    -
  • Drinking too much Gargle Blaster, Nuka Cola or Neurotoxin no longer breaks time and space.
  • -
  • Pacifists can now use harm intent for actions that require it (but still can't harm!)
  • -
  • fixed typo in bronze girder construction
  • -
  • New trait: Drunken Resilience. You may be a drunken wreck but at least you're healthy. If alcohol poisoning doesn't get you, that is!
  • -
  • Fixed pacifists being able to harm using bottles/screwdrivers
  • -
-

MrDoomBringer updated:

-
    -
  • the VR sleeper action button has a sprite now
  • -
  • Central Command can now smite misbehaving crewmembers with supply pods (filled with whatever their hearts desire!)
  • -
  • CentCom Supplypods now stun their target before landing, and won't damage the station as much
  • +
  • removed whether or not the stuff for multicam was checking the useless var and instead now checks the CONFIG_GET flag.
  • +
  • Admins now have a verb in the Server tab to turn AI multicam on and off.

Naksu updated:

    -
  • clothing-specific flags are now defined in /obj/item/clothing.clothing_flags
  • -
  • More flags have been moved to their appropriate places
  • -
  • HEALS_EARS_2 is removed in favor of the earhealing component
  • -
  • wearertargeting component is available to subtype for components that want to target the wearer of an item rather than the item itself
  • -
  • changed the shockedby list on doors to be only initialized when needed.
  • -
  • Chameleon projector can no longer scan (often temporary) visual effects like projectiles, flashes and the masked appearance of another chameleon projector user
  • -
  • Drones can no longer see a static overlay over invisible revenants
  • -
  • adjusted default antag rep points to grant every job the same amount of points per round, except for assistant which gets 30% less
  • -
  • Nuclear explosive-shaped beerkegs found on metastation can now be triggered with the nuclear disk and the syndicate's legacy nuclear code for a foamy surprise
  • -
  • comms consoles now work in transit again, and no longer work in centcom
  • -
  • removed unnecessary getFlatIcons from holocalls
  • -
  • Screwdrivers and other items with overlays now show the proper appearance of the item when attacking something with them, or when put on a tray.
  • -
  • moved /datum.isprocessing into datum flags
  • -
  • Removed unused effect object that could be used to spawn a list of humans
  • -
  • The ladders in the tear in the fabric of reality no longer spawn their endpoints when the area is loaded, but only when the tear is made accessible via a BoH bomb.
  • -
  • CentCom is no longer accessible via the space ladder in the tear.
  • -
  • The lavaland endpoint can no longer spawn completely surrounded by lava, unless it spawns on an island
  • -
  • ChangeTurf can now conditionally inherit the air of the turf it is replacing, via the CHANGETURF_INHERIT_AIR flag.
  • -
  • when ladder endpoints are created, the binary turfs that are created inherit the air of the turfs they are replacing. This means the lavaland ladder endpoint will have the lavaland airmix, instead of a vacuum.
  • -
  • navigation beacons are now properly deregistered from their Z-level list and re-registered on the correct one if moved across Z-levels by an effect such as teleportation or a BoH-induced chasm.
  • -
  • constructed directional windows no longer leak atmos across them
  • -
  • setting the value of anchored for objects should be done via the setAnchored proc to properly handle things like atmos updates in one place
  • +
  • default radiation insulation is now handled by atom vars rather than a component, components can still be used.
  • +
  • squeezed a little bit more perf out of atmos
-

Nicc updated:

+

Nero1024 updated:

    -
  • toxins lab boii
  • +
  • Bare feet will now make the correct footstep sounds.
  • +
  • Other mobs will make the correct footstep sounds.
  • +
  • Crawling/dragging sounds for downed/incapacitated mobs
-

Nichlas0010 updated:

+

Onule & Nemvar (ported by Ghommie) updated:

    -
  • Reseach Director Traitors can no longer receive an objective to steal the Hand Teleporter
  • -
  • Comms consoles won't update while viewing messages
  • -
  • you now feel nauseated instead of nauseous
  • -
  • You can no longer use a soapstone infinitely
  • -
  • You now can't get multiple download objectives!
  • -
  • RDs, Scientists and Roboticists can no longer get download objectives!
  • +
  • New Revenant icons
  • +
+

Original by Citinited, port by Sishen1542 updated:

+
    +
  • You can now use an airlock electronics on a locker to add a lock, and can screwdriver an unlocked locker to remove its lock.
  • +
  • You can now remove the locks on broken or emagged lockers.
  • +
  • Removing the lock from a personal locker now wipes that locker's ID details.
  • +
  • Broken lockers have had their appearance changed.
  • +
+

Owai-Seek updated:

+
    +
  • custodial cruiser cargo crate
  • +
  • removed light replacer from power designs and moved to misc designs
  • +
  • added pimpin ride to custodial locator
  • +
  • added additional items to janibelt whitelist
  • +
  • made plant DNA manipulator unwrenchable
  • +
  • reduced janitor premium supply costs
  • +
  • fixed them strawberries
  • +
  • false codpiece
  • +
  • crocin/camphor bottles
  • +
  • updated kinkmate item list
  • +
+

PersianXerxes updated:

+
    +
  • Adds the clockwork_warp_allowed flag to the Captain's Office area, set to FALSE the same way it is for the chapel and armory.
  • +
  • Relocates cult catwalks outside the Reebe dressing room.

Poojawa updated:

    -
  • Admin IC issue is no longer TG i ded passive aggressive.
  • -
  • Added *insult, for when you just can't think of anything more clever
  • -
  • Makes vore specific prefs call Rust_g else uses normal stuff.
  • -
  • Citadel Toggles should save properly now
  • -
  • fixed clothing vendor fedoras having Detective Fedora grade armor
  • -
  • Fixes missing icons on mag weapons for techmemes
  • -
  • Fixes APCs being replaced in maint from counting Maint as their wall turff
  • -
  • Added Vore based moodlets, primitive and ain't gunna adapt for not belly things but w/e
  • +
  • Digitigrade legs are now able to wear shoes and look fancy, Uniforms to come.
  • +
  • Xenos are only digitigrade now, mammals and aquatics have the option.
  • +
  • Fire Alarms are visible in low light situations
  • +
  • fixed vore prefs saving inconsistently, new characters might have a previous slot's prefs tacked on.
  • +
  • fixed mammals not having the option for digilegs. Sprites are fucky until body-part related sprites are done.
  • +
  • improved vore sound responsiveness to preference choices.
  • +
  • removed morphine from Medihound sleeper chemical list
  • +
  • fixed preference setting being broken
  • +
  • Medihound sleepers are Initialized properly, and icons update correctly now on eject
  • +
  • Air alarm All clear color changed from green to blue
  • +
  • APCs are harder to destroy.
  • +
  • Added Digitigrade versions of everything appliciable in suit.dmi
  • +
  • Snowflake Icons weren't modified, and were given NO_MUTANTRACE_VARIATION
  • +
  • naga and quad Taurs literally don't freeze their ass off in space anymore.
  • +
  • Digitigrade legs will toggle on/off properly on character menue
  • +
  • The misleading "normal" has been removed from species options
  • +
  • Added sanity checks to emag usage
  • +
  • fixed vtech, but it still doesn't work because of overriding jog/sprint mechanics from combat reworks.
  • +
  • Puppy jaws properly store if you're emagged, they are also toggle-able for stealth like the tongue.
  • +
  • Digitigrade legs should properly fucking update for the last fucking time. Fucking snowflake code. refractor: Got rid of snowflake sechound cuffs, gave them normal zipties like regular secborgs.
  • +
  • dogborg sleepers actually extinguish people who are on fire, in case you don't have time to lick them out.
  • +
  • Taur suits should fix themselves properly when worn by other people.
  • +
  • Added the Yogs/Oracle ported latejoin menu
  • +
  • All markings, tails, ears, and snouts for Citadel races are color matrixed!
  • +
  • all markings are on a per-limb basis, including Digitigrade legs!
  • +
  • a bunch of tails were blessed with tail wagging sprites, Fish, Sharks, Fennecs, Wahs, raccoons, and others.
  • +
  • Tiger markings + tail added, skunk tails improved via sprites from Virgo
  • +
  • tweaked some sprites to look better, but they absolutely could use a few extra passes for quality
  • +
  • HumanScissors in the Tools folder will permit anyone to contribute matrix'd markings to the sprite sheet, however Mam_markings is very, very full. Be careful.
  • +
  • Character preview was both optimized for taurs and bad-touched for better updating. I don't know if it'll be bad, but hey its better.
  • +
  • Added Dark Medihound and Pup Dozer from Virgo
  • +
  • Clone pods no longer announce the name of the clone
  • +
  • fixed flavor text appearing when your face is hidden but you're not an Unknown
  • +
  • Tauric suits now apply an (placeholder) blood overlay, as well as their shield overlay.
  • +
  • Ashwalkers now have lungs. They cannot breath station air without suffocation effects, but are completely fine on their homeworld.
  • +
  • Carbon mobs now have a maximum tolerance to oxygen of 50kPa.
  • +
  • Deluxe synthetic lungs have a very high bonus to O2 tolerance.
  • +
  • Digitigrade legs returned to normal, since digi leg markings overlay them anyway.
  • +
  • commented out lizard mam_snout entries, because too many abominations
  • +
  • Vore Panel restored to have various interactions available again. Semi-untested but should work as advertised.
  • +
  • Vore Panel has more feedback.
  • +
  • is_wet var to bellies, toggled in the panel, will remove flesh sounding struggles and the internal loop. JSON version updated.
  • +
  • Feeding var. You will need to enable feeding to recieve any feed vore actions, but you can now feed yourself to mobs that have this set. TODO, Dogborg sleeper feeding.
  • +
  • vore mode button now required to be enabled to perform vore actions. It's the mouth icon!
  • +
  • Ash Drake vore fixed for actual reals this time
  • +
  • Mobs shouldn't spam the released contents announcement anymore on qdel or death. Only if triggered
  • +
  • Hostile mob code now properly ignores targets in bellies
  • +
  • Your belly can quietly growl if you're starving now.
  • +
  • Normal blood splattering isn't offset due to tauric mode
  • +
  • Added plasma man suit icons for taurs
  • +
  • Added bee butt for insects to have stripes
  • +
  • adjusted random spawn sprite accessories, humans won't be demi by default and lizard/mammal spawns will randomly get digitigrade legs
  • +
  • sprite adjustments for tentacles, as well as a misspelling.
  • +
  • Humans once again use ears and tail_human, as intended. This is to prevent garish randomness
  • +
  • istype for species is actually correct and usable now, it'll be a factor for monkey form expansions.
  • +
  • Hair functions are de-gendered and more easily selectable now.
  • +
  • Slimes can *wag, select markings and snouts, and yes it works.
  • +
  • Slimepeople extra parts now respect their hair_alpha in terms of being somewhat see-through. it shouldn't stand out as badly now!
  • +
  • Hunger noises are now toggled per character
  • +
  • Ashwalker den is habitable by ashwalkers again
  • +
  • Medical belts now have overlays! Now you can see if a belt is useful or just flatout empty.
  • +
  • fixed hypo MK IIs not being able to be put on medical belts
  • +
  • fixed Navy officer uniforms that failed to spawn
  • +
  • Loadout items will be forcefully added to backpacks or at your feet instead of left behind at title screen
  • +
  • hypospray kits hold 12 now, but only vials and sprays themselves
  • +
  • labcoats can carry MK II hyposprays on them now.
  • +
  • Vore Mobs are a thing now, not just ash drakes
  • +
  • Removed hunger sound stuff. never taking requests from Coolgat3 ever again. refractor: Simple Mobs use the same system regular human mobs do, itjustworks.png
  • +
  • Character Window settings unsnowflaked and normalized. I have no fucking clue how to make them work with taurs still tho, sorry.
  • +
  • added rotating background images for better clarity and contrast than just SOLID FUCKING BLACK. Images from Virgo/Polaris/Eris
  • +
  • Defib users automatically stop pulling when they attempt to perform a defib shock
  • +
  • added muzzled varients of space helmets and full masks
  • +
  • added knight_grey to taur suits, all paranormal ERT now have tauric versions enabled
  • +
  • Lava knights have digitigrade and tauric versions now
  • +
  • Added a glass version of the gas mask, because it was in the files and looked nice. does everything regular ones do except make you an unknown
  • +
  • Added custom species names! Examining people will now display their species name unless they're an Unknown or have their face hidden. like flavor text. Set it in your character window!
  • +
  • changed how health scanners print messages, wrapping it in msg for one to_chat instead of printing every line to_chat.
  • +
  • Discord bot will now report when a round ends and give the vague news ticker that a sister-station would have received for the game mode and result of the round.
  • +
  • fixed medical hardsuit overlay issue. I thought it was going to work well but fuck byond.
  • +
  • None body markings shouldn't give rgb hell, but it also should reset properly anyway. ree.
  • +
  • Sorted some sprites to better sooth my byond icon limit anxiety.
  • +
  • Box Cryopods expanded to 6 public. Permabrig cryo fixed.
  • +
  • Delta Cryopods expanded to 6 public. Permabrig cryo fixed.
  • +
  • MetaStation Crypods expanded to 6 public, relocated above sparring ring. Permabrig cryo fixed
  • +
  • PubbyStation gained one more cryopod, Permabrig's cryo fixed.
  • +
  • Omega given one more crypod as well.
  • +
  • Gulag was given a cryopod.
  • +
  • Box and Meta's cryo rooms are now a new room entirely.
  • +
  • Added erect states for all phallic bodyparts
  • +
  • YOUR DICK ACTUALLY STANDS UP NOW, YOU'RE WELCOME.
  • +
  • skintone locked genitals match the new skintone colorations.
  • +
  • added two new vaginal types and descriptions.
  • +
  • fixed borg defib runtimes
  • +
  • fixed heart attacks being nonlethal
  • +
  • Ported Oracle's cloning set up, you're now visible like cryo when being cloned, though it's a mystery until you have skin on your meat puppet existance
  • +
  • Recyclers are unable to destroy the indestructible any longer.
  • +
  • Kiara's toy sabre now actually is the correct item + icon states
  • +
  • Generic armor for taurs fixed, there isn't actually any sprites for 'em, so. Full sprites overlay over bodies, but I really can't be bothered to do all the offset fixes otherwise.
  • +
  • Large maps have had a patient room transformed into micro chemistry stations with nothing else in them. They've been labelled 'Apothecary' rooms and are accessible by doctors.
  • +
  • females now have female defined sprites
  • +
  • Slime legs have had their excess pixels adjusted
  • +
  • Mammal normal legs are more in line with human legs now
  • +
  • fixed species like abductors and golems getting the fat tiddy or pingas
  • +
  • Atmos and Station alerts should be more alerting.
  • +
  • Added visible and hidden testicles
  • +
  • Added multi-boob support. Now you can have two or three pairs of breasts.
  • +
  • fixed missing vagina and breast sprites
  • +
  • fixed prosthetic hands being invisible
  • +
  • male foxes exist again
  • +
  • female chest markings improved from being too dark in comparison to their other colors, blending better
  • +
  • Markings behave better on non-organic limbs.
  • +
  • tweaked the name of Sublter to distinguish its use
  • +
  • Gave a hint for vore posting.
  • +
  • Readded Ninja speech modifications with their mask
  • +
  • Pacifists can eat people for heal belly or noisy. Digestive modes are auto-swapped to noisy
  • +
  • Added an underwear toggle button under 'Object' tab
  • +
  • Genitals now layer under underwear. Hide these if they're too obnoxious.
  • +
  • Added digitigrade socks of all known ones anyway.
  • +
  • tweaked the Genital character creation layout to look better
  • +
  • fixed having balls/womb when you don't have the linked organ at character creation
  • +
  • fixed being able to squeeze semen directly from your balls. Probably.
  • +
  • NT Newscasters have had repeated reports of gang activity and are now looking into it.
  • +
  • NT Psykers keep mumbling about last words of someone who died. Somehow they even have a newsletter for this...
  • +
  • Gangster greeting messages are a batch message rather than 5 laggy to_chats
  • +
  • RCL now show what color is currently in use
  • +
  • Added RGB blood effects, know whose blood this is by color!
  • +
  • Added Synthetics blood, and a machine that produces it. A universal donor for medical to heal people with. Make it via medical protolathe!
  • +
  • With hearts, slimepeople shouldn't die from the effects of not having a heart.
  • +
  • Plasma vessels from xenomorphs will restore blood if you're on resin.
  • +
  • Poly's speech now echos to the chat bot.
  • +
  • Added new wings to Insects and separated fluff from old ones, they're Insect's new body markings now without being per-limb (for now).
  • +
  • Horns are now available to mammals, and they have their own color.
  • +
  • Legs are no longer a binary hack code, but actually something that can be changed. Framework for tauric adaptations.
  • +
  • Purged Modular Citadel's sprite_accessories.
  • +
  • improved the quality of a number of sprites.
  • +
  • Moths are now all insects. Avians and Aquatics are all anthromorphics. Just as planned.
  • +
  • Anthromorphs can choose their preferred gibbing meat. I guess. Snowflakes are weird.
  • +
  • Additional Gentlemen names.
  • +
  • Medical huds are now calibrated for Radioactive wavelengths.
  • +
  • Engineering equipment, blue space, and common storage containers are radiation protected
  • +
  • fixed suit storage not cleaning radiation levels of everything stuffed into them.
  • +
  • QM is able to hire/fire people to their department now.
  • +
  • cryopod UI isn't complete shit anymore
  • +
  • Cryopods purge silicon gear more efficiently now. Same with ghosts.
  • +
  • Med Sprays are now more aligned with patch mechanics
  • +
  • Chemistry is encouraged to be more varied in their healing, as well as careful in its application
  • +
  • Active NPC priority set much higher priority for the MC, with the intent on making NPC combat more interesting
  • +
  • Clarified access descriptions of some jobs
  • +
  • fixed missing deco wing states
  • +
  • fixed a few things related to vore content
-

Pubby updated:

+

Putnam3145 updated:

    -
  • PubbyStation: Fixed disposals issue in security hallway
  • +
  • Bottles in PanD.E.M.I.C 2200 can now be replaced with an inhand bottle directly
  • +
  • Ejecting a bottle from the PanD.E.M.I.C 2200 puts it directly into the user's hand
  • +
  • Alt-clicking the PanD.E.M.I.C 2200 ejects the current bottle
  • +
  • neural nanites only work/drain if you have brain damage or traumas the nanites can fix
  • +
  • Pod people can no longer get fat from standing in the light
  • +
  • PanD.E.M.I.C 2200 now ejects onto itself instead of onto user if user's hands are full
  • +
  • Added configs for a bunch of Dynamic rule parameters.
  • +
  • Added defaults for all the configs (WIP).
  • +
  • Added dynamic midround/latejoin antag injection to the config.
  • +
  • Made starlight condensation not kill slime people.
  • +
  • Added not-killing-slime-people to the transmission threshold of plasma fixation and radioactive resonance.
  • +
  • Made the clone scanner lock while it's scanning.
-

Robustin with cat earrs updated:

+

R3dtail updated:

    -
  • Gun overlays should be way less laggy now. remove: Chameleon guns are completely removed since they crash the server, were already made unavailable, and are the worst shitcode I've ever seen in my life.
  • +
  • Added 16 saltprimaryobject items Added 4 saltsecondarysubject items
  • +
  • Added a new carpet. Red! Also added said carpet to the Premium Carpet crate from the cargo supply console. Trilby said she'd take care of the crafting recipe.
-

ShizCalev updated:

+

Raptorizer updated:

    -
  • Adminorazine will no longer kill ash lizards.
  • -
  • Adminorazine will no longer remove quirks.
  • -
  • Fixed mobs immune to radiation being killed by HIGH bursts of radiation.
  • -
  • The book of mindswap will now properly mindswap it's users.
  • -
  • Fixed a runtime with the gulag teleporter that could cause the process to fail if you removed the ID.
  • -
  • Not setting the goal of a prisoner's ID when teleporting them will now set the ID's goal to the default value (200 points at the time of this change.)
  • -
  • Fixed cigar cases & cigarette packets taking two inventory slots
  • -
  • Fixed cigar cases showing the wrong icon for the cigars inside them.
  • -
  • Fixed cigar cases & cigarette packets stating the wrong name of the cigar/cigarette when removed via altclick.
  • -
  • Fixed items in pockets vanishing when a mob is monkeyized.
  • -
  • Fixed items in pockets vanishing when a mob is gorillized.
  • -
  • Fixed items in pockets vanishing when a mob is infected with a transformation disease.
  • -
  • Fixed items in pockets not being properly deleted when a mob goes through a recycler
  • -
  • Fixed items in pockets not being properly deleted when highlander mode is enabled.
  • -
  • Fixed exploit allowing you to remove unremovable tanks from pockets.
  • -
  • Fixed items in pockets dropping when a mob is equipped with a new outfit.
  • -
  • Fixed items in pockets not being covered in blood when equipping the psycho outfit.
  • +
  • Doubled peach spawn rate
  • +
  • tweaked numbers/variables
  • +
  • rebalanced numbers/variables
  • +
  • removed unneeded code
-

SpaceManiac updated:

+

Seris02 updated:

    -
  • The destructive analyzer can once again be used to reveal nodes.
  • -
  • Some references to "deconstructive analyzer" have been updated to "destructive".
  • +
  • Abductor Replication Lab ruin and advanced tools
  • +
  • Added looc hotkey
  • +
  • made the autoprocess button relevant
  • +
  • changes so that spooktober starts earlier
  • +
  • fixed the dark blue lum major effect
-

TGstation contributors updated:

+

Sirich96 and Dennok (ported by Ghommie) updated:

    -
  • Nukeop eshields are now buyable. tgstation/tgstation#39025
  • -
  • Staff of storms now has admin logging. tgstation/tgstation#39011
  • -
  • Fixed a couple of inconsistencies in the uplink descriptions of SMGs and SMG ammo. tgstation/tgstation#38980
  • -
  • Fixed blob victory. tgstation/tgstation#38988
  • -
  • You can now un-ignore notifications you've clicked "never this round" on, and more. tgstation/tgstation#38990
  • -
  • Fixes a weird bug with timers. tgstation/tgstation#38994
  • -
  • (tgstation/tgstation#40043) - Beam rifles no longer open lockers
  • -
  • (tgstation/tgstation#40061) - Mobs can no longer get stuck at min/max body temperature
  • -
  • (tgstation/tgstation#40041) - Pictures of asses are now properly sized
  • -
  • (tgstation/tgstation#40084) - The lastattacker var now includes unarmed attacks
  • -
  • (tgstation/tgstation#39968) - Plastic golems can no longer ventcrawl with items in their pockets
  • -
  • (tgstation/tgstation#39885) - You can no longer crash the server by overcharging energy guns.
  • +
  • Added new Teleporter Station sprites
  • +
  • Added teleport station calibration animation.
-

Thunder12345 updated:

+

Sishen1542 updated:

    -
  • Added a colour picker component for use with circuits.
  • +
  • Pentetic Jelly, new chemical made through mixing 1:1 slime jelly and pentetic acid.
  • +
  • Anatomic panacea now gives pent jelly instead of pent acid. Medbeams now have TRUE tox healing to heal TOXINLOVER as well.
  • +
  • Changed bible heal proc, halving the healed damage and increasing brain damage 5x in exchange for a much wider array of items to protect you from it.
  • +
  • Moved around some chems from emag list into upgrades.
  • +
  • Added some fun chems to dispensers.
  • +
  • Gave dispensers old tg functionality.
  • +
  • Leather, cardboard, bronze & bone golems!
  • +
  • Bone hurting juice and interactions with plasmamen, skeletons & bone golems!
  • +
  • Ported addition of new CAS cards.
  • +
  • Ported a fix for CAS.
  • +
  • Added the ability to alter your genitalia as a slimeperson more than addition/removal.
  • +
  • fixed genitalia removal proc in alter form.
  • +
  • Ported the inability for non-station AI to interact with station z-level.
  • +
  • HoS mains can now peacefully sleep in their office.
  • +
  • Podpeople now have customization options.
  • +
  • Removed the human check for cult conversion of captain/chaplain minds.
  • +
  • Roundstart carbon jetpacks now have full_speed FALSE.
  • +
  • Adds plasteel to medical and security techfabs.
  • +
  • Added public autolathes to all maps.
  • +
  • density = 0
  • +
  • hugboxing mining loot
  • +
  • ling blade now has 40 armor pen
  • +
  • fun
  • +
  • bad stuff
  • +
  • mech bad
  • +
  • rebalances strained muscles
  • +
  • added in the assistant response team
  • +
  • fixed up access on the centcom hangar button
  • +
  • storage tweaks for belt briefcase
  • +
  • codersprite for belt briefcase
  • +
  • added pharaoh gear to chaplain vendor
  • +
  • fixed typos in pharaoh items
  • +
  • made laser minigun not shitcode and also craftable
  • +
  • added new fire sounds for the laser minigun
  • +
  • holy lasrifle, hypertool, divine lightblade, and blessed baseball bat. Four new holy weapons!
  • +
  • stamina and force tweaks for most holy weapons.
  • +
  • prayer beads no longer deconvert after a 10 second timer, now just inject holy water for delayed effect
  • +
  • cultist runes are now destroyed with a bible or a null rod
  • +
  • bo-staff now functions as a nerfed sleepy carp staff
  • +
  • fixed kevinz code to add in non-null rod child items as holy weapons
  • +
  • fixing chems for strained muscles
  • +
  • narsie no longer asks for consent
  • +
  • removed reflect from divine lightblade
  • +
  • teleporting a locker is bad
-

Time-Green updated:

+

Sishen1542, original by @Tlaltecuhtli updated:

    -
  • Soda is no longer intangible to the laws of physics
  • +
  • alt clicking the emitter now rotates it instead of only flipping
  • +
+

Sishen1542, original by @zxaber updated:

+
    +
  • Utility mechs no longer automatically get beacons.
  • +
  • Tracking beacons no longer delete themselves when EMPing a mech, and instead have a ten-second cooldown in-between EMPs. They also now do heavy EMP damage rather than light.
  • +
  • Mechs that take EMP damage lose the use of their weapons and equipment temporarily. Movement and abilities are not effected.
  • +
  • Mechs taking EMP damage no longer roll for a random malfunction.
  • +
+

Sishen1542, original by Arkatos updated:

+
    +
  • Action buttons can now be dragged onto each other to swap places
  • +
+

Sishen1542, original by NewSta updated:

+
    +
  • updated the miasma canister sprites
  • +
+

Sishen1542, original by Skoglol updated:

+
    +
  • Heaters/freezers now support ctrl clicking to turn on and alt clicking to min/max target temperature.
  • +
+

Sishen1542, original by XDTM updated:

+
    +
  • Using the wrong surgery tool during surgery no longer attacks the patient, if on help or disarm intent.
  • +
  • Surgery steps are now shown in detail only to the surgeon and anyone standing adjacent to them; the patient and people watching from further away get a more vague/ambiguous description.
  • +
+

Skoglol updated:

+
    +
  • You can now alt click storage (bags, boxes, etc) to open it.
  • +
+

Skully) updated:

+
    +
  • Nudity Permit, a completely invisible uniform that still has pockets and such, to loadout options. It is more or less a direct port from the RP server.
  • +
+

SkullyRoberts updated:

+
    +
  • Penis autosurgeon as rare maint loot.
  • +
+

TerraGS / Skoglol updated:

+
    +
  • Adds toggleable light and blinking charge indicator to kinetic crusher
  • +
  • Kinetic crusher can now be one-hand carried. You'll still need two hand to use it.
  • +
+

Thalpy updated:

+
    +
  • fixes message_admins in SDZF
  • +
  • Alkaline buffer recipe so people don't get grumpy and expanded the pH range
  • +
  • fixes buffers
  • +
  • fixes broken compiler because a var changed name
  • +
  • impure travis var anger
  • +
  • Added the ability to dispense smartdarts from the chemmaster.
  • +
  • Tweaks medolier amd chembags to allow quickpickups of smartdarts, lets the latter soak in beakers (on the floor)
  • +
  • fixed rounding errors with smartdart mixes.
  • +
  • added modified smartdartgun icon.
  • +
  • 1. Kev asked that there were no antag datums used, so that's been changed. 2. Tricks can no longer turn someone into a dullahan, instead you have to spend candies to get that. I felt it was too mean to turn people into that, I didn't realise you couldn't revert it. 3. Barth will no longer as for impossible items. 4. Barth will no longer as for the same item multiple times. 5. Barth will now accept broader things, rather than asking for something, when meaning something specific. 6. Jacq will now no longer poof off the z level. 7. Jacq will (hopefully) stop spooking the AI by teleporting into there 8. Jacq will now try to teleport to a location with someone nearby. 9. Barth will tell you where Jacq is currently when you speak to him. 10. You can trade 2 candies for a Jacq Tracq (tm) 11. Jacq should stop getting mad and cover the station in gas when killed. 12. Fixed Jacq not singing (the link died). 13. Slightly changed wording so that people will hopefully get to know her. 14. Jacq no longer disappears when you're getting to know her.

Toriate updated:

    -
  • It appears that ancient pieces of armor have wound up on the open market! These armors have degraded beyond usefulness. Grab one now in the loadout!
  • -
  • added flak jacket and M1 Helmet sprites
  • -
  • Gives the flak helmet a tiny storage compartment
  • -
  • Made the flak helmet even weaker against acid and fire so it crumbles into dust easier
  • -
  • Added the Corporate Uniform and the Silver Bike Horn
  • -
  • added sprites for the Corporate Uniform and Silver Bike Horn
  • +
  • All regular crates are now 3/4ths ToriCrates iamgeadd: Unused plastic crate sprite added
  • +
  • Blood freezer crates now have unique sprites.
  • +
  • RPD now has inhands
  • +
  • New sprites for RCDs and RPDs, inhands included
  • +
  • Updated the sprites of all the regular crates
  • +
+

Trilbyspaceclone updated:

+
    +
  • cakes!
  • +
  • Made some sprites! -Love them really came out well
  • +
  • new economics
  • +
  • cargo and robotics relationships
  • +
  • unbalanced something
  • +
  • fixed a maybe oversight
  • +
  • Fun
  • +
  • costs of suit voucher
  • +
  • Unblances miner vender
  • +
  • spare cheaper brute kit
  • +
  • harm from hentie
  • +
  • rebalanced goliaths stun to be less auto death
  • +
  • Armor to blob shields
  • +
  • block weaken state to 70% from 75%
  • +
  • restores the deathriplys missing armor
  • +
  • new lockable colalr
  • +
  • armor
  • +
  • missing hopes and dreams
  • +
  • orgized the weapon file to be more cat brain friendly
  • +
  • This means sprite right?
  • +
  • Many engi flags on non-engi things
  • +
  • changed some code to be organized at a glance
  • +
  • 25% < --- 50% For NPC blocking bullshit ided: Yes
  • +
  • mag gun uses cells
  • +
  • kev things their to op
  • +
  • syndicate phobia
  • +
  • other phobia's
  • +
  • laser carbine
  • +
  • makes collars only locked via key
  • +
  • charging
  • +
  • Combat inducers for COMBAT!
  • +
  • made it look nice
  • +
  • golden swag boxes
  • +
  • Crafting suitcases
  • +
  • more bountys
  • +
  • Nitryl bounty
  • +
  • better stocks
  • +
  • more evil blood fluff text
  • +
  • Added more mime names
  • +
  • replaces a sink with a autolathen
  • +
  • 2 -> 3
  • +
  • MASON SUIT!
  • +
  • adds the sec jetpack to sec hardsuit storge
  • +
  • Added a few jet packs to the space queens men
  • +
  • volume of jet packs
  • +
  • Bad Idea
  • +
  • bio mass meat
  • +
  • more box options
  • +
  • a lack of replaceable boxes
  • +
  • clothing needing a emag
  • +
  • 4 - > 5
  • +
  • 5->6
  • +
  • 4tc - > 2tc
  • +
  • mulligan costs 4 - > 3
  • +
  • Tuberculosis 12tc - > 8tc
  • +
  • 15 - >10
  • +
  • both bags have the same name
  • +
  • 5 - > 2
  • +
  • 3 -> 1
  • +
  • 2 < - 4
  • +
  • 1->2 and ultra
  • +
  • shield + crafting
  • +
  • hierophant movment and melee attack
  • +
  • More plushies
  • +
  • attack verbs and descs
  • +
  • bone satchles
  • +
  • rebalanced stunslugs
  • +
  • colored boxes, and more types
  • +
  • harm and such
  • +
  • item classes
  • +
  • resonators being so shitty
  • +
  • Game braking bug critical: bug fix
  • +
  • items to syndie surgery bags
  • +
  • SNOW CONES
  • +
  • carts buy-able cargo
  • +
  • selling/time to craft
  • +
  • crafting problems, and red stamp exsplote
  • +
  • gives paper work sprites that are nicer
  • +
  • origami
  • +
  • gang tower shield
  • +
  • costs of boots
  • +
  • organ box
  • +
  • Medical breifcaseses
  • +
  • New cargo crate for tech-slugs!
  • +
  • Ammo to each fitting crate
  • +
  • Cat-code
  • +
  • fixed a few typos - Again my bad
  • +
  • fixed airless place
  • +
  • baklava
  • +
  • makes uplink kits more usefull for the risk
  • +
  • Changes some files to be better
  • +
  • As all things are not
  • +
  • fixing cat code that dosnt work, my bad
  • +
  • Arcades stealing from noodles
  • +
  • rapier
  • +
  • speedy quirk
  • +
  • Ironic
  • +
  • A bunch of minor issues with xenobiology are no more!
  • +
  • I didn't code it right it in the first place
  • +
  • new nodes
  • +
  • points and node gear
  • +
  • stuff n things
  • +
  • gear harness and a conflict merg
  • +
  • Nudity permits
  • +
  • nothing
  • +
  • Donner item
  • +
  • Luna's Gauntlets
  • +
  • rebalanced lingy dingy powery gamey
  • +
  • melee and block harm
  • +
  • sprites*
  • +
  • holster doing holster things
  • +
  • Donor item
  • +
  • Joy, Happiness, Honk
  • +
  • small mix up in terms
  • +
  • Promiscuous Organs crate, pills to lewd crate and testicles to maints
  • +
  • Made unholy water healtoxinlover
  • +
  • Zelus Oil, brass flasks
  • +
  • Added new chairs
  • +
  • Bugtesting zone upgrades for easy bug/game testing
  • +
  • more cargo to cargo
  • +
  • More loadout gear
  • +
  • Poojawa power creep
  • +
  • Not my work not my credit
  • +
  • Emitter gun
  • +
  • suit storage nulling anti magic item protection
  • +
  • rebalanced steal goals restrictions
  • +
  • fixed a few misleading goals
  • +
  • ports a fix
  • +
  • oversight in benos
  • +
  • QM rooms not getting Key Aunths
  • +
  • new books/cooking
  • +
  • less bad wording in slime
  • +
  • strawbarries and such
  • +
  • amazing things like tea of catnip, catnip and plant
  • +
  • glue uplinks
  • +
  • RPDs to drones
  • +
  • Armor and such
  • +
  • flavor
  • +
  • maybe a runtime
  • +
  • chameloen clothing
  • +
  • tons of peach themed items
  • +
  • caje
  • +
  • New book - Unused
  • +
  • organized files
  • +
  • redid brass tools to look better*
  • +
  • /cursed from a item path
  • +
  • Almost all clothing and most weaponds can be sold for pocket change
  • +
  • Cargo costs of packets and selling
  • +
  • Lowered mat selling as well as most if not all bountys
  • +
  • Adds more files for easy finding/adding in packs
  • +
  • oops not being blacklisted
  • +
  • removes some cit-modular things
  • +
  • Missing sprites with bad ones
  • +
  • emag charge amount
  • +
  • Reebe QoL aka creep in gear
  • +
  • ???
  • +
  • HEY MADE THE REEBEEE WAY SMALLER - Making it less lagging hopefully
  • +
  • Surgerys and spays in bags
  • +
  • earthbloods stam regen
  • +
  • Red to Blue/Black crosses as questioned by Bhijn
  • +
  • clean bot not cleaning basic cleanables
  • +
  • new traitor bundle
  • +
  • trash
  • +
  • eye bleed :add: misstakes
  • +
  • Removed old things!
  • +
  • UI memes
  • +
  • Blue space blood bag
  • +
  • blood costs
  • +
  • Beebal and Honeybalm plants
  • +
  • Costs of crates and paperwork
  • +
  • Adds 2 more crates hacked only
  • +
  • Added two seed packets of cotten to ash walkers base

Tupinambis updated:

    -
  • Removes the tesla coils from engineering secure storage, and places them within the engine room, functional upon being wrenched down. (Arranged in the common method of three coils on the left and right sides.) -Reduces the width of engineering secure storage and its blast door by one tile. The machinery within has been rearranged in order to make the most commonly used machinery the most accessible.
  • -
  • Replaces the blood-red hardsuit in Deep Storage with a mining EVA hardsuit, and an included oxygen jetpack.
  • -
  • Adds a replacement to the old lavaland xeno ruins in the form of lavaland_surface_alien_nest.dmm An image of which is shown below. (The area layer is disabled for visibility.) ![hive](https://user-images.githubusercontent.com/42078130/44291327-43df0d00-a243-11e8-9e72-ba8f81d31370.PNG) ![hive2](https://user-images.githubusercontent.com/42078130/44291330-47729400-a243-11e8-998d-660063fa9f41.PNG) -This replacement is designed to act as a sort of raid, with the queen as the raid boss. The most notable loot includes the corpse of a drone, security bio armor, a bone axe, some basic syndicate equipment, and a syringe containing alien microbes. All references to the old lavaland xeno ruins have been replaced with references to the new map file.
  • -
  • New corpse spawners for alien queens and drones.
  • -
  • New syringe containing the alien microbe reagent.
  • -
  • Removed the currently unused lavaland_surface_xeno_nest.dmm map file, and its references.
  • -
  • Added an experimental hard suit to toxins bomb test room on Box.
  • -
  • Increased the size of the toxins bomb test room, moved the telescreen, and added chairs on Box.
  • -
  • Moved some pipes out of the way on Box and Meta.
  • -
  • Two air pumps have been added to the toxins lab on Pubby and Meta. -The following changes apply to Box, Meta, and Pubby:
  • -
  • Unbolts the toxin burn chamber doors on round start.
  • -
  • Unlocks the toxins lab air alarm on round start.
  • -
  • When spawned as a nuclear operative, you keep your characters race instead of being changed into a human. Plasmamen are an exception to this change.
  • -
  • By popular request, makes the Head of Security spawn with a telebaton instead of a stun baton.
  • +
  • Changes large parts of the nuclear operative base, including the addition of a new barracks where the ops spawn, a personal bedroom for the leader, the rearrangement of numerous rooms, some added fluff, a slightly more roomy bar, a larger hanger, a kitchen, and various other small changes to make the base feel just a bit more alive. This was achieved by completely redoing the base from scratch so there was room to work with, as a result potential bugs could crop, please do report them.
  • +
  • The drop pod chamber was airless. This seems like an oversight, and has been filled with air.
  • +
  • Cryo Sleepers have been added to Perma on all four maps in rotation. the bathroom windoor and window have switched places to accommodate this change.
  • +
  • You can now choose the pre-exisiting "loader" sprite as an appearance for your engineering borg.
  • +
  • A vast majority of references to humans within ion laws have been replaced with crew. AI modules have received similar treatment
  • +
  • Adds a syndicate themed emergency shuttle that costs 20000 credits, and can ONLY be purchased when the communications console is emagged. This shuttle features a fully stocked medbay with self serve sleepers, plenty of room that can fit highpop, a fully featured bridge, ballistic auto turrets, and an armory, EVA prep room, and bar, all of which are only accessible by either an agent ID or through hacking. +-EVA prep features 2 syndicate hardsuits and 3 syndicate softsuits. -Armory features 5 stetchkins with spare ammo, and 2 riot c-20r's. +![image](https://user-images.githubusercontent.com/42078130/48306551-0b786380-e500-11e8-821a-e59ac4eee0ea.png)
  • +
  • Lone operatives no longer spawn with a syndicate hardsuit and a bulldog. They instead spawn with a black and red EVA suit and an extra 15 TC (40 in total) ![image](https://user-images.githubusercontent.com/42078130/48308065-c44e9a80-e520-11e8-8d60-cec8ff23d61d.png)
  • +
  • The tesla engine has been replaced with a supermatter engine, and pubby engineering has been redesigned to accommodate this change.
  • +
  • The tesla engine has been completely removed along with any related components
  • +
  • RD and R&D vents are now actually connected to the air distribution.
  • +
  • New engineering hivebot. Has a bit more health but otherwise aesthetic.
  • +
  • Oldstation no longer has an excessive amounts of hivebots within it, however the bots that remain are individually a larger threat.
  • +
  • Hivebots are now more robust, with a higher melee damage output and health.
  • +
  • Remove this ruin from the blacklist or this PR is pointless.
  • +
  • the air injectors for the SM engine waste and for toxins waste should now receive power
  • +
  • Adds a mixed clothing closet to Deltastation Dorms.
  • +
  • Adds a bottle of unstable mutagen to Botany, on account of its distance from Chemistry.
  • +
  • Omegastation should no longer have any turf with missing textures, as those spots have been replaced with playing covered in a sandy turf decal.
  • +
  • Removed all living eggs from the xeno ruin because people self antag. Honk.
  • +
  • Adds a new security level between Blue and Red (Amber). The shuttle call time at this level is 8 minutes.
  • +
  • Blue security level now has a shuttle call time of 12 minutes.
  • +
  • The security level increase/decrease texts have been modified to accommodate the change.
  • +
  • Adds a code Amber sprite for the fire alarms
  • +
  • Removed the plushes from the toy crate, giving them their own.
  • +
  • Plushes are now less likely to spawn out of arcades
  • +
  • Removes a moth plush from the game.
  • +
  • added a small fire delay (3 ticks) to automatic shotguns
  • +
  • Reduced buckshot brute damage by 20%. (12.5 -> 10 brute per pellet) (75 -> 60 brute at close range)
  • +
  • Reduced rubbershot stamina damage by 40% (25 -> 15 stamina per pellet) (150 -> 90 stamina at close range)
  • +
  • Reduced beanbag stamina damage by 12.5% (80 -> 70 stamina per shot)
  • +
  • Engivend RCDs now vend upgraded RCDs
  • +
  • Beautified and stylized the cyborg HUD sprites, animated and cleaned up some of the old, modernized APC hacking and Doomsday sprites,
  • +
  • moved cyborg language select above the radio icon, instead of above the picture icon.
-

Werebear updated:

+

Twaticus & Poojawa updated:

    -
  • Seven new holochassis options for pAIs and two new display images for pAIs.
  • +
  • Added new carpets from TauCetiStation!
  • +
  • More Liquid carpet chemicals, mix carpet with certain reagents to get different colors!
  • +
  • Tablets have a better means of being assembled codewise. nothing's different on player end.
-

Wilchen updated:

+

UntoldTactics updated:

    -
  • Removed box of firing pins from rd's locker
  • +
  • Rewords the click here prompt given when an attempted conversion is done on an offer rune (for blood cult)
  • +
+

UristMcAstronaut updated:

+
    +
  • allows a pai to activate its holoform while in a pai connector without getting derped.
  • +
+

Useroth updated:

+
    +
  • the collars are now aware of their proper overlay sprites
  • +
  • The space hotel dorms are now properly boltable with the buttons inside.
  • +
  • Makes the booze-o-mat hacked by default. Alternative to https://github.com/Citadel-Station-13/Citadel-Station-13/pull/8350.
  • +
  • After the PR which raised the ammo capacity of said magazines, due to the code, they ended up with an invalid icon state. Fixed through changing the icon state name in the icon file.
  • +
  • Taeclowndo shoes which grant the four following abilities: - Conjuring a cream pie right into their hand. Every three seconds. - Making a banana peel appear out of thin air at the tile of the clown's choice. Every ten seconds. - Mega HoNk. A touch-ranged, very small AOE ability, with effect equal to being honked by a Honkerblast on a clown mech, with the effects halved for anyone who isn't its direct target. Every ten seconds. - Bluespace Banana Pie. You don't throw this one... not right away at least. This baby can fit an entire body inside. Good for disposal of evidence. 25 second-long action, 45 second cooldown. Also produces a "[victim's name] cream pie". The body drops out of the pie if you splat it somewhere or destroy the pie. If you eat it, it will chestburst out of you a'la monkey cube. +It's a 14 TC item for traitor clowns and a 12 TC item for clown-ops.
  • +
  • The tentacle now directly puts the item in your hands, instead of toggling your throwing and tossing it at you. Tentacles suffer from ranged inaccuracies as if they were guns, I think it's enough of an inconvenience.
  • +
  • Makes the netting much less clunky. If there's only one target you can net while you press the button, it will just net that target instead of bringing up a list of mobs.
  • +
  • Energy nets now revive and fully heal capturees (even dead ones, after calculating points). If someone's got a scan and wants to get cloned, they can always kill themselves still.
  • +
  • Capture points are added on capture, rather than round-end, so it no longer matters whether your captures kill themselves in the holding facility or not.
  • +
  • Makes the nets a bit more sturdy. (previously it took mere two welder hits to break one)
  • +
  • Makes stungloves actually stun people (currently comparably with stunbatons, adjustable). Because electrocute_act(25, H) did fuck all, stunwise, and on top of that, people in insulated gloves were completely unaffected.
  • +
  • Reduced the stunglove electrocute_act value to 15 due to above. Could possibly be lowered further.
  • +
+

Weblure updated:

+
    +
  • Added the relevant Beepsky animations from TG's aibots.dmi file to Cit's aibots.dmi file.
  • +
+

WhiteHusky updated:

+
    +
  • Sleepers now show blood level and type.
  • +
  • Changed the styling of arousal messages to use pink-ish colors.
  • +
  • The orgasm moodlet message new-lines properly.
  • +
  • Flavor text with special characters will not get partially unescaped.
  • +
  • Canceling when setting flavor text does not clear it anymore.
  • +
  • Checking yourself shouldn't freeze the client anymore.

XDTM updated:

    -
  • Fixed anti-magic not working at all.
  • -
  • Diseases now properly lose scan invisibility if their stealth drops below the required threshold.
  • -
  • Coldproof mobs can now be cooled down, but are still immune to the negative effects of cold.
  • -
  • This also fixes some edge cases (freezing beams) where mobs could be cooled down and damaged despite cold resistance.
  • -
  • Androids are now immune to radiation.
  • -
-

Xhuis updated:

-
    -
  • Character traits are now called character quirks. Functionality remains unaffected.
  • -
-

Zxaber updated:

-
    -
  • Cyborgs can wear more hats now.
  • -
-

and Fel updated:

-
    -
  • New chairs are on most shuttles! Finally, you can relax in style while escaping a metal death trap.
  • -
-

armhulen updated:

-
    -
  • chameleon guns are disabled for breaking the server
  • -
-

cacogen updated:

-
    -
  • You can now see what other people are eating or drinking.
  • -
  • Borg shaker can now synthesise milk, lemon juice, banana juice and coffee
  • -
  • Renamed drinks no longer revert to their original name when their reagents change
  • -
-

cyclowns updated:

-
    -
  • Fires no longer flicker back and forth like crazy
  • -
  • Fusion has been re-enabled! It works similarly to before, but with some slight modification.
  • -
  • Fusion now requires huge amounts of plasma and tritium, as well as a very high thermal energy and temperature to start. There are several tiers of fusion that cause different benefits and effects.
  • -
  • The fusion power of most gases has been tweaked to allow for more interesting interactions.
  • -
  • BZ now takes N2O and plasma to create, rather than tritium and plasma.
  • -
  • Fusion no longer delivers server-crashingly large amounts of radiation and stationwide EMPs.
  • -
-

deathride58 updated:

-
    -
  • (Only visible on 512) Stamina crit will now result in the mob's sprite subtly darkening around its edges.
  • -
  • Added a tiny reference item to a year-old weeby game. If you're a traitor, you can find this item in the "badassery" section of the uplink. It's free, and you can order up to 4 of them! The effects of this item are only visible on 512.
  • -
  • Added a component signal for toggling combat mode on/off.
  • -
  • The cleaving saw now deals less staminaloss to its user while inactive.
  • -
  • You can now make use of custom say verbs with the [say verb*message] format
  • -
  • Yelling will now echo and penetrate walls
  • -
  • Distant voices now have smaller text
  • -
  • You can now see the amount of charges an emag has by examining it
  • -
  • Emags now make a quiet noise when they're close to running out of charges.
  • -
  • Emags are no longer irreversibly destroyed upon running out of charges.
  • -
  • Traitors can now purchase emag recharge devices for 2 TC. They have five extra charges each, and can be found in the devices and tools section of the uplink.. There's no cap on the amount of charges a single emag can have, though do be aware that upstream spaghetti code makes it easy to waste charges.
  • -
  • Small emag flavortext changes here and there
  • -
  • The warden's particle defender now deals less staminaloss when in stun mode.
  • -
  • "code [alert level]" has been changed to "[alert level] alert" on the hub entry.
  • -
  • The hub entry now displays the current map.
  • -
  • Lavaland is no longer fullbright. We have memory to spare.
  • -
  • Adds the wheelofsalt command to TGS3. Spin the wheel of salt to find out what the Citadel Station 13 players are salting about today!
  • -
  • You can now slam or slap your hands onto tables by right clicking them in combat mode.
  • -
  • Non-admins can no longer use LOOC while dead, unconscious, in crit, or while ghosting.
  • -
  • The syndicate mask available in the uplink will now inject you with a chem that cuts your click delay in half and increases your stamina regeneration, when you enter combat mode. The mask has a five minute cooldown between adrenaline injections.
  • -
  • Dogborgs will now reduce firestacks when they use their tongue to lick someone's face.
  • -
  • The repo compiles again
  • -
  • The flag cape donor item should render properly now.
  • -
  • The default amount of z-levels reserved specifically for space ruin generation has been reduced from 7 to 1
  • -
  • Items now spawn on top of, rather than inside, closets and other storage structures
  • -
  • Jukeboxes now have realtime directional audio, complete with occlusion when you're far away or behind a wall.
  • -
  • More than one jukebox can play a song at a time now. Have up to 5 jukeboxes playing at once!
  • -
  • Devs can now control the wet and dry channels of sounds played via playsound_local. The new envwet and envdry arguments will control the volume of the wet and dry track, respectively.
  • -
  • Jukeboxes have been turned into a subsystem. Track initialization, audio playing, etc, are now handled via SSJukeboxes instead of via the jukebox object procs.
  • -
  • Jukebox tracks now require an additional ID field at the end of their name. This will make it easier to add jukebox-style objects that are only capable of playing specific songs, without worrying about copyright issues.
  • -
  • Added Raiq's boombox as a donor item
  • -
  • You can now manipulate tails, ears, body markings, mutant colors, and taur types via DNA console!
  • -
  • Reduced the exponent on gas tank ruptures. TTVs and suicide onetanks that were previously 20dev are now approximately 9.6dev. Let's see the actual toxins nerds adapt!
  • -
  • When a custom say verb message is spoken without any actual words, the text will render without a `, ""` at the end of it.
  • -
  • The combat rework's training wheels have been removed. Knockdowns no longer have any noticeable stun. This indirectly means stunbatons and tasers will always deal their full stamloss on hit.
  • -
  • The stamloss required for boxing gloves to throw a knockout punch has been increased from 50 to 100.
  • -
  • You can now prime the grenade on bombspears by using them in your hand. The wield hotkey is moved to combat mode rightclick while a spear has a grenade on it. This is explained in the examine text.
  • -
  • Bombspears no longer instantly explode on impact when thrown. They now have to be primed to explode when thrown.
  • -
  • Bombspears now have 90% embed chance.
  • -
  • If an embedded item is normal sized or larger, you can take it out instantly by pressing resist.
  • -
  • Embedded items are now much harder to pull out the smaller they are, rather than the other way around. It's much easier to rip out a sword from your chest than it is a shard of glass in your face.
  • -
  • The message you get when you get bounced by the PB is now a little more clear about what you need to do to gain access to the server.
  • -
  • The jukebox now falls off over a greater distance. You can now actually hear the jukebox while sitting in a far corner of the bar, or while passing through the main hallways.
  • -
  • Added antag OOC. This is disabled by default, but you can access it with the "AOOC" verb as an antagonist when an administrator enables it.
  • -
  • LOOC now supports emojis
  • -
  • Deadchat and asay will now both render emojis! :snya:
  • -
  • The disarm attack on EMP'd defibs now has an interruptible 1 second timer before it actually lands.
  • -
  • The stamina buffer now only takes 1 second to start regenerating.
  • -
  • Disablers have had their damage reduced from 36 stamloss to 24 stamloss, increasing their shots to stamcrit from 4 to 6.
  • -
  • Tasers have had their damage increased from 55 stamloss total to 61 stamloss total. Shots required to stamcrit are unaffected.
  • -
  • Introducing the Kitchen Gun (TM)! Say goodbye to daily stains and dirty surfaces with Kitchen Gun (TM)! Just five shots from Kitchen Gun (TM), and it'll sparkle like new! Includes two extra ammunition clips for the low, low price of just 10 TC! Laser sight and night vision accessories sold separately! Magazines can be purchased individually for 1 TC a pop!
  • -
  • Active turf processing is now its own subsystem.
  • -
  • Ports tgstation/tgstation#39287 - You can now configure how fast a mob fires, and how many shots they fire in a single burst
  • -
  • When you spawn as a miner, you'll get text clarifying your job description. You might not think it's necessary, but believe me, it is.
  • -
  • mushroom people are now roundstart on live
  • -
  • The geargroupID var of loadout entries can now be a list rather than a string. GeargroupID changes are additive when multiple are defined in a single loadout entry.
  • -
-

deathride58 (Original PR by Basilman/Militaires) updated:

-
    -
  • Ported TGstation's Agent Stealth Box! You can the implanter in the syndicate uplink for 8 TC. Credit goes to Basilman/Militaires. This port includes minor adjustments, see the GitHub for details.
  • -
-

hatterhat after being yelled at by kevinz updated:

-
    -
  • deletes an entire line that might fix flash icons idk blame him if it gets worse
  • -
-

iksyp updated:

-
    -
  • stacking machines and their consoles no longer dissapear into the shadow realm when broken
  • -
  • you can link the stacking machine and its console by using a multitool
  • -
  • Ever since the great emotion purge of 2558, people were able to work at top efficiency, even while starving to death. This is no longer the case, Nanotrasen Scientists say.
  • -
  • Hunger slowdown only applies if mood is disabled in the config.
  • -
-

imsxz updated:

-
    -
  • Using mayhem bottles and going under their effects is now logged.
  • -
-

izzyinbox updated:

-
    -
  • Added an integrated circuit part that interacts with the arousal system
  • -
  • changes the admin-pm input box from single line to multi-line
  • -
  • Tennis balls now equip and show up in the correct slots
  • -
  • Adds option in the hide/expose genitals verb to hide genitals even without clothes
  • -
-

kevinz000 updated:

-
    -
  • Cameras now can take pictures up to 7x7. Alt click them to change their width/height from the default 3x3.
  • -
  • Photos are now logged to disk, assuming the host enabled the configuration option
  • -
  • If the above is enabled, albums/frames can now have their persistence IDs set in variables to allow for PHOTO PERSISTENCE
  • -
  • Every head of staff gets a unique album with its own ID in their locker. Let your successors know about your accomplishments, screwups, and everything in between!
  • -
  • All of this works or should work with newcasters/pdas/etc etc
  • -
  • Photo taking now clones the area into transit space and then operates on it, instead of on the spot, in theory making photographing things more accurate?
  • -
-

nicc updated:

-
    -
  • no more dark locker corner woo
  • -
  • area alterations
  • -
  • escape pod
  • -
  • see above
  • -
  • adds windoor to the plastic flaps in the atmos lobby
  • -
-

ninjanomnom updated:

-
    -
  • A plush that knows too much has found its way to the bus ruin.
  • -
-

resistor updated:

-
    -
  • Added circuit labels! You can now customize the description of your assemblies.
  • -
-

slate3 updated:

-
    -
  • ported a new alternative sprite for engineering borgs, mr. handy
  • -
  • ported a new alternative sprite for security borgs, a spider-like walker
  • -
  • ported a new alternative sprite for medical borgs, an eyebot
  • -
-

steamport updated:

-
    -
  • Borgs/AIs can now toggle rad collectors
  • -
-

ursamedium updated:

-
    -
  • slapping / slamming hands on tables now uses appropriate pronouns
  • -
  • crow pAI is no longer invisible while resting
  • -
-

yenwodyah updated:

-
    -
  • A few virus threshold effects should work now
  • -
-

yorii updated:

-
    -
  • Fixed the smartfridges to be in line with all other machines and puts the released item in your hand.
  • -
-

yorpan updated:

-
    -
  • Brain damage makes you say one more thing.
  • -
- -

04 September 2018

-

Denton updated:

-
    -
  • Mech construction messages no longer incorrectly mention high-tier stock parts.
  • -
  • Added a nanite lab to Deltastation! It's at the old EXPERIMENTOR lab.
  • -
  • Delta: Moved the Xenobiology disposals bin to be less obstructive. Added two sets of insulated gloves to Engineering.
  • -
  • Delta: Fixed scientists not having maintenance access near the circuitry lab and toxins launch chamber.
  • -
-

Shdorsh updated:

-
    -
  • Made all the extinguishers use less sleep and spawn procs
  • -
- -

03 September 2018

-

Cdey78 (Ported by Floyd / Qustinnus) updated:

-
    -
  • AI can now think
  • -
  • New OOC emote: :thinking:!
  • -
-

Naksu updated:

-
    -
  • a new admin secret has been added to create a customized portal storm
  • -
-

Shdorsh updated:

-
    -
  • Makes it possible to create circuits that can get an item loaded into them while they are in an assembly and the assembly is open.
  • -
  • Optimized electronic assemblies also.
  • -
  • A bug pertaining putting batteries in assemblies
  • -
-

Skoglol updated:

-
    -
  • Eggplant and egg-plant seeds now have different names and plant names.
  • -
-

XDTM updated:

-
    -
  • Fixed nanite cloud storage not allowing uploads.
  • -
-

octareenroon91 updated:

-
    -
  • Supermatter more likely to log fingerprintslast when it consumes any object.
  • -
- -

02 September 2018

-

Denton updated:

-
    -
  • Fixed species type names that show up on health scanners.
  • -
- -

01 September 2018

-

ElPresidentePoole updated:

-
    -
  • removes curator's fear of snakes
  • -
-

McDonald072 updated:

-
    -
  • Defibrillator nanites work properly.
  • -
-

Poojawa updated:

-
    -
  • fixed clothing vendor fedoras having Detective Fedora grade armor
  • -
-

Potato Masher updated:

-
    -
  • The color of Wooden golems should be more in line with the color of the wood used to make it.
  • -
-

WJohnston updated:

-
    -
  • Reinforced floors are now shinier.
  • -
- -

31 August 2018

-

Anonmare updated:

-
    -
  • AIs can now turn shield generators on and off again
  • -
-

Denton updated:

-
    -
  • Plastic golems can no longer vent crawl with items in their pockets.
  • -
-

Mickyan updated:

-
    -
  • Skateboards can fit in backpacks
  • -
  • Skateboards are slower by default, speed can be adjusted by alt-clicking
  • -
  • Show your support for the fine arts with these new quirks:
  • -
  • Tagger: drawing graffiti takes half as many charges off your spraycan/crayon
  • -
  • Photographer: halves the cooldown after taking a picture
  • -
  • Musician: tune instruments to temporarily give your music beneficial effects such as clearing minor debuffs and improving mood.
  • -
-

Skoglol updated:

-
    -
  • Dispensers can now add 5u to buckets, plastic beakers and metamaterial beakers, down from 10u.
  • -
  • You can now pour 5u from buckets, plastic beakers and metamaterial beakers, down from 10u.
  • -
  • Chem dispenser window width increased slightly, no longer shuffles buttons when scroll bar appears.
  • -
-

The Dreamweaver updated:

-
    -
  • Sentience Potions no longer require you to have Xenomorph toggled on in preferences and now relies on its own preference in order to be notified of open roles.
  • -
  • Split xenomorph, intelligence potions, and mind transfer potions into separate roles for more precise role management.
  • -
  • Sentience Potion Spawns and Mind Transfer Potions are now job-bannable roles.
  • -
-

Time-Green and locker sprites by MrDoomBringer updated:

-
    -
  • Reports have come in that the wizard federation has harnessed some of the ancient locker force to create a wand
  • -
-

XDTM updated:

-
    -
  • Removed the chance of spouting brain damage lines when over 60 brain damage. The dumbness trauma still has them.
  • -
  • Fixed Mechanical Repair nanites not working.
  • -
-

ninjanomnom updated:

-
    -
  • Computers are now visible even in the darkest of rooms. Comfy!
  • -
  • Because computers are now far easier to find in dark rooms their base light output has been reduced.
  • -
  • Broken components left over from the signal origin refactor should be fixed.
  • -
  • Lava isn't a safe place to throw your flammable shit anymore
  • -
  • The computer screen overlay being rotated incorrectly after construction has been fixed.
  • -
- -

28 August 2018

-

Denton updated:

-
    -
  • The 10 second anti spam cooldown of night shift lighting now works properly.
  • -
  • Added an examine message to APCs that mentions Alt-click and Ctrl-click (silicons only) behavior.
  • -
-

Garen updated:

-
    -
  • adds a signal for screwdriver_act
  • -
-

SpaceManiac updated:

-
    -
  • Multiple copies of a shuttle each get their own area instances (affects APCs and air alarms).
  • -
-

XDTM updated:

-
    -
  • The forcefield projector is now available ingame in the engineering protolathe. It can project up to 3 forcefields which act as transparent walls, and share a pool of health which is recharged over time. The projector must remain within 7 tiles of the forcefields to keep them active.
  • -
- -

26 August 2018

-

CitrusGender updated:

-
    -
  • Added note severity to [most] bans and the notes associated with them
  • -
  • Banning panel now has a severity option UI: Changed the UI of the note panel UI: Changed the UI again, added some icons, removed brackets in urls, fading out notes cannot be selected to expand the browser anymore
  • -
-

Floyd / Qustinnus (Credits to KMC for the sprites) updated:

-
    -
  • The Clown Car, your 18TC clown-only solution to asshole co-workers
  • -
  • Regular car implementation (makes it easier to add more cars if someone actually feels like adding those)
  • -
-

JJRcop updated:

-
    -
  • Asay logs show "ADMINPRIVATE: ASAY:" again instead of just "ADMINPRIVATE:"
  • -
-

Naksu updated:

-
    -
  • living and stack typecaches now use a shared instance where it makes sense, giving small memory savings
  • -
-

PKPenguin321 updated:

-
    -
  • Integrated circuit medium screens have been readded. They are now called large screens. They now only work from your hands or on the ground when you're standing on top of them (NOT from pockets, lockers, backpacks, etc).
  • -
  • Roundstart cyborgs will now be properly referred to as "it."
  • -
-

SpaceManiac updated:

-
    -
  • The shuttle manipulator now allows flying any shuttle to any port which will fit it.
  • -
  • The shuttle manipulator now allows fast-travelling shuttles with 5s remaining, down from 50s.
  • -
  • Status displays have been refactored to be cleaner and more flexible.
  • -
  • The AI dying properly updates its status displays again.
  • -
-

intrnlerr updated:

-
    -
  • Refactored nettles to be reagent_containers
  • -
-

nicbn updated:

-
    -
  • Nanotrasen shoes no longer contain Silencium. Now footsteps make noise! Sounds from Baystation.
  • -
- -

25 August 2018

-

Denton updated:

-
    -
  • Added missing export rewards for various lavaland items (tendril/megafauna/ruins) and engine parts.
  • -
  • Increased export values for emitters, PA parts, field generators and radiation collectors to match the rest of engineering exports. Reduced supermatter shard value by 1000 credits.
  • -
  • Removed export rewards for red/blue warp cubes since they're blacklisted from the cargo shuttle.
  • -
  • Added private intercoms to the confession booths of the Deltastation+Pubbystation chapels.
  • -
  • Fixed invalid radio frequencies on interrogation chamber/confession booth intercoms.
  • -
  • Anime is even more horrifying than previously discovered!
  • -
  • Added a new shuttle loan event where crew can get paid for having an active syndicate bomb delivered to cargo bay.
  • -
-

Mickyan updated:

-
    -
  • Blue polo undershirt option has been restored
  • -
  • underwear "nude" option moved to the top of the list
  • -
-

SpaceManiac updated:

-
    -
  • The map loader now supports vars to be set to lists containing non-strings.
  • -
  • Overcharging energy guns no longer crashes the server.
  • -
  • Ordering the Build Your Own Shuttle kit no longer crashes the server.
  • -
-

The Dreamweaver updated:

-
    -
  • Refactored gift code to fix a minor inefficiency.
  • -
-

XDTM updated:

-
    -
  • Fixed chest and head augmentation not working properly.
  • -
- -

23 August 2018

-

Naksu updated:

-
    -
  • Waddling is now available as a component
  • -
-

Nervere updated:

-
    -
  • re-adds the joy emoji.
  • -
-

SpaceManiac updated:

-
    -
  • The body zone selector now indicates which body part you are about to select when hovered over.
  • -
  • Transit space initializes about five seconds faster.
  • -
-

Tlaltecuhtli updated:

-
    -
  • Cyborg ion thrusters consume 1/5 of their previous power.
  • -
- -

22 August 2018

-

BlueNothing updated:

-
    -
  • Allows video camera circuits to be seen on networks other than the science cameranet.
  • -
  • Alphabetizes camera list for camera bugs, and lets camera bugs see through borg and circuit cameras.
  • -
  • Makes video camera circuits fit in tiny assemblies.
  • -
-

PKPenguin321 updated:

-
    -
  • The GPS circuit now has a 4th output, placing X,Y,Z all in a string.
  • -
  • 2 new converters: Rel to Abs, and Advanced Rel to Abs.
  • -
  • Rel to Abs takes a set of relative and a set of absolute coordinates, and converts the relative one to absolute. 1 complexity.
  • -
  • Advanced Rel to Abs takes a set of relative coordinates and converts it to absolute without the need for an already known set of absolute coordinates. 2 complexity.
  • -
-

SpaceManiac updated:

-
    -
  • Freezers and heaters which start on no longer stay visually on when you turn them off.
  • -
  • Atmospherics now initializes 93% (about 40 seconds) faster.
  • -
-

floyd updated:

-
    -
  • fixes the hunger alert appearing forever
  • -
-

intrnlerr updated:

-
    -
  • Tank temperature is no longer based on pressure
  • -
-

ninjanomnom updated:

-
    -
  • Shuttle templates now handle shuttle registration in the load rather than the shuttle manipulator. This means admin loaded shuttle templates no longer need to be manually registered.
  • -
-

oranges updated:

-
    -
  • Inventory overlay now uses a traffic light to indicate if the item can be placed in there
  • -
- -

20 August 2018

-

Basilman updated:

-
    -
  • Added gondola fur products
  • -
-

Basilman, Sprites by WJohnston updated:

-
    -
  • His Grace ascension is back, feed Him 25 people and you will unlock His full potential.
  • -
-

Denton updated:

-
    -
  • Added new destinations for the parcel tagger! You can now send packages to the Circuitry Lab, Toxins, Dormitories, Virology, Xenobiology, Law Office and the Detective's office. Viro/Xeno can only receive parcels.
  • -
  • Deltastation: Tagged parcels no longer get routed straight into the crusher. Untagged parcels also no longer get routed straight into the crusher!
  • -
  • Deltastation: Added disposals to Xenobiology that launch contents into space.
  • -
-

Epoc updated:

-
    -
  • Putting an extinguisher into a cabinet with the safety off will no longer cause it to spray first
  • -
-

Floyd / Qustinnus updated:

-
    -
  • removes useless mood events subtypes
  • -
  • fixes mood event timers not resetting when they get triggered again remove: removes the depression overlay which makes our fruit happy
  • -
-

Frosty Fridge updated:

-
    -
  • Added the Surgical Processor upgrade for medical cyborgs. Scan surgery disks or an operating computer to be able to initiate advanced procedures.
  • -
  • Cyborgs can now perform surgery steps that do not require an instrument.
  • -
  • Plastic creation reaction now properly scales with the amount of reagents; 10u = 1 sheet.
  • -
-

Garen updated:

-
    -
  • fixed using items on a circuit removing all its access(now access gained from each new item stacks)
  • -
  • adds logging for gun circuits, grabber circuits, and dragging claw circuits
  • -
  • grabbers can select what they want to drop
  • -
-

MrDoomBringer updated:

-
    -
  • The Nanotrasen Airspace Aesthetics division has shipped out a newer design of NT-Brand "Ore Silos". No new features have been added, but they certainly look much nicer!
  • -
-

Naksu updated:

-
    -
  • Having a high body temperature now increases the damage you take gradually, whether you're on fire or not. Being on fire also always increases body temperature damage
  • -
-

NewSta updated:

-
    -
  • The names of haircuts, facial hair, undershirts, underwear and socks have now been sorted and categorized
  • -
-

WJohnston updated:

-
    -
  • Remade titanium and plastitanium floors to be less of an eye strain and something mappers might actually consider using.
  • -
  • New reinforced floor sprites.
  • -
-

XDTM updated:

-
    -
  • Added programmable nanites to science!
  • -
  • Science now has a nanite chamber, a nanite program hub, a nanite cloud console and a nanite programmer.
  • -
  • From the program hub you can download nanite programs (unlocked through techwebs) to disks.
  • -
  • You can then customize their functionality and signal codes through the Nanite Programmer.
  • -
  • The nanite chamber is necesary to inject nanites into a patient, and it's also used to install/uninstall programs into a patient's nanites. A second person is required to man the console.
  • -
  • The nanite cloud console controls remote program storage; it stores program backups that nanites can be synced to through cloud IDs.
  • -
  • Nanite programs range can be either helpful or harmful; their main potential is that they can be enabled at will through the use of remotes and sensors. The potential uses are endless!
  • -
  • More detailed information is available in the wiki.
  • -
- -

18 August 2018

-

Floyd / Qustinnus updated:

-
    -
  • moves nutrition events to the mood component
  • -
-

Jared-Fogle updated:

-
    -
  • Hovering over storage slots with an item in your hand will show you first if you can put the item in.
  • -
-

XDTM updated:

-
    -
  • Fixed augmentation not working and/or giving you extra limbs
  • -
-

nicbn updated:

-
    -
  • New janitor cart sprites (by Quantum-M)
  • -
  • Dirt is smooth (by AndrewMontagne)
  • -
-

zaracka updated:

-
    -
  • You can now use certain emotes and the suicide verb while buckled, but not while stunned.
  • -
- -

17 August 2018

-

Anonmare updated:

-
    -
  • Ore silos circuit boards are now constructable
  • -
-

SpaceManiac updated:

-
    -
  • The "Map Template - Upload" verb now reports if a map uses nonexistent paths.
  • -
-

Tlaltecuhtli updated:

-
    -
  • fixes diamond drill bounty having the wrong object path
  • +
  • Added the experimental dissection surgery, which can be performed once per corpse to gain techweb points.
  • +
  • Rarer specimens are more valuable, so xenos and rare species are more efficient subjects.
  • +
  • Added two new surgery procedures, under the Experimental Surgery techweb node.
  • +
  • Ligament Hook makes it so you can attach limbs manually (like skeletons) but makes dismemberment more likely as well.
  • +
  • Ligament Reinforcement prevents dismemberment, but makes limbs easier to disable through damage.
  • +
  • Golem limbs can now be disabled, although they are still undismemberable.

YPOQ updated:

    -
  • Roundstart motion-detecting cameras work again
  • +
  • Stealth implants work again
-

intrnlerr updated:

+

Yakumo Chen updated:

    -
  • "Allows image windows sent by PDA to be closed"
  • +
  • Made stealth implant boxes flimsier
  • +
  • Autocloning now requires tier 4 parts
  • +
  • Removes autoscan
  • +
  • Scanning people now requires someone to operate the cloning computer regardless of part level.
  • +
  • removed antimagic component from holymelon
- -

15 August 2018

-

barbedwireqtip updated:

+

YakumoChen updated:

    -
  • added binoculars to the detective's locker
  • +
  • AEGs brought more in line with current radiation system. Try not to get EMP'd.
  • +
  • Jetpacks no longer last twice as long between air refills.
  • +
  • Reverted laser miniguns.
  • +
  • Adds beanbag slugs to the sec protolathe at round start
  • +
  • Brings shotgun ammo availability back in like between seclathe and autolathe.
- -

14 August 2018

-

Coolguy3289 updated:

+

Zargserg updated:

    -
  • Removed un-needed and un-used RENAME comment from game_options.txt
  • +
  • Lungs maximum toxin threshold is 0.5% of the atmosphere.
  • +
  • Permanently contaminated atmosphere does not murder crew anymore.
-

SpaceManiac updated:

+

ZeroNetAlpha updated:

    -
  • Escape Pod 1 now reaches the CentCom recovery ship again.
  • -
-

WJohn updated:

-
    -
  • Titanium walls and windows are a bit prettier looking now.
  • -
-

Zxaber updated:

-
    -
  • Airlock electronics can have now have unrestricted access by direction set. The resulting airlock will allow all traffic from the specified direction(s) while still requiring normal access otherwise. A small floor light will indicate this.
  • -
  • Medbay Cloning and Main Access doors now have unrestricted access settings set, and the buttons have been removed. All maps have been updated.
  • -
  • Airlocks now correctly update their overlays (bolts lights, emergency lights) when their power state changes.
  • -
- -

13 August 2018

-

Basilman updated:

-
    -
  • Adds Arnold pizza, dont try putting pineapple on it.
  • -
-

Denton updated:

-
    -
  • The briefcase launchpad can now hold items while in briefcase mode (just like a regular briefcase). Its remote has been disguised as a folder and now spawns pre-linked inside the briefcase.
  • -
  • Increased the briefcase launchpad's range from 3 to 8 tiles, which is roughly half the screen.
  • -
  • Added more ingame manuals that access wiki pages.
  • -
  • Added botanical and medical bounties as well as a static adamantine bar bounty.
  • -
  • Increased the syndicate document bounty's reward from 10.000 to 15.000 credits.
  • -
  • Removed the gondola hide bounty and in return, increased the export value to the old level.
  • -
  • The briefcase bounty now also accepts secure briefcases.
  • -
  • The action figure bounty now correctly spawns as an assistant type bounty.
  • -
-

Logging refactor and improvement updated:

-
    -
  • All mob-related logs now include the area name and (x,y,z) position.
  • -
  • All logs that included an (x,y,z) position now also include the area name.
  • -
  • Standardized logging format of mob/player keys.
  • -
  • Telecomms logs are now included in the individual logging panel.
  • -
  • Fixed many other cases of logs being sent to either the individual logging panel or the saved log files, but not both.
  • -
  • The logging system has been refactored to contain less redundant code and to produce more consistent logs.
  • -
-

SpaceManiac updated:

-
    -
  • The VV window loads and searches faster.
  • -
  • Fields in the VV window's header will immediately show your edits.
  • -
  • Selecting an action from the VV dropdown no longer leaves it selected after the action is done.
  • -
-

YPOQ updated:

-
    -
  • Uncalibrated teleporters can turn humans into flies again
  • -
- -

12 August 2018

-

Denton updated:

-
    -
  • Killing gondolas now lets you harvest meat from them. Eating it raw might be a bad idea.
  • -
-

Mickyan updated:

-
    -
  • Mixed drinks now give mood boosts with varying strength depending on their quality.
  • -
  • Although powerful, mood boosts from quality drinks are short lived. If you want to make the most out of them, take a sip every few minutes like a normal human being instead of downing the entire glass like the alcoholic you are.
  • -
-

Nichlas0010 updated:

-
    -
  • Admins with +admin and without +fun are no longer able to smite.
  • -
-

SpaceManiac updated:

-
    -
  • Blood and oil footprints sharing a tile no longer causes footprint decals to stack.
  • -
-

WJohnston updated:

-
    -
  • Syndicate (melee) simple animals will now move less predictably and attack twice as often, hopefully making them quite a bit more dangerous.
  • -
-

XDTM updated:

-
    -
  • Operating Computers can now sync to the research database to acquire researched surgeries, instead of requiring installation by disk.
  • -
  • You can now review the full list of unlocked surgeries from the operating computer.
  • +
  • Cleans up autoylathe code and brings it back in line with the regular autolathe.
  • +
  • Fixes autoylathe interface not updating propperly.
  • +
  • Silicons are now consumable by scrub pups.

actioninja updated:

    -
  • Added (unobtainable) Felinid Mutation Toxin.
  • +
  • APC UI autoupdates correctly
-

lyman updated:

+

bluespace bio bags updated:

    -
  • Updated the Chronosuit Helmet sprite.
  • +
  • Added bluespace bio bags and put it in the tech web, in the node applied bluespace
  • +
  • added a crappy icon for bluespace bio bags
- -

11 August 2018

-

Denton updated:

+

chef updated:

    -
  • Fixed the Beer Day date and added a few more holidays.
  • +
  • Added main hallway approach to monastery
  • +
  • Added Maintenance hallway approach, with some maint loot
  • +
  • moved the docking arm for the white ship
  • +
  • changed placement of some grills and windows
-

Jordie0608 updated:

+

coiax updated:

    -
  • Asay history is once again logged under the admin log secret.
  • -
  • Notes, messages, memos and watchlists can now have an expiry time. Once expired they are hidden like as if deleted.
  • +
  • When the nuclear disk stays stationary long enough to trigger an increase for the lone op event chance, admins will be notified every five increments.
-

SpaceManiac updated:

+

dapnee updated:

    -
  • Giant spiders can now freely pull their victims through webs.
  • +
  • Plasmaglass tables, spears, tiny plasmaglass shards
  • +
  • Plasmaglass structures now drop plasmaglass shards instead of nothing
  • +
  • Trim lines!
  • +
  • You can now make plasmaglass tables again.
-

Time-Green updated:

+

deathride58 updated:

    -
  • Circuit Boards now tell you the components required to build them on examine
  • +
  • When a gamemode fails pre_setup, it will now send a message in admin IRC and in ingame admin chat, instead of only being viewable in the logs.
  • +
  • Portal guns now spawn without firing pins.
  • +
  • Reduced the default/baseline nanite pool amount from 100 nanites to 25 nanites, and reduced the maximum nanite amount from 500 nanites to 125 nanites. The safety threshold was reduced from 50 nanites to 12 nanites.
  • +
  • Most of Lavaland's mobs are now on crack.
  • +
  • Blood drunk miners now move once every two ticks, rather than once every three ticks.
  • +
  • Bubblegum now has a maximum movement speed of once every three ticks. Buffed from the original value of once per 5 ticks.
  • +
  • The minimum time for the Colossus to attack again after firing a random shot is two deciseconds, Sped up from the original value of three seconds. The minimum time for the Colossus to attack again after performing a blast is now one second, with the original value being two seconds. The minimum time for it to attack again after performing its alternating shot pattern is now two seconds, original value being four seconds.
  • +
  • Ashdrakes now move once every five ticks, rather than once every ten ticks.
  • +
  • Heirophant chasers now move once every two ticks rather than three ticks by default, and the chaser cooldown has been reduced from 10 seconds to 5 seconds. The cooldown for the Heirophant's major attacks has also been sped up to 4 seconds from the original value of 6 seconds.
  • +
  • The Legion (megafauna) now moves at two ticks per second rather than three ticks. It additionally now actually moves faster while charging. The cooldown timer for it's special attacks has been reduced from 2 seconds to 1 second. Additionally, The Legion's view range has been decreased from 13 tiles to 10 tiles.
  • +
  • All megafauna now have a default view range of 4 tiles, decreased from the original of 5 tiles, and an aggro'd view range of 15 tiles, decreased from the original of 18
  • +
  • Goliaths now move once every ten ticks, sped up from the original value of 40(!!!) ticks. Additionally, their cooldown for their tentacles has been reduced from 12 seconds to 6 seconds. To compensate, their cooldown now only decreases by 5 deciseconds every time they're attacked, rather than 10 deciseconds, their melee damage has been reduced to 18 per hit from 25 per hit, and their vision range has been decreased from 5 tiles unaggroed, 9 tiles when aggroed, to 4 tiles and 7 tiles respectively. Ancient goliaths have a default attack cooldown of 8 seconds, sped up from the original value of 12 seconds.
  • +
  • Legion (the common mob) now has a cooldown of 1.5 seconds on their skull attack, sped up from the original value of 2 seconds. Additionally, their view range has been decreased from 5 tiles, 9 tiles when aggroed, to 4 tiles, 7 tiles when aggroed.
  • +
  • Stamina no longer regenerates at hyper speeds.
  • +
  • To accommodate for upstream's stamina changes, knockdown() now applies staminaloss only to the chest.
  • +
  • adjuststaminaloss() now has a new argument that allows you to specify a zone to apply staminaloss to. This defaults to the chest
  • +
  • apply_damage() is now capable of healing carbon mobs and human mobs.
  • +
  • Since the head has the same exact effects as the chest when disabled, and doesn't really make much sense to be affected by stamina, the head no longer has stamina.
  • +
  • The chest now has a stamina cap of 200 stamina due to the above.
  • +
  • Footsteps now sound mostly the same as they did before the hard sync
  • +
  • Jukeboxes now properly remove themselves from the active jukebox list when destroyed
  • +
  • Server operators and badmins can now make the server play like TG by toggling the stamina buffer on/off using the DISABLE_STAMBUFFER config option.
  • +
  • Airlock wires now work as they did prior to the hard sync
  • +
  • The thing you're currently grabbing is now taken into account when left-click disarming. Things you have grabbed now roughly have a 45% chance to be disarmed.
  • +
  • Disarm push rolls are now determined by the target's staminaloss rather than a flat number.
  • +
  • When you're in combat mode, pushing someone who isn't in combat mode is a guaranteed knockdown. Hard counter to stam regen squeezing in melee combat.
  • +
  • Failed disarm push attempts now deals light staminaloss to the target so long as both the attacker and target are standing. The total stamloss dealt to the target is random, clocking in at a very inefficient 1-5 stamloss per unsuccessful push attempt.
  • +
  • Disarm pushes now play the thudswoosh sound regardless if they're successful or not. Had it not been for copyright, I would've used L4D's melee sound.
  • +
  • Disarm push attempts are now logged
  • +
  • Autostand no longer makes you invulnerable to dropping items when being knocked down with a force greater than 80
  • +
  • You can no longer abuse an href exploit to return from the labor camp before obtaining enough points to satisfy your point goal.
  • +
  • Norko's donor item is now listed in the right category
  • +
  • The medihound sleeper now has a non-vore variant. This will be used by default. The old voracious variant will only appear if both the person being sleeper'd and the medihound have the voracious hound sleepers pref enabled. Sprites by Toriate
  • +
  • "Allow medihound sleeper" is now labelled "Voracious medihound sleepers", and is now off by default
  • +
  • AOOC no longer prints to players in the lobby
  • +
  • Human tails and human ears now save again. Humans now use mam_tail and mam_ears for their snowflake bits instead of tg's equivalent, just as they did prior to human tail and ear saving breaking
  • +
  • Disarm pushes no longer deal staminaloss to resting targets
  • +
  • You can no longer force a hard stamcritted spaceman to stand by clicking them with help intent. Get more creative if you want to torture someone that's in hard stamcrit.
  • +
  • The revolution gamemode now waits until the 20 minute mark before checking for win conditions.
  • +
  • You can no longer resist/move out of grabs while you're resting. Disarming your way out still works, though.
  • +
  • Stamina damage now has diminishing returns on people who are in hard staminacrit with the addition of a new multiplier. When you take staminaloss while in hard staminacrit, you'll be under the effects of the new multiplier, which reduces the amount of staminaloss you take from all sources of staminaloss. The diminishing returns multiplier will steadily return to 1 once you're out of staminacrit.
  • +
  • You can now scramble while resting. You can do this by dragging your spaceman onto an adjacent turf. This works even if you're in staminacrit, but the timer depends entirely on your staminaloss.
  • +
  • Fully augged cyborg people now heal stamina damage properly.
  • +
  • Job EXP is now tracked properly for all roles.
  • +
  • Nightmares and shadowpeople have had their light threshold for being considered in darkness reduced. Nightmares can no longer stand unharmed next to a light fixture during a nightshift 100% unharmed. The threshold is high enough so that APC lights on their own won't harm a nightmare, but being on the edge of a light source will.
  • +
  • The detective revolver's .38 bullets are now non-lethal again, but now require 3 shots to hard stamcrit
  • +
  • The current lethal variant of the .38 bullets can still be printed at sec protolathes.
  • +
  • You can now access ghost roles from the latejoin menu.
  • +
  • Eyeblur now scales depending on how much actual eyeblur you actually have.
  • +
  • Ebows now induce 50 drowsiness on whatever they hit.
  • +
  • Telepads have been buffed across the board. T1 parts on a launchpad still grants you a range of 15 tiles, but T4 parts now grant you a pretty large 60 tile range (up from their original 18 tile range). Briefcase launchpads were also buffed, they now have a range of 20 tiles, up from their previous laughable 8 tiles.
  • +
  • The grace period for the revolution win condition check has been reduced from 20 minutes to 10 minutes. You don't need to wait nearly as long for the round to end if no heads join in.
  • +
  • You can now select plural and neuter as your gender. They're labelled "non-binary" and "object" in the character customization menu, respectively.
  • +
  • A lot more light sources now use the same nonbinary colored lighting philosophies as flashlights and light fixtures!
  • +
  • Flashlights mounted to guns and helmets now retain the same color and power as their original light. Lavaland's caves will reflect a fluorescent blue as you shine your KA around, and sec's helmets are now capable of illuminating maint in that fancy fluorescent blue.
  • +
  • Cameras now shine a fluorescent blue when lit up by an AI
  • +
  • Glowing goo now actually glows green.
  • +
  • Candles had their power reduced from 1 to 0.8.
  • +
  • Lighters now shine a little further, and are now properly colored.
  • +
  • PDAs now shine an incandescent yellow to match their sprite.
  • +
  • Welding tools now shine an appropriate color
  • +
  • Hardhats now shine an incandescent yellow.
  • +
  • Plasmaman helmets now shine an incandescent yellow.
  • +
  • Microwaves no longer overpower literally every single light in the game, instead having a power of 0.9.
  • +
  • Borgs now have incandescent yellow lights to match their sprites
  • +
  • Bots now shine a fluorescent blue light
  • +
  • Airlock light overlays are now on the above lighting layer. This means airlock lights can actually be seen in the dark now.
  • +
  • The mob spawners list no longer leaves null entries behind when a spawner has a job description defined. The latejoin menu will no longer show ghost roles that are filled, and the spawners menu actually works again.
  • +
  • The voting system now actually tracks who voted for what. This means it's now possible to change your vote, and it's possible to see what you voted for.
  • +
  • Using help intent on someone that's in hard stamcrit will now make them heal 15 stamloss.
  • +
  • Auto fit viewport is now enabled by default for new players. One less question off the FAQ
  • +
  • The Khajiit favorite, Skooma, was added as a chemistry recipe that can be produced with cooperation between chemistry and either cargo or service. If you want to spoil the recipe for yourself, take a look at the PR for it!
  • +
  • When the shuttle leaves for centcom, a vote will be started to select the next map instead of the map being randomly chosen via biased voting methods
  • +
  • If a server operator wishes to re-enable the biased TG preference voting system, you can do so by toggling the TGSTYLE_MAPROTATION config flag on in the config.txt. Keep in mind that doing so will bring you great misfortune.
  • +
  • Cacti in lavaland now have 6u of vitfro instead of just 4u. This lessens the gap between cacti and first aid kits, the third rarest and second rarest readily available healing methods for ashwalkers, respectively.
  • +
  • the "genitals use skintone" option now appears in the character appearance menu when appropriate again.
  • +
  • Clicking your stamina bar will now show your exact stamina along with info regarding your stamina buffer
  • +
  • The bug where ghost role spawners leave null entries in glob.mob_spawners has actually been fixed
  • +
  • The Kitchen Gun (TM) is no longer invisible.
  • +
  • The majority of cult spells no longer have exclamation marks at the end of their invocations. This means they will no longer be bound to the rules of shouting. Which means sec officers will no longer be able to hear culties sacrificing the captain from the complete opposite side of the maintenance tunnel the sacrifice is happening in. However, things like EMP pulses and runeless teleportation still have the effect due to their inherent loud nature.
  • +
  • The stun blood spell now instantly causes hard stamcrit. However, to offset this, it now also only has one charge and has a higher cost.
  • +
  • The Gloves of the North Star now restore 2/3 of the stamina used up by punches when harm intent punching. With aggressive play and good stamina buffer management, this makes it entirely plausible to roughly double your stamina regeneration per mob life process tick.
  • +
  • Revs can no longer remember the name of the person who flashed them when deconverted. This brings it in-line with the other conversion antag deconversions.
  • +
  • The bug where you can sometimes get permanently stuck in stamcrit should HOPEFULLY be fixed. I'm unable to reproduce the bug myself, but let's hope.
  • +
  • The night vision trait now grants you darksight for an entire 1:1 screen, but the alpha of the lighting plane with the trait has been increased from 245 to 250 to balance it out
  • +
  • It's now actually possible to click the stamina hud button
  • +
  • The stamina hud button now displays your stamina buffer correctly
  • +
  • Bone spears now have a reach of 2 tiles.
  • +
  • You can no longer phase through solid objects via scrambling
  • +
  • The syndicate mask now works properly as intended.
  • +
  • Stamina is no longer affected by health at all.
  • +
  • You can now right-click yourself in help intent in combat mode to instantly get up from resting. This will cost stamina equal to your entire stamina buffer. Manage your stamina well, and you'll be able to shrug off a single stray golden bolt
  • +
  • The new player panel now displays your currently selected character's name
  • +
  • Flashes no longer knockdown. Instead, they deal eyeblur and have increased confusion
  • +
  • The server's tagline is now a config option. People can now stop confusing us with BR cit
  • +
  • Attack animations will now rotate your character slightly, similar to Goon.
  • +
  • Throwing items will now perform the attack animation and play a sound
  • +
  • flashlights will now make sounds when toggled on/off
  • +
  • Things in disposals will now emit sounds every single time they hit corners. This increases immersion.
  • +
  • Air alarms now actually emit the proper light color when their status is okay.
  • +
  • Backpacks and other storage items will now jiggle and squish when you interact with them, similar to the animations seen on Goon.
  • +
  • Mops no longer have a delay on their cleaning, making them an actually viable alternative to all of the janitor's other cleaning tools
  • +
  • To balance this, mops now take stamina to clean tiles. Standard mops take 5 stamina to use, while advanced mops take 2 stamina.
  • +
  • Oh and also mops make fancy new sounds and play animations when used now
  • +
  • Pump-action shotguns now take 2 stamina per pump instead of 5 stamina per pump. This also applies to bolt-action rifles, as bolt racking counts as pumping.
  • +
  • Pickpocketing items will now place them in your hands if possible
  • +
  • Combat mode is now displayed in examine text
  • +
  • Combat mode now makes a visible message when enabled if you haven't touched your combat mode button in the last ten seconds. It's done this way to avoid chat spam from those who know how to pull off stam regen squeezing.
  • +
  • All knockdown sources will now force people to be dismounted from ridden vehicles.
  • +
  • When an item is thrown, it will now be rotated and displaced.
  • +
  • Shards of glass will now be rotated when spawned.
  • +
  • Bullet casings will now be rotated when they're ejected from a gun.
  • +
  • Bottles now have random rotations and pixel offsets when smashed via throwing.
  • +
  • Picking up an item will now reset its rotation.
  • +
  • Glasses thrown onto tables by bartenders will now have their rotation reset.
  • +
  • Slime speed potions can now only increase the speed of vehicles to be on par with sprinting speed. They can no longer make a scooter roll around ten times faster than a speeding blue hedgehog.
  • +
  • Changelings will no longer recieve team objectives
  • +
  • Changelings no longer start off with hivemind communication as an innate ability. Hivemind communication now requires 1 dna point, on par with syndicate encryption keys, which are 2 TC.
  • +
  • Hivemind link now relies on hivemind communication just like the hivemind download/upload abilities.
  • +
  • It's now only possible to zoom a gun if it's in one of your hands
  • +
  • Mobs without clients no longer cause runtimes when their eyeblur updates
  • +
  • Blood tests have been added. If a changeling has a sufficient number of loud abilities, you will be able to test their blood by heating up a sample of it. However, if the changeling has a large amount of loud abilities, attempts to test their blood will have explosive results.
  • +
  • Changelings now make a very obvious noise when readapting. This is to prevent the cheese strat of simply readapting when you get caught to avoid detection.
  • +
  • The blood splatter effect that happens when you get attacked will now always make you lose blood depending on the damage you've taken. The effect now also scales with item damage, meaning tiny little papercuts will no longer be able to cause a massive blood splatter.
  • +
  • The blood reagent will now cover items and spacemen in blood when applied to objects and mobs.
  • +
  • Helmets, masks, and neck items are all now valid targets to get splattered when you get covered in blood. Groovy.
  • +
  • The temperature notification will now take into consideration both the ambient temperature and your body temperature, increasing the responsiveness of the temperature notification and making it much more realistic.
  • +
  • Shuttle transit borders are now 10 tiles wide instead of 8 tiles, hopefully repairing the immersions that get shattered by the ability to see normal space where the transit areas end.
  • +
  • Instead of transit turfs simply teleporting things to space, transit is now handled in a somewhat realistic manner. Transit turfs now act like normal space turfs, though exiting the transit area or being present in the transit area after the shuttle moves out of transit will teleport you to space and throw you in the direction the shuttle was moving in.
  • +
  • Reservation areas are now able to designate a border turf.
  • +
  • The sprint hotkey will no longer cause you to get permanently stuck sprinting if the server lags. Just tap shift again if you get stuck
  • +
  • You can now hear sounds in the real world while inside of a VR sleeper.
  • +
  • You can now make nameless characters. Nameless characters will spawn in with their name set as their job title followed by a unique five digit number. The "Name" option in the character setup menu will be replaced with a "Default designation" option for nameless characters, and the default designation will be used in place of a job title for assistants and other jobs that don't require dress codes.
  • +
  • The out-of-game round end notification is now a little more verbose. It'll now display the round type, end result of the round, and the survival rate.
  • +
  • Xenos can no longer strip items off of people to be capable of using any item in the game.
  • +
  • also, items from pockets get placed into your hands properly now
  • +
  • A mob's last words are now properly tracked and recorded on death. The first death of the round will now actually display the victim's last words on the round end screen.
  • +
  • Divine shenanigans can no longer result in someone becoming immune to staminaloss
  • +
  • Fixed body_markings in bodyparts being assigned as a list when in reality, it's a string and literally everything expects it to be a string and uses it as a string. This should mean that markings no longer have completely fucked up caches for character preview and other things.
  • +
  • Since apparently the game is literally unplayable if items are not in the exact center of a turf, the maximum pixel variance of thrown objects has been reduced by four pixels to make things a smidge more clearer for those that dont know what a turf is.
  • +
  • Bartender glasses should HOPEFULLY no longer be tilted when landing on a table. Why the fuck is after_throw called via a timer.
  • +
  • Changeling screeches now have their own unique sounds, and are much easier to recognize.
  • +
  • Most synthetic emotes are now available to humans. *ping
  • +
  • You can now merp
  • +
  • The TEG will now only produce a meaningful amount of power if the hot pipe contains gas that's actively combusting
  • +
  • Added the "add PB bypass" and "revoke PB bypass" verbs, which allow admins to let a specific ckey to bypass the panic bunker for the rest of the round
  • +
  • Jogging is no longer treated exactly the same as sprinting for water slips. When you're jogging, you will only slip on water if you have more than 20% staminaloss.
  • +
  • The atmospherics turf subsystem now has double the wait time, which should free up server processing power for other tasks.
  • +
  • The IRC now actually displays the actual survival rate
  • +
  • Bloodcult conversions are now consensual. Convertees are given a ten second timer to accept or wait out. This should drastically improve the quality of those that get converted into bloodcult.
  • +
  • All sacrifices now count as a third of a cultist for the end-game narsie summon.
  • +
  • Nameless captains will no longer proc a "Captain Captain on deck!" message. Instead, it'll be a much more boring but much more sensical "Captain on deck!" message.
  • +
  • Transit turfs on the centcom z-level now function properly again at keeping mobs within the areas defined by their boundaries.
  • +
  • The title screen is also positioned correctly again.
  • +
  • Ghost role eligibility for both event and spawner ghost roles is now affected by DNR status. If you suicide, ghost, or cryo out, you will be unable to qualify for any ghost roles
  • +
  • Cryo now applies DNR status no matter how long the round has been going on
  • +
  • Suicide is now properly admin logged as it is supposed to be. Ghosting while alive is now also logged.
  • +
  • Sparks and igniters will now actually heat areas rather than cooling them, as was intended.
  • +
  • To alleviate some potential complaints, RPDs now have a cooldown before they can create sparks, and both RPDs and emitters produce less sparks.
  • +
  • Conversion runes will now mute the victim temporarily while they're deciding whether to convert or be sacrificed.
  • +
  • Conversion runes no longer require a third cultist to sacrifice if the victim refuses conversion
  • +
  • Staminaloss targeted at the head now properly redirects to the chest.
  • +
  • Sprinting no longer takes stam when you're being pulled or when you're in zero gravity. Other sources of involuntary movement are not affected.
  • +
  • In an attempt to improve performance during highpop, mouse movements will now only call onmousemove() while a user is in combat mode
  • +
  • Ballistic projectiles are now the only projectiles capable of emitting dinks.
  • +
  • Panic bunker toggling and bypassing is now logged in admin IRC
  • +
  • OOC and LOOC now use separate toggles. You can now use LOOC while OOC is globally toggled off, and admins now have the option to toggle LOOC off separately from OOC
  • +
  • also revamped and reorganized relevant looc adminverb code
  • +
  • The endgame narsie summon rune no longer requires 24 total sacrifices, and will now properly account for cultists that surround it
  • +
  • The succumb verb is now available in the IC tab
  • +
  • Lighting now uses a linear algorithm to calculate falloff instead of an inverse-square algorithm.
  • +
  • get_hearers_in_view() now actually caches the results of view() instead of calling view() twice
  • +
  • Goonchat's JS no longer contains checks related to a completely unused message filtering function, which should improve clientside performance quite a bit
  • +
  • The storage hud now properly takes into account the viewer's view size, meaning storage items with a large amount of storage slots will properly stretch across the bottom of the screen when running in widescreen.
  • +
  • Action buttons are now able to fill the entire screen in widescreen and other weird view sizes.
  • +
  • Omegastation's job changes will no longer be included at compile time.
  • +
  • The client update portion of /mob/Login() now double-checks to make sure client.player_details exists and is of the proper type. This should hopefully fix the "cannot read null.player_details" runtimes that can spontaneously cause clients to get kicked out and forced back to the lobby.
  • +
  • You can now quickly use unequipped items on objects by simply click-dragging the item onto the object with an empty active hand. Doing so will place the item in your hand, and then use that item on the object.
  • +
  • In an attempt to improve the performance of /mob/Stat(), various time-related procs now use defines instead of being procs that call procs that call other procs that call even more procs.
  • +
  • If a living mob has vore initialized but doesnt have voreprefs initialized, then client login will force voreprefs to load.
  • +
  • Hopefully fixed paper crash 2: electric boogaloo
  • +
  • Added unomos, which is basically listmos except gas mixtures only use one single list for handling their gasses. This is a significant performance improvement that also offers a mild memory improvement under normal circumstances.
  • +
  • Locomotion circuits are now restricted to jogging speed
  • +
  • MMI circuits and pAI circuits both now have 60 complexity, up from their original 29.
  • +
  • Biogenerators now have a sane limit for production
  • +
  • Fixed a fairly huge server crash exploit
  • +
  • Shield blobs no longer become completely invulnerable to all forms of damage after reaching a """weakened""" state
  • +
  • Taken care of what appeared to have been an oversight where shield blobs don't recover their armor after becoming weakened.
  • +
  • Nerfed concatenators by limiting the amount of characters they're able to output
  • +
  • The timer for stripping an item off of a spaceman is no longer interrupted by your active held item changing. This means you no longer have to worry about filling both of your hands when you're stripping items off of someone.
  • +
  • Ported the zulie cloak and blackredgold coat donor items from RP.
  • +
  • Normal mops now only use 2 stamina to mop a tile, nerfed from their previous value of 5 stamina per tile mopped.
  • +
  • Advanced mops now only use 1 stamina to mop turfs, from their former value of 2 stam.
  • +
  • The femur breaker now uses `*scream` instead of forced speech. This means that the femur breaker will no longer spam deadchat with "AAAAAAAAAHHHHHHHHHH!!"
  • +
  • The femur breaker will now guarantee that the victim falls into crit, which will make it harder to perform torture scenes with it since the victim can just succumb.
  • +
  • Fixed another runtime in warp whistles.
  • +
  • Spamming forged packets no longer crashes the server.
  • +
  • Things that access job_preferences now explicitly access keys, which means it no longer attempts to access invalid indices and runtimes as a result.
  • +
  • The taser's electrode has been reworked. Instead of being a strong knockdown that deals a heavy amount of stamloss, it now causes a weak knockdown, applies a debilitating status effect for 5 seconds, and deals 35 stamloss on hit up to a maximum 50 total stamloss.
  • +
  • Roundstart turrets now have a nonlethal projectile that gets used when they're set to stun and the target is resting
  • +
  • Hybrid tasers now have disablers set as their default mode.
  • +
  • There is now a 1% chance for the station's announcer to be the medibot voice instead of the classic TG announcer.
  • +
  • The map config system has been expanded to allow mappers to specify the map type, announcer voice, ingame year, and how often a given map can be voted at roundend.
  • +
  • The map vote system now takes into account map playercount limits properly.
  • +
  • Examining a spaceman, and other things that use get_examine_string(), will now actually properly show when an item is blood-stained.
  • +
  • Plasmaman tongues no longer have a maxHealth of "alien", and no longer cause the organ's on_life to always runtime.
  • +
  • Shooting a simplemob no longer causes runtimes prior to the blood effect being created.
  • +
  • Removing a filter from an object that lacks filters no longer causes runtimes.
-

WJohn updated:

+

deathride58 (Original PR by actioninja) updated:

    -
  • Added zombies to boxstation's abandoned ship.
  • +
  • Disarm pushing (combat mode right click in disarm intent) will now actually push mobs away. Knockdowns from disarm pushing are no longer rng based on the target's staminaloss. Knockdowns from disarm pushing now only happen when you push someone into another mob, a table, or a wall. Pushes will now also temporarily stop targets from using firearms, and will disarm the firearm if performed a second time. Pushes still deal staminaloss to standing targets, and won't deal a single ounce of staminaloss to resting targets.
  • +
  • You can no longer displace mobs that are in harm intent by simply walking into them. Mobs that aren't in help intent have to be disarm pushed to actually be moved.
-

YPOQ updated:

+

dtfe3 updated:

    -
  • AIs can take photos and print them at photocopiers again.
  • -
  • Cult floors will not deconstruct to space
  • -
  • Cult floors do not spawn rods when deconstructed
  • -
  • Footprints should no longer spread out of control
  • +
  • Increased music maxlines from 300 to 600
  • +
  • Made it so any oxygen tank can be used instead of only red ones.
  • +
  • Watcher wing Trophy's effect lasts 1 second instead of 0.5
  • +
  • Pink Panties
  • +
  • Twintails
  • +
  • Schoolgirl outfits for the loadout menu!
  • +
  • Now the fox ears are located in front of hair meaning they now behave much like cat ears, that being they are on-top of the hair layer.
-

zaracka updated:

+

izzyinbox updated:

    -
  • blunt trauma causes brain damage while unconscious too
  • -
  • sharp weapons no longer count as blunt trauma in all cases
  • +
  • adds VoG orgasm command using words "orgasm", "cum", "squirt", "climax"
  • +
  • adds VoG dab command using words "dab" and "mood"
  • +
  • Generic dog body marking sprite
  • +
  • colormatrix dog sprites
  • +
  • lowered the player age for command jobs to 1/3 of their previous setting
  • +
  • *bark emote
- -

10 August 2018

-

AnturK updated:

+

jtgsz updated:

    -
  • Portable flashers won't burnout from failed flashes.
  • +
  • ported gang mode
-

Denton, Tlaltecuhtli updated:

+

kappa-sama updated:

    -
  • Added cargo bounties that require cooperation with Atmospherics, Engineering and Mining.
  • -
-

Naksu updated:

-
    -
  • Transformation diseases now properly check for job bans where applicable
  • -
  • Fixed a bunch of runtimes that result from transforming into a nonhuman from a human, or a noncarbon from a carbon.
  • -
-

SpaceManiac updated:

-
    -
  • The map loader has been cleaned up and made more flexible.
  • -
-

nicbn updated:

-
    -
  • BoxStation science changes: Circuitry lab is closer to RnD now; cannisters, portable vents, portable scrubbers, filters and mixers have been moved to Toxin Mixing Lab. There is now a firing range at the testing lab!
  • -
- -

08 August 2018

-

Denton updated:

-
    -
  • Added five new cargo packs: cargo supplies, circuitry starter pack, premium carpet, surgical supplies and wrapping paper.
  • -
  • Added one bag of L type blood to the blood pack crate. Added a chance for contraband crates to contain DonkSoft refill packs.
  • -
-

Iamgoofball updated:

-
    -
  • The Stealth Implant was mistakenly made nuclear operatives only due to a misunderstanding of the code. This has been fixed.
  • -
-

Mark9013100 updated:

-
    -
  • Pocket fire extinguishers can now be made in the autolathe.
  • -
-

SpaceManiac updated:

-
    -
  • The power flow control console once again allows actually modifying APCs.
  • -
  • Gas meters will now prefer to target visible pipes if they share a turf with hidden pipes.
  • -
-

daklaj updated:

-
    -
  • fixed beepsky and ED-209 cuffing their target successfully even when getting disabled (EMP'd) in the process
  • +
  • Removed racism
  • +
  • Teleporter calibration actually matters to all roundstart players
  • +
  • Slows down teleportation with the console/hub/teleporter setup if you care for your species.
  • +
  • Dedicated non-humans can now get hulk without having to become human.
  • +
  • seed
  • +
  • added obj/item/key to wallet whitelist
  • +
  • blood cult ritual daggers fit in jack/combat boots
  • +
  • voidcells can now unlock alien tech
  • +
  • rebalanced tech trees (not really)
  • +
  • hugbox (/s)
  • +
  • ashwalker spawn text now tells them "i" "c" not to leave lavaland
  • +
  • you can no longer have infinite ebows
  • +
  • kevinz forgot to nerf miasma research and cargo value after making it produce like 100x as much lmao

kevinz000 updated:

    -
  • Catpeople are now a subspecies of human. Switch your character's species to "Felinid" to be one.
  • -
  • Oh yeah and they show up as felinids on health analyzers.
  • +
  • Hierophant now goes sicko mode, but hey, at least you can't be multi-hit by melee waves!
  • +
  • Racking shotguns is now more threatening.
  • +
  • Medibots no longer kill slimes when trying to heal their toxins.
  • +
  • The Syndicate started selling claymores to their agents.
  • +
  • Nerfed VTEC modules.
  • +
  • Neurotoxin no longer stuns non-carbons.
  • +
  • peacekeeper cyborgs now get a megaphone
  • +
  • Fixes storage bugs regarding reaching into things you shouldn't be able to reach into.
  • +
  • BYOND 513 preliminary support added.
  • +
  • Trashbags now only allow accessing the first 3 items. 5 for bluespace ones. experimental: Storage now allows for limiting of random access
- -

07 August 2018

-

WJohnston updated:

+

kiwedespars updated:

    -
  • Redesigned the pirate event ship to be much prettier and better fitting what it was meant to do.
  • +
  • regenerative materia to hallucination sting
  • +
  • mindbreaker toxin as an actual chemical to hallucination sting
- -

06 August 2018

-

Basilman updated:

+

lolman360 updated:

    -
  • Increased agent box cooldown to 10 seconds
  • +
  • NT has authorized shipments or Cotton to Megaseed Servitors. It's time to start picking, liggers.
  • +
  • missing durathread sprites
  • +
  • Added durathread jumpskirt
  • +
  • Duraskirt sprites and rolled down jumpsuit sprites.
  • +
  • Fixes an undocumented change to the naming of Plasmamen.
  • +
  • chainsaw kind of weapons and the mecha drill and the CLAMP can now be used with 100% accuracy for surgery
  • +
  • surgery tools now work on defines
  • +
  • advanced surgerytools can now switch types instead of just being faster
  • +
  • fixes bug with new surgerytools examine
-

Denton updated:

+

nicc updated:

    -
  • Omegastation's Atmospherics lockdown button now has the proper access reqs.
  • -
  • Pubbystation's disposals conveyor belts now face the correct direction.
  • -
  • Pubby's service techfab is no longer stuck inside a wall.
  • -
  • Pubby's disposal loop is no longer broken.
  • -
  • The Lavaland seed vault chem dispenser now has upgraded stock parts.
  • -
  • Metastation: Extended protective grilles to partially cover the Supermatter cooling loop.
  • +
  • Exo-suit
  • +
  • SEVA suit
  • +
  • Flags for Goliath resistance and weakness
  • +
  • suit voucher
  • +
  • temp suit sprites
  • +
  • *dab
  • +
  • teg less gay maybe
-

Epoc updated:

+

ninjanomnom and WhoneedSpacee updated:

    -
  • You can now show off your Attorney's Badge
  • +
  • Some rpg affixes now have special effects
  • +
  • New RPGLoot modifiers: Vampirism which heals you when you attack, Pyromantic which sets things you hit on fire. Shrapnel which causes projectiles fired from a gun to fire projectiles in a radius when they hit something. Finally, Summoning which summons mobs that sometimes aid you in combat.
-

Garen updated:

+

original by @randolfthemeh and @twaticus, port by sishen1542 updated:

    -
  • Fixed AddComponent(target) not working when an instance is passed rather than a path
  • +
  • jumpskirts
  • +
  • more jumpskirts
  • +
  • jumpskirt/suit prefs
-

JJRcop updated:

+

original by Bumtickley00, port by sishen1542 updated:

    -
  • Fixed some strange string handling in SDQL
  • +
  • Suit storage units will now also remove radiation from mobs.
-

Jared-Fogle updated:

+

original by GuyonBroadway, SkowronX, and Arizon5. port by sishen1542 and kerse updated:

    -
  • Moths can now eat clothes.
  • +
  • Clockwork cultists may now summon forth Neovgre, the ratvrarian super weapon. This powerful mech can be summoned when applications scripture has been unlocked, boasts superior offensive and defensive capabilities, however once a pilot enters he cannot leave and is doomed to die with the mech.
  • +
  • Sexy Sprite work courtesy or SkowronX from /tg/
  • +
  • brass edits by Arizon5
  • +
  • steamy laser by kerse
-

JohnGinnane updated:

+

original by Skoglol, port by sishen1542 updated:

    -
  • Users can now see their prayers (similar to PDA sending messages)
  • +
  • Added lots of new virus cures, made cure difficulty scale more consistently. Cures are now picked from a list of possible cures per resistance level, multiple diseases at the same level no longer always share a cure. Looking at you table salt.
  • +
  • Dynamic gamemode now more auto-deadmin friendly.
-

Mickyan updated:

+

original by TheChosenEvilOne, port by sishen1542 updated:

    -
  • Drinking alcohol now improves your mood
  • +
  • Ported dynamic mode from /vg/, originally made by @DeityLink, @Kurfursten and @ShiftyRail
-

Shdorsh updated:

+

original by Tlaltecuhtli, port by sishen1542 updated:

    -
  • The previously-added find-replace circuit now actually exists.
  • +
  • rcd disk that gives rcd computer frame and machine frame designs
  • +
  • upgraded rcd in CE lockers
  • +
  • moved deconstruction to the upgrade disk, ashwalker rcd comes upgraded
-

Tlaltecuhtli (and then Cobby) updated:

+

original by actioninja, port by sishen1542 updated:

    -
  • Science Bounties are now available!
  • +
  • Medical and Security consoles now check access on worn or inhand ID instead of requiring an inserted ID
  • +
  • mining vendor now reads from ID in hand or on person instead of requiring an inserted ID
  • +
  • ORM is functional again (for real this time)
  • +
  • ORM claim points button transfers points to worn/inhand ID instead of to an inserted ID, no longer accepts insertions
  • +
  • Same for gulag consoles
-

WJohnston updated:

+

original by redmoogle, port by sishen1542 updated:

    -
  • Rebalanced the simple animal syndies on the metastation ship to be a bit less destructive of their surroundings, and downgraded the smg guy to a pistol and upgraded the other guys to knives.
  • +
  • Added support for 3 new gasses; Tritium, Pluoxium, and BZ
-

Y0SH1 M4S73R updated:

+

original by: WJohnston, Antur, Arcane, plapatin, sprites by cogwerks and edited by mrdoombringer. port by sishen1542 updated:

    -
  • windoors now have NTNet support. The "open" command toggles the windoor open and closed. The "touch" command, not usable by door remotes, functions identically to walking into the windoor, opening it and then closing it after some time.
  • +
  • THE GOOSE IS LOOSE
-

cyclowns updated:

+

r4d6 updated:

    -
  • Fusion has been reworked to be a whole lot deadlier!
  • -
  • You can now use analyzers on gas mixtures holders (canisters, pipes, turfs, etc) that have undergone fusion to see the power of the fusion reaction that occurred.
  • -
  • Several gases' fusion power and fusion's gas creation has been reworked to make its tier system more linear and less cheese-able.
  • +
  • Added decoratives angel wings for Mammalians only
  • +
  • Added blindfolds to the Loadout list
  • +
  • Added Decorative Wings for Humans, Felinids, Slimepersons and Lizardpeoples.
  • +
  • Change the SEVA suit & Exo-suit's descriptions
  • +
  • Batteries are now Rad-Proof like the other stock parts
- -

03 August 2018

-

ArcaneMusic updated:

+

tigercat2000@Paradise updated:

    -
  • Added a new, shoutier RoundEnd Sound.
  • +
  • fixed invalid characters breaking chat output for that message
-

Basilman updated:

+

tinfoil hat wearer updated:

    -
  • fixed agent box invisibility
  • +
  • Added a new alien technology disk to scientist and roboticist uplinks that allows them to research the heavily-guarded secrets of the Grays.
  • +
  • Alientech is now the only Hidden alien research. To compensate for this, alien_bio and alien_engi have had their research costs doubled and now require advanced surgery tools and experimental tools respectively to research. Their export price is also halved.
  • +
  • roboticists now have brainwashing disks AND alien technology added to their role-restricted uplink section. alien technology gives them brainwashing at a much later date, so brainwashing is the much cheaper option for instant power. makes logical sense because doctors get it as well because they do surgery, and roboticists can now either choose to brainwash people for less price but less power or emag borgs for higher prices, limited uses, but higher power.
-

Denton updated:

+

ursamedium updated:

    -
  • Syndicate lavaland base: Added a grenade parts vendor and smoke machine board. The testing chamber now has a heatproof door and vents/scrubbers to replace air after testing gas grenades. Chemical/soda/beer vendors are emagged by default; the vault contains a set of valuable Syndicate documents.
  • -
  • Added a scrubber pipenet to the Lavaland mining base.
  • -
-

Garen updated:

-
    -
  • mobs now call COMSIG_PARENT_ATTACKBY
  • -
-

JJRcop updated:

-
    -
  • Deadchat can use emoji now, be sure to freak out scrying orb users.
  • -
-

Kmc2000 updated:

-
    -
  • You can now attach 4 energy swords to a securiton assembly instead of a baton to create a 4 esword wielding nightmare-bot
  • -
-

Mickyan updated:

-
    -
  • added sprites for camera when equipped or in hand
  • -
  • cameras are now equipped in the neck slot
  • -
-

SpaceManiac updated:

-
    -
  • Traps now have their examine text back.
  • -
-

Supermichael777 updated:

-
    -
  • Cigarettes now always transfer a valid amount of reagents.
  • -
  • Reagent order of operations is no longer completely insane
  • -
-

WJohnston updated:

-
    -
  • Added a gun recharger to delta's white ship and toned it down from a "luxury" frigate to just a NT frigate, it's just not made for luxury!
  • -
-

XDTM updated:

-
    -
  • Beheading now works while in hard crit, so it can be used against zombies.
  • -
  • You can now have fakedeath without also being unconscious. Existing sources of fakedeath still cause unconsciousness.
  • -
  • Zombies and skeletons now appear as dead. Don't trust zombies on the ground!
  • -
  • You can now make Ghoul Powder with Zombie Powder and epinephrine, which causes fakedeath without uncounsciousness.
  • -
-

granpawalton updated:

-
    -
  • pubby round start atmos issues resolved
  • -
  • pubby departures lounge vent is no longer belonging to brig maint
  • -
  • pipe dispenser on pirate ship
  • -
-

ninjanomnom updated:

-
    -
  • The first pod spawned had some issues with shuttle id and wouldn't move properly. This has been fixed.
  • -
- -

01 August 2018

-

Basilman updated:

-
    -
  • Added the stealth manual to the uplink, costs 8 TC. Find it under the implant section
  • -
-

Cobby updated:

-
    -
  • Drone's Law 3 has been edited to explicitly state that it's for the site of activation (aka people do not get banned for going to upgrade station as derelict drones since it's explicitly clear now). See https://tgstation13.org/phpBB/viewtopic.php?f=33&t=18844&p=429944#p429944 for why this was PR'd
  • -
  • PENLITEs are now actually spawnable in techwebs. Reminder to make sure everything is committed before PRing haha!
  • -
-

Denton updated:

-
    -
  • New bounties have been added for the Firefighter APLU mech, cat tails and the Cat/Liz o' Nine Tails weapons.
  • -
  • ExoNuclear mech reactors now noticably irradiate their environment.
  • -
  • Adjusted suit storage unit descriptions to mention that they can decontaminate irradiated equipment.
  • -
-

Hate9 updated:

-
    -
  • Added tiny-sized circuits (called Devices)
  • -
  • added new icons for the Devices
  • -
-

Iamgoofball updated:

-
    -
  • Buzzkill Grenade Box Cost: 5 -> 15
  • -
-

Shdorsh updated:

-
    -
  • Text replacer circuit
  • -
-

SpaceManiac updated:

-
    -
  • The bridge of the gulag shuttle now has a stacking machine console for ejecting sheets.
  • -
-

Time-Green updated:

-
    -
  • You can now mount energy guns into emitters
  • -
  • portal guns no longer runtime when fired by turrets
  • -
-

barbedwireqtip updated:

-
    -
  • Adds the security guard outfit from Half-Life to the secdrobe
  • -
-

granpawalton updated:

-
    -
  • Removed old piping sections and replaced with Canister storage area in atmos incinerator
  • -
  • scrubber and distro pipes moved in atmos incinerator to make room for added piping
  • -
  • added filter at connector on scrubbing pipe in atmos incinerator
  • -
  • replaced vent in incinerator with scrubber in **Both** incinerators
  • -
  • mixer placed on pure loop at plasma
  • -
  • delta and pubby atmos incinerator air alarm is no longer locked at round start
  • -
  • pubby atmos incinerator now starts without atmos in it
  • -
-

kevinz000 updated:

-
    -
  • Cameras now shoot from 1x1 to 7x7, fully customizable. Alt click on them to change the size of your photos. experimental: All photos, assuming the server host turns this feature on, will be logged to disk in round logs, with their data and path stored in a json. This allows for things like Statbus, and persistence features among other things to easily grab the data and load the photo.
  • -
  • Mappers are now able to add in photo albums and wall frames with persistence! This, obviously, requires photo logging to be turned on. If this is enabled and used, these albums and frames will save the ID of the photo(s) inside them and load it the next time they're loaded in! Like secret satchels, but for photos!
  • -
- -

30 July 2018

-

Anonmare updated:

-
    -
  • Upload boards and AI modules, in addition to Weapon Recharger boards, are now more expensive to manufacture
  • -
-

Basilman updated:

-
    -
  • fixed BM Speedwagon offsets
  • -
-

Cobby (based off Wesoda25's idea) updated:

-
    -
  • Adds the PENLITE holobarrier. A holographic barrier which halts individuals with bad diseases!
  • -
-

Denton updated:

-
    -
  • Techweb nodes that are available to exofabs by roundstart have been moved to basic research technology.
  • -
  • Ripley APLU circuit boards are now printable by roundstart.
  • -
  • Odysseus, Gygax, Durand, H.O.N.K. and Phazon mech parts have to be researched before becoming printable (same as their circuit boards).
  • -
  • Arrivals shuttles no longer throw objects/players when docking.
  • -
  • Regular fedoras no longer spawn containing flasks.
  • -
  • Increased the range of handheld T-ray scanners.
  • -
  • Cargo bounties that request irreplaceable items have been removed.
  • -
-

Garen updated:

-
    -
  • Throwers no longer deal damage
  • -
  • Flashlight circuits are now the same strength as a normal flashlight
  • -
  • Grabber circuits are now combat circuits
  • -
  • Removed smoke circuits
  • -
  • Removed all screens larger than small
  • -
  • Ntnet circuits can no longer specify the passkey used, it instead always uses the access
  • -
-

Hate9 updated:

-
    -
  • Added pulse multiplexer circuits, to complete the list of data transfers.
  • -
-

Jared-Fogle updated:

-
    -
  • NanoTrasen now officially recognizes Moth Week as a holiday.
  • -
  • Temporarily removes canvases until someone figures out how to fix them.
  • -
-

Mickyan updated:

-
    -
  • Social anxiety trigger range decreased. Stay out of my personal space!
  • -
  • Social anxiety no longer triggers while nobody is around but you
  • -
-

WJohnston updated:

-
    -
  • Redesigned the metastation white ship as a salvage vessel.
  • -
-

YoYoBatty updated:

-
    -
  • SMES power terminals not actually deleting the terminal reference when by cutting the terminal itself rather than the SMES.
  • -
  • SMES now reconnect to the grid properly after construction.
  • -
  • SMES now uses wirecutter act to handle terminal deconstruction.
  • -
-

ninjanomnom updated:

-
    -
  • Objects picked up from tables blocking throws will no longer be forever unthrowable
  • -
- -

28 July 2018

-

CitrusGender updated:

-
    -
  • Removed slippery component from water turf
  • -
-

Denton updated:

-
    -
  • The Odysseus mech's movespeed has been increased.
  • -
  • Metastation: Spruced up the RnD circuitry lab; no gameplay changes.
  • -
  • Due to exemplary performance, NanoTrasen has awarded Shaft Miners with their very own bathroom, constructed at the mining station dormitories. Construction costs will be deducted from their salaries.
  • -
-

Mickyan updated:

-
    -
  • insanity static is subtler
  • -
  • neutral mood icon is now light blue
  • -
-

SpaceManiac updated:

-
    -
  • Cyborgs and AIs can now interact with items inside them again.
  • -
-

Tlaltecuhtli updated:

-
    -
  • Mouse traps are craftable from cardboard and a metal rod.
  • -
-

WJohnston updated:

-
    -
  • Syndicate and pirate simple animals should have stats that more closely resemble fighting a human in those suits, with appropriate health, sounds, and space movement limitations.
  • -
  • Pirates in space suits have more modern space suits.
  • -
- -

27 July 2018

-

ShizCalev updated:

-
    -
  • Destroying a camera will now clear it's alarm.
  • -
-

ninjanomnom updated:

-
    -
  • The cargo shuttle should move normally again
  • +
  • Gas icons changed.
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index c75712610c..75cb5f4040 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -20597,3 +20597,2525 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. the released item in your hand. yorpan: - rscadd: Brain damage makes you say one more thing. +2019-11-04: + 4dplanner, MMiracles: + - tweak: Wizard shapeshift now converts damage taken while transformed + - bugfix: transform spell transfers damage correctly instead of healing most of + the time + - bugfix: 0% simplemob health maps to 0 carbon health, 100% simplemob to 100% carbon + - bugfix: transforming to a form with brute resistance no longer heals you + - bugfix: transforming back to a species with brute resistance no longer heals you + AdmiralPancakes1: + - rscadd: 'Cryo cell shortcuts: alt-click toggles the doors, ctrl-click toggles + the power' + Alonefromhell: + - rscadd: Ported Oracle UI, a framework for self-updating and neat UI's + - refactor: Paper now uses OUI + - refactor: Bins now use OUI + - bugfix: fixes tootip offset + AnalWerewolf: + - rscadd: Fritz plushie + - rscadd: Donor item + Anonymous: + - imageadd: 'More crusader armor variants to pick from armament: Teutonic and Hospitaller.' + Arturlang: + - rscadd: You can now use CTRL and ALT click on pumps and filters to toggle them + on and off and max their output respectively + - rscadd: You can now use RPDs on windows and grilles. + - rscadd: The RD can now suplex a immovable rod. Good fucking luck. + - bugfix: Fixes high alert ERT suit sprites. You can see them now! + - rscadd: Traitor codewords are now highlighted for traitors. + - rscadd: You can now examine pumps filters and mixers to see if you can use CTRL + and Alt click on them. + - bugfix: Fixes brain damage/trauma healing nanites so they actually work while + there are only traumas. + - tweak: Advanced toxin filtration nanites now heal slimes + Bhijn: + - rscadd: It's now possible to forcefully eject the occupants of a dogborg's sleeper + by using a crowbar on them. This action is instant. + - tweak: Resist values for dogborg sleepers have been adjusted. The baseline has + been decreased from 30 seconds to 15 seconds. Medihound sleepers have a resist + timer of 3 seconds. Sechound sleepers retain a resist timer of 30 seconds. + - tweak: It now takes 10 full seconds to insert people into your sleeper. This should + hopefully give people some more room to breathe and react to a dogborg attempting + to sleeper someone either for no reason or in a way that violates law 2. + - bugfix: Warp whistles no longer grant permanent invulnerability and invisibility + - bugfix: You can now actually use the resist hotkey to resist out of handcuffs. + Woah, revolutionary + - bugfix: the `!tgs poly` command now actually works + - rscadd: Poly now has a 0.01% chance per squawk to speak through the TGS relay. + - balance: The point production mode of radiation collectors has been reverted to + the original behavior of using all of the stored power every process cycle instead + of just 4% of it + - tweak: Radiation collectors now display the amount of power/research points they're + producing per minute rather than per process cycle, which should hopefully clear + up a lot of confusion. + - tweak: Radiation collectors also display what's happening to the gas within them, + which should make it a lot more obvious as to how you get tritium. + - tweak: Security borgs and K9s are now only available during red alert or higher. + - server: Headmins or other folks with access to the server's config can choose + the minimum alert level for secborgs to be chosen via the MINIMUM_SECBORG_ALERT + config option. See the default game_options.txt for more info. + - bugfix: The server no longer attempts to check if the CID matches the IP of any + bans, or if the IP matches any CIDs of any active bans, during client analyzation + - balance: Vampires can now only ventcrawl in bat form if their blood level is below + the bad blood volume (224 blood total) + - balance: Vampires now only take 5 burn per mob life cycle while within chapel + areas, down from the original 20 burn per life cycle. + - tweak: K9 pounces have received a minor rework. It now has an effective cooldown + of 2.5 seconds, can now only deal up to 120 staminaloss, deals a maximum of + 80 stamloss on hit, has a spoolup of half a second, and now has telegraphing + in the form of a quiet noise. + - balance: K9s now only have 80 health + - balance: Secborgs (but not k9s) now have a hybrid taser. This can be toggled via + server config. + - tweak: The disabler cooler upgrade now applies to all energy-based firearms for + borgs + - rscadd: Dogborg jaws are now capable of incapacitating targets if using help intent. + This deals a hard stun depending on how much staminaloss the target has, and + whether or not they're resting. This behavior can be toggled via server config. + - balance: K9 jaws now have 15 force, up from their nerfed 10 force. + - balance: Borg flashes regained their ability to cause knockdown. This can be toggled + via server config. + - server: The WEAKEN_SECBORG config option will disable the new dogborg jaws mechanic + and make secborgs spawn with a standard disabler. + - server: The DISABLE_BORG_FLASH_KNOCKDOWN will disable the ability for borg flashes + to knockdown. + - tweak: Jukeboxes now have 6 audio channels available to them, up from the previous + accidental 2 and previously intended 5 channels. + - bugfix: Jukeboxes now work again on clients running versions higher than 512.1459. + - bugfix: People will no longer have their ears consumed by an eldritch god if multiple + jukeboxes are active and the first jukebox in the jukebox list stops playing, + then tries to play again + - tweak: Instead of the debug text for invalid jukebox behavior being printed to + world, the debug text is now restricted to the runtime panel. + BurgerB: + - tweak: Tweaked the UI of the loadout to be less cluttered due to an issue with + formatting. + BurgerBB: + - rscadd: Adds the bonermeter; a device that measures arousal based statistics. + - refactor: Added a new input to the electrostimulator that controls the strength + of the shock. It accepts negative inputs which reduce arousal. Added a new output + to the electrostimulator that displays the amount of arousal gained. + - balance: Rebalanced the electro-stimulator to be less spammy by giving it a 2.5 + second enforced cooldown per circuit contraption. Increased the complexity of + electro stimulator from 10 to 15. + - refactor: Reworked the Vent Clog event to spray smoke instead of foam, also made + it shoot smoke over time instead through each vent instead of all at once. + - tweak: Increased the spawn area of the City of Cogs (Reebe). This does not affect + the area in which builders can build. + - balance: Significantly tweaks the Wizard race transformation event to be less + unreasonably troublesome. + - rscadd: Adds a new 0 cost trait that makes you immune* to Crocin and Hexacrocin + - tweak: Tweaks how slurring works so it's more of a gradual change into slurring + instead of immediate. + - balance: Slurring is now directly proportional to your drunkenness, with other + sources of slur being added on top of it. + - tweak: Bras are now separate from underwear, meaning you can mix and match bras + if you're into that. + - tweak: Men can wear female accessory clothing, and females can wear men accessory + clothing. It's not a fetish, mom, it's PROGRESSIVE. + - code_imp: Reorganized accessories into their own files to prevent a massive 1000 + line file. + - server: i'm 10% sure that merging this PR will cause preference corruption sooooooooooo + I just need to hear from @deathride58 or perhaps someone else on how much damage + this could possibly do. + - tweak: Tweaked penis. + - balance: Rebalanced penis. + - rscadd: 'Added the following reagents to the common list of vent clog reagents: + ~~Cooking Oil~~, ~~Frost Oil~~, Sodium Chloride, Corn Oil, Uranium, Carpet, + Firefighting Foam, semen, femcum, tear juice, strange reagent, ~~spraytan~~.' + - balance: Vent Clog smoke emits the same transparent smoke as a smoke machine, + including how much it transfers. Vent Clogs also do not trigger in areas deemed + "Safe" in code, such as in the dorms or trusted areas where dangerous things + shouldn't occur. + - rscadd: Adds additional random brain damage text + - rscadd: Adds penis enlargement pills. + - rscadd: Adds Stun Circuit and Pneumatic Cannon Integrated Circuits + - bugfix: Fixed extinguisher and smoke circuits not accepting any reagents. + - rscadd: Adds a few important clockcult tips. + - rscadd: Added Mech Sensors, a brass-created trap that activates when a mech not + controlled by a cultist crosses it. + - rscadd: Added power nullifiers, an emp trap that emps everything in a 3x3 area, + with the center suffering a heavy EMP. + - tweak: Brass Skewers now deal 50 damage to mechs. + - balance: Ass slapping only works if you're actually behind the target. Ass slapping + now respects disarm blocking. You can no longer face/ass slap someone on an + intent other than help, unless they are also face/ass slapping. + - bugfix: Fixed ass and face slapping grammar. + - rscadd: Adds meh effects for ass and face slapping. + - tweak: '"Unwillingly" eating food now sends a warning message instead of a notice. + Unable to stuff food down your throat sends a danger message instead of a warning + message.' + - rscadd: Adds clockwork reflectors, a fragile anti-laser reflection shield object + that can be constructed for 10 brass sheets. Upon firing on the object in the + direction where it is shielded, it ricochets the bullet off of it relative to + the shooting angle. + - tweak: Renames some windows in the build menu for consistency. + - balance: Clockwork Cult walls can no longer be deconstructed by RCDs when heated. + - rscadd: Adds several new toy loot to the arcade machine. + - balance: Rebalanced the arcade machine loot. Battlemachines now have a 0.5 second + delay instead of a second delay between actions. + - bugfix: Fixed a bug that would not allow the one in a million pulse rifle to spawn. + - rscadd: Adds a new trait "Buns of Steel" that makes you immune to the effects + of ass slapping, and temporarily makes the user's arm useless like a stun baton + hit. It costs 0 points. + - balance: Ass slapping blowback from the Buns of Steel perk now deals 20 stamina + damage instead of 50, and no brute damage. + - rscadd: Gamemode voting results are displayed at the end-round screen. + - balance: Cloning no longer gives you positive mutations, but a chance for a negative + one. Cloning has a chance to "scramble" your visual DNA. + - balance: Chestbursters no longer give and remove your brain. They just disembowel + and kill you now. + - bugfix: Fixes WarOps miscalculating players. + - balance: Activating the nuclear device during war-ops informs the crew of the + nuke's position. + - rscadd: The alert level is displayed at the job selection screen. + - balance: Central Command informs you when a Meteor Storm is about to hit 5 to + 10 minutes before it happens. + BurgerLUA: + - code_imp: Added a new framework for reagents. Reagents can now have a bool that + determines if it can be detected by handheld medical analyzers. Currently only + the changeling sting chemical does this. + - balance: Made changeling transformation string last between 10-15 minutes. Lowered + the dna cost of changeling sting from 3 dna to 2 dna. Lowered the chemical cost + from 50 to 10. Lowered the loudness from 2 to 1. Changeling sting transformation + can be removed via high doses of calomel. + - bugfix: Fixed most reagents having a placeholder color. + - bugfix: Fixed autolathe wires not correctly shocking you when pulsed. + - balance: Rebalanced special jetpacks. + CalamaBanana: + - rscadd: Added Deer taur + - rscadd: Added Elf ears to mammals + CameronWoof: + - rscadd: Medihounds now have rollerbeds for non-vore patient transport + - bugfix: The closed O2 crate now uses the same color scheme as the open one + - tweak: air alarms are green now instead of blue when the atmosphere is ideal + - tweak: Hexacrocin overdose no longer causes climaxes + - tweak: Altered the icons for inventory backplates. Sleek! Stylish! New! + - bugfix: Attaching a beaker that contains water to an IV stand no longer causes + a visual glitch + - tweak: Fluid-producing sexual organs no longer start full + - tweak: Sexual organ fluid capacity decreased from 50 to 15 + - tweak: Sexual organ production rate decreased from 5u to 0.035u per two seconds. + - tweak: Sexual fluid decals no longer contain reagents + - tweak: Sexual fluids cannot by synthesized (e.g., by the Odysseus) + CdrCross: + - rscadd: Adds the ability for cloning consoles to read and write record lists to + the circuit board, and provides a template for giving other machines local circuit + board memory. + Cebutris: + - rscadd: Hugs of the North Star! Get them from the arcades (if you're lucky) and + hug your friends at INCREDIBLE hihg speeds! + - bugfix: Tea Aspera now properly contains tea powder + - tweak: Breasts no longer lactate by default, lactation is now a preference + Chayse: + - tweak: Changed the Warden's compact combat shotgun to instead be a regular combat + shotgun with a foldable stock and penalties for being folded. + - rscadd: Assorted space-worthy helmets can now act as masks for internals. + - refactor: Internals code can now check any item with the ALLOWSINTERNALS flag + through the GET_INTERNAL_SLOTS define. For now this only checks head and mask + slots, since those are the most realistically speaking usable ones. + - tweak: Medbay doors can now be opened by anyone from the inside without having + to press the exit button. + - bugfix: Borgs now have the necessary dexterity to unbuckle people from themselves + and from bucklable objects. + - bugfix: Fixes the Trek Uniform/Suit worn icons + - bugfix: AIs can now once more talk through holopads successfully + Code-Cygnet: + - rscadd: Added new things - Mind trait, alcohol reagent, chemical reagent, drink + sprite and recipe. + - imageadd: added commander_and_chief sprite to drinks.dmi + Coolgat3: + - tweak: Changed player number checks to 20 from 24 for cult and clockcult, also + made nukeops 28 required players instead of 30. + - tweak: Changed enemy minimum age from 14 to 7 + - rscadd: Added the code for the semen donut and made it craftable + - imageadd: Added the donut sprites + - bugfix: Made the sec and warden berret offer as much protection like the helmet + - rscadd: Added berets for all the heads. + - imageadd: Added sprites for the berets. + - code_imp: Coded the berets to spawn in appropiate lockers. + - tweak: Raised the ripley's movement speed and lights range by 1, also lowered + its armor to compensate. + - rscadd: Added combat gloves sprite + - imageadd: Added said sprite + - imageadd: added combat boots sprite + Coolgat3 / Avunia: + - rscadd: Made kindle put the target into stamcrit, which makes it an actually working, + useful stun. + - rscadd: Added a stamina loss modifier to the vanguard spell which makes the user's + stamina drain at a way slower rate. This doesn't make them immune to tasers, + but it takes a few hits to actually get them to fall down. + - tweak: Made it so that clock culties don't start with a chameleon suit. Instead + they start with an engineer suit which is pretty much the same sprite and looks. + If this is not perfect, then I am willing to make a slightly more brass-colored + version of the engineer suit sprite and call it a ratvarian engineer jumpsuit. + - balance: Increased the cost of vanguard, as it is now a spell that works somewhat + like adrenals, minus the move speed, making your stamina drain really slow and + making you unable to get knocked onto the ground by just a single taser shot. + - balance: Lowered the charge time of kindle, reason being that you can usually + have only one active spell on you, or two at max if you decide to run two slabs, + but the fact that kindle silences people for such a small amount of time makes + up for it, in my opinion. + - server: Figured out that the consoles and their warp function actually work with + the current code. The thing that makes them not work is when the gamemode is + ran on debug mode, without the required players to actually support it. It also + breaks the ark timer which is stuck on -1 seconds until activation. Whenever + the gamemode starts properly, like any other gamemode, with player checks and + all, everything seems to work just fine. + CydiaButt13: + - rscadd: Lamp Plushie to loadout + - imageadd: added plushie_lamp to plush icons + - code_imp: added Lamp Plush to loadout and icons and items + EgoSumStultus: + - bugfix: Fixed blood chiller's inhand + - bugfix: FIXED SHIELF + - bugfix: fixed magpistol magazine sprites + - rscadd: Added the Femur Breaker + - rscadd: Adds male AI vox. + EmeraldSundisk: + - rscadd: Adds a gun range to Box Station + - rscadd: Provides some extra power grid connections + - rscdel: Sunglasses and Earmuffs removed from the Warden's Office - they can be + found at the range instead + - tweak: Rearranges a few objects within the prison as to accommodate the new gun + range + - rscadd: Adds a mass driver to Delta Station's chapel + - rscadd: Adds a second means of entry into the chapel + - tweak: Slightly expands the chapel to make room for the driver, slight adjustment + to air systems + - tweak: Clears a path in the station exterior for the mass driver to work properly + - tweak: Nearby maintenance loot has been relocated to accommodate the chapel expansion, + surrounding area has been "cleaned up" somewhat + - tweak: CentCom has noticed the lack of coffins in Delta Station's chapel and provided + some, but in exchange for reducing the chapel morgue's capacity. + - tweak: Fixed a maintenance door the chaplain should have been able to open. + - bugfix: 'Fixes space areas outside the driver removal: CentCom Defense Analysts + have ordered the maintenance hatch to the Mass Driver room be removed citing + "security concerns".' + - rscadd: Increases the number of plots to 9 (from 5) + - rscadd: Additional lighting placed directly outside the garden + - tweak: Cleans up the area to reflect use. Moves the seed extractor to a more central + location + - tweak: 'Relocates the seed packs on botany''s counter to the garden removal: Removes + wooden barricades outside the garden' + - config: Renames "Abandoned Garden" area designation to "Maintenance Garden", but + does not replace the icon in Dream Maker + - rscadd: Expands the chapel mass driver room to make it easier to use + - rscadd: Rearranges the chapel backroom so there are now six coffins and burial + garments roundstart + - tweak: Cleans up the Janitor's office + - tweak: Readjusts the station exterior so mass-driven coffins (hopefully) have + less friction + - bugfix: Adds a fan to the chapel driver + - bugfix: The Janitor missed a few spots around the newly renovated Maintenance + Garden + - bugfix: Readjusts positioning of Delta's QM keycard device + - bugfix: 'Cleaned up a few spots I missed in #9356, particularly around the janitor''s + office' + - rscadd: Adds some potted plants around Box Station + - bugfix: 'The tile mentioned in #9409 should now be radiation-free.' + Fermi: + - bugfix: Fixes tiny runaway decimals in reagents system. + - bugfix: 'SDGF: Fixes infinite clones.' + - bugfix: fixed an angery PR + Fermis: + - rscadd: Added a panda simplemob + - bugfix: fixes empathy exploit. + - rscadd: Added the secbat, a box to hold it and the ability to dispense it from + the SecTech vendor. + - rscadd: Adds 3 new music tracks. + - tweak: tweaked Neurotoxin + - balance: added more depth to Neurotoxin + - bugfix: fixed the inability to create Neurotoxin + - bugfix: fixes fermichem reactions for tiny volumes work + - tweak: makes quantisation level for chemistry finer + - tweak: re-enables femichem explosions in grenades. + - tweak: adds nuance to the SDGF and hatmium explosions. + - bugfix: Fixes analyse function on ChemMasters to correctly display purity. + - bugfix: Fixes the custom transfer for buffer to beaker button. + - rscadd: 'Debug option: Generate Wikichems' + - rscadd: graft synthtissue surgery, new reagent synthtissue + - tweak: 'neurine fixes brain objs merge: combines fermichem''s lung damage with + tg''s' + - rscadd: on_mob_dead(), bitflags and CHECK_MULTIPLE_BITFIELDS + - refactor: refactored fermichem vars, moved impure chems into their own reagents + subtype + - bugfix: Fixes small residues of chems that won't go away! + - tweak: tweaked beaker health and allows use of syringes/droppers on chem_heaters + - soundadd: added a sound for when beakers take temperature damage. + - imageadd: added some icons for melting beakers + - refactor: refactored how beakers take damage + - bugfix: fixes how beakers would only take one instance of damage on pH damage + - bugfix: fixes Janitor grenades. + - bugfix: fixes reaction mechanics at low volumes + - bugfix: stops reactions constantly bubbling on the edge of reaction temperature + - bugfix: stops small amount reactions from occurring, and prevents disappearing + tiny numbers + - tweak: Reduced minimum reaction volume from 1 to 0.01 + - refactor: cleaned up Fermichem + - rscadd: Adds Jacqueline the Pumpqueen and her familiar Bartholomew for the spooky + season + - soundadd: Adds a giggle + - imageadd: 'Adds cauldron, Jacq and Jacq o lanterns, and a costume for halloween! + mapedit: adds a new landmark so Bartholomew can spawn somewhere sensible.' + - bugfix: fixes food reactions and explosion runtimes, + - bugfix: fixes the too much yes problem + - bugfix: Heart, Tongue and stomach regen. + - bugfix: lung damage threshholds. + - bugfix: Graft synthtissue + - bugfix: Skeleton's burning for no reason + - bugfix: Organ freezing handling. + - bugfix: Fixes chemistry books to point to the right wiki, and keeps tg's just + in case + - tweak: Changes top right wiki button location to go to both wikis + - bugfix: fixed Jacq's fondness for the AI + Ghom: + - code_imp: minor clean up on hydroponics reagent containers. + - bugfix: fixes the perpetual lack of moisture that has affected genitalia descriptions + since, like, forever. + - rscadd: implements the arousal state for mammary glands. + Ghommie: + - bugfix: Fixes many possible situations of null icons for cit races' bodyparts. + - imagedel: Removes duplicate slimepeople' sprites. + - code_imp: Purges that draw_citadel_parts(). + - code_imp: Fixes ISINRANGE_EX using the wrong relational operator. + - tweak: The kindle status effect stun duration now properly proportional to the + owner's remaining health. + - tweak: Clockwork cult's kindle now affects silicons. + - tweak: Cyborg mounted disablers/tasers/lasers now slowly self-recharge off the + cyborg user's power cell instead of draining from it directly. + - tweak: Borg rechargers now properly recharge the borg module's energy guns. + - bugfix: Prevents a couple more special/mounted guns from being preserved on cryo + - balance: Halved borg energy guns self-recharge delay and increased their cell + capacity by 3/4 + - bugfix: Fixes chemical patches always checking the suit slot even if the targetted + limb was the head. + - bugfix: Skeleton, nightmare and golem races are once again available to get chemical + patches applied onto. + - rscadd: Adds two cartons of space milk to the space skellie pirates cutter's fridge. + - refactor: Refactored implants to not be located inside mobs codewise, akin to + organs. + - bugfix: Fixed gps tracking implants. + - bugfix: Fixed item not being dumped out of storage implants onto the owner's turf + upon removal. + - bugfix: Fixes cult potentially stalling if the target is erased from existence + without being sacced. + - balance: Nukes the stunprod's 3 seconds delay. + - bugfix: Fixes teleprods. + - bugfix: Stops pulls of resting mobs breaking off whenever you swap turfs with + someone else because of crawling delays. + - bugfix: fixes IAA. + - balance: EMPs now flick off stunbatons, they can be turned back on immediately + by the user anyway. + - balance: Stunbatons now very slowly consume charge whilst kept on, at a rate of + 4/1000th of a standard batoning charge cost per tick. + - balance: Softened up the charge cost checks to stop the above update from practically + reducing the maximum uses of a stun baton by one. Now, should the remaining + charge be lower than the hit cost, the resulting stun will be be proportional + to the remaining charge divided by the hitcost, within a limit under which the + stun batoning just won't happen. + - balance: Buffs condensed capsaicin, a yet another feature previously dunked by + stam combat. + - balance: speeds up pepper spray puffs. + - balance: Buffed krav maga leg sweep stun and stamina damage. On the other hand, + it's now unable to be used on already lying targets. + - bugfix: fixes eyestabbing people with cutlery while being a pacifist. + - bugfix: Reduces goonchat lag from being blasted by pellets and bullets repeatedly + whilst wearing armor by properly removing the armor protection texts this times. + - spellcheck: also reduced the size of armor protection messages in general. they + clog up the chat box. + - bugfix: Fixes stunbatons icon not properly updating on cell removal and insertion. + - tweak: Allows lower charge cells to be used with stun batons, and thus single + use crapshots batons. + - balance: Adds in a 7 seconds delay to the jackhammer dismantling a superheated + clockwork wall. + - tweak: escape pods emergency suits storage can now be busted open by emags or + excessive damage. + - bugfix: Fixes alt click bypassing the escape pods' suits storage lock. + - bugfix: Fixes emags wasting charges on un-emaggable & co stuff. + - code_imp: Ported some radials code updates. + - rscadd: Ported the RCL wiring menu and a comfier RCD interface. + - tweak: A milder combat stance message will show up if the user switch combat mode + on while on help intent. + - spellcheck: Properly rewords the extinguisher's instructions on how to empty it + on the floor since it was changed to be a screwdriver action instead of Alt + Click a while ago. + - rscadd: Reskinnable PDAs. A related game preference. + - refactor: Refactoring the pda, pda painter, obj reskinning and chameleon pda a + bit to support this feature. + - imageadd: more PDA sprites and ported reskins. + - refactor: turned virtual reality into a component datum, which is then applied + to spawned virtual mobs. This fixes mob transformations (such as wabbajack and + monkeyizing) breaking the previously hardcoded behaviour and trapping you in + VR, also enabling a more concrete virtual reality inception experience. + - bugfix: Fixes power cells being unable to be rigged. Also prevents them from starting + processing on init if they don't self recharge. + - bugfix: Fixes many, little or otherwise, issues with the stunbaton status refactor. + - bugfix: The sacrificial target icon will now display onto the cult objective ui + alert once again. + - bugfix: Stopping borgs from sprinting into negative cell charge. + - tweak: The default amount of z-levels reserved specifically for space ruin generation + has been increased from 1 to 2 + - tweak: 'Moving some tablecrafting recipes to the appropriate categories: Kitty + ears and lizard cloche hats to "clothing"; Hot dogs to "Sandwichs"; Cuban carb, + fish and chips and fish fingers to "Fish".' + - bugfix: Fixes the not-a-sandwich recipe being M.I.A. + - rscadd: Adding in peanuts, peanut butter, peanut butter toasts and sandwiches, + and the PB&J sandwich. The peanuts contain a little bit of extractable cooking + oil (similarly to soy beans) and can be microwaved or dried in a drying rack + to make roasted peanuts, which can be mixed in a all-in-one-grinder for peanut + butter, required to make those sandwiches. + - balance: Buffed wizard and artificier's Magic Missile, wizard and xeno queen's + Repulse and juggernaut's Gauntlet Echo. + - bugfix: Fixes flashlights being unable to be used for rudimentary eyes and mouth + exams. + - rscadd: Adds in a grey jumpsuit to the loadout choices, restricted to Assistants. + - bugfix: Fixes CWC construct shells being visible as ghost role to latejoiners. + - imageadd: new sprites for the flechette gun, its magazines and the toy ray gun + - tweak: Merges the end-of-shift and its shuttle autocall announcements into one. + - bugfix: Prevents the end-of-shift shuttle from being recalled (even if to no avail). + - bugfix: Fixes being able to teleport papers to your location with TK. + - bugfix: Fixed some monkey-code shenanigeans making items sometimes disappear from + pickpocketing. + - imageadd: New sprites for the some pda cartridges. + - tweak: The crew monitor's entry for the Quartermaster will now appear bolded, + while HoP's will be of the same color of the service/unknown/other jobs. + - bugfix: emergency pods' storage will now properly work. + - bugfix: The PDA skin preference will now properly save up. + - tweak: Changed the default PDA icon var to match the default PDA skin preference. + - bugfix: Fixing the `(pointless) badassary` category appearing between the `dangerous + and conspicious` and `stealthy and inconspicious` categories. + - bugfix: Combat gloves plus now properly use the combat gloves sprite. + - bugfix: Fixes the space ninja's energy netting. + - rscadd: Adding one pAI to the wizard shuttle and ERT prep room + - bugfix: Fixes the rocket launcher being unreloadable. + - balance: Buffed its accuracy a bit. + - tweak: Replaced the grenade launcher emagged minesweeper loot with the rocket + launcher like it was originally supposed to be. + - imageadd: 'Tweaked the :b: emoji.' + - rscadd: Rubber Toolboxes. + - rscadd: 'Porting in two bar signs: Cyber Sylph''s and Meow Mix.' + - bugfix: Fixing stamina damage melee weaponry being unusable by pacifists, and + still damaging objects and triggering electrified grilles when thrown. + - refactor: refactored underwears to allow custom color preferences, instead of + manually colored sprites. + - rscdel: The aforementioned manually colored pieces. Some of your char preferences + may have been resetted as result. + - rscadd: 'More underwear choices, including: Bowling shirts, long johns, a tank + top, fishnets, more bee socks, bee t-shirt and bee boxers (original PR for the + latter three by nemvar from /tg/station).' + - tweak: random bodies will now have random underwear again. + - bugfix: Dressers will now properly change undergarment again. + - tweak: Toned down many species' female chest sprites to fit the smaller cups. + - bugfix: Fixed some body parts sprites inconsistencies, such as the W/E female + and male chest sprites being the same in some species, and jellypeople's legs + being one tile off on W/E + - bugfix: Fixing baklava pies a bit. + - tweak: Sweaters now cover groins too. + - balance: Improved the zelus flask to be more viable for bottle smashing than the + average barman's selection. + - code_imp: Very slight bottle smashing code clean up, stupid const vars. + - bugfix: Fixes krav maga gloves, wizard spells knockdowns. + - tweak: Added in an alert pop up to the cult convertees, on top of the older "click + here to become a blood cultist" chat message. + - tweak: The convertee's screen will now flash red to fit in the aforementioned + message's fluff. + - spellcheck: Made said message less verbose. + - rscadd: Towels. Crafted with 3 sheets of cloth, they can be worn on head, suit + and belt slots even without uniform, or laid flat on the floor. Sprites from + Baystation and Aurora Station. + - rscadd: You can combat mode right click people while wielding rags and towels + to pat out their flames (to no use for rags) or otherwise drying them out. + - balance: toned down the stamina costs of some of the bulkier weapons. + - code_imp: repathed hypereutactic blades to be a subtype of dual sabers. Way less + copypasta. + - bugfix: Fixing CX Shredder guns not accepting standard flechette mags. + - bugfix: Fixing missing magpistol magazines icon states. + - rscadd: sort of overhauled darkmode/lightmode to /vg/station's, also reincluding + the pre-existing black'n'white theme. + - bugfix: Fixed LOOC color, fixed .userlove and .love span classes being a bit too + blurry on dark mode. + - rscadd: The syndicate base's bathroom is now fitted with a shower, and a special + towel. + - bugfix: Fixed many issues with towels. + - tweak: The dry people off with rags/towels action can only be done if the object + is NOT moist with reagents now. Also cleans banana creaming. + - rscadd: Towels deal more damage while soaked with reagents. + - rscadd: You can now squeeze rags/towels with Alt-Click. + - rscdel: deleted an old and crappier towel sprite that got in the way. + - bugfix: Fixes Pubby's disposal conveyor belts and lack of a second lawyer spawner. + - code_imp: Cleaned up the absolute state of the arousal module. + - refactor: refactored exhibitionism into a quirk. + - tweak: arousal states won't persist after death. + - bugfix: Fixes testicles size adjective thing. + - bugfix: undergarments toggling now works instead of just making underwear disappear + and not come back. + - tweak: The "Always visible" genitals setting will now display them above clothes. + - bugfix: combat pushes will now properly stop targets from using firearms, and + will disarm the firearm if performed a second time, and also slow down people + by 15%, and won't push people on tables blocked by shutters or other dense object + anymore. + - bugfix: Fixes CHECK_BITFIELD macro. + - bugfix: Fixes hypovials being unable to transfer out liquids or be refilled by + large dispensers like water tanks. + - bugfix: Fixes chem-masters machineries not dispensing newly made pills inside + loaded in pill bottles. + - rscadd: Stunswords now fit in the captain's sabre sheat. + - rscadd: reworked ninja's stealth mode. Increased invisibility, but engaging in + combat, attacking or throwing things, bumping people will temporarily lower + it. + - rscadd: Ninja shoes are even stealthier. + - code_imp: cleaned up some 2014 tier processing code horror. + - tweak: the oxyloss fullscreen overlays now also take in consideration 1/5 of the + user stamina loss. + - rscadd: When you're jogging, you will only slip on water if you have more than + 20% staminaloss, for real this time. + - imageadd: Different cuffs now come with different worn overlays instead of a generic + one. + - bugfix: High luminosity eyes can now be properly deactivated and won't illuminate + your surroundings again until turned back on. + - bugfix: Fixes freshly cloned people starting with undershirts. Fixes random characters + possibly rolling with undergarments of the opposite gender (Doesn't affect preferences' + freedom of choice). + - balance: MRE menu 3 has cuban nachos instead of a chili now. + - bugfix: Removed the illustration overlay from MREs, looks pretty weird otherwise. + - rscadd: MRE menu 4, vegetarian. + - bugfix: fixes a few bad touchs on combat mode pushing. + - bugfix: Fixes clock cult Abscond scripture not dragging pulled mobs into Reebe. + Also fixes blood cult tele runes teleporting you from the source turf to the + source turf. + - bugfix: fixes clock cult mass recall. + - bugfix: Fixes underwear colors a bit. + - bugfix: Fixes Blood Cult conversion prompts + - rscdel: Removes an obnoxious temporary overlay var. + - bugfix: colorable socks can be colored again. + - bugfix: Fixed undergarments color preferences resetting each round. + - bugfix: Fixed a few dozen suits' body coverage inconsistencies. These changes + shouldn't affect armor and utility vests for most. + - bugfix: Fixed clown shoes and work boots. + - bugfix: Fixed some overlay bug that happens when legcuffed and then handcuffed. + - balance: Slowed down police baton and tele baton speed by 75%, should be still + be faster than the legacy speed (2 seconds) by 0.6 seconds. Telescopic batons' + stamina cost per swing is now on par with police batons, ergo more expensive. + - bugfix: Fixed undershirts n socks colors prefs. + - bugfix: You can now alt-click to rotate machinery such as the tachyon-droppler + array or emitters again. + - bugfix: Sofas can't be wielded and transformed back into plain chairs anymore. + - rscadd: Enables emojis for PDA messages. + - balance: Removes revenant blight's shabby toxin damage in favor of mood maluses, + and a dangerous necropolis curse if not cured in time. Remember + - tweak: Blood cult altar, forge and archives now use radial menus. + - bugfix: Fixed some machineries' UIs. + - tweak: blood and clock cultists messages from metabolizing + - bugfix: Fixed advanced medical scanners borg upgrades. + - bugfix: Fixes certain borg upgrades being unapplicable on dogborg counterparts + of the target cyborg type. + - bugfix: Fixed people being shovable hrough windows, windoors and the such. + - rscadd: You can now shove people into disposal bins. + - refactor: refactored altdisarm(), ergo the "shoving people around" proc. + - tweak: war ops is now lowpop friendly and doesn't require roughly 54 starting + players anymore. + - rscadd: Singularity beacons now also moderately increases the odds meteor waves, + while lowering their estimeed arrival countdown. + - bugfix: non-alphanumeric graffiti decals will no longer display as "letter". + - balance: Nerfs cyborg disabler and its internal power cell to hold 25 disabler + beam shots rather than 43/44, just like a normal disabler. + - bugfix: Adds some missing species_traits for cloth, clockwork and cult golems. + - rscadd: Added towel linen bins, found in dormitory restrooms. Also enhanced the + bedsheet bins found in some stations' dormitories + - imageadd: Resprited bedsheet bins in 3/4 perspective + - tweak: Made SDGF ghost poll message less verbose, made the experimental cloner's + complaint with the former, and added ghost poll ignore options for both. + - bugfix: fixing some related onmob sprites issues with the above accessory. + - bugfix: Teleprods work on non-carbons mobs now. + - bugfix: Fixed tracking implant teleport issues. + - balance: Increased stunbatons power cell depletion rate when left on by 50%. + - bugfix: Gorlex Marauders are pleased to announce non-slip grooves were given to + their .50 sniper rifles, and thus shouldn't accidentally flop on the floor like + pocket spaghettis whenever taken out of a bag anymore. + - bugfix: Silicons can now operate teleporter, medical and security records console + from a distance again. + - bugfix: Fixed custom say emotes conflict with drunk memes. + - bugfix: Fixes identity transfer (envy knife, changeling transformation, making + a vr avatar) not copying digitigrade legs. + - bugfix: Fixes temporary transformation sting triggering heart attacks on heartless + humans. + - bugfix: Fixed mobs folded inside bluespace bodybags getting their clothing and + items deleted when passing through a recycler. + - bugfix: The alien-bursting-from-your-thorax and the xeno "hud" embryo stage images + will now properly delete them once the embryo egg lifecycle is complete. + - bugfix: Fixed artificier lesser magic missile. + - bugfix: Phantom thief masks will now fancy your combat mode yet again. + - bugfix: Fixed gulag teleporter stripping the user of stuff it really shouldn't + (like storage implant bags). + - bugfix: fixing cydonian armor a bit. + - imageadd: Resprited wooden and critter crates. + - imageadd: Improved the Cyber Sylph' good yet cumbersome bar sign a little. + - bugfix: Cyborgs can now use camera consoles on the edge of their widescreen. These + consoles are also TK friendly now. + - imageadd: Updated gang dominator sprites. + - bugfix: Miner borgs can again have installed PKA mods. + - bugfix: Fixed invisible blackberry n strawberry chocolate cake slices. + - bugfix: Nuke ops / adminbus combat mechs will no longer spawn with tracking beacons. + - imageadd: Arcade machine directional sprites. + - tweak: 'lowered the arcade''s random plush / other prizes ratio from 1 : 2.5 circa + to 1 : 5. Dehydratated carps and the awakened plush can not be achieved this + way anymore.' + - imageadd: Added armrests overlays to sofas and tweaked their sprites a little. + - bugfix: Fixed dogborg sleepers. Just don't tell me what is exactly fixed, cause + I don't want to find out. + - bugfix: Buffed the deep space familiar gorilla against runtimes. + - imageadd: Updated ratvarian computer sprites. + - bugfix: Fixed storage implant transplant. + - bugfix: Refactored how Jacqueen teleportation destination is selected, preventing + them from teleporting on off-station holopads. + Ghommie && Kevinz000: + - balance: Lichdom and necromantic stone skeletons are now of the spaceproof kind + too. + - tweak: skeletons now also like dairy products. + - rscdel: Halloween roundstart skeletons and zombies are no more spaceproof. + - rscadd: You can choose to set your species to zombie or skeleton through the pride + mirror yet again, Alas they are not of the spaceproof kind either. + Ghommie (Credits to Kmc2000 for the original PR): + - rscadd: Porting in MRE boxes from Yogstation. But be careful, eating possibly + expired MREs found in maintenance comes with an unrealistically large (actually + small) chance of food poisoning. Otherwise just bail out and order actually + safe-to-eat MREs from cargo for 2000 credits. + Ghommie (Original PR by Dennok): + - bugfix: Now areas_in_z get areas spawned by templates and blueprints. + Ghommie (Original PR by Dreamweaver): + - rscadd: Nanotrasen has received word of a high-tech research facility that may + contain advancements in bluespace-based research. Any crew members who become + aware of its whereabouts are to report it to CentCom immediately and are restricted + from sharing said info. + - refactor: The turf reservation system now dynamically creates new z levels if + the current reserved levels are full. + Ghommie (Original PR by JJRcop): + - rscadd: 'Ports in more emojis, including : flushed :' + Ghommie (Original PR by LaKiller8): + - bugfix: Goonchat options should now save properly. + Ghommie (Original PR by Vile Beggar): + - rscadd: Warden now has an added drill hat in his locker. You can change the loudness + setting of it by using a screwdriver on it. Use wirecutters on it for a surprise. + Ghommie (Original PR by coiax): + - refactor: atom/var/container_type has been moved into datum/reagents/var/reagents_holder_flags. + There should be no visible changes to effects. + Ghommie (Original PR by nemvar): + - rscadd: Botanists can now get beeplushies (or cultivator and bucket) as an heirloom. + - bugfix: Clowns and mimes will now properly pick either a can of paint or their + brand as heirloom now. + Ghommie (Original PR by tralezab): + - bugfix: Fixes an issue with spontaneous appendicitis picking incompatible mob + biotypes. + Ghommie (Original PRs by Tortellini Tony and BuffEngineering): + - bugfix: E-cigs will continue to display their setting after being emagged. + - bugfix: Vapes now come out of the mouth. fix Fixes an E-cig initialize() runtime. + Ghommie (Original PRs by nemvar and Rowell): + - rscadd: Added beekini bras and panties, thigh-high and knee-high bee socks. + Ghommie (by Arkatos): + - bugfix: Fixed an issue with a Lizardwine drink crafting, where a final product + would contain unwated 100u of Ethanol. + Ghommie (by Floyd / Qustinnus, Arathian): + - rscadd: The robotocist now has robe to show his love for toasters + Ghommie (by nemvar): + - tweak: Dwarfs are now more robust. + Ghommie (original PR by 4dplanner): + - bugfix: thrown objects (but not mobs) no longer hit the thrower + - bugfix: mirror shield rebound no longer depends on the original thrower's momentum + Ghommie (original PR by 81Denton, kriskog and nemvar): + - spellcheck: Sleepers now show a message if players try to unscrew the maintenance + hatch while they're occupied or open. Fixed typos in sleeper/organ harvester + messages. + - tweak: Sleepers and dna scanners can now be pried open with crowbars. + - tweak: You can open and close sleepers and dna scanners by alt-clicking them. + - bugfix: The scanner's hatch now must be closed (on top of being unoccupied), just + like sleepers, before being screwdriverable. This fixes a tricky door stuck + issue with the machine. + Ghommie (original PR by AffectedArc07 and Shazbot): + - imageadd: Added 8 new sock styles + Ghommie (original PR by AffectedArc07): + - tweak: Religion is now a globalvar instead of being a subsystem for some reason + Ghommie (original PR by AnturK): + - bugfix: Supermatter now melt walls if it finds itself in one. + Ghommie (original PR by Anturk): + - rscadd: Recipe for fabled secret sauce can now be found in the deepest reaches + of space. + Ghommie (original PR by Barhandar: + - bugfix: Pumpkin meteors on Halloween now replace catastrophic meteor waves, instead + of ALL OF THEM. + Ghommie (original PR by CrazyClown12): + - tweak: The chloral hydrate inside of the sleepy pen is no longer slower acting + than chloral hydrate made in chemistry. + - tweak: The chloral hydrate inside of cookies synthesised by emagged borgs is no + longer slower acting than chloral hydrate made in chemistry. + - balance: Slight tirizene buff. + - rscdel: Delayed chloral hydrate + Ghommie (original PR by Denton): + - tweak: Nanotrasen has started shipping more types of bedsheets to its stations. + - rscadd: Added in Runtime, Pirate and Gondola bedsheets. The second one can also + be found in some pirate ships, while the last can be crafted from gondola hides. + - balance: You can no longer reveal the 'illegal tech' research node by deconstructing + .357 speedloaders, riot dart boxes, syndicate cigarettes, syndicate playing + cards or syndicate balloons. + Ghommie (original PR by Mickyan): + - bugfix: Fixed being unable to smother people using the damp rag + Ghommie (original PR by MrDoomBringer): + - bugfix: morgues have had their proton packs removed and as such no longer suck + in ghosts on closing. + Ghommie (original PR by MrDoomBringer, AnturK and YPOQ): + - bugfix: Explosions will no longer damage wizards in rod form, the supermatter + monitoring radio and megafauna GPS. + - bugfix: Supplypods no longer detonate their contents. + - bugfix: Fixed silicon items (e.g. cyborg modules) being destroyed by explosion + epicenters. + Ghommie (original PR by Naksu): + - code_imp: get_area() is now a define rather than a proc. + Ghommie (original PR by Nicjh): + - rscadd: Abductor console's select disguise option now uses a radial + Ghommie (original PR by ShizCalev): + - bugfix: Pineapple haters/lovers will get/no longer get pineapple pizzas respectively + from infinite pizza boxes. + - bugfix: As a non-human mob, hovering your cursor over an inventory slot while + holding an object in your active hand shouldn't runtime now. + Ghommie (original PR by Skoglol): + - code_imp: New helper proc for alt-click turf listing, bypasses any interaction + overrides. + - code_imp: Ghosts and revenants now use the new proc. + - bugfix: Ghosts can no longer toggleopen sleepers, adjust skateboard speed or close + laptops + - bugfix: Revenant can now alt-click turf to list contents. + - tweak: Revenant now slightly less nosy, use shift click to examine. + - tweak: Alt-clicking the same turf again no longer closes the turf listing tab. + - bugfix: Reduced ventcrawl lag greatly. + - bugfix: Mining bags will no longer drop ore into backpack. + - bugfix: Mining bags in backpack no longer interferes with other mining bags. + - bugfix: Fixes some storage size circumventions. + - tweak: Moved machine and computer frames below objects, parts are now always on + top. + - tweak: Moved structures (chairs, closets, windows, cult altars etc etc) below + objects. + - tweak: Moves mineral doors to airlock layers + - tweak: morgue/crematorium trays' layers shouldn't overlap bodybags' anymore. + Ghommie (original PR by SpaceManiac): + - bugfix: Disassembling a chem dispenser for the first time will no longer always + yield a fully-charged cell. + Ghommie (original PR by Swindly): + - rscadd: Arm-mounted implants that contain more than one item use a radial menu + instead of a list menu. + Ghommie (original PR by Tlaltecuhtli): + - bugfix: Other people's clothes burning no longer spam you + Ghommie (original PR by XDTM): + - bugfix: Reagents now stop their passive effects (for example, stun immunity) if + the liver stops working while they're active. + Ghommie (original PR by YPOQ): + - bugfix: Fixing roffle waffle, mushroom halluginogen and some invalid reagents. + - bugfix: Fixes clockwork armor not actually having armor. + Ghommie (original PR by cacogen): + - rscadd: The font size of all text in the chat window now scales + - tweak: High volume (megaphone/head of staff headset) is a slightly smaller + - tweak: Admins have slightly larger OOC text + Ghommie (original PR by coiax): + - code_imp: Randomly coloured gloves and randomly coloured glowsticks now have slightly + different typepaths, but otherwise function the same. + - code_imp: The Squeak subsystem has been renamed to Minor Mapping. + Ghommie (original PR by duckay): + - rscadd: Added better names and descriptions for blueshirt officer gear. + - rscadd: Added the above gear to the premium selection of the sectech + Ghommie (original PR by harmonyn): + - balance: Resisting out of bucklecuffs takes more/less time depending on the handcuffs + you used, i.e., fake handcuffs will not bucklecuff someone for ages. + - tweak: fake handcuffs shouldn't no longer demoralize restrained criminals scums. + Ghommie (original PR by monster860): + - bugfix: fixes advanced proccall + Ghommie (original PR by mrhugo13 on tgstation13): + - rscadd: The Syndicate has decided to equip their Syndicate leaders operative (Aswell + as their clown counterparts) with the new Combat Glove Plus! The new Combat + Glove Plus does everything the old boring Combat Gloves does but with the added + extra of learning Krav Maga upon wearing them, any other Syndicate operative + who wants to get in on the action will have to pay 5tc. + Ghommie (original PR by nemvar): + - imageadd: Some drinks have new icons or slightly altered icons. In particular + Wizz Fizz, Bug Spray, Jack Rose, Champagne and Applejack. + Ghommie (original PR by ninjanomnom): + - bugfix: Orbiting is a little more aggressive about staying in orbit. The wisp + as a result now correctly follows you over shuttle moves. + - bugfix: Gaps between sounds in some looping sound effects should no longer happen + as much under heavy server lag. + Ghommie (original PR by variableundefined): + - bugfix: Cancel button to assault pod destination selector. + Ghommie (original PR by wesoda25): + - balance: disembowelment no longer works on mobs that aren't dead or in critical + condition + Ghommie (original PRs by Akrilla, Arkatos and Denton): + - tweak: Sprays cans have a cap on how dark you can make objects. Art is uneffected. + - bugfix: Fixed a bug where you could get cyborg spraycans via pyrite extracts. + - rscadd: Added an infinite spraycan for admins to spawn. + Ghommie (original PRs by Denton and Skoglol): + - tweak: Reorganized the syndicate uplinks. Items are now mostly alphabetical, some + misplaced items moved to more fitting categories. Bundles, random item and TC + have been moved into a new category called "Bundles and Telecrystals". Gloves + of the North Star and Box of Throwing Weapons have been moved to Conspicuous + and Dangerous Weapons. Combat Gloves Plus have been moved to Stealthy and Inconspicuous + Weapons. Moved all implants into the Implants category. + - tweak: 'Added a new category to the uplink: Grenades and Explosives.' + Ghommie (original PRs by Floyd/Qustinnus, optimumtact, Denton and coiax): + - rscadd: You can now select what your pills will look like when making pills from + the Chem Master + - rscadd: Red pills can make you think. + Ghommie (original PRs by Jujumatic and PKPenguin321, respectively): + - rscadd: Minesweeper Arcade machines. The higher the difficulty setting, the better + the prizes will be. + - rscadd: Also keep your eye out for another new (and rare) arcade game! + Ghommie (original PRs by Kmc2000 and actioninja): + - rscadd: Added darkmode! You can opt-in to this by clicking the new toggle darkmode + button just beside the settings one. + - rscadd: Byond members will now have a new setting for their Antag OOC color, instead + of using their OOC one. (Antag OOC still locked under admin discretion though) + - rscdel: Default black'n'white windows style. + Ghommie (original PRs by Mickyan, Anturk, ShizCalev, nemvar and Naksu): + - rscadd: After rigorous mandatory art training for the crew, many new graffiti + styles are now available + - bugfix: Cleaned up some crayon and spraycan code for futureproofing. + - bugfix: Spraypainting blast doors no longer makes them see-through. + - balance: Paint remover now works on blast doors and the like. + - rscadd: Most objects can now be colored using a spray can. + - spellcheck: Added visible message to spraying objects and windows. + - rscadd: Colored lights now shine in different colours. + - rscdel: Removed individual buttons text in crayon/spraycan UI, speeding it up. + - bugfix: Text mode buffer is actually visible in the UI. + - tweak: Last letter of a text mode buffer no longer rotates out to be replaced + with "a", allowing the text mode to be used for individual symbols. + Ghommie (original PRs by Naksu and XDTM): + - bugfix: Transferring quirks now properly removes the roundstart trait from the + person losing the quirk. + - bugfix: Roundstart traits no longer block the removal of other sources of that + trait. + - code_imp: status traits are now a datum var, the accessors are now defines rather + than functions. + Ghommie (original PRs by Naksu and coiax, loser): + - code_imp: Cleaned up saycode + - bugfix: Taking mutadone while having the communication disorder brain trauma will + no longer spam your chat with messages. + - rscadd: IPCs now come with a subtype of robotic tongue without the omnilingual + ability, instead of innately having robotic voice spans. + Ghommie (original PRs by Nichlas0010 and ShizCalev): + - tweak: AI core display screen can now be set in character preferences. + - bugfix: AI core display screen will now be restore when revived. + - spellcheck: Corrected some inconsistent capitalization in the player preferences + screen. + - imageadd: Readded some forgotten AI sprites. + - bugfix: Fixed Hades AI death animation not playing. + - tweak: the AI icon-selection menu now uses a radial. + - imageadd: Added in the death icon_states for the "TechDemon" AI screen. + Ghommie (original PRs by ShizCalev and bobbahbrown): + - rscadd: Headsets now dynamically show in their description how to speak on any + channels they can use when held or worn. + - code_imp: Radio channels names and keys now use defines. + - tweak: The head arrival announcement will now be broadcast to the supply for the + quartermaster. + Ghommie (original PRs by ShizCalev): + - bugfix: Fixed a bug that allowed you to teleport an ID in your possession to a + PDA anywhere ingame. + - bugfix: Fixed an exploit allowing you to steal ID's/pens from PDA's not in your + possession. + - bugfix: Fixed an exploit allowing you unlimited control of a PDA's interface even + if it wasn't near you/in your possession. + - bugfix: Fixed Pride Mirror exploits. + - tweak: Corgi collars can now be removed! + - tweak: Updated the corgi & parrot inventory panels to use the same formatting + as other mobs + - bugfix: Fixed corgi inventory panels not closing properly. + - bugfix: Fixed the parrot inventory panel not closing properly if you're not able + to interact with it. + Ghommie (original PRs by ShizCalev, MrDoombringer, AnturK, bgobandit, 81Denton and actioninja): + - rscadd: Failsafe codes for uplinks are now available for purchase. + - rscadd: Nuke Ops now have the ability to purchase a usable RPG, the PML-9, as + well as a couple different types of rockets for it. you can also suicide rocket + jump with them! + - spellcheck: Improved Uplink item descriptions and formatting. + Ghommie (original PRs by ShizCalev, coiax and Tlaltecuhtli): + - bugfix: Caks will no longer override the bonus reagents provided in a donut when + frosting them. + - bugfix: Caks can no longer create frosted frosted jelly donuts. + - bugfix: Jelly donuts will no longer lose their vitamins when they're frosted. + - bugfix: Fixed chaos donuts potentially doubling the amount of reagents added when + microwaved with something else. + - bugfix: Donuts now always contain 1 sprinkles as was stated on the wiki. Frosted + donuts have a chance at adding an extra sprinkle. + - code_imp: Improved the code for ensuring that security members enjoy donuts and + security-themed alcoholic drinks. + - balance: neurotoxin doesnt insta stun but gives you limb paralysis overtime and + heart attacks if it stays in for too long and it is also alcholic + - balance: beepsky smash now summons imaginary beepskys that deal stamina damage + instead of outright stunning + Ghommie (original PRs by Time-Green and Qustinnus): + - tweak: loot crates can't explode after unlocking anymore + - bugfix: jumping into loot crates no longers causes them to go boom + - bugfix: You can now deconstruct abandoned crates with a welder without making + them go boom. After unlocking them, of course. + Ghommie (original PRs by Tlaltecuhtli and nicbn): + - rscadd: alt click to eject beakers from chem masters + chem dispensers + grinders + + chem heaters + - rscadd: hit chem master + chem dispenser + chem heaters with a beaker and if its + loaded with another it swaps em + - rscadd: All-In-One Blender UI uses a radial menu now. You can see the contents + and reagents by examining. + Ghommie (original PRs by XDTM, 4dplanner, nemvar and, yes, myself): + - code_imp: Merged tinfoil hat kind of protection into the anti_magic component. + - rscadd: Tinfoil hats can also be warped up from excessive dampening of mindray/though + control/psicotronic anomalies, or by simply being microwaved in an oven, and + become useless. + - rscadd: Immortality Talisman and Paranormal Hardsuit helmets now come with tinfoil + protection too (minus the paranoia and limited charges). + - balance: Genetics/Slime/Alien Telepathy and Slime Link are now stopped by tinfoil + protection. + Ghommie (original PRs by XDTM, optimumtact, Nichlas0010 and monster860): + - rscadd: 'Added Quantum Keycards, devices that can link to a quantum pad, and can + be used on any other quantum pad to teleport to its linked pad. spellchecking: + Renamed "Bluespace Teleportation Tech" tech node to "Bluespace Travel".' + - tweak: Moved roasting sticks from the "Bluespace Travel" to "Practical Bluespace". + - rscadd: Spraying holy water on tiles will now prevent cult-based teleportation + from using them as a destination point. + - tweak: Quantum, wormhole and magic teleportation is no longer disrupted by bags + of holding. + - bugfix: You are now also blocked from teleporting IN to no-teleport areas, not + just out of them. + - tweak: Quantum teleportation now makes pretty rainbow sparks instead of the normal + ones. + - bugfix: Non-bluespace teleportation (spells etc.) no longer makes sparks. + - bugfix: Fixed teleportation deleting mob spawners like golem shells and ashwalker + eggs. + ? Ghommie (original PRs by carshalash, GranpaWalton, BebeYoshi & Hexmaniacosanna, + Fire Chance, Ordonis, Krysonism and OnlineGirlfriend) + : - tweak: Reduced booze power of Mead, Red Mead, and Irish Cream. + - tweak: Increased booze power of Grappa. + - rscadd: Added a new premium drink to the soda machine called "Grey Bull" which + gives temporary shock resistance + - rscadd: A new drink called Blank Paper was added to the bar menu, it was made + by a mime and it represents a new start. + - rscadd: 'Adds a variety of fine alcoholic beverages for discerning patrons of + the bar: Wizz Fizz, Bug Spray, Champagne, Applejack, Jack Rose, Turbo, Old + Timer, Rubberneck, Duplex, Trappist Beer, Blazaam and Planet Cracker!' + - rscadd: 'Also more nonalcoholic drinks: Cream Soda, Lemonade and Red Queen.' + - rscadd: Packs of a novel artificial sweetener have been added to the kitchen + vendor. + - rscadd: Bottles of trappist beer and champagne are now available in the premium + seection of the booze-o-mat. + - rscadd: Juicing parsnips now yields parsnip juice. + - rscadd: Maintenance peaches. + - bugfix: Grape soda now cools you down like other sodas. + - tweak: tweaked the Arnold Palmer recipe, it now uses lemonade. + - imageadd: Added new drink, bottle, vomit and peach can sprites. + Ghommie (original PRs by grandpawalton and Mickyan): + - tweak: the contents on the smartfridge icon now change depending on how many items + it contains + - bugfix: opening the maintenance panel of smartfridges now correctly updates the + icon + - bugfix: Screwing a disk compartmentalizer no longer makes it look like a smartfridge. + Ghommie (original PRs by nicbn and coiax): + - rscadd: Microwave UI uses a radial menu now. You can see the contents by examining. + - rscadd: Microwaves have a single wire accessible when open, the activation wire. + When cut, the microwave will no longer function, when pulsed, the microwave + will turn on. + - rscadd: Stabilized dark purple extracts now cook items in your hands, rather than + dropping the cooked item on the floor. + Ghommie (original PRs by ninjanomnom and nemvar): + - bugfix: Trays now scatter their contents when used for attacks, like they are + supposed to. + Ghommie (original PRs by ninjanomnom, coiax, yoyobatty): + - bugfix: Fixed slaughter demons not getting a speed boost when exiting a pool of + blood. Fixed slaughter demon giblets not being visible. + Ghommie (original PRs by subject217, AarontheIdiot, pireamaineach, Gousaid67 and SouDescolado): + - balance: Removed plasmamen species speedmod in favor of a slowdown for envirosuits. + - rscadd: Nanotrasen has began deploying departementalized enviro plasmasuits to + the station! plasmamens can now benefit from some of the bonuses aswell as the + color pattern of their job, while allowing others to easily determine their + profession! + - bugfix: Benevolent Nanotrasen makes gulag available for everyone! (Plasmamen retain + their equipment and don't die.) + - rscdel: Removes code that theoretically limits plasmamen from being clowns and + mimes, but actually doesn't. + Ghommie (original PRs by zeroisthebiggay, AnturK, MrDoomBringer, Cobby, ATHATH, optimumtact, GranpaWalton, Skoglol): + - bugfix: Blob overminds, sentient diseases, etc. can no longer dump out boxes. + Sorry gamers. + - rscadd: Sentient Disease now has almost all symptoms at its disposal. + - code_imp: Adding single-symptom disease abilities is super easy now. + - bugfix: Sentient Disease can now hear (not sure if this was a bug or intentional). + - rscadd: Sentient Disease is a linguist and knows all languages. Still cannot speak. + - tweak: Gives Sentient Diseases a medical hud to observe their victims further + with. + - bugfix: Fixes and moves around some on_stage_change() and Start()-related things + for virus symptoms and (sentient) diseases. + - bugfix: The inorganic biology symptom should work properly now when bought by + a sentient disease. + - bugfix: Oxyloss icon no-longer shows up when someone has the self respiration + symptom + - tweak: The self respiration now makes you not contract diseases through the air + and not breathe in smoke + - bugfix: Sentient diseases can no longer pick two cures that react and disappear + when eaten. + - balance: Sentient disease cures are now consistently harder, will only pick cures + from tier 6 and up. + - bugfix: Disease cures should now stay the same for all infected mobs. + - rscadd: The regenerative coma symptom has a new resistance 4 threshold effect! + Said threshold effect will give hosts of the symptom's virus the TRAIT_STABLECRIT + trait if its threshold is met. + - bugfix: An obscure, probably never reported before bug that may or may not exist + involving sentient diseases and the self-respiration symptom should be fixed + now (if it even existed in the first place). + - balance: The cooldown time between each removal or addition of a symptom for sentient + diseases has been brought down from an agonizingly long 2 minutes to a more + reasonable 1 minute. + Ghommie (original pr by Dennok on tgstation): + - bugfix: Now you don't lose your pulled thing on the z level edge. + GrayRachnid: + - rscadd: Added windoors to all the flaps on delta. + - balance: rebalanced k9dogborgs + Hatterhat: + - rscadd: Magnetic pistols now fit in boot pockets - jackboots, workboots, etc. + - tweak: literally every pistol subtype fits in shoes now. go wild. + Hippie Circuit Port: + - rscadd: Added all Atmospheric Circuits + - rscadd: Added the ability to color data disks + - rscadd: Added Selection and Storage Examiner Circuits + - rscadd: Added Smoke, Extinguisher, and Beaker Connector Circuits + - rscadd: Added Inserter, Renamer, Redescriber, and Repaint Circuits + - rscadd: Added MMI Tank and pAI Connector Circuits (The possibilities are endless!) + Improving and Balancing Cyborgs: + - rscadd: Added Crew Pinpointer to Security Borg + - rscadd: Added Crew Monitor to Medical Borg + - rscadd: Added Crew Pinpointer to MediHound Borg + - tweak: Made the Disabler_Cooler compatible with both Security Borg and K9 Borg + - tweak: Changed the Warning Text upon selecting Security or K9 module + ItzGabby: + - rscadd: Bat Species parts for more leeway for character customization. + - code_imp: Alphabetized decor wing selection window in character creator for simplicity. + JTGSZ: + - tweak: Added one more gang boss slot bringing total to 4 from 3 + - bugfix: Fixed Gang Boss being able to be deconverted + - tweak: Gave Qualifies_for_Rank Check back its checks in job controller. + - rscadd: Optional species based clothing restrictions + - tweak: Gang Dominator excessive wall check tweaked to 25 open turfs + - bugfix: Gang Dominator no longer functions off-station. + - rscadd: Adds more control over species based offsets. + - bugfix: qualifies_for_rank now checks latejoin menu + - rscadd: Added Halloween Dwarves, for Halloween... Yep. + - bugfix: Can flip pipes once more. + - bugfix: barricade girder walls use PlaceOnTop instead of new + Linzolle: + - rscadd: ability to quickly max sensors + - bugfix: atmos helmet visual bug + - bugfix: supply display are now properly on the wall + - tweak: consistency in hop and cap berets + - tweak: slime people now enjoy eating toxic food and it will not disgust them + - bugfix: hos trenchcloak now properly has a sprite on digi characters + - rscdel: duplicate definition of hos and sec skirts + - bugfix: Krav Maga leg sweep now works properly. + - rscadd: shoes can have a different icon used for their item and mob icons + - bugfix: combat gloves plus having no mob icon + - rscadd: inhands sprite for rainbow knife + - tweak: colour of highlight on the regular knife when held in the right hand + - rscadd: mining shuttle console can now be printed after computer consoles have + been researched + - rscadd: can now carry people on your back by aggressive grabbing them while they + are laying down and then dragging their sprite onto yours. + - tweak: dragging people who are prone is now much slower, and carrying them will + allow you to move faster at the cost of taking 5 seconds to lift them up onto + your back. + - tweak: pacifists can now aggressive grab (cannot table slam people though) + - bugfix: blood on your body floating a bit to your right if you're a taur + - bugfix: some suits having no icon on tauric characters + - tweak: front facing CMO hardsuit icon for naga taurs + - tweak: colour of medical cross on CMO hardsuit for taurs + - bugfix: taur body and jumpsuit showing through mining suits + - tweak: all chaplain suits can hold the same items in suit storage + - code_imp: improvement to organisation for chaplain suits + - bugfix: blood halberd not going back to 17 force after unwielding + - spellcheck: unnecessary 's at the end of blood rites healing + - rscadd: QoL to blood rites, examine the ritual aura to view how many blood charges + are left + - code_imp: surgery cleanup + - tweak: dissection available round-start + - rscadd: better dissection surgeries from RnD, gives more points + - rscadd: abductors can now see what glands do + - code_imp: antagonist abductors now have a surgeon trait that teaches them every + surgery rather than having it just check if they're an abductor + - rscadd: muscled veins surgery + - bugfix: having one of your hands used up if you fireman carry but the person being + carried dismounts any way other than you dropping them + - rscadd: Four colour variants of ankle coverings. Select them on the loadout screen. + - imageadd: ankle coverings + - tweak: allows for shoes that don't cover your feet to be taken into account for + footstep sound effects and glass shards + - rscadd: Tend Wounds surgery. Heal in the field, with better healing the more damage + the patient has. + - rscdel: Reconstruction replaced by Tend Wounds + - balance: made Revival more accessible, more viable alternative to cloning. + - bugfix: advanced surgery tools can't perform lobectomy or coronary bypass + - rscadd: Decorative and insect wings can now be coloured individually, similar + to horns. + - bugfix: people getting assigned wings if their savefile is old. + - rscdel: wings that take the hair colour. Unnecessary if you can just set the colour. + - tweak: Cannot make horns pure black. Trying to do so will set it to a default + value. + - bugfix: decorative angel wings being invisible + - bugfix: abductors now actually work + - tweak: abductor scientist has their own greet message now + - bugfix: unable to read paper on airlocks + - tweak: ai can see paper (still just shows stars) + - rscadd: Target head and throw a hat at someone to toss it onto their head, knocking + whatever they're wearing off if they are wearing a hat. Some headgear can't + be knocked off this way. + MediHound: + - rscadd: Made Cyborgs be affected by Ion Storm Law Changes like AIs + MrJWhit: + - balance: rebalance melee stamloss + Multicam Config: + - config: removed whether or not the stuff for multicam was checking the useless + var and instead now checks the CONFIG_GET flag. + - admin: Admins now have a verb in the Server tab to turn AI multicam on and off. + Naksu: + - code_imp: default radiation insulation is now handled by atom vars rather than + a component, components can still be used. + - code_imp: squeezed a little bit more perf out of atmos + Nero1024: + - soundadd: Bare feet will now make the correct footstep sounds. + - soundadd: Other mobs will make the correct footstep sounds. + - soundadd: Crawling/dragging sounds for downed/incapacitated mobs + Onule & Nemvar (ported by Ghommie): + - imageadd: New Revenant icons + Original by Citinited, port by Sishen1542: + - rscadd: You can now use an airlock electronics on a locker to add a lock, and + can screwdriver an unlocked locker to remove its lock. + - rscadd: You can now remove the locks on broken or emagged lockers. + - tweak: Removing the lock from a personal locker now wipes that locker's ID details. + - tweak: Broken lockers have had their appearance changed. + Owai-Seek: + - rscadd: custodial cruiser cargo crate + - tweak: removed light replacer from power designs and moved to misc designs + - tweak: added pimpin ride to custodial locator + - tweak: added additional items to janibelt whitelist + - tweak: made plant DNA manipulator unwrenchable + - balance: reduced janitor premium supply costs + - bugfix: fixed them strawberries + - rscadd: false codpiece + - rscadd: crocin/camphor bottles + - tweak: updated kinkmate item list + PersianXerxes: + - code_imp: Adds the clockwork_warp_allowed flag to the Captain's Office area, set + to FALSE the same way it is for the chapel and armory. + - tweak: Relocates cult catwalks outside the Reebe dressing room. + Poojawa: + - rscadd: Digitigrade legs are now able to wear shoes and look fancy, Uniforms to + come. + - tweak: Xenos are only digitigrade now, mammals and aquatics have the option. + - rscadd: Fire Alarms are visible in low light situations + - bugfix: fixed vore prefs saving inconsistently, new characters might have a previous + slot's prefs tacked on. + - bugfix: fixed mammals not having the option for digilegs. Sprites are fucky until + body-part related sprites are done. + - refactor: improved vore sound responsiveness to preference choices. + - balance: removed morphine from Medihound sleeper chemical list + - bugfix: fixed preference setting being broken + - refactor: Medihound sleepers are Initialized properly, and icons update correctly + now on eject + - tweak: Air alarm All clear color changed from green to blue + - balance: APCs are harder to destroy. + - rscadd: Added Digitigrade versions of everything appliciable in suit.dmi + - imageadd: Snowflake Icons weren't modified, and were given NO_MUTANTRACE_VARIATION + - imageadd: naga and quad Taurs literally don't freeze their ass off in space anymore. + - bugfix: Digitigrade legs will toggle on/off properly on character menue + - bugfix: The misleading "normal" has been removed from species options + - balance: Added sanity checks to emag usage + - bugfix: fixed vtech, but it still doesn't work because of overriding jog/sprint + mechanics from combat reworks. + - bugfix: Puppy jaws properly store if you're emagged, they are also toggle-able + for stealth like the tongue. + - bugfix: 'Digitigrade legs should properly fucking update for the last fucking + time. Fucking snowflake code. refractor: Got rid of snowflake sechound cuffs, + gave them normal zipties like regular secborgs.' + - bugfix: dogborg sleepers actually extinguish people who are on fire, in case you + don't have time to lick them out. + - bugfix: Taur suits should fix themselves properly when worn by other people. + - rscadd: Added the Yogs/Oracle ported latejoin menu + - rscadd: All markings, tails, ears, and snouts for Citadel races are color matrixed! + - imageadd: all markings are on a per-limb basis, including Digitigrade legs! + - imageadd: a bunch of tails were blessed with tail wagging sprites, Fish, Sharks, + Fennecs, Wahs, raccoons, and others. + - imageadd: Tiger markings + tail added, skunk tails improved via sprites from Virgo + - tweak: tweaked some sprites to look better, but they absolutely could use a few + extra passes for quality + - rscadd: HumanScissors in the Tools folder will permit anyone to contribute matrix'd + markings to the sprite sheet, however Mam_markings is very, very full. Be careful. + - tweak: Character preview was both optimized for taurs and bad-touched for better + updating. I don't know if it'll be bad, but hey its better. + - rscadd: Added Dark Medihound and Pup Dozer from Virgo + - tweak: Clone pods no longer announce the name of the clone + - bugfix: fixed flavor text appearing when your face is hidden but you're not an + Unknown + - bugfix: Tauric suits now apply an (placeholder) blood overlay, as well as their + shield overlay. + - balance: Ashwalkers now have lungs. They cannot breath station air without suffocation + effects, but are completely fine on their homeworld. + - balance: Carbon mobs now have a maximum tolerance to oxygen of 50kPa. + - balance: Deluxe synthetic lungs have a very high bonus to O2 tolerance. + - bugfix: Digitigrade legs returned to normal, since digi leg markings overlay them + anyway. + - bugfix: commented out lizard mam_snout entries, because too many abominations + - bugfix: Vore Panel restored to have various interactions available again. Semi-untested + but should work as advertised. + - tweak: Vore Panel has more feedback. + - rscadd: is_wet var to bellies, toggled in the panel, will remove flesh sounding + struggles and the internal loop. JSON version updated. + - rscadd: Feeding var. You will need to enable feeding to recieve any feed vore + actions, but you can now feed yourself to mobs that have this set. TODO, Dogborg + sleeper feeding. + - rscadd: vore mode button now required to be enabled to perform vore actions. It's + the mouth icon! + - bugfix: Ash Drake vore fixed for actual reals this time + - bugfix: Mobs shouldn't spam the released contents announcement anymore on qdel + or death. Only if triggered + - tweak: Hostile mob code now properly ignores targets in bellies + - rscadd: Your belly can quietly growl if you're starving now. + - bugfix: Normal blood splattering isn't offset due to tauric mode + - rscadd: Added plasma man suit icons for taurs + - rscadd: Added bee butt for insects to have stripes + - tweak: adjusted random spawn sprite accessories, humans won't be demi by default + and lizard/mammal spawns will randomly get digitigrade legs + - bugfix: sprite adjustments for tentacles, as well as a misspelling. + - bugfix: Humans once again use ears and tail_human, as intended. This is to prevent + garish randomness + - bugfix: istype for species is actually correct and usable now, it'll be a factor + for monkey form expansions. + - bugfix: Hair functions are de-gendered and more easily selectable now. + - bugfix: Slimes can *wag, select markings and snouts, and yes it works. + - bugfix: Slimepeople extra parts now respect their hair_alpha in terms of being + somewhat see-through. it shouldn't stand out as badly now! + - bugfix: Hunger noises are now toggled per character + - bugfix: Ashwalker den is habitable by ashwalkers again + - rscadd: Medical belts now have overlays! Now you can see if a belt is useful or + just flatout empty. + - bugfix: fixed hypo MK IIs not being able to be put on medical belts + - bugfix: fixed Navy officer uniforms that failed to spawn + - code_imp: Loadout items will be forcefully added to backpacks or at your feet + instead of left behind at title screen + - tweak: hypospray kits hold 12 now, but only vials and sprays themselves + - bugfix: labcoats can carry MK II hyposprays on them now. + - rscadd: Vore Mobs are a thing now, not just ash drakes + - rscdel: 'Removed hunger sound stuff. never taking requests from Coolgat3 ever + again. refractor: Simple Mobs use the same system regular human mobs do, itjustworks.png' + - tweak: Character Window settings unsnowflaked and normalized. I have no fucking + clue how to make them work with taurs still tho, sorry. + - imageadd: added rotating background images for better clarity and contrast than + just SOLID FUCKING BLACK. Images from Virgo/Polaris/Eris + - balance: Defib users automatically stop pulling when they attempt to perform a + defib shock + - imageadd: added muzzled varients of space helmets and full masks + - imageadd: added knight_grey to taur suits, all paranormal ERT now have tauric + versions enabled + - bugfix: Lava knights have digitigrade and tauric versions now + - rscadd: Added a glass version of the gas mask, because it was in the files and + looked nice. does everything regular ones do except make you an unknown + - rscadd: Added custom species names! Examining people will now display their species + name unless they're an Unknown or have their face hidden. like flavor text. + Set it in your character window! + - code_imp: changed how health scanners print messages, wrapping it in msg for one + to_chat instead of printing every line to_chat. + - server: Discord bot will now report when a round ends and give the vague news + ticker that a sister-station would have received for the game mode and result + of the round. + - bugfix: fixed medical hardsuit overlay issue. I thought it was going to work well + but fuck byond. + - bugfix: None body markings shouldn't give rgb hell, but it also should reset properly + anyway. ree. + - bugfix: Sorted some sprites to better sooth my byond icon limit anxiety. + - bugfix: Box Cryopods expanded to 6 public. Permabrig cryo fixed. + - bugfix: Delta Cryopods expanded to 6 public. Permabrig cryo fixed. + - bugfix: MetaStation Crypods expanded to 6 public, relocated above sparring ring. + Permabrig cryo fixed + - bugfix: PubbyStation gained one more cryopod, Permabrig's cryo fixed. + - rscadd: Omega given one more crypod as well. + - rscadd: Gulag was given a cryopod. + - tweak: Box and Meta's cryo rooms are now a new room entirely. + - rscadd: Added erect states for all phallic bodyparts + - bugfix: YOUR DICK ACTUALLY STANDS UP NOW, YOU'RE WELCOME. + - bugfix: skintone locked genitals match the new skintone colorations. + - rscadd: added two new vaginal types and descriptions. + - bugfix: fixed borg defib runtimes + - bugfix: fixed heart attacks being nonlethal + - rscadd: Ported Oracle's cloning set up, you're now visible like cryo when being + cloned, though it's a mystery until you have skin on your meat puppet existance + - balance: Recyclers are unable to destroy the indestructible any longer. + - bugfix: Kiara's toy sabre now actually is the correct item + icon states + - bugfix: Generic armor for taurs fixed, there isn't actually any sprites for 'em, + so. Full sprites overlay over bodies, but I really can't be bothered to do all + the offset fixes otherwise. + - rscadd: Large maps have had a patient room transformed into micro chemistry stations + with nothing else in them. They've been labelled 'Apothecary' rooms and are + accessible by doctors. + - rscadd: females now have female defined sprites + - bugfix: Slime legs have had their excess pixels adjusted + - bugfix: Mammal normal legs are more in line with human legs now + - bugfix: fixed species like abductors and golems getting the fat tiddy or pingas + - bugfix: Atmos and Station alerts should be more alerting. + - rscadd: Added visible and hidden testicles + - rscadd: Added multi-boob support. Now you can have two or three pairs of breasts. + - bugfix: fixed missing vagina and breast sprites + - bugfix: fixed prosthetic hands being invisible + - bugfix: male foxes exist again + - bugfix: female chest markings improved from being too dark in comparison to their + other colors, blending better + - bugfix: Markings behave better on non-organic limbs. + - tweak: tweaked the name of Sublter to distinguish its use + - tweak: Gave a hint for vore posting. + - rscadd: Readded Ninja speech modifications with their mask + - rscadd: Pacifists can eat people for heal belly or noisy. Digestive modes are + auto-swapped to noisy + - rscadd: Added an underwear toggle button under 'Object' tab + - tweak: Genitals now layer under underwear. Hide these if they're too obnoxious. + - rscadd: Added digitigrade socks of all known ones anyway. + - tweak: tweaked the Genital character creation layout to look better + - bugfix: fixed having balls/womb when you don't have the linked organ at character + creation + - bugfix: fixed being able to squeeze semen directly from your balls. Probably. + - rscadd: NT Newscasters have had repeated reports of gang activity and are now + looking into it. + - rscadd: NT Psykers keep mumbling about last words of someone who died. Somehow + they even have a newsletter for this... + - bugfix: Gangster greeting messages are a batch message rather than 5 laggy to_chats + - imageadd: RCL now show what color is currently in use + - rscadd: Added RGB blood effects, know whose blood this is by color! + - rscadd: Added Synthetics blood, and a machine that produces it. A universal donor + for medical to heal people with. Make it via medical protolathe! + - bugfix: With hearts, slimepeople shouldn't die from the effects of not having + a heart. + - bugfix: Plasma vessels from xenomorphs will restore blood if you're on resin. + - server: Poly's speech now echos to the chat bot. + - rscadd: Added new wings to Insects and separated fluff from old ones, they're + Insect's new body markings now without being per-limb (for now). + - rscadd: Horns are now available to mammals, and they have their own color. + - rscadd: Legs are no longer a binary hack code, but actually something that can + be changed. Framework for tauric adaptations. + - rscdel: Purged Modular Citadel's sprite_accessories. + - bugfix: improved the quality of a number of sprites. + - tweak: Moths are now all insects. Avians and Aquatics are all anthromorphics. + Just as planned. + - rscadd: Anthromorphs can choose their preferred gibbing meat. I guess. Snowflakes + are weird. + - bugfix: Additional Gentlemen names. + - rscadd: Medical huds are now calibrated for Radioactive wavelengths. + - balance: Engineering equipment, blue space, and common storage containers are + radiation protected + - bugfix: fixed suit storage not cleaning radiation levels of everything stuffed + into them. + - bugfix: QM is able to hire/fire people to their department now. + - bugfix: cryopod UI isn't complete shit anymore + - bugfix: Cryopods purge silicon gear more efficiently now. Same with ghosts. + - balance: Med Sprays are now more aligned with patch mechanics + - balance: Chemistry is encouraged to be more varied in their healing, as well as + careful in its application + - tweak: Active NPC priority set much higher priority for the MC, with the intent + on making NPC combat more interesting + - bugfix: Clarified access descriptions of some jobs + - bugfix: fixed missing deco wing states + - bugfix: fixed a few things related to vore content + Putnam3145: + - tweak: Bottles in PanD.E.M.I.C 2200 can now be replaced with an inhand bottle + directly + - tweak: Ejecting a bottle from the PanD.E.M.I.C 2200 puts it directly into the + user's hand + - tweak: Alt-clicking the PanD.E.M.I.C 2200 ejects the current bottle + - bugfix: neural nanites only work/drain if you have brain damage or traumas the + nanites can fix + - tweak: Pod people can no longer get fat from standing in the light + - tweak: PanD.E.M.I.C 2200 now ejects onto itself instead of onto user if user's + hands are full + - rscadd: Added configs for a bunch of Dynamic rule parameters. + - config: Added defaults for all the configs (WIP). + - config: Added dynamic midround/latejoin antag injection to the config. + - balance: Made starlight condensation not kill slime people. + - balance: Added not-killing-slime-people to the transmission threshold of plasma + fixation and radioactive resonance. + - tweak: Made the clone scanner lock while it's scanning. + R3dtail: + - rscadd: Added 16 saltprimaryobject items Added 4 saltsecondarysubject items + - rscadd: Added a new carpet. Red! Also added said carpet to the Premium Carpet + crate from the cargo supply console. Trilby said she'd take care of the crafting + recipe. + Raptorizer: + - tweak: Doubled peach spawn rate + - tweak: tweaked numbers/variables + - balance: rebalanced numbers/variables + - spellcheck: removed unneeded code + Seris02: + - rscadd: Abductor Replication Lab ruin and advanced tools + - rscadd: Added looc hotkey + - tweak: made the autoprocess button relevant + - tweak: changes so that spooktober starts earlier + - bugfix: fixed the dark blue lum major effect + Sirich96 and Dennok (ported by Ghommie): + - rscadd: Added new Teleporter Station sprites + - rscadd: Added teleport station calibration animation. + Sishen1542: + - rscadd: Pentetic Jelly, new chemical made through mixing 1:1 slime jelly and pentetic + acid. + - tweak: Anatomic panacea now gives pent jelly instead of pent acid. Medbeams now + have TRUE tox healing to heal TOXINLOVER as well. + - balance: Changed bible heal proc, halving the healed damage and increasing brain + damage 5x in exchange for a much wider array of items to protect you from it. + - tweak: Moved around some chems from emag list into upgrades. + - balance: Added some fun chems to dispensers. + - bugfix: Gave dispensers old tg functionality. + - rscadd: Leather, cardboard, bronze & bone golems! + - rscadd: Bone hurting juice and interactions with plasmamen, skeletons & bone golems! + - rscadd: Ported addition of new CAS cards. + - bugfix: Ported a fix for CAS. + - rscadd: Added the ability to alter your genitalia as a slimeperson more than addition/removal. + - bugfix: fixed genitalia removal proc in alter form. + - balance: Ported the inability for non-station AI to interact with station z-level. + - balance: HoS mains can now peacefully sleep in their office. + - tweak: Podpeople now have customization options. + - bugfix: Removed the human check for cult conversion of captain/chaplain minds. + - balance: Roundstart carbon jetpacks now have full_speed FALSE. + - tweak: Adds plasteel to medical and security techfabs. + - rscadd: Added public autolathes to all maps. + - tweak: density = 0 + - balance: hugboxing mining loot + - balance: ling blade now has 40 armor pen + - rscadd: fun + - rscdel: bad stuff + - balance: mech bad + - balance: rebalances strained muscles + - rscadd: added in the assistant response team + - bugfix: fixed up access on the centcom hangar button + - balance: storage tweaks for belt briefcase + - imageadd: codersprite for belt briefcase + - rscadd: added pharaoh gear to chaplain vendor + - spellcheck: fixed typos in pharaoh items + - rscadd: made laser minigun not shitcode and also craftable + - soundadd: added new fire sounds for the laser minigun + - rscadd: holy lasrifle, hypertool, divine lightblade, and blessed baseball bat. + Four new holy weapons! + - balance: stamina and force tweaks for most holy weapons. + - tweak: prayer beads no longer deconvert after a 10 second timer, now just inject + holy water for delayed effect + - tweak: cultist runes are now destroyed with a bible or a null rod + - tweak: bo-staff now functions as a nerfed sleepy carp staff + - bugfix: fixed kevinz code to add in non-null rod child items as holy weapons + - bugfix: fixing chems for strained muscles + - bugfix: narsie no longer asks for consent + - bugfix: removed reflect from divine lightblade + - bugfix: teleporting a locker is bad + Sishen1542, original by @Tlaltecuhtli: + - bugfix: alt clicking the emitter now rotates it instead of only flipping + Sishen1542, original by @zxaber: + - balance: Utility mechs no longer automatically get beacons. + - balance: Tracking beacons no longer delete themselves when EMPing a mech, and + instead have a ten-second cooldown in-between EMPs. They also now do heavy EMP + damage rather than light. + - balance: Mechs that take EMP damage lose the use of their weapons and equipment + temporarily. Movement and abilities are not effected. + - balance: Mechs taking EMP damage no longer roll for a random malfunction. + Sishen1542, original by Arkatos: + - rscadd: Action buttons can now be dragged onto each other to swap places + Sishen1542, original by NewSta: + - tweak: updated the miasma canister sprites + Sishen1542, original by Skoglol: + - rscadd: Heaters/freezers now support ctrl clicking to turn on and alt clicking + to min/max target temperature. + Sishen1542, original by XDTM: + - rscadd: Using the wrong surgery tool during surgery no longer attacks the patient, + if on help or disarm intent. + - rscadd: Surgery steps are now shown in detail only to the surgeon and anyone standing + adjacent to them; the patient and people watching from further away get a more + vague/ambiguous description. + Skoglol: + - rscadd: You can now alt click storage (bags, boxes, etc) to open it. + Skully): + - rscadd: Nudity Permit, a completely invisible uniform that still has pockets and + such, to loadout options. It is more or less a direct port from the RP server. + SkullyRoberts: + - rscadd: Penis autosurgeon as rare maint loot. + TerraGS / Skoglol: + - rscadd: Adds toggleable light and blinking charge indicator to kinetic crusher + - rscadd: Kinetic crusher can now be one-hand carried. You'll still need two hand + to use it. + Thalpy: + - bugfix: fixes message_admins in SDZF + - tweak: Alkaline buffer recipe so people don't get grumpy and expanded the pH range + - bugfix: fixes buffers + - bugfix: fixes broken compiler because a var changed name + - bugfix: impure travis var anger + - rscadd: Added the ability to dispense smartdarts from the chemmaster. + - tweak: Tweaks medolier amd chembags to allow quickpickups of smartdarts, lets + the latter soak in beakers (on the floor) + - bugfix: fixed rounding errors with smartdart mixes. + - imageadd: added modified smartdartgun icon. + - bugfix: 1. Kev asked that there were no antag datums used, so that's been changed. + 2. Tricks can no longer turn someone into a dullahan, instead you have to spend + candies to get that. I felt it was too mean to turn people into that, I didn't + realise you couldn't revert it. 3. Barth will no longer as for impossible items. + 4. Barth will no longer as for the same item multiple times. 5. Barth will now + accept broader things, rather than asking for something, when meaning something + specific. 6. Jacq will now no longer poof off the z level. 7. Jacq will (hopefully) + stop spooking the AI by teleporting into there 8. Jacq will now try to teleport + to a location with someone nearby. 9. Barth will tell you where Jacq is currently + when you speak to him. 10. You can trade 2 candies for a Jacq Tracq (tm) 11. + Jacq should stop getting mad and cover the station in gas when killed. 12. Fixed + Jacq not singing (the link died). 13. Slightly changed wording so that people + will hopefully get to know her. 14. Jacq no longer disappears when you're getting + to know her. + Toriate: + - imageadd: 'All regular crates are now 3/4ths ToriCrates iamgeadd: Unused plastic + crate sprite added' + - rscadd: Blood freezer crates now have unique sprites. + - rscadd: RPD now has inhands + - imageadd: New sprites for RCDs and RPDs, inhands included + - imageadd: Updated the sprites of all the regular crates + Trilbyspaceclone: + - rscadd: cakes! + - imageadd: Made some sprites! -Love them really came out well + - rscadd: new economics + - tweak: cargo and robotics relationships + - balance: unbalanced something + - bugfix: fixed a maybe oversight + - rscdel: Fun + - tweak: costs of suit voucher + - balance: Unblances miner vender + - bugfix: spare cheaper brute kit + - tweak: harm from hentie + - balance: rebalanced goliaths stun to be less auto death + - rscadd: Armor to blob shields + - tweak: block weaken state to 70% from 75% + - bugfix: restores the deathriplys missing armor + - rscadd: new lockable colalr + - tweak: armor + - bugfix: missing hopes and dreams + - code_imp: orgized the weapon file to be more cat brain friendly + - imageadd: This means sprite right? + - rscdel: Many engi flags on non-engi things + - code_imp: changed some code to be organized at a glance + - balance: '25% < --- 50% For NPC blocking bullshit ided: Yes' + - rscadd: mag gun uses cells + - balance: kev things their to op + - rscadd: syndicate phobia + - tweak: other phobia's + - bugfix: laser carbine + - tweak: makes collars only locked via key + - tweak: charging + - rscadd: Combat inducers for COMBAT! + - code_imp: made it look nice + - rscadd: golden swag boxes + - rscadd: Crafting suitcases + - rscadd: more bountys + - rscdel: Nitryl bounty + - rscadd: better stocks + - rscadd: more evil blood fluff text + - rscadd: Added more mime names + - tweak: replaces a sink with a autolathen + - balance: 2 -> 3 + - rscadd: MASON SUIT! + - rscadd: adds the sec jetpack to sec hardsuit storge + - rscadd: Added a few jet packs to the space queens men + - tweak: volume of jet packs + - rscadd: Bad Idea + - rscadd: bio mass meat + - rscadd: more box options + - bugfix: a lack of replaceable boxes + - bugfix: clothing needing a emag + - tweak: 4 - > 5 + - tweak: 5->6 + - tweak: 4tc - > 2tc + - tweak: mulligan costs 4 - > 3 + - tweak: Tuberculosis 12tc - > 8tc + - tweak: 15 - >10 + - bugfix: both bags have the same name + - tweak: 5 - > 2 + - tweak: 3 -> 1 + - tweak: 2 < - 4 + - tweak: 1->2 and ultra + - rscadd: shield + crafting + - tweak: hierophant movment and melee attack + - rscadd: More plushies + - tweak: attack verbs and descs + - rscadd: bone satchles + - balance: rebalanced stunslugs + - rscadd: colored boxes, and more types + - tweak: harm and such + - balance: item classes + - bugfix: resonators being so shitty + - bugfix: 'Game braking bug critical: bug fix' + - rscadd: items to syndie surgery bags + - rscadd: SNOW CONES + - rscadd: carts buy-able cargo + - tweak: selling/time to craft + - bugfix: crafting problems, and red stamp exsplote + - rscadd: gives paper work sprites that are nicer + - rscadd: origami + - rscadd: gang tower shield + - tweak: costs of boots + - rscadd: organ box + - rscadd: Medical breifcaseses + - rscadd: New cargo crate for tech-slugs! + - rscadd: Ammo to each fitting crate + - bugfix: Cat-code + - spellcheck: fixed a few typos - Again my bad + - bugfix: fixed airless place + - rscadd: baklava + - balance: makes uplink kits more usefull for the risk + - code_imp: Changes some files to be better + - balance: As all things are not + - bugfix: fixing cat code that dosnt work, my bad + - bugfix: Arcades stealing from noodles + - rscadd: rapier + - tweak: speedy quirk + - spellcheck: Ironic + - bugfix: A bunch of minor issues with xenobiology are no more! + - bugfix: I didn't code it right it in the first place + - rscadd: new nodes + - balance: points and node gear + - rscadd: stuff n things + - rscadd: gear harness and a conflict merg + - rscdel: Nudity permits + - bugfix: nothing + - rscadd: Donner item + - rscadd: Luna's Gauntlets + - balance: rebalanced lingy dingy powery gamey + - tweak: melee and block harm + - bugfix: sprites* + - balance: bone satchles + - tweak: holster doing holster things + - rscadd: Donor item + - rscadd: Joy, Happiness, Honk + - bugfix: small mix up in terms + - rscadd: Promiscuous Organs crate, pills to lewd crate and testicles to maints + - bugfix: Made unholy water healtoxinlover + - rscadd: Zelus Oil, brass flasks + - rscadd: Added new chairs + - admin: Bugtesting zone upgrades for easy bug/game testing + - rscadd: more cargo to cargo + - rscadd: More loadout gear + - bugfix: Poojawa power creep + - bugfix: Not my work not my credit + - rscadd: Emitter gun + - bugfix: suit storage nulling anti magic item protection + - balance: rebalanced steal goals restrictions + - spellcheck: fixed a few misleading goals + - bugfix: ports a fix + - bugfix: oversight in benos + - bugfix: QM rooms not getting Key Aunths + - rscadd: new books/cooking + - spellcheck: less bad wording in slime + - rscadd: strawbarries and such + - rscadd: amazing things like tea of catnip, catnip and plant + - tweak: glue uplinks + - rscadd: RPDs to drones + - rscadd: Armor and such + - rscadd: flavor + - bugfix: maybe a runtime + - rscadd: chameloen clothing + - rscadd: tons of peach themed items + - spellcheck: caje + - rscadd: New book - Unused + - code_imp: organized files + - imageadd: redid brass tools to look better* + - bugfix: /cursed from a item path + - rscadd: Almost all clothing and most weaponds can be sold for pocket change + - tweak: Cargo costs of packets and selling + - balance: Lowered mat selling as well as most if not all bountys + - code_imp: Adds more files for easy finding/adding in packs + - bugfix: oops not being blacklisted + - code_imp: removes some cit-modular things + - bugfix: Missing sprites with bad ones + - tweak: emag charge amount + - rscadd: Reebe QoL aka creep in gear + - bugfix: ??? + - server: HEY MADE THE REEBEEE WAY SMALLER - Making it less lagging hopefully + - rscadd: Surgerys and spays in bags + - tweak: earthbloods stam regen + - imageadd: Red to Blue/Black crosses as questioned by Bhijn + - bugfix: clean bot not cleaning basic cleanables + - rscadd: new traitor bundle + - rscadd: trash + - imageadd: 'eye bleed :add: misstakes' + - rscdel: Removed old things! + - bugfix: UI memes + - rscadd: Blue space blood bag + - tweak: blood costs + - rscadd: Beebal and Honeybalm plants + - tweak: Costs of crates and paperwork + - rscadd: Adds 2 more crates hacked only + - rscadd: Added two seed packets of cotten to ash walkers base + Tupinambis: + - tweak: Changes large parts of the nuclear operative base, including the addition + of a new barracks where the ops spawn, a personal bedroom for the leader, the + rearrangement of numerous rooms, some added fluff, a slightly more roomy bar, + a larger hanger, a kitchen, and various other small changes to make the base + feel just a bit more alive. This was achieved by completely redoing the base + from scratch so there was room to work with, as a result potential bugs could + crop, please do report them. + - bugfix: The drop pod chamber was airless. This seems like an oversight, and has + been filled with air. + - rscadd: Cryo Sleepers have been added to Perma on all four maps in rotation. the + bathroom windoor and window have switched places to accommodate this change. + - rscadd: You can now choose the pre-exisiting "loader" sprite as an appearance + for your engineering borg. + - tweak: A vast majority of references to humans within ion laws have been replaced + with crew. AI modules have received similar treatment + - rscadd: 'Adds a syndicate themed emergency shuttle that costs 20000 credits, and + can ONLY be purchased when the communications console is emagged. This shuttle + features a fully stocked medbay with self serve sleepers, plenty of room that + can fit highpop, a fully featured bridge, ballistic auto turrets, and an armory, + EVA prep room, and bar, all of which are only accessible by either an agent + ID or through hacking. + + -EVA prep features 2 syndicate hardsuits and 3 syndicate softsuits. -Armory + features 5 stetchkins with spare ammo, and 2 riot c-20r''s. + + ![image](https://user-images.githubusercontent.com/42078130/48306551-0b786380-e500-11e8-821a-e59ac4eee0ea.png)' + - balance: Lone operatives no longer spawn with a syndicate hardsuit and a bulldog. + They instead spawn with a black and red EVA suit and an extra 15 TC (40 in total) + ![image](https://user-images.githubusercontent.com/42078130/48308065-c44e9a80-e520-11e8-8d60-cec8ff23d61d.png) + - rscadd: The tesla engine has been replaced with a supermatter engine, and pubby + engineering has been redesigned to accommodate this change. + - rscdel: The tesla engine has been completely removed along with any related components + - bugfix: RD and R&D vents are now actually connected to the air distribution. + - rscadd: New engineering hivebot. Has a bit more health but otherwise aesthetic. + - tweak: Oldstation no longer has an excessive amounts of hivebots within it, however + the bots that remain are individually a larger threat. + - balance: Hivebots are now more robust, with a higher melee damage output and health. + - server: Remove this ruin from the blacklist or this PR is pointless. + - bugfix: the air injectors for the SM engine waste and for toxins waste should + now receive power + - tweak: Adds a mixed clothing closet to Deltastation Dorms. + - tweak: Adds a bottle of unstable mutagen to Botany, on account of its distance + from Chemistry. + - bugfix: Omegastation should no longer have any turf with missing textures, as + those spots have been replaced with playing covered in a sandy turf decal. + - tweak: Removed all living eggs from the xeno ruin because people self antag. Honk. + - rscadd: Adds a new security level between Blue and Red (Amber). The shuttle call + time at this level is 8 minutes. + - tweak: Blue security level now has a shuttle call time of 12 minutes. + - tweak: The security level increase/decrease texts have been modified to accommodate + the change. + - imageadd: Adds a code Amber sprite for the fire alarms + - tweak: Removed the plushes from the toy crate, giving them their own. + - tweak: Plushes are now less likely to spawn out of arcades + - imagedel: Removes a moth plush from the game. + - balance: added a small fire delay (3 ticks) to automatic shotguns + - balance: Reduced buckshot brute damage by 20%. (12.5 -> 10 brute per pellet) (75 + -> 60 brute at close range) + - balance: Reduced rubbershot stamina damage by 40% (25 -> 15 stamina per pellet) + (150 -> 90 stamina at close range) + - balance: Reduced beanbag stamina damage by 12.5% (80 -> 70 stamina per shot) + - balance: Engivend RCDs now vend upgraded RCDs + - imageadd: Beautified and stylized the cyborg HUD sprites, animated and cleaned + up some of the old, modernized APC hacking and Doomsday sprites, + - tweak: moved cyborg language select above the radio icon, instead of above the + picture icon. + Twaticus & Poojawa: + - rscadd: Added new carpets from TauCetiStation! + - rscadd: More Liquid carpet chemicals, mix carpet with certain reagents to get + different colors! + - refactor: Tablets have a better means of being assembled codewise. nothing's different + on player end. + UntoldTactics: + - tweak: Rewords the click here prompt given when an attempted conversion is done + on an offer rune (for blood cult) + UristMcAstronaut: + - bugfix: allows a pai to activate its holoform while in a pai connector without + getting derped. + Useroth: + - bugfix: the collars are now aware of their proper overlay sprites + - bugfix: The space hotel dorms are now properly boltable with the buttons inside. + - bugfix: Makes the booze-o-mat hacked by default. Alternative to https://github.com/Citadel-Station-13/Citadel-Station-13/pull/8350. + - bugfix: After the PR which raised the ammo capacity of said magazines, due to + the code, they ended up with an invalid icon state. Fixed through changing the + icon state name in the icon file. + - rscadd: 'Taeclowndo shoes which grant the four following abilities: - Conjuring + a cream pie right into their hand. Every three seconds. - Making a banana peel + appear out of thin air at the tile of the clown''s choice. Every ten seconds. + - Mega HoNk. A touch-ranged, very small AOE ability, with effect equal to being + honked by a Honkerblast on a clown mech, with the effects halved for anyone + who isn''t its direct target. Every ten seconds. - Bluespace Banana Pie. You + don''t throw this one... not right away at least. This baby can fit an entire + body inside. Good for disposal of evidence. 25 second-long action, 45 second + cooldown. Also produces a "[victim''s name] cream pie". The body drops out of + the pie if you splat it somewhere or destroy the pie. If you eat it, it will + chestburst out of you a''la monkey cube. + + It''s a 14 TC item for traitor clowns and a 12 TC item for clown-ops.' + - tweak: The tentacle now directly puts the item in your hands, instead of toggling + your throwing and tossing it at you. Tentacles suffer from ranged inaccuracies + as if they were guns, I think it's enough of an inconvenience. + - tweak: Makes the netting much less clunky. If there's only one target you can + net while you press the button, it will just net that target instead of bringing + up a list of mobs. + - tweak: Energy nets now revive and fully heal capturees (even dead ones, after + calculating points). If someone's got a scan and wants to get cloned, they can + always kill themselves still. + - tweak: Capture points are added on capture, rather than round-end, so it no longer + matters whether your captures kill themselves in the holding facility or not. + - balance: Makes the nets a bit more sturdy. (previously it took mere two welder + hits to break one) + - balance: Makes stungloves actually stun people (currently comparably with stunbatons, + adjustable). Because electrocute_act(25, H) did fuck all, stunwise, and on top + of that, people in insulated gloves were completely unaffected. + - balance: Reduced the stunglove electrocute_act value to 15 due to above. Could + possibly be lowered further. + Weblure: + - rscadd: Added the relevant Beepsky animations from TG's aibots.dmi file to Cit's + aibots.dmi file. + WhiteHusky: + - rscadd: Sleepers now show blood level and type. + - tweak: Changed the styling of arousal messages to use pink-ish colors. + - bugfix: The orgasm moodlet message new-lines properly. + - bugfix: Flavor text with special characters will not get partially unescaped. + - bugfix: Canceling when setting flavor text does not clear it anymore. + - tweak: Checking yourself shouldn't freeze the client anymore. + XDTM: + - rscadd: Added the experimental dissection surgery, which can be performed once + per corpse to gain techweb points. + - rscadd: Rarer specimens are more valuable, so xenos and rare species are more + efficient subjects. + - rscadd: Added two new surgery procedures, under the Experimental Surgery techweb + node. + - rscadd: Ligament Hook makes it so you can attach limbs manually (like skeletons) + but makes dismemberment more likely as well. + - rscadd: Ligament Reinforcement prevents dismemberment, but makes limbs easier + to disable through damage. + - tweak: Golem limbs can now be disabled, although they are still undismemberable. + YPOQ: + - bugfix: Stealth implants work again + Yakumo Chen: + - balance: Made stealth implant boxes flimsier + - balance: Autocloning now requires tier 4 parts + - rscdel: Removes autoscan + - balance: Scanning people now requires someone to operate the cloning computer + regardless of part level. + - balance: removed antimagic component from holymelon + YakumoChen: + - tweak: AEGs brought more in line with current radiation system. Try not to get + EMP'd. + - tweak: Jetpacks no longer last twice as long between air refills. + - rscdel: Reverted laser miniguns. + - rscadd: Adds beanbag slugs to the sec protolathe at round start + - bugfix: Brings shotgun ammo availability back in like between seclathe and autolathe. + Zargserg: + - balance: Lungs maximum toxin threshold is 0.5% of the atmosphere. + - bugfix: Permanently contaminated atmosphere does not murder crew anymore. + ZeroNetAlpha: + - tweak: Cleans up autoylathe code and brings it back in line with the regular autolathe. + - bugfix: Fixes autoylathe interface not updating propperly. + - tweak: Silicons are now consumable by scrub pups. + actioninja: + - bugfix: APC UI autoupdates correctly + bluespace bio bags: + - rscadd: Added bluespace bio bags and put it in the tech web, in the node applied + bluespace + - imageadd: added a crappy icon for bluespace bio bags + chef: + - rscadd: Added main hallway approach to monastery + - rscadd: Added Maintenance hallway approach, with some maint loot + - tweak: moved the docking arm for the white ship + - tweak: changed placement of some grills and windows + coiax: + - admin: When the nuclear disk stays stationary long enough to trigger an increase + for the lone op event chance, admins will be notified every five increments. + dapnee: + - rscadd: Plasmaglass tables, spears, tiny plasmaglass shards + - bugfix: Plasmaglass structures now drop plasmaglass shards instead of nothing + - rscadd: Trim lines! + - bugfix: You can now make plasmaglass tables again. + deathride58: + - admin: When a gamemode fails pre_setup, it will now send a message in admin IRC + and in ingame admin chat, instead of only being viewable in the logs. + - balance: Portal guns now spawn without firing pins. + - balance: Reduced the default/baseline nanite pool amount from 100 nanites to 25 + nanites, and reduced the maximum nanite amount from 500 nanites to 125 nanites. + The safety threshold was reduced from 50 nanites to 12 nanites. + - balance: Most of Lavaland's mobs are now on crack. + - balance: Blood drunk miners now move once every two ticks, rather than once every + three ticks. + - balance: Bubblegum now has a maximum movement speed of once every three ticks. + Buffed from the original value of once per 5 ticks. + - balance: The minimum time for the Colossus to attack again after firing a random + shot is two deciseconds, Sped up from the original value of three seconds. The + minimum time for the Colossus to attack again after performing a blast is now + one second, with the original value being two seconds. The minimum time for + it to attack again after performing its alternating shot pattern is now two + seconds, original value being four seconds. + - balance: Ashdrakes now move once every five ticks, rather than once every ten + ticks. + - balance: Heirophant chasers now move once every two ticks rather than three ticks + by default, and the chaser cooldown has been reduced from 10 seconds to 5 seconds. + The cooldown for the Heirophant's major attacks has also been sped up to 4 seconds + from the original value of 6 seconds. + - balance: The Legion (megafauna) now moves at two ticks per second rather than + three ticks. It additionally now actually moves faster while charging. The cooldown + timer for it's special attacks has been reduced from 2 seconds to 1 second. + Additionally, The Legion's view range has been decreased from 13 tiles to 10 + tiles. + - balance: All megafauna now have a default view range of 4 tiles, decreased from + the original of 5 tiles, and an aggro'd view range of 15 tiles, decreased from + the original of 18 + - balance: Goliaths now move once every ten ticks, sped up from the original value + of 40(!!!) ticks. Additionally, their cooldown for their tentacles has been + reduced from 12 seconds to 6 seconds. To compensate, their cooldown now only + decreases by 5 deciseconds every time they're attacked, rather than 10 deciseconds, + their melee damage has been reduced to 18 per hit from 25 per hit, and their + vision range has been decreased from 5 tiles unaggroed, 9 tiles when aggroed, + to 4 tiles and 7 tiles respectively. Ancient goliaths have a default attack + cooldown of 8 seconds, sped up from the original value of 12 seconds. + - balance: Legion (the common mob) now has a cooldown of 1.5 seconds on their skull + attack, sped up from the original value of 2 seconds. Additionally, their view + range has been decreased from 5 tiles, 9 tiles when aggroed, to 4 tiles, 7 tiles + when aggroed. + - bugfix: Stamina no longer regenerates at hyper speeds. + - tweak: To accommodate for upstream's stamina changes, knockdown() now applies + staminaloss only to the chest. + - tweak: adjuststaminaloss() now has a new argument that allows you to specify a + zone to apply staminaloss to. This defaults to the chest + - tweak: apply_damage() is now capable of healing carbon mobs and human mobs. + - tweak: Since the head has the same exact effects as the chest when disabled, and + doesn't really make much sense to be affected by stamina, the head no longer + has stamina. + - tweak: The chest now has a stamina cap of 200 stamina due to the above. + - tweak: Footsteps now sound mostly the same as they did before the hard sync + - bugfix: Jukeboxes now properly remove themselves from the active jukebox list + when destroyed + - rscadd: Server operators and badmins can now make the server play like TG by toggling + the stamina buffer on/off using the DISABLE_STAMBUFFER config option. + - bugfix: Airlock wires now work as they did prior to the hard sync + - balance: The thing you're currently grabbing is now taken into account when left-click + disarming. Things you have grabbed now roughly have a 45% chance to be disarmed. + - balance: Disarm push rolls are now determined by the target's staminaloss rather + than a flat number. + - balance: When you're in combat mode, pushing someone who isn't in combat mode + is a guaranteed knockdown. Hard counter to stam regen squeezing in melee combat. + - balance: Failed disarm push attempts now deals light staminaloss to the target + so long as both the attacker and target are standing. The total stamloss dealt + to the target is random, clocking in at a very inefficient 1-5 stamloss per + unsuccessful push attempt. + - tweak: Disarm pushes now play the thudswoosh sound regardless if they're successful + or not. Had it not been for copyright, I would've used L4D's melee sound. + - tweak: Disarm push attempts are now logged + - bugfix: Autostand no longer makes you invulnerable to dropping items when being + knocked down with a force greater than 80 + - bugfix: You can no longer abuse an href exploit to return from the labor camp + before obtaining enough points to satisfy your point goal. + - bugfix: Norko's donor item is now listed in the right category + - rscadd: The medihound sleeper now has a non-vore variant. This will be used by + default. The old voracious variant will only appear if both the person being + sleeper'd and the medihound have the voracious hound sleepers pref enabled. + Sprites by Toriate + - tweak: '"Allow medihound sleeper" is now labelled "Voracious medihound sleepers", + and is now off by default' + - bugfix: AOOC no longer prints to players in the lobby + - bugfix: Human tails and human ears now save again. Humans now use mam_tail and + mam_ears for their snowflake bits instead of tg's equivalent, just as they did + prior to human tail and ear saving breaking + - bugfix: Disarm pushes no longer deal staminaloss to resting targets + - bugfix: You can no longer force a hard stamcritted spaceman to stand by clicking + them with help intent. Get more creative if you want to torture someone that's + in hard stamcrit. + - tweak: The revolution gamemode now waits until the 20 minute mark before checking + for win conditions. + - balance: You can no longer resist/move out of grabs while you're resting. Disarming + your way out still works, though. + - rscadd: Stamina damage now has diminishing returns on people who are in hard staminacrit + with the addition of a new multiplier. When you take staminaloss while in hard + staminacrit, you'll be under the effects of the new multiplier, which reduces + the amount of staminaloss you take from all sources of staminaloss. The diminishing + returns multiplier will steadily return to 1 once you're out of staminacrit. + - rscadd: You can now scramble while resting. You can do this by dragging your spaceman + onto an adjacent turf. This works even if you're in staminacrit, but the timer + depends entirely on your staminaloss. + - bugfix: Fully augged cyborg people now heal stamina damage properly. + - bugfix: Job EXP is now tracked properly for all roles. + - balance: Nightmares and shadowpeople have had their light threshold for being + considered in darkness reduced. Nightmares can no longer stand unharmed next + to a light fixture during a nightshift 100% unharmed. The threshold is high + enough so that APC lights on their own won't harm a nightmare, but being on + the edge of a light source will. + - balance: The detective revolver's .38 bullets are now non-lethal again, but now + require 3 shots to hard stamcrit + - rscadd: The current lethal variant of the .38 bullets can still be printed at + sec protolathes. + - rscadd: You can now access ghost roles from the latejoin menu. + - rscadd: Eyeblur now scales depending on how much actual eyeblur you actually have. + - balance: Ebows now induce 50 drowsiness on whatever they hit. + - balance: Telepads have been buffed across the board. T1 parts on a launchpad still + grants you a range of 15 tiles, but T4 parts now grant you a pretty large 60 + tile range (up from their original 18 tile range). Briefcase launchpads were + also buffed, they now have a range of 20 tiles, up from their previous laughable + 8 tiles. + - tweak: The grace period for the revolution win condition check has been reduced + from 20 minutes to 10 minutes. You don't need to wait nearly as long for the + round to end if no heads join in. + - tweak: You can now select plural and neuter as your gender. They're labelled "non-binary" + and "object" in the character customization menu, respectively. + - tweak: A lot more light sources now use the same nonbinary colored lighting philosophies + as flashlights and light fixtures! + - tweak: Flashlights mounted to guns and helmets now retain the same color and power + as their original light. Lavaland's caves will reflect a fluorescent blue as + you shine your KA around, and sec's helmets are now capable of illuminating + maint in that fancy fluorescent blue. + - tweak: Cameras now shine a fluorescent blue when lit up by an AI + - tweak: Glowing goo now actually glows green. + - tweak: Candles had their power reduced from 1 to 0.8. + - tweak: Lighters now shine a little further, and are now properly colored. + - tweak: PDAs now shine an incandescent yellow to match their sprite. + - tweak: Welding tools now shine an appropriate color + - tweak: Hardhats now shine an incandescent yellow. + - tweak: Plasmaman helmets now shine an incandescent yellow. + - tweak: Microwaves no longer overpower literally every single light in the game, + instead having a power of 0.9. + - tweak: Borgs now have incandescent yellow lights to match their sprites + - tweak: Bots now shine a fluorescent blue light + - tweak: Airlock light overlays are now on the above lighting layer. This means + airlock lights can actually be seen in the dark now. + - bugfix: The mob spawners list no longer leaves null entries behind when a spawner + has a job description defined. The latejoin menu will no longer show ghost roles + that are filled, and the spawners menu actually works again. + - rscadd: The voting system now actually tracks who voted for what. This means it's + now possible to change your vote, and it's possible to see what you voted for. + - balance: Using help intent on someone that's in hard stamcrit will now make them + heal 15 stamloss. + - tweak: Auto fit viewport is now enabled by default for new players. One less question + off the FAQ + - rscadd: The Khajiit favorite, Skooma, was added as a chemistry recipe that can + be produced with cooperation between chemistry and either cargo or service. + If you want to spoil the recipe for yourself, take a look at the PR for it! + - rscadd: When the shuttle leaves for centcom, a vote will be started to select + the next map instead of the map being randomly chosen via biased voting methods + - server: If a server operator wishes to re-enable the biased TG preference voting + system, you can do so by toggling the TGSTYLE_MAPROTATION config flag on in + the config.txt. Keep in mind that doing so will bring you great misfortune. + - balance: Cacti in lavaland now have 6u of vitfro instead of just 4u. This lessens + the gap between cacti and first aid kits, the third rarest and second rarest + readily available healing methods for ashwalkers, respectively. + - bugfix: the "genitals use skintone" option now appears in the character appearance + menu when appropriate again. + - rscadd: Clicking your stamina bar will now show your exact stamina along with + info regarding your stamina buffer + - bugfix: The bug where ghost role spawners leave null entries in glob.mob_spawners + has actually been fixed + - bugfix: The Kitchen Gun (TM) is no longer invisible. + - balance: The majority of cult spells no longer have exclamation marks at the end + of their invocations. This means they will no longer be bound to the rules of + shouting. Which means sec officers will no longer be able to hear culties sacrificing + the captain from the complete opposite side of the maintenance tunnel the sacrifice + is happening in. However, things like EMP pulses and runeless teleportation + still have the effect due to their inherent loud nature. + - balance: The stun blood spell now instantly causes hard stamcrit. However, to + offset this, it now also only has one charge and has a higher cost. + - balance: The Gloves of the North Star now restore 2/3 of the stamina used up by + punches when harm intent punching. With aggressive play and good stamina buffer + management, this makes it entirely plausible to roughly double your stamina + regeneration per mob life process tick. + - balance: Revs can no longer remember the name of the person who flashed them when + deconverted. This brings it in-line with the other conversion antag deconversions. + - bugfix: The bug where you can sometimes get permanently stuck in stamcrit should + HOPEFULLY be fixed. I'm unable to reproduce the bug myself, but let's hope. + - balance: The night vision trait now grants you darksight for an entire 1:1 screen, + but the alpha of the lighting plane with the trait has been increased from 245 + to 250 to balance it out + - bugfix: It's now actually possible to click the stamina hud button + - bugfix: The stamina hud button now displays your stamina buffer correctly + - balance: Bone spears now have a reach of 2 tiles. + - bugfix: You can no longer phase through solid objects via scrambling + - bugfix: The syndicate mask now works properly as intended. + - balance: Stamina is no longer affected by health at all. + - rscadd: You can now right-click yourself in help intent in combat mode to instantly + get up from resting. This will cost stamina equal to your entire stamina buffer. + Manage your stamina well, and you'll be able to shrug off a single stray golden + bolt + - rscadd: The new player panel now displays your currently selected character's + name + - balance: Flashes no longer knockdown. Instead, they deal eyeblur and have increased + confusion + - server: The server's tagline is now a config option. People can now stop confusing + us with BR cit + - rscadd: Attack animations will now rotate your character slightly, similar to + Goon. + - rscadd: Throwing items will now perform the attack animation and play a sound + - rscadd: flashlights will now make sounds when toggled on/off + - rscadd: Things in disposals will now emit sounds every single time they hit corners. + This increases immersion. + - bugfix: Air alarms now actually emit the proper light color when their status + is okay. + - rscadd: Backpacks and other storage items will now jiggle and squish when you + interact with them, similar to the animations seen on Goon. + - balance: Mops no longer have a delay on their cleaning, making them an actually + viable alternative to all of the janitor's other cleaning tools + - balance: To balance this, mops now take stamina to clean tiles. Standard mops + take 5 stamina to use, while advanced mops take 2 stamina. + - tweak: Oh and also mops make fancy new sounds and play animations when used now + - balance: Pump-action shotguns now take 2 stamina per pump instead of 5 stamina + per pump. This also applies to bolt-action rifles, as bolt racking counts as + pumping. + - tweak: Pickpocketing items will now place them in your hands if possible + - rscadd: Combat mode is now displayed in examine text + - rscadd: Combat mode now makes a visible message when enabled if you haven't touched + your combat mode button in the last ten seconds. It's done this way to avoid + chat spam from those who know how to pull off stam regen squeezing. + - balance: All knockdown sources will now force people to be dismounted from ridden + vehicles. + - rscadd: When an item is thrown, it will now be rotated and displaced. + - rscadd: Shards of glass will now be rotated when spawned. + - rscadd: Bullet casings will now be rotated when they're ejected from a gun. + - rscadd: Bottles now have random rotations and pixel offsets when smashed via throwing. + - rscadd: Picking up an item will now reset its rotation. + - rscadd: Glasses thrown onto tables by bartenders will now have their rotation + reset. + - balance: Slime speed potions can now only increase the speed of vehicles to be + on par with sprinting speed. They can no longer make a scooter roll around ten + times faster than a speeding blue hedgehog. + - rscdel: Changelings will no longer recieve team objectives + - balance: Changelings no longer start off with hivemind communication as an innate + ability. Hivemind communication now requires 1 dna point, on par with syndicate + encryption keys, which are 2 TC. + - code_imp: Hivemind link now relies on hivemind communication just like the hivemind + download/upload abilities. + - bugfix: It's now only possible to zoom a gun if it's in one of your hands + - bugfix: Mobs without clients no longer cause runtimes when their eyeblur updates + - rscadd: Blood tests have been added. If a changeling has a sufficient number of + loud abilities, you will be able to test their blood by heating up a sample + of it. However, if the changeling has a large amount of loud abilities, attempts + to test their blood will have explosive results. + - rscadd: Changelings now make a very obvious noise when readapting. This is to + prevent the cheese strat of simply readapting when you get caught to avoid detection. + - tweak: The blood splatter effect that happens when you get attacked will now always + make you lose blood depending on the damage you've taken. The effect now also + scales with item damage, meaning tiny little papercuts will no longer be able + to cause a massive blood splatter. + - rscadd: The blood reagent will now cover items and spacemen in blood when applied + to objects and mobs. + - tweak: Helmets, masks, and neck items are all now valid targets to get splattered + when you get covered in blood. Groovy. + - tweak: The temperature notification will now take into consideration both the + ambient temperature and your body temperature, increasing the responsiveness + of the temperature notification and making it much more realistic. + - tweak: Shuttle transit borders are now 10 tiles wide instead of 8 tiles, hopefully + repairing the immersions that get shattered by the ability to see normal space + where the transit areas end. + - rscadd: Instead of transit turfs simply teleporting things to space, transit is + now handled in a somewhat realistic manner. Transit turfs now act like normal + space turfs, though exiting the transit area or being present in the transit + area after the shuttle moves out of transit will teleport you to space and throw + you in the direction the shuttle was moving in. + - tweak: Reservation areas are now able to designate a border turf. + - bugfix: The sprint hotkey will no longer cause you to get permanently stuck sprinting + if the server lags. Just tap shift again if you get stuck + - rscadd: You can now hear sounds in the real world while inside of a VR sleeper. + - rscadd: You can now make nameless characters. Nameless characters will spawn in + with their name set as their job title followed by a unique five digit number. + The "Name" option in the character setup menu will be replaced with a "Default + designation" option for nameless characters, and the default designation will + be used in place of a job title for assistants and other jobs that don't require + dress codes. + - admin: The out-of-game round end notification is now a little more verbose. It'll + now display the round type, end result of the round, and the survival rate. + - bugfix: Xenos can no longer strip items off of people to be capable of using any + item in the game. + - bugfix: also, items from pockets get placed into your hands properly now + - bugfix: A mob's last words are now properly tracked and recorded on death. The + first death of the round will now actually display the victim's last words on + the round end screen. + - bugfix: Divine shenanigans can no longer result in someone becoming immune to + staminaloss + - bugfix: Fixed body_markings in bodyparts being assigned as a list when in reality, + it's a string and literally everything expects it to be a string and uses it + as a string. This should mean that markings no longer have completely fucked + up caches for character preview and other things. + - tweak: Since apparently the game is literally unplayable if items are not in the + exact center of a turf, the maximum pixel variance of thrown objects has been + reduced by four pixels to make things a smidge more clearer for those that dont + know what a turf is. + - bugfix: Bartender glasses should HOPEFULLY no longer be tilted when landing on + a table. Why the fuck is after_throw called via a timer. + - rscadd: Changeling screeches now have their own unique sounds, and are much easier + to recognize. + - rscadd: Most synthetic emotes are now available to humans. *ping + - rscadd: You can now merp + - balance: The TEG will now only produce a meaningful amount of power if the hot + pipe contains gas that's actively combusting + - admin: Added the "add PB bypass" and "revoke PB bypass" verbs, which allow admins + to let a specific ckey to bypass the panic bunker for the rest of the round + - rscadd: Jogging is no longer treated exactly the same as sprinting for water slips. + When you're jogging, you will only slip on water if you have more than 20% staminaloss. + - tweak: The atmospherics turf subsystem now has double the wait time, which should + free up server processing power for other tasks. + - bugfix: The IRC now actually displays the actual survival rate + - rscadd: Bloodcult conversions are now consensual. Convertees are given a ten second + timer to accept or wait out. This should drastically improve the quality of + those that get converted into bloodcult. + - rscadd: All sacrifices now count as a third of a cultist for the end-game narsie + summon. + - bugfix: Nameless captains will no longer proc a "Captain Captain on deck!" message. + Instead, it'll be a much more boring but much more sensical "Captain on deck!" + message. + - bugfix: Transit turfs on the centcom z-level now function properly again at keeping + mobs within the areas defined by their boundaries. + - bugfix: The title screen is also positioned correctly again. + - tweak: Ghost role eligibility for both event and spawner ghost roles is now affected + by DNR status. If you suicide, ghost, or cryo out, you will be unable to qualify + for any ghost roles + - tweak: Cryo now applies DNR status no matter how long the round has been going + on + - tweak: Suicide is now properly admin logged as it is supposed to be. Ghosting + while alive is now also logged. + - bugfix: Sparks and igniters will now actually heat areas rather than cooling them, + as was intended. + - tweak: To alleviate some potential complaints, RPDs now have a cooldown before + they can create sparks, and both RPDs and emitters produce less sparks. + - tweak: Conversion runes will now mute the victim temporarily while they're deciding + whether to convert or be sacrificed. + - bugfix: Conversion runes no longer require a third cultist to sacrifice if the + victim refuses conversion + - bugfix: Staminaloss targeted at the head now properly redirects to the chest. + - tweak: Sprinting no longer takes stam when you're being pulled or when you're + in zero gravity. Other sources of involuntary movement are not affected. + - code_imp: In an attempt to improve performance during highpop, mouse movements + will now only call onmousemove() while a user is in combat mode + - tweak: Ballistic projectiles are now the only projectiles capable of emitting + dinks. + - admin: Panic bunker toggling and bypassing is now logged in admin IRC + - tweak: OOC and LOOC now use separate toggles. You can now use LOOC while OOC is + globally toggled off, and admins now have the option to toggle LOOC off separately + from OOC + - code_imp: also revamped and reorganized relevant looc adminverb code + - bugfix: The endgame narsie summon rune no longer requires 24 total sacrifices, + and will now properly account for cultists that surround it + - tweak: The succumb verb is now available in the IC tab + - tweak: Lighting now uses a linear algorithm to calculate falloff instead of an + inverse-square algorithm. + - code_imp: get_hearers_in_view() now actually caches the results of view() instead + of calling view() twice + - code_imp: Goonchat's JS no longer contains checks related to a completely unused + message filtering function, which should improve clientside performance quite + a bit + - rscadd: The storage hud now properly takes into account the viewer's view size, + meaning storage items with a large amount of storage slots will properly stretch + across the bottom of the screen when running in widescreen. + - rscadd: Action buttons are now able to fill the entire screen in widescreen and + other weird view sizes. + - rscdel: Omegastation's job changes will no longer be included at compile time. + - code_imp: The client update portion of /mob/Login() now double-checks to make + sure client.player_details exists and is of the proper type. This should hopefully + fix the "cannot read null.player_details" runtimes that can spontaneously cause + clients to get kicked out and forced back to the lobby. + - rscadd: You can now quickly use unequipped items on objects by simply click-dragging + the item onto the object with an empty active hand. Doing so will place the + item in your hand, and then use that item on the object. + - code_imp: In an attempt to improve the performance of /mob/Stat(), various time-related + procs now use defines instead of being procs that call procs that call other + procs that call even more procs. + - bugfix: If a living mob has vore initialized but doesnt have voreprefs initialized, + then client login will force voreprefs to load. + - bugfix: 'Hopefully fixed paper crash 2: electric boogaloo' + - refactor: Added unomos, which is basically listmos except gas mixtures only use + one single list for handling their gasses. This is a significant performance + improvement that also offers a mild memory improvement under normal circumstances. + - balance: Locomotion circuits are now restricted to jogging speed + - balance: MMI circuits and pAI circuits both now have 60 complexity, up from their + original 29. + - tweak: Biogenerators now have a sane limit for production + - bugfix: Fixed a fairly huge server crash exploit + - bugfix: Shield blobs no longer become completely invulnerable to all forms of + damage after reaching a """weakened""" state + - tweak: Taken care of what appeared to have been an oversight where shield blobs + don't recover their armor after becoming weakened. + - bugfix: Nerfed concatenators by limiting the amount of characters they're able + to output + - tweak: The timer for stripping an item off of a spaceman is no longer interrupted + by your active held item changing. This means you no longer have to worry about + filling both of your hands when you're stripping items off of someone. + - rscadd: Ported the zulie cloak and blackredgold coat donor items from RP. + - balance: Normal mops now only use 2 stamina to mop a tile, nerfed from their previous + value of 5 stamina per tile mopped. + - balance: Advanced mops now only use 1 stamina to mop turfs, from their former + value of 2 stam. + - tweak: The femur breaker now uses `*scream` instead of forced speech. This means + that the femur breaker will no longer spam deadchat with "AAAAAAAAAHHHHHHHHHH!!" + - tweak: The femur breaker will now guarantee that the victim falls into crit, which + will make it harder to perform torture scenes with it since the victim can just + succumb. + - bugfix: Fixed another runtime in warp whistles. + - bugfix: Spamming forged packets no longer crashes the server. + - bugfix: Things that access job_preferences now explicitly access keys, which means + it no longer attempts to access invalid indices and runtimes as a result. + - balance: The taser's electrode has been reworked. Instead of being a strong knockdown + that deals a heavy amount of stamloss, it now causes a weak knockdown, applies + a debilitating status effect for 5 seconds, and deals 35 stamloss on hit up + to a maximum 50 total stamloss. + - balance: Roundstart turrets now have a nonlethal projectile that gets used when + they're set to stun and the target is resting + - tweak: Hybrid tasers now have disablers set as their default mode. + - rscadd: There is now a 1% chance for the station's announcer to be the medibot + voice instead of the classic TG announcer. + - rscadd: The map config system has been expanded to allow mappers to specify the + map type, announcer voice, ingame year, and how often a given map can be voted + at roundend. + - bugfix: The map vote system now takes into account map playercount limits properly. + - bugfix: Examining a spaceman, and other things that use get_examine_string(), + will now actually properly show when an item is blood-stained. + - bugfix: Plasmaman tongues no longer have a maxHealth of "alien", and no longer + cause the organ's on_life to always runtime. + - bugfix: Shooting a simplemob no longer causes runtimes prior to the blood effect + being created. + - bugfix: Removing a filter from an object that lacks filters no longer causes runtimes. + deathride58 (Original PR by actioninja): + - rscadd: Disarm pushing (combat mode right click in disarm intent) will now actually + push mobs away. Knockdowns from disarm pushing are no longer rng based on the + target's staminaloss. Knockdowns from disarm pushing now only happen when you + push someone into another mob, a table, or a wall. Pushes will now also temporarily + stop targets from using firearms, and will disarm the firearm if performed a + second time. Pushes still deal staminaloss to standing targets, and won't deal + a single ounce of staminaloss to resting targets. + - rscdel: You can no longer displace mobs that are in harm intent by simply walking + into them. Mobs that aren't in help intent have to be disarm pushed to actually + be moved. + dtfe3: + - tweak: Increased music maxlines from 300 to 600 + - tweak: Made it so any oxygen tank can be used instead of only red ones. + - tweak: Watcher wing Trophy's effect lasts 1 second instead of 0.5 + - rscadd: Pink Panties + - rscadd: Twintails + - rscadd: Schoolgirl outfits for the loadout menu! + - tweak: Now the fox ears are located in front of hair meaning they now behave much + like cat ears, that being they are on-top of the hair layer. + izzyinbox: + - rscadd: adds VoG orgasm command using words "orgasm", "cum", "squirt", "climax" + - rscadd: adds VoG dab command using words "dab" and "mood" + - rscadd: Generic dog body marking sprite + - imageadd: colormatrix dog sprites + - tweak: lowered the player age for command jobs to 1/3 of their previous setting + - rscadd: '*bark emote' + jtgsz: + - rscadd: ported gang mode + kappa-sama: + - rscdel: Removed racism + - tweak: Teleporter calibration actually matters to all roundstart players + - balance: Slows down teleportation with the console/hub/teleporter setup if you + care for your species. + - balance: Dedicated non-humans can now get hulk without having to become human. + - bugfix: seed + - tweak: added obj/item/key to wallet whitelist + - tweak: blood cult ritual daggers fit in jack/combat boots + - tweak: voidcells can now unlock alien tech + - balance: rebalanced tech trees (not really) + - rscadd: hugbox (/s) + - tweak: ashwalker spawn text now tells them "i" "c" not to leave lavaland + - bugfix: you can no longer have infinite ebows + - bugfix: kevinz forgot to nerf miasma research and cargo value after making it + produce like 100x as much lmao + kevinz000: + - balance: Hierophant now goes sicko mode, but hey, at least you can't be multi-hit + by melee waves! + - rscadd: Racking shotguns is now more threatening. + - balance: Medibots no longer kill slimes when trying to heal their toxins. + - rscadd: The Syndicate started selling claymores to their agents. + - balance: Nerfed VTEC modules. + - bugfix: Neurotoxin no longer stuns non-carbons. + - rscadd: peacekeeper cyborgs now get a megaphone + - bugfix: Fixes storage bugs regarding reaching into things you shouldn't be able + to reach into. + - code_imp: BYOND 513 preliminary support added. + - balance: 'Trashbags now only allow accessing the first 3 items. 5 for bluespace + ones. experimental: Storage now allows for limiting of random access' + kiwedespars: + - rscadd: regenerative materia to hallucination sting + - rscadd: mindbreaker toxin as an actual chemical to hallucination sting + lolman360: + - rscadd: NT has authorized shipments or Cotton to Megaseed Servitors. It's time + to start picking, liggers. + - imageadd: missing durathread sprites + - rscadd: Added durathread jumpskirt + - imageadd: Duraskirt sprites and rolled down jumpsuit sprites. + - bugfix: Fixes an undocumented change to the naming of Plasmamen. + - tweak: chainsaw kind of weapons and the mecha drill and the CLAMP can now be used + with 100% accuracy for surgery + - refactor: surgery tools now work on defines + - balance: advanced surgerytools can now switch types instead of just being faster + - bugfix: fixes bug with new surgerytools examine + nicc: + - rscadd: Exo-suit + - rscadd: SEVA suit + - rscadd: Flags for Goliath resistance and weakness + - rscadd: suit voucher + - rscadd: temp suit sprites + - rscadd: '*dab' + - balance: teg less gay maybe + ninjanomnom and WhoneedSpacee: + - rscadd: Some rpg affixes now have special effects + - rscadd: 'New RPGLoot modifiers: Vampirism which heals you when you attack, Pyromantic + which sets things you hit on fire. Shrapnel which causes projectiles fired from + a gun to fire projectiles in a radius when they hit something. Finally, Summoning + which summons mobs that sometimes aid you in combat.' + original by @randolfthemeh and @twaticus, port by sishen1542: + - rscadd: jumpskirts + - rscadd: more jumpskirts + - rscadd: jumpskirt/suit prefs + original by Bumtickley00, port by sishen1542: + - tweak: Suit storage units will now also remove radiation from mobs. + original by GuyonBroadway, SkowronX, and Arizon5. port by sishen1542 and kerse: + - rscadd: Clockwork cultists may now summon forth Neovgre, the ratvrarian super + weapon. This powerful mech can be summoned when applications scripture has been + unlocked, boasts superior offensive and defensive capabilities, however once + a pilot enters he cannot leave and is doomed to die with the mech. + - imageadd: Sexy Sprite work courtesy or SkowronX from /tg/ + - imageadd: brass edits by Arizon5 + - soundadd: steamy laser by kerse + original by Skoglol, port by sishen1542: + - balance: Added lots of new virus cures, made cure difficulty scale more consistently. + Cures are now picked from a list of possible cures per resistance level, multiple + diseases at the same level no longer always share a cure. Looking at you table + salt. + - admin: Dynamic gamemode now more auto-deadmin friendly. + original by TheChosenEvilOne, port by sishen1542: + - rscadd: Ported dynamic mode from /vg/, originally made by @DeityLink, @Kurfursten + and @ShiftyRail + original by Tlaltecuhtli, port by sishen1542: + - rscadd: rcd disk that gives rcd computer frame and machine frame designs + - rscadd: upgraded rcd in CE lockers + - tweak: moved deconstruction to the upgrade disk, ashwalker rcd comes upgraded + original by actioninja, port by sishen1542: + - tweak: Medical and Security consoles now check access on worn or inhand ID instead + of requiring an inserted ID + - tweak: mining vendor now reads from ID in hand or on person instead of requiring + an inserted ID + - bugfix: ORM is functional again (for real this time) + - tweak: ORM claim points button transfers points to worn/inhand ID instead of to + an inserted ID, no longer accepts insertions + - tweak: Same for gulag consoles + original by redmoogle, port by sishen1542: + - rscadd: Added support for 3 new gasses; Tritium, Pluoxium, and BZ + 'original by: WJohnston, Antur, Arcane, plapatin, sprites by cogwerks and edited by mrdoombringer. port by sishen1542': + - rscadd: THE GOOSE IS LOOSE + r4d6: + - rscadd: Added decoratives angel wings for Mammalians only + - rscadd: Added blindfolds to the Loadout list + - rscadd: Added Decorative Wings for Humans, Felinids, Slimepersons and Lizardpeoples. + - tweak: Change the SEVA suit & Exo-suit's descriptions + - bugfix: Batteries are now Rad-Proof like the other stock parts + tigercat2000@Paradise: + - bugfix: fixed invalid characters breaking chat output for that message + tinfoil hat wearer: + - rscadd: Added a new alien technology disk to scientist and roboticist uplinks + that allows them to research the heavily-guarded secrets of the Grays. + - tweak: Alientech is now the only Hidden alien research. To compensate for this, + alien_bio and alien_engi have had their research costs doubled and now require + advanced surgery tools and experimental tools respectively to research. Their + export price is also halved. + - balance: roboticists now have brainwashing disks AND alien technology added to + their role-restricted uplink section. alien technology gives them brainwashing + at a much later date, so brainwashing is the much cheaper option for instant + power. makes logical sense because doctors get it as well because they do surgery, + and roboticists can now either choose to brainwash people for less price but + less power or emag borgs for higher prices, limited uses, but higher power. + ursamedium: + - imageadd: Gas icons changed. diff --git a/html/changelogs/AutoChangeLog-pr-7451.yml b/html/changelogs/AutoChangeLog-pr-7451.yml deleted file mode 100644 index ea4ec47b8d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7451.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - admin: "When a gamemode fails pre_setup, it will now send a message in admin IRC and in ingame admin chat, instead of only being viewable in the logs." diff --git a/html/changelogs/AutoChangeLog-pr-7465.yml b/html/changelogs/AutoChangeLog-pr-7465.yml deleted file mode 100644 index 4f47fed4e5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7465.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Portal guns now spawn without firing pins." diff --git a/html/changelogs/AutoChangeLog-pr-7544.yml b/html/changelogs/AutoChangeLog-pr-7544.yml deleted file mode 100644 index f70a0e0e30..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7544.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Reduced the default/baseline nanite pool amount from 100 nanites to 25 nanites, and reduced the maximum nanite amount from 500 nanites to 125 nanites. The safety threshold was reduced from 50 nanites to 12 nanites." diff --git a/html/changelogs/AutoChangeLog-pr-7550.yml b/html/changelogs/AutoChangeLog-pr-7550.yml deleted file mode 100644 index 2bef8d3854..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7550.yml +++ /dev/null @@ -1,13 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Most of Lavaland's mobs are now on crack." - - balance: "Blood drunk miners now move once every two ticks, rather than once every three ticks." - - balance: "Bubblegum now has a maximum movement speed of once every three ticks. Buffed from the original value of once per 5 ticks." - - balance: "The minimum time for the Colossus to attack again after firing a random shot is two deciseconds, Sped up from the original value of three seconds. The minimum time for the Colossus to attack again after performing a blast is now one second, with the original value being two seconds. The minimum time for it to attack again after performing its alternating shot pattern is now two seconds, original value being four seconds." - - balance: "Ashdrakes now move once every five ticks, rather than once every ten ticks." - - balance: "Heirophant chasers now move once every two ticks rather than three ticks by default, and the chaser cooldown has been reduced from 10 seconds to 5 seconds. The cooldown for the Heirophant's major attacks has also been sped up to 4 seconds from the original value of 6 seconds." - - balance: "The Legion (megafauna) now moves at two ticks per second rather than three ticks. It additionally now actually moves faster while charging. The cooldown timer for it's special attacks has been reduced from 2 seconds to 1 second. Additionally, The Legion's view range has been decreased from 13 tiles to 10 tiles." - - balance: "All megafauna now have a default view range of 4 tiles, decreased from the original of 5 tiles, and an aggro'd view range of 15 tiles, decreased from the original of 18" - - balance: "Goliaths now move once every ten ticks, sped up from the original value of 40(!!!) ticks. Additionally, their cooldown for their tentacles has been reduced from 12 seconds to 6 seconds. To compensate, their cooldown now only decreases by 5 deciseconds every time they're attacked, rather than 10 deciseconds, their melee damage has been reduced to 18 per hit from 25 per hit, and their vision range has been decreased from 5 tiles unaggroed, 9 tiles when aggroed, to 4 tiles and 7 tiles respectively. Ancient goliaths have a default attack cooldown of 8 seconds, sped up from the original value of 12 seconds." - - balance: "Legion (the common mob) now has a cooldown of 1.5 seconds on their skull attack, sped up from the original value of 2 seconds. Additionally, their view range has been decreased from 5 tiles, 9 tiles when aggroed, to 4 tiles, 7 tiles when aggroed." diff --git a/html/changelogs/AutoChangeLog-pr-7592.yml b/html/changelogs/AutoChangeLog-pr-7592.yml deleted file mode 100644 index 10ba557d76..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7592.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Digitigrade legs are now able to wear shoes and look fancy, Uniforms to come." - - tweak: "Xenos are only digitigrade now, mammals and aquatics have the option." diff --git a/html/changelogs/AutoChangeLog-pr-7596.yml b/html/changelogs/AutoChangeLog-pr-7596.yml deleted file mode 100644 index a0dfbfe151..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7596.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Stamina no longer regenerates at hyper speeds." - - tweak: "To accommodate for upstream's stamina changes, knockdown() now applies staminaloss only to the chest." - - tweak: "adjuststaminaloss() now has a new argument that allows you to specify a zone to apply staminaloss to. This defaults to the chest" - - tweak: "apply_damage() is now capable of healing carbon mobs and human mobs." - - tweak: "Since the head has the same exact effects as the chest when disabled, and doesn't really make much sense to be affected by stamina, the head no longer has stamina." - - tweak: "The chest now has a stamina cap of 200 stamina due to the above." diff --git a/html/changelogs/AutoChangeLog-pr-7598.yml b/html/changelogs/AutoChangeLog-pr-7598.yml deleted file mode 100644 index 5c15f79f98..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7598.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "Footsteps now sound mostly the same as they did before the hard sync" diff --git a/html/changelogs/AutoChangeLog-pr-7600.yml b/html/changelogs/AutoChangeLog-pr-7600.yml deleted file mode 100644 index 9e63c069d2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7600.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Fire Alarms are visible in low light situations" diff --git a/html/changelogs/AutoChangeLog-pr-7604.yml b/html/changelogs/AutoChangeLog-pr-7604.yml deleted file mode 100644 index 3dcc7c542c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7604.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Jukeboxes now properly remove themselves from the active jukebox list when destroyed" diff --git a/html/changelogs/AutoChangeLog-pr-7605.yml b/html/changelogs/AutoChangeLog-pr-7605.yml deleted file mode 100644 index 21d2e882bc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7605.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "fixed vore prefs saving inconsistently, new characters might have a previous slot's prefs tacked on." - - bugfix: "fixed mammals not having the option for digilegs. Sprites are fucky until body-part related sprites are done." diff --git a/html/changelogs/AutoChangeLog-pr-7608.yml b/html/changelogs/AutoChangeLog-pr-7608.yml deleted file mode 100644 index 898cf84d90..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7608.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Server operators and badmins can now make the server play like TG by toggling the stamina buffer on/off using the DISABLE_STAMBUFFER config option." diff --git a/html/changelogs/AutoChangeLog-pr-7611.yml b/html/changelogs/AutoChangeLog-pr-7611.yml deleted file mode 100644 index a76e79cf39..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7611.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "nicc" -delete-after: True -changes: - - rscadd: "Exo-suit" - - rscadd: "SEVA suit" - - rscadd: "Flags for Goliath resistance and weakness" - - rscadd: "suit voucher" - - rscadd: "temp suit sprites" diff --git a/html/changelogs/AutoChangeLog-pr-7612.yml b/html/changelogs/AutoChangeLog-pr-7612.yml deleted file mode 100644 index 2e429013ec..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7612.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - code_imp: "default radiation insulation is now handled by atom vars rather than a component, components can still be used." diff --git a/html/changelogs/AutoChangeLog-pr-7620.yml b/html/changelogs/AutoChangeLog-pr-7620.yml deleted file mode 100644 index b786b77476..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7620.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Airlock wires now work as they did prior to the hard sync" diff --git a/html/changelogs/AutoChangeLog-pr-7624.yml b/html/changelogs/AutoChangeLog-pr-7624.yml deleted file mode 100644 index 34f23f6560..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7624.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "The thing you're currently grabbing is now taken into account when left-click disarming. Things you have grabbed now roughly have a 45% chance to be disarmed." - - balance: "Disarm push rolls are now determined by the target's staminaloss rather than a flat number." - - balance: "When you're in combat mode, pushing someone who isn't in combat mode is a guaranteed knockdown. Hard counter to stam regen squeezing in melee combat." - - balance: "Failed disarm push attempts now deals light staminaloss to the target so long as both the attacker and target are standing. The total stamloss dealt to the target is random, clocking in at a very inefficient 1-5 stamloss per unsuccessful push attempt." - - tweak: "Disarm pushes now play the thudswoosh sound regardless if they're successful or not. Had it not been for copyright, I would've used L4D's melee sound." - - tweak: "Disarm push attempts are now logged" diff --git a/html/changelogs/AutoChangeLog-pr-7625.yml b/html/changelogs/AutoChangeLog-pr-7625.yml deleted file mode 100644 index a6e72eab8f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7625.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - refactor: "improved vore sound responsiveness to preference choices." - - balance: "removed morphine from Medihound sleeper chemical list" - - bugfix: "fixed preference setting being broken" - - refactor: "Medihound sleepers are Initialized properly, and icons update correctly now on eject" diff --git a/html/changelogs/AutoChangeLog-pr-7626.yml b/html/changelogs/AutoChangeLog-pr-7626.yml deleted file mode 100644 index 000c39c0cd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7626.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - tweak: "Air alarm All clear color changed from green to blue" diff --git a/html/changelogs/AutoChangeLog-pr-7627.yml b/html/changelogs/AutoChangeLog-pr-7627.yml deleted file mode 100644 index 2490900f6a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7627.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - balance: "APCs are harder to destroy." diff --git a/html/changelogs/AutoChangeLog-pr-7630.yml b/html/changelogs/AutoChangeLog-pr-7630.yml deleted file mode 100644 index 4f2d6081a0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7630.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - tweak: "Changes large parts of the nuclear operative base, including the addition of a new barracks where the ops spawn, a personal bedroom for the leader, the rearrangement of numerous rooms, some added fluff, a slightly more roomy bar, a larger hanger, a kitchen, and various other small changes to make the base feel just a bit more alive. This was achieved by completely redoing the base from scratch so there was room to work with, as a result potential bugs could crop, please do report them." - - bugfix: "The drop pod chamber was airless. This seems like an oversight, and has been filled with air." diff --git a/html/changelogs/AutoChangeLog-pr-7631.yml b/html/changelogs/AutoChangeLog-pr-7631.yml deleted file mode 100644 index 4dc1e42bf3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7631.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "nicc" -delete-after: True -changes: - - rscadd: "*dab" diff --git a/html/changelogs/AutoChangeLog-pr-7632.yml b/html/changelogs/AutoChangeLog-pr-7632.yml deleted file mode 100644 index 69bac5623f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7632.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Added Digitigrade versions of everything appliciable in suit.dmi" - - imageadd: "Snowflake Icons weren't modified, and were given NO_MUTANTRACE_VARIATION" diff --git a/html/changelogs/AutoChangeLog-pr-7639.yml b/html/changelogs/AutoChangeLog-pr-7639.yml deleted file mode 100644 index 8ecd3c4c5c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7639.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - imageadd: "naga and quad Taurs literally don't freeze their ass off in space anymore." - - bugfix: "Digitigrade legs will toggle on/off properly on character menue" - - bugfix: "The misleading \"normal\" has been removed from species options" diff --git a/html/changelogs/AutoChangeLog-pr-7640.yml b/html/changelogs/AutoChangeLog-pr-7640.yml deleted file mode 100644 index 7360022b33..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7640.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - balance: "Added sanity checks to emag usage" diff --git a/html/changelogs/AutoChangeLog-pr-7643.yml b/html/changelogs/AutoChangeLog-pr-7643.yml deleted file mode 100644 index c74534bd34..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7643.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CameronWoof" -delete-after: True -changes: - - rscadd: "Medihounds now have rollerbeds for non-vore patient transport" diff --git a/html/changelogs/AutoChangeLog-pr-7650.yml b/html/changelogs/AutoChangeLog-pr-7650.yml deleted file mode 100644 index ba84b55d33..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7650.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Autostand no longer makes you invulnerable to dropping items when being knocked down with a force greater than 80" diff --git a/html/changelogs/AutoChangeLog-pr-7652.yml b/html/changelogs/AutoChangeLog-pr-7652.yml deleted file mode 100644 index 4695db6186..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7652.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Toriate" -delete-after: True -changes: - - imageadd: "All regular crates are now 3/4ths ToriCrates -iamgeadd: Unused plastic crate sprite added" - - rscadd: "Blood freezer crates now have unique sprites." diff --git a/html/changelogs/AutoChangeLog-pr-7653.yml b/html/changelogs/AutoChangeLog-pr-7653.yml deleted file mode 100644 index a761e5d393..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7653.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "You can no longer abuse an href exploit to return from the labor camp before obtaining enough points to satisfy your point goal." diff --git a/html/changelogs/AutoChangeLog-pr-7658.yml b/html/changelogs/AutoChangeLog-pr-7658.yml deleted file mode 100644 index bcbff333a4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7658.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Norko's donor item is now listed in the right category" diff --git a/html/changelogs/AutoChangeLog-pr-7659.yml b/html/changelogs/AutoChangeLog-pr-7659.yml deleted file mode 100644 index 1be7e6d1f3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7659.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "The medihound sleeper now has a non-vore variant. This will be used by default. The old voracious variant will only appear if both the person being sleeper'd and the medihound have the voracious hound sleepers pref enabled. Sprites by Toriate" - - tweak: "\"Allow medihound sleeper\" is now labelled \"Voracious medihound sleepers\", and is now off by default" diff --git a/html/changelogs/AutoChangeLog-pr-7660.yml b/html/changelogs/AutoChangeLog-pr-7660.yml deleted file mode 100644 index 825553bbcb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7660.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CameronWoof" -delete-after: True -changes: - - bugfix: "The closed O2 crate now uses the same color scheme as the open one" diff --git a/html/changelogs/AutoChangeLog-pr-7664.yml b/html/changelogs/AutoChangeLog-pr-7664.yml deleted file mode 100644 index 47be323084..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7664.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "AOOC no longer prints to players in the lobby" diff --git a/html/changelogs/AutoChangeLog-pr-7666.yml b/html/changelogs/AutoChangeLog-pr-7666.yml deleted file mode 100644 index 0b6183b403..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7666.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - rscadd: "Cryo Sleepers have been added to Perma on all four maps in rotation. the bathroom windoor and window have switched places to accommodate this change." diff --git a/html/changelogs/AutoChangeLog-pr-7667.yml b/html/changelogs/AutoChangeLog-pr-7667.yml deleted file mode 100644 index c27be81efd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7667.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "fixed vtech, but it still doesn't work because of overriding jog/sprint mechanics from combat reworks." - - bugfix: "Puppy jaws properly store if you're emagged, they are also toggle-able for stealth like the tongue." - - bugfix: "Digitigrade legs should properly fucking update for the last fucking time. Fucking snowflake code. -refractor: Got rid of snowflake sechound cuffs, gave them normal zipties like regular secborgs." - - bugfix: "dogborg sleepers actually extinguish people who are on fire, in case you don't have time to lick them out." diff --git a/html/changelogs/AutoChangeLog-pr-7671.yml b/html/changelogs/AutoChangeLog-pr-7671.yml deleted file mode 100644 index 193bd574e4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7671.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Human tails and human ears now save again. Humans now use mam_tail and mam_ears for their snowflake bits instead of tg's equivalent, just as they did prior to human tail and ear saving breaking" diff --git a/html/changelogs/AutoChangeLog-pr-7675.yml b/html/changelogs/AutoChangeLog-pr-7675.yml deleted file mode 100644 index aab21aa377..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7675.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - rscadd: "You can now choose the pre-exisiting \"loader\" sprite as an appearance for your engineering borg." diff --git a/html/changelogs/AutoChangeLog-pr-7677.yml b/html/changelogs/AutoChangeLog-pr-7677.yml deleted file mode 100644 index c194004c9c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7677.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - tweak: "A vast majority of references to humans within ion laws have been replaced with crew. AI modules have received similar treatment" diff --git a/html/changelogs/AutoChangeLog-pr-7681.yml b/html/changelogs/AutoChangeLog-pr-7681.yml deleted file mode 100644 index 1398a037a1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7681.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Disarm pushes no longer deal staminaloss to resting targets" diff --git a/html/changelogs/AutoChangeLog-pr-7683.yml b/html/changelogs/AutoChangeLog-pr-7683.yml deleted file mode 100644 index e092f3d199..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7683.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "You can no longer force a hard stamcritted spaceman to stand by clicking them with help intent. Get more creative if you want to torture someone that's in hard stamcrit." diff --git a/html/changelogs/AutoChangeLog-pr-7686.yml b/html/changelogs/AutoChangeLog-pr-7686.yml deleted file mode 100644 index c2dc25894a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7686.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "The revolution gamemode now waits until the 20 minute mark before checking for win conditions." diff --git a/html/changelogs/AutoChangeLog-pr-7688.yml b/html/changelogs/AutoChangeLog-pr-7688.yml deleted file mode 100644 index 9098e4f1e1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7688.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "You can no longer resist/move out of grabs while you're resting. Disarming your way out still works, though." diff --git a/html/changelogs/AutoChangeLog-pr-7689.yml b/html/changelogs/AutoChangeLog-pr-7689.yml deleted file mode 100644 index 6a8541dba8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7689.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Stamina damage now has diminishing returns on people who are in hard staminacrit with the addition of a new multiplier. When you take staminaloss while in hard staminacrit, you'll be under the effects of the new multiplier, which reduces the amount of staminaloss you take from all sources of staminaloss. The diminishing returns multiplier will steadily return to 1 once you're out of staminacrit." - - rscadd: "You can now scramble while resting. You can do this by dragging your spaceman onto an adjacent turf. This works even if you're in staminacrit, but the timer depends entirely on your staminaloss." diff --git a/html/changelogs/AutoChangeLog-pr-7694.yml b/html/changelogs/AutoChangeLog-pr-7694.yml deleted file mode 100644 index 21949649bb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7694.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "izzyinbox" -delete-after: True -changes: - - rscadd: "adds VoG orgasm command using words \"orgasm\", \"cum\", \"squirt\", \"climax\"" - - rscadd: "adds VoG dab command using words \"dab\" and \"mood\"" diff --git a/html/changelogs/AutoChangeLog-pr-7696.yml b/html/changelogs/AutoChangeLog-pr-7696.yml deleted file mode 100644 index 09246b01ad..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7696.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ursamedium" -delete-after: True -changes: - - imageadd: "Gas icons changed." diff --git a/html/changelogs/AutoChangeLog-pr-7699.yml b/html/changelogs/AutoChangeLog-pr-7699.yml deleted file mode 100644 index dd714ba1de..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7699.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Fully augged cyborg people now heal stamina damage properly." diff --git a/html/changelogs/AutoChangeLog-pr-7700.yml b/html/changelogs/AutoChangeLog-pr-7700.yml deleted file mode 100644 index 2893239d8e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7700.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "Taur suits should fix themselves properly when worn by other people." diff --git a/html/changelogs/AutoChangeLog-pr-7703.yml b/html/changelogs/AutoChangeLog-pr-7703.yml deleted file mode 100644 index 772b45bc8e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7703.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Job EXP is now tracked properly for all roles." diff --git a/html/changelogs/AutoChangeLog-pr-7712.yml b/html/changelogs/AutoChangeLog-pr-7712.yml deleted file mode 100644 index 8f1ac6d4c4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7712.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - rscadd: "Adds a syndicate themed emergency shuttle that costs 20000 credits, and can ONLY be purchased when the communications console is emagged. This shuttle features a fully stocked medbay with self serve sleepers, plenty of room that can fit highpop, a fully featured bridge, ballistic auto turrets, and an armory, EVA prep room, and bar, all of which are only accessible by either an agent ID or through hacking. - --EVA prep features 2 syndicate hardsuits and 3 syndicate softsuits. --Armory features 5 stetchkins with spare ammo, and 2 riot c-20r's. - -![image](https://user-images.githubusercontent.com/42078130/48306551-0b786380-e500-11e8-821a-e59ac4eee0ea.png)" diff --git a/html/changelogs/AutoChangeLog-pr-7714.yml b/html/changelogs/AutoChangeLog-pr-7714.yml deleted file mode 100644 index 2b860f656b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7714.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - balance: "Lone operatives no longer spawn with a syndicate hardsuit and a bulldog. They instead spawn with a black and red EVA suit and an extra 15 TC (40 in total) -![image](https://user-images.githubusercontent.com/42078130/48308065-c44e9a80-e520-11e8-8d60-cec8ff23d61d.png)" diff --git a/html/changelogs/AutoChangeLog-pr-7717.yml b/html/changelogs/AutoChangeLog-pr-7717.yml deleted file mode 100644 index a3acd0a3ea..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7717.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - rscadd: "The tesla engine has been replaced with a supermatter engine, and pubby engineering has been redesigned to accommodate this change." - - rscdel: "The tesla engine has been completely removed along with any related components" - - bugfix: "RD and R&D vents are now actually connected to the air distribution." diff --git a/html/changelogs/AutoChangeLog-pr-7719.yml b/html/changelogs/AutoChangeLog-pr-7719.yml deleted file mode 100644 index fec98e6cd0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7719.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Nightmares and shadowpeople have had their light threshold for being considered in darkness reduced. Nightmares can no longer stand unharmed next to a light fixture during a nightshift 100% unharmed. The threshold is high enough so that APC lights on their own won't harm a nightmare, but being on the edge of a light source will." diff --git a/html/changelogs/AutoChangeLog-pr-7721.yml b/html/changelogs/AutoChangeLog-pr-7721.yml deleted file mode 100644 index b0060318dd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7721.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - rscadd: "New engineering hivebot. Has a bit more health but otherwise aesthetic." - - tweak: "Oldstation no longer has an excessive amounts of hivebots within it, however the bots that remain are individually a larger threat." - - balance: "Hivebots are now more robust, with a higher melee damage output and health." - - server: "Remove this ruin from the blacklist or this PR is pointless." diff --git a/html/changelogs/AutoChangeLog-pr-7723.yml b/html/changelogs/AutoChangeLog-pr-7723.yml deleted file mode 100644 index 2b54faed3e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7723.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "The detective revolver's .38 bullets are now non-lethal again, but now require 3 shots to hard stamcrit" - - rscadd: "The current lethal variant of the .38 bullets can still be printed at sec protolathes." diff --git a/html/changelogs/AutoChangeLog-pr-7726.yml b/html/changelogs/AutoChangeLog-pr-7726.yml deleted file mode 100644 index f777d8db6d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7726.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "You can now access ghost roles from the latejoin menu." diff --git a/html/changelogs/AutoChangeLog-pr-7727.yml b/html/changelogs/AutoChangeLog-pr-7727.yml deleted file mode 100644 index cb8337ad94..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7727.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Eyeblur now scales depending on how much actual eyeblur you actually have." diff --git a/html/changelogs/AutoChangeLog-pr-7728.yml b/html/changelogs/AutoChangeLog-pr-7728.yml deleted file mode 100644 index bed83efd8e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7728.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Ebows now induce 50 drowsiness on whatever they hit." diff --git a/html/changelogs/AutoChangeLog-pr-7729.yml b/html/changelogs/AutoChangeLog-pr-7729.yml deleted file mode 100644 index f57c246d8e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7729.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Telepads have been buffed across the board. T1 parts on a launchpad still grants you a range of 15 tiles, but T4 parts now grant you a pretty large 60 tile range (up from their original 18 tile range). Briefcase launchpads were also buffed, they now have a range of 20 tiles, up from their previous laughable 8 tiles." diff --git a/html/changelogs/AutoChangeLog-pr-7730.yml b/html/changelogs/AutoChangeLog-pr-7730.yml deleted file mode 100644 index 1e10b14409..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7730.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "The grace period for the revolution win condition check has been reduced from 20 minutes to 10 minutes. You don't need to wait nearly as long for the round to end if no heads join in." diff --git a/html/changelogs/AutoChangeLog-pr-7731.yml b/html/changelogs/AutoChangeLog-pr-7731.yml deleted file mode 100644 index c11a22fb00..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7731.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "You can now select plural and neuter as your gender. They're labelled \"non-binary\" and \"object\" in the character customization menu, respectively." diff --git a/html/changelogs/AutoChangeLog-pr-7733.yml b/html/changelogs/AutoChangeLog-pr-7733.yml deleted file mode 100644 index dd28d4840a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7733.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "R3dtail" -delete-after: True -changes: - - rscadd: "Added 16 saltprimaryobject items -Added 4 saltsecondarysubject items" diff --git a/html/changelogs/AutoChangeLog-pr-7734.yml b/html/changelogs/AutoChangeLog-pr-7734.yml deleted file mode 100644 index 0a6064e42a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7734.yml +++ /dev/null @@ -1,16 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "A lot more light sources now use the same nonbinary colored lighting philosophies as flashlights and light fixtures!" - - tweak: "Flashlights mounted to guns and helmets now retain the same color and power as their original light. Lavaland's caves will reflect a fluorescent blue as you shine your KA around, and sec's helmets are now capable of illuminating maint in that fancy fluorescent blue." - - tweak: "Cameras now shine a fluorescent blue when lit up by an AI" - - tweak: "Glowing goo now actually glows green." - - tweak: "Candles had their power reduced from 1 to 0.8." - - tweak: "Lighters now shine a little further, and are now properly colored." - - tweak: "PDAs now shine an incandescent yellow to match their sprite." - - tweak: "Welding tools now shine an appropriate color" - - tweak: "Hardhats now shine an incandescent yellow." - - tweak: "Plasmaman helmets now shine an incandescent yellow." - - tweak: "Microwaves no longer overpower literally every single light in the game, instead having a power of 0.9." - - tweak: "Borgs now have incandescent yellow lights to match their sprites" - - tweak: "Bots now shine a fluorescent blue light" diff --git a/html/changelogs/AutoChangeLog-pr-7735.yml b/html/changelogs/AutoChangeLog-pr-7735.yml deleted file mode 100644 index bf5e5bef17..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7735.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "Airlock light overlays are now on the above lighting layer. This means airlock lights can actually be seen in the dark now." diff --git a/html/changelogs/AutoChangeLog-pr-7736.yml b/html/changelogs/AutoChangeLog-pr-7736.yml deleted file mode 100644 index e3678536a7..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7736.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "The mob spawners list no longer leaves null entries behind when a spawner has a job description defined. The latejoin menu will no longer show ghost roles that are filled, and the spawners menu actually works again." diff --git a/html/changelogs/AutoChangeLog-pr-7737.yml b/html/changelogs/AutoChangeLog-pr-7737.yml deleted file mode 100644 index 9cc206e243..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7737.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "The voting system now actually tracks who voted for what. This means it's now possible to change your vote, and it's possible to see what you voted for." diff --git a/html/changelogs/AutoChangeLog-pr-7738.yml b/html/changelogs/AutoChangeLog-pr-7738.yml deleted file mode 100644 index 164906cde8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7738.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Using help intent on someone that's in hard stamcrit will now make them heal 15 stamloss." diff --git a/html/changelogs/AutoChangeLog-pr-7739.yml b/html/changelogs/AutoChangeLog-pr-7739.yml deleted file mode 100644 index 0a5f3c5501..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7739.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - bugfix: "the air injectors for the SM engine waste and for toxins waste should now receive power" diff --git a/html/changelogs/AutoChangeLog-pr-7741.yml b/html/changelogs/AutoChangeLog-pr-7741.yml deleted file mode 100644 index 19cecfc263..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7741.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "Auto fit viewport is now enabled by default for new players. One less question off the FAQ" diff --git a/html/changelogs/AutoChangeLog-pr-7742.yml b/html/changelogs/AutoChangeLog-pr-7742.yml deleted file mode 100644 index 94ed23aafa..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7742.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "The Khajiit favorite, Skooma, was added as a chemistry recipe that can be produced with cooperation between chemistry and either cargo or service. If you want to spoil the recipe for yourself, take a look at the PR for it!" diff --git a/html/changelogs/AutoChangeLog-pr-7743.yml b/html/changelogs/AutoChangeLog-pr-7743.yml deleted file mode 100644 index 623baa0f1d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7743.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "When the shuttle leaves for centcom, a vote will be started to select the next map instead of the map being randomly chosen via biased voting methods" - - server: "If a server operator wishes to re-enable the biased TG preference voting system, you can do so by toggling the TGSTYLE_MAPROTATION config flag on in the config.txt. Keep in mind that doing so will bring you great misfortune." diff --git a/html/changelogs/AutoChangeLog-pr-7748.yml b/html/changelogs/AutoChangeLog-pr-7748.yml deleted file mode 100644 index 34cdf952f5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7748.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Cacti in lavaland now have 6u of vitfro instead of just 4u. This lessens the gap between cacti and first aid kits, the third rarest and second rarest readily available healing methods for ashwalkers, respectively." diff --git a/html/changelogs/AutoChangeLog-pr-7750.yml b/html/changelogs/AutoChangeLog-pr-7750.yml deleted file mode 100644 index b835b8b102..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7750.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "the \"genitals use skintone\" option now appears in the character appearance menu when appropriate again." diff --git a/html/changelogs/AutoChangeLog-pr-7751.yml b/html/changelogs/AutoChangeLog-pr-7751.yml deleted file mode 100644 index 788f083cf1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7751.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Clicking your stamina bar will now show your exact stamina along with info regarding your stamina buffer" diff --git a/html/changelogs/AutoChangeLog-pr-7752.yml b/html/changelogs/AutoChangeLog-pr-7752.yml deleted file mode 100644 index 71fc9feb70..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7752.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "YPOQ" -delete-after: True -changes: - - bugfix: "Stealth implants work again" diff --git a/html/changelogs/AutoChangeLog-pr-7754.yml b/html/changelogs/AutoChangeLog-pr-7754.yml deleted file mode 100644 index 2599671fb5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7754.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "The bug where ghost role spawners leave null entries in glob.mob_spawners has actually been fixed" diff --git a/html/changelogs/AutoChangeLog-pr-7756.yml b/html/changelogs/AutoChangeLog-pr-7756.yml deleted file mode 100644 index 6355b1a6ef..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7756.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "The Kitchen Gun (TM) is no longer invisible." diff --git a/html/changelogs/AutoChangeLog-pr-7765.yml b/html/changelogs/AutoChangeLog-pr-7765.yml deleted file mode 100644 index 6d7c5c4075..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7765.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "The majority of cult spells no longer have exclamation marks at the end of their invocations. This means they will no longer be bound to the rules of shouting. Which means sec officers will no longer be able to hear culties sacrificing the captain from the complete opposite side of the maintenance tunnel the sacrifice is happening in. However, things like EMP pulses and runeless teleportation still have the effect due to their inherent loud nature." - - balance: "The stun blood spell now instantly causes hard stamcrit. However, to offset this, it now also only has one charge and has a higher cost." diff --git a/html/changelogs/AutoChangeLog-pr-7770.yml b/html/changelogs/AutoChangeLog-pr-7770.yml deleted file mode 100644 index d949f17161..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7770.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "The Gloves of the North Star now restore 2/3 of the stamina used up by punches when harm intent punching. With aggressive play and good stamina buffer management, this makes it entirely plausible to roughly double your stamina regeneration per mob life process tick." diff --git a/html/changelogs/AutoChangeLog-pr-7771.yml b/html/changelogs/AutoChangeLog-pr-7771.yml deleted file mode 100644 index f537395993..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7771.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Revs can no longer remember the name of the person who flashed them when deconverted. This brings it in-line with the other conversion antag deconversions." diff --git a/html/changelogs/AutoChangeLog-pr-7772.yml b/html/changelogs/AutoChangeLog-pr-7772.yml deleted file mode 100644 index 5aa989cc93..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7772.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - tweak: "Adds a mixed clothing closet to Deltastation Dorms." - - tweak: "Adds a bottle of unstable mutagen to Botany, on account of its distance from Chemistry." diff --git a/html/changelogs/AutoChangeLog-pr-7776.yml b/html/changelogs/AutoChangeLog-pr-7776.yml deleted file mode 100644 index 43660c000a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7776.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - bugfix: "Omegastation should no longer have any turf with missing textures, as those spots have been replaced with playing covered in a sandy turf decal." diff --git a/html/changelogs/AutoChangeLog-pr-7778.yml b/html/changelogs/AutoChangeLog-pr-7778.yml deleted file mode 100644 index 75362eca05..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7778.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "The bug where you can sometimes get permanently stuck in stamcrit should HOPEFULLY be fixed. I'm unable to reproduce the bug myself, but let's hope." diff --git a/html/changelogs/AutoChangeLog-pr-7779.yml b/html/changelogs/AutoChangeLog-pr-7779.yml deleted file mode 100644 index 4202149f90..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7779.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "The night vision trait now grants you darksight for an entire 1:1 screen, but the alpha of the lighting plane with the trait has been increased from 245 to 250 to balance it out" diff --git a/html/changelogs/AutoChangeLog-pr-7781.yml b/html/changelogs/AutoChangeLog-pr-7781.yml deleted file mode 100644 index d6f2ca5907..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7781.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "It's now actually possible to click the stamina hud button" - - bugfix: "The stamina hud button now displays your stamina buffer correctly" diff --git a/html/changelogs/AutoChangeLog-pr-7782.yml b/html/changelogs/AutoChangeLog-pr-7782.yml deleted file mode 100644 index 17986ac78f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7782.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Bone spears now have a reach of 2 tiles." diff --git a/html/changelogs/AutoChangeLog-pr-7783.yml b/html/changelogs/AutoChangeLog-pr-7783.yml deleted file mode 100644 index 489f7ba055..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7783.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "R3dtail" -delete-after: True -changes: - - rscadd: "Added a new carpet. Red! Also added said carpet to the Premium Carpet crate from the cargo supply console. Trilby said she'd take care of the crafting recipe." diff --git a/html/changelogs/AutoChangeLog-pr-7791.yml b/html/changelogs/AutoChangeLog-pr-7791.yml deleted file mode 100644 index d2cde53ae0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7791.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "You can no longer phase through solid objects via scrambling" diff --git a/html/changelogs/AutoChangeLog-pr-7860.yml b/html/changelogs/AutoChangeLog-pr-7860.yml deleted file mode 100644 index 140f95aa40..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7860.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "The syndicate mask now works properly as intended." diff --git a/html/changelogs/AutoChangeLog-pr-7865.yml b/html/changelogs/AutoChangeLog-pr-7865.yml deleted file mode 100644 index a75282b293..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7865.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Stamina is no longer affected by health at all." diff --git a/html/changelogs/AutoChangeLog-pr-7866.yml b/html/changelogs/AutoChangeLog-pr-7866.yml deleted file mode 100644 index 17435075e0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7866.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "You can now right-click yourself in help intent in combat mode to instantly get up from resting. This will cost stamina equal to your entire stamina buffer. Manage your stamina well, and you'll be able to shrug off a single stray golden bolt" diff --git a/html/changelogs/AutoChangeLog-pr-7876.yml b/html/changelogs/AutoChangeLog-pr-7876.yml deleted file mode 100644 index 649c0cc916..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7876.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "coiax" -delete-after: True -changes: - - admin: "When the nuclear disk stays stationary long enough to trigger an increase for the lone op event chance, admins will be notified every five increments." diff --git a/html/changelogs/AutoChangeLog-pr-7878.yml b/html/changelogs/AutoChangeLog-pr-7878.yml deleted file mode 100644 index 6d10310d94..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7878.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - tweak: "Removed all living eggs from the xeno ruin because people self antag. Honk." diff --git a/html/changelogs/AutoChangeLog-pr-7908.yml b/html/changelogs/AutoChangeLog-pr-7908.yml deleted file mode 100644 index f6c1fda2ec..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7908.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "The new player panel now displays your currently selected character's name" diff --git a/html/changelogs/AutoChangeLog-pr-7911.yml b/html/changelogs/AutoChangeLog-pr-7911.yml deleted file mode 100644 index 0d0d468aa8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7911.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Flashes no longer knockdown. Instead, they deal eyeblur and have increased confusion" diff --git a/html/changelogs/AutoChangeLog-pr-7912.yml b/html/changelogs/AutoChangeLog-pr-7912.yml deleted file mode 100644 index 834ad80091..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7912.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - server: "The server's tagline is now a config option. People can now stop confusing us with BR cit" diff --git a/html/changelogs/AutoChangeLog-pr-7914.yml b/html/changelogs/AutoChangeLog-pr-7914.yml deleted file mode 100644 index aac983d7ea..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7914.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghom" -delete-after: True -changes: - - code_imp: "minor clean up on hydroponics reagent containers." diff --git a/html/changelogs/AutoChangeLog-pr-7916.yml b/html/changelogs/AutoChangeLog-pr-7916.yml deleted file mode 100644 index 888f327f72..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7916.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Skoglol" -delete-after: True -changes: - - rscadd: "You can now alt click storage (bags, boxes, etc) to open it." diff --git a/html/changelogs/AutoChangeLog-pr-7918.yml b/html/changelogs/AutoChangeLog-pr-7918.yml deleted file mode 100644 index b2340c2f67..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7918.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Attack animations will now rotate your character slightly, similar to Goon." diff --git a/html/changelogs/AutoChangeLog-pr-7919.yml b/html/changelogs/AutoChangeLog-pr-7919.yml deleted file mode 100644 index a62cc838c3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7919.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Throwing items will now perform the attack animation and play a sound" diff --git a/html/changelogs/AutoChangeLog-pr-7920.yml b/html/changelogs/AutoChangeLog-pr-7920.yml deleted file mode 100644 index 08b0ec1f13..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7920.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "flashlights will now make sounds when toggled on/off" diff --git a/html/changelogs/AutoChangeLog-pr-7921.yml b/html/changelogs/AutoChangeLog-pr-7921.yml deleted file mode 100644 index 66a245257f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7921.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Things in disposals will now emit sounds every single time they hit corners. This increases immersion." diff --git a/html/changelogs/AutoChangeLog-pr-7922.yml b/html/changelogs/AutoChangeLog-pr-7922.yml deleted file mode 100644 index 08f06d7053..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7922.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Air alarms now actually emit the proper light color when their status is okay." diff --git a/html/changelogs/AutoChangeLog-pr-7923.yml b/html/changelogs/AutoChangeLog-pr-7923.yml deleted file mode 100644 index 5cf6527dad..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7923.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Backpacks and other storage items will now jiggle and squish when you interact with them, similar to the animations seen on Goon." diff --git a/html/changelogs/AutoChangeLog-pr-7930.yml b/html/changelogs/AutoChangeLog-pr-7930.yml deleted file mode 100644 index 221a2af942..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7930.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "nicc" -delete-after: True -changes: - - balance: "teg less gay maybe" diff --git a/html/changelogs/AutoChangeLog-pr-7945.yml b/html/changelogs/AutoChangeLog-pr-7945.yml deleted file mode 100644 index edc2f96dc8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7945.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghom" -delete-after: True -changes: - - bugfix: "fixes the perpetual lack of moisture that has affected genitalia descriptions since, like, forever." - - rscadd: "implements the arousal state for mammary glands." diff --git a/html/changelogs/AutoChangeLog-pr-7951.yml b/html/changelogs/AutoChangeLog-pr-7951.yml deleted file mode 100644 index e05a5a1911..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7951.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes many possible situations of null icons for cit races' bodyparts." - - imagedel: "Removes duplicate slimepeople' sprites." - - code_imp: "Purges that draw_citadel_parts()." diff --git a/html/changelogs/AutoChangeLog-pr-7954.yml b/html/changelogs/AutoChangeLog-pr-7954.yml deleted file mode 100644 index 8a31b912ad..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7954.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Mops no longer have a delay on their cleaning, making them an actually viable alternative to all of the janitor's other cleaning tools" - - balance: "To balance this, mops now take stamina to clean tiles. Standard mops take 5 stamina to use, while advanced mops take 2 stamina." - - tweak: "Oh and also mops make fancy new sounds and play animations when used now" diff --git a/html/changelogs/AutoChangeLog-pr-7964.yml b/html/changelogs/AutoChangeLog-pr-7964.yml deleted file mode 100644 index 33cfaa453d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7964.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "CydiaButt13" -delete-after: True -changes: - - rscadd: "Lamp Plushie to loadout" - - imageadd: "added plushie_lamp to plush icons" - - code_imp: "added Lamp Plush to loadout and icons and items" diff --git a/html/changelogs/AutoChangeLog-pr-7973.yml b/html/changelogs/AutoChangeLog-pr-7973.yml deleted file mode 100644 index df9b9e2411..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7973.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Pump-action shotguns now take 2 stamina per pump instead of 5 stamina per pump. This also applies to bolt-action rifles, as bolt racking counts as pumping." diff --git a/html/changelogs/AutoChangeLog-pr-7976.yml b/html/changelogs/AutoChangeLog-pr-7976.yml deleted file mode 100644 index 4f334dc4ca..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7976.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - rscadd: "Adds a new security level between Blue and Red (Amber). The shuttle call time at this level is 8 minutes." - - tweak: "Blue security level now has a shuttle call time of 12 minutes." - - tweak: "The security level increase/decrease texts have been modified to accommodate the change." - - imageadd: "Adds a code Amber sprite for the fire alarms" diff --git a/html/changelogs/AutoChangeLog-pr-7977.yml b/html/changelogs/AutoChangeLog-pr-7977.yml deleted file mode 100644 index ca43ddbbf0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7977.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Zargserg" -delete-after: True -changes: - - balance: "Lungs maximum toxin threshold is 0.5% of the atmosphere." - - bugfix: "Permanently contaminated atmosphere does not murder crew anymore." diff --git a/html/changelogs/AutoChangeLog-pr-7978.yml b/html/changelogs/AutoChangeLog-pr-7978.yml deleted file mode 100644 index b35ea975c3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7978.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Added the Yogs/Oracle ported latejoin menu" diff --git a/html/changelogs/AutoChangeLog-pr-7979.yml b/html/changelogs/AutoChangeLog-pr-7979.yml deleted file mode 100644 index ed06d73ac1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7979.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Anonymous" -delete-after: True -changes: - - imageadd: "More crusader armor variants to pick from armament: Teutonic and Hospitaller." diff --git a/html/changelogs/AutoChangeLog-pr-7980.yml b/html/changelogs/AutoChangeLog-pr-7980.yml deleted file mode 100644 index a0b3b09fb5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7980.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MediHound" -delete-after: True -changes: - - rscadd: "Made Cyborgs be affected by Ion Storm Law Changes like AIs" diff --git a/html/changelogs/AutoChangeLog-pr-7981.yml b/html/changelogs/AutoChangeLog-pr-7981.yml deleted file mode 100644 index e36dd711fa..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7981.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - tweak: "Removed the plushes from the toy crate, giving them their own." - - tweak: "Plushes are now less likely to spawn out of arcades" diff --git a/html/changelogs/AutoChangeLog-pr-7982.yml b/html/changelogs/AutoChangeLog-pr-7982.yml deleted file mode 100644 index 7255219c9e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7982.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "Coolgat3 / Avunia" -delete-after: True -changes: - - rscadd: "Made kindle put the target into stamcrit, which makes it an actually working, useful stun." - - rscadd: "Added a stamina loss modifier to the vanguard spell which makes the user's stamina drain at a way slower rate. This doesn't make them immune to tasers, but it takes a few hits to actually get them to fall down." - - tweak: "Made it so that clock culties don't start with a chameleon suit. Instead they start with an engineer suit which is pretty much the same sprite and looks. If this is not perfect, then I am willing to make a slightly more brass-colored version of the engineer suit sprite and call it a ratvarian engineer jumpsuit." - - balance: "Increased the cost of vanguard, as it is now a spell that works somewhat like adrenals, minus the move speed, making your stamina drain really slow and making you unable to get knocked onto the ground by just a single taser shot." - - balance: "Lowered the charge time of kindle, reason being that you can usually have only one active spell on you, or two at max if you decide to run two slabs, but the fact that kindle silences people for such a small amount of time makes up for it, in my opinion." - - server: "Figured out that the consoles and their warp function actually work with the current code. The thing that makes them not work is when the gamemode is ran on debug mode, without the required players to actually support it. It also breaks the ark timer which is stuck on -1 seconds until activation. Whenever the gamemode starts properly, like any other gamemode, with player checks and all, everything seems to work just fine." diff --git a/html/changelogs/AutoChangeLog-pr-7983.yml b/html/changelogs/AutoChangeLog-pr-7983.yml deleted file mode 100644 index 46e0a14f96..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7983.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - code_imp: "Fixes ISINRANGE_EX using the wrong relational operator." diff --git a/html/changelogs/AutoChangeLog-pr-7987.yml b/html/changelogs/AutoChangeLog-pr-7987.yml deleted file mode 100644 index e525b1668e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7987.yml +++ /dev/null @@ -1,10 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "All markings, tails, ears, and snouts for Citadel races are color matrixed!" - - imageadd: "all markings are on a per-limb basis, including Digitigrade legs!" - - imageadd: "a bunch of tails were blessed with tail wagging sprites, Fish, Sharks, Fennecs, Wahs, raccoons, and others." - - imageadd: "Tiger markings + tail added, skunk tails improved via sprites from Virgo" - - tweak: "tweaked some sprites to look better, but they absolutely could use a few extra passes for quality" - - rscadd: "HumanScissors in the Tools folder will permit anyone to contribute matrix'd markings to the sprite sheet, however Mam_markings is very, very full. Be careful." - - tweak: "Character preview was both optimized for taurs and bad-touched for better updating. I don't know if it'll be bad, but hey its better." diff --git a/html/changelogs/AutoChangeLog-pr-7990.yml b/html/changelogs/AutoChangeLog-pr-7990.yml deleted file mode 100644 index b05eca84d2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7990.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Coolgat3" -delete-after: True -changes: - - tweak: "Changed player number checks to 20 from 24 for cult and clockcult, also made nukeops 28 required players instead of 30." - - tweak: "Changed enemy minimum age from 14 to 7" diff --git a/html/changelogs/AutoChangeLog-pr-7993.yml b/html/changelogs/AutoChangeLog-pr-7993.yml deleted file mode 100644 index f1e0db178f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7993.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "Improving and Balancing Cyborgs" -delete-after: True -changes: - - rscadd: "Added Crew Pinpointer to Security Borg" - - rscadd: "Added Crew Monitor to Medical Borg" - - rscadd: "Added Crew Pinpointer to MediHound Borg" - - tweak: "Made the Disabler_Cooler compatible with both Security Borg and K9 Borg" - - tweak: "Changed the Warning Text upon selecting Security or K9 module" diff --git a/html/changelogs/AutoChangeLog-pr-7994.yml b/html/changelogs/AutoChangeLog-pr-7994.yml deleted file mode 100644 index 703dcf31e1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7994.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "Pickpocketing items will now place them in your hands if possible" diff --git a/html/changelogs/AutoChangeLog-pr-7995.yml b/html/changelogs/AutoChangeLog-pr-7995.yml deleted file mode 100644 index 9d118ebbff..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7995.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Combat mode is now displayed in examine text" - - rscadd: "Combat mode now makes a visible message when enabled if you haven't touched your combat mode button in the last ten seconds. It's done this way to avoid chat spam from those who know how to pull off stam regen squeezing." diff --git a/html/changelogs/AutoChangeLog-pr-7996.yml b/html/changelogs/AutoChangeLog-pr-7996.yml deleted file mode 100644 index 518feae251..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7996.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "All knockdown sources will now force people to be dismounted from ridden vehicles." diff --git a/html/changelogs/AutoChangeLog-pr-7997.yml b/html/changelogs/AutoChangeLog-pr-7997.yml deleted file mode 100644 index 7b3db7fb44..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7997.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "When an item is thrown, it will now be rotated and displaced." - - rscadd: "Shards of glass will now be rotated when spawned." - - rscadd: "Bullet casings will now be rotated when they're ejected from a gun." - - rscadd: "Bottles now have random rotations and pixel offsets when smashed via throwing." - - rscadd: "Picking up an item will now reset its rotation." - - rscadd: "Glasses thrown onto tables by bartenders will now have their rotation reset." diff --git a/html/changelogs/AutoChangeLog-pr-7999.yml b/html/changelogs/AutoChangeLog-pr-7999.yml deleted file mode 100644 index 516f304f98..0000000000 --- a/html/changelogs/AutoChangeLog-pr-7999.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - tweak: "The kindle status effect stun duration now properly proportional to the owner's remaining health." - - tweak: "Clockwork cult's kindle now affects silicons." diff --git a/html/changelogs/AutoChangeLog-pr-8008.yml b/html/changelogs/AutoChangeLog-pr-8008.yml deleted file mode 100644 index 5845bd1b87..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8008.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Slime speed potions can now only increase the speed of vehicles to be on par with sprinting speed. They can no longer make a scooter roll around ten times faster than a speeding blue hedgehog." diff --git a/html/changelogs/AutoChangeLog-pr-8010.yml b/html/changelogs/AutoChangeLog-pr-8010.yml deleted file mode 100644 index 9694674b7c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8010.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscdel: "Changelings will no longer recieve team objectives" diff --git a/html/changelogs/AutoChangeLog-pr-8011.yml b/html/changelogs/AutoChangeLog-pr-8011.yml deleted file mode 100644 index 9d0db00db4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8011.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Changelings no longer start off with hivemind communication as an innate ability. Hivemind communication now requires 1 dna point, on par with syndicate encryption keys, which are 2 TC." - - code_imp: "Hivemind link now relies on hivemind communication just like the hivemind download/upload abilities." diff --git a/html/changelogs/AutoChangeLog-pr-8012.yml b/html/changelogs/AutoChangeLog-pr-8012.yml deleted file mode 100644 index 212f252a7d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8012.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "It's now only possible to zoom a gun if it's in one of your hands" diff --git a/html/changelogs/AutoChangeLog-pr-8021.yml b/html/changelogs/AutoChangeLog-pr-8021.yml deleted file mode 100644 index fca715cd3d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8021.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Mobs without clients no longer cause runtimes when their eyeblur updates" diff --git a/html/changelogs/AutoChangeLog-pr-8023.yml b/html/changelogs/AutoChangeLog-pr-8023.yml deleted file mode 100644 index 1b30435bda..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8023.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Blood tests have been added. If a changeling has a sufficient number of loud abilities, you will be able to test their blood by heating up a sample of it. However, if the changeling has a large amount of loud abilities, attempts to test their blood will have explosive results." - - rscadd: "Changelings now make a very obvious noise when readapting. This is to prevent the cheese strat of simply readapting when you get caught to avoid detection." diff --git a/html/changelogs/AutoChangeLog-pr-8024.yml b/html/changelogs/AutoChangeLog-pr-8024.yml deleted file mode 100644 index 1aa5f1b09f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8024.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "The blood splatter effect that happens when you get attacked will now always make you lose blood depending on the damage you've taken. The effect now also scales with item damage, meaning tiny little papercuts will no longer be able to cause a massive blood splatter." - - rscadd: "The blood reagent will now cover items and spacemen in blood when applied to objects and mobs." - - tweak: "Helmets, masks, and neck items are all now valid targets to get splattered when you get covered in blood. Groovy." diff --git a/html/changelogs/AutoChangeLog-pr-8025.yml b/html/changelogs/AutoChangeLog-pr-8025.yml deleted file mode 100644 index ee60aab630..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8025.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "The temperature notification will now take into consideration both the ambient temperature and your body temperature, increasing the responsiveness of the temperature notification and making it much more realistic." diff --git a/html/changelogs/AutoChangeLog-pr-8030.yml b/html/changelogs/AutoChangeLog-pr-8030.yml deleted file mode 100644 index c82325b394..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8030.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Multicam Config" -delete-after: True -changes: - - config: "removed whether or not the stuff for multicam was checking the useless var and instead now checks the CONFIG_GET flag." - - admin: "Admins now have a verb in the Server tab to turn AI multicam on and off." diff --git a/html/changelogs/AutoChangeLog-pr-8031.yml b/html/changelogs/AutoChangeLog-pr-8031.yml deleted file mode 100644 index 16ce735811..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8031.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "Shuttle transit borders are now 10 tiles wide instead of 8 tiles, hopefully repairing the immersions that get shattered by the ability to see normal space where the transit areas end." diff --git a/html/changelogs/AutoChangeLog-pr-8032.yml b/html/changelogs/AutoChangeLog-pr-8032.yml deleted file mode 100644 index 87a65ac9d7..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8032.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Instead of transit turfs simply teleporting things to space, transit is now handled in a somewhat realistic manner. Transit turfs now act like normal space turfs, though exiting the transit area or being present in the transit area after the shuttle moves out of transit will teleport you to space and throw you in the direction the shuttle was moving in." - - tweak: "Reservation areas are now able to designate a border turf." diff --git a/html/changelogs/AutoChangeLog-pr-8033.yml b/html/changelogs/AutoChangeLog-pr-8033.yml deleted file mode 100644 index e4a77766f1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8033.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "The sprint hotkey will no longer cause you to get permanently stuck sprinting if the server lags. Just tap shift again if you get stuck" diff --git a/html/changelogs/AutoChangeLog-pr-8034.yml b/html/changelogs/AutoChangeLog-pr-8034.yml deleted file mode 100644 index c9fabf1874..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8034.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "You can now hear sounds in the real world while inside of a VR sleeper." diff --git a/html/changelogs/AutoChangeLog-pr-8035.yml b/html/changelogs/AutoChangeLog-pr-8035.yml deleted file mode 100644 index 82d1a18a1b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8035.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "You can now make nameless characters. Nameless characters will spawn in with their name set as their job title followed by a unique five digit number. The \"Name\" option in the character setup menu will be replaced with a \"Default designation\" option for nameless characters, and the default designation will be used in place of a job title for assistants and other jobs that don't require dress codes." diff --git a/html/changelogs/AutoChangeLog-pr-8037.yml b/html/changelogs/AutoChangeLog-pr-8037.yml deleted file mode 100644 index 340b8e006e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8037.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - tweak: "Cyborg mounted disablers/tasers/lasers now slowly self-recharge off the cyborg user's power cell instead of draining from it directly." - - tweak: "Borg rechargers now properly recharge the borg module's energy guns." - - bugfix: "Prevents a couple more special/mounted guns from being preserved on cryo" diff --git a/html/changelogs/AutoChangeLog-pr-8038.yml b/html/changelogs/AutoChangeLog-pr-8038.yml deleted file mode 100644 index 64fbb5c4b2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8038.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - admin: "The out-of-game round end notification is now a little more verbose. It'll now display the round type, end result of the round, and the survival rate." diff --git a/html/changelogs/AutoChangeLog-pr-8039.yml b/html/changelogs/AutoChangeLog-pr-8039.yml deleted file mode 100644 index 4445a86991..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8039.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Xenos can no longer strip items off of people to be capable of using any item in the game." - - bugfix: "also, items from pockets get placed into your hands properly now" diff --git a/html/changelogs/AutoChangeLog-pr-8041.yml b/html/changelogs/AutoChangeLog-pr-8041.yml deleted file mode 100644 index 477b513368..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8041.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "A mob's last words are now properly tracked and recorded on death. The first death of the round will now actually display the victim's last words on the round end screen." diff --git a/html/changelogs/AutoChangeLog-pr-8042.yml b/html/changelogs/AutoChangeLog-pr-8042.yml deleted file mode 100644 index 4df2d178df..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8042.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "izzyinbox" -delete-after: True -changes: - - rscadd: "Generic dog body marking sprite" - - imageadd: "colormatrix dog sprites" diff --git a/html/changelogs/AutoChangeLog-pr-8043.yml b/html/changelogs/AutoChangeLog-pr-8043.yml deleted file mode 100644 index b3beb4c4cb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8043.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Coolgat3" -delete-after: True -changes: - - rscadd: "Added the code for the semen donut and made it craftable" - - imageadd: "Added the donut sprites" diff --git a/html/changelogs/AutoChangeLog-pr-8044.yml b/html/changelogs/AutoChangeLog-pr-8044.yml deleted file mode 100644 index e4fe14ac84..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8044.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Divine shenanigans can no longer result in someone becoming immune to staminaloss" diff --git a/html/changelogs/AutoChangeLog-pr-8047.yml b/html/changelogs/AutoChangeLog-pr-8047.yml deleted file mode 100644 index 6a11895b0f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8047.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Fixed body_markings in bodyparts being assigned as a list when in reality, it's a string and literally everything expects it to be a string and uses it as a string. This should mean that markings no longer have completely fucked up caches for character preview and other things." diff --git a/html/changelogs/AutoChangeLog-pr-8051.yml b/html/changelogs/AutoChangeLog-pr-8051.yml deleted file mode 100644 index 51c2d438ab..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8051.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "Since apparently the game is literally unplayable if items are not in the exact center of a turf, the maximum pixel variance of thrown objects has been reduced by four pixels to make things a smidge more clearer for those that dont know what a turf is." - - bugfix: "Bartender glasses should HOPEFULLY no longer be tilted when landing on a table. Why the fuck is after_throw called via a timer." diff --git a/html/changelogs/AutoChangeLog-pr-8052.yml b/html/changelogs/AutoChangeLog-pr-8052.yml deleted file mode 100644 index 4ad9af8ef0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8052.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Changeling screeches now have their own unique sounds, and are much easier to recognize." diff --git a/html/changelogs/AutoChangeLog-pr-8053.yml b/html/changelogs/AutoChangeLog-pr-8053.yml deleted file mode 100644 index 706166a9d1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8053.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Most synthetic emotes are now available to humans. *ping" diff --git a/html/changelogs/AutoChangeLog-pr-8054.yml b/html/changelogs/AutoChangeLog-pr-8054.yml deleted file mode 100644 index a674371a3a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8054.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "You can now merp" diff --git a/html/changelogs/AutoChangeLog-pr-8055.yml b/html/changelogs/AutoChangeLog-pr-8055.yml deleted file mode 100644 index e06f03e1ef..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8055.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Added Dark Medihound and Pup Dozer from Virgo" diff --git a/html/changelogs/AutoChangeLog-pr-8056.yml b/html/changelogs/AutoChangeLog-pr-8056.yml deleted file mode 100644 index 0953743ae4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8056.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "The TEG will now only produce a meaningful amount of power if the hot pipe contains gas that's actively combusting" diff --git a/html/changelogs/AutoChangeLog-pr-8057.yml b/html/changelogs/AutoChangeLog-pr-8057.yml deleted file mode 100644 index adb48e0ee0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8057.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - admin: "Added the \"add PB bypass\" and \"revoke PB bypass\" verbs, which allow admins to let a specific ckey to bypass the panic bunker for the rest of the round" diff --git a/html/changelogs/AutoChangeLog-pr-8058.yml b/html/changelogs/AutoChangeLog-pr-8058.yml deleted file mode 100644 index a484cc8ce1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8058.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Jogging is no longer treated exactly the same as sprinting for water slips. When you're jogging, you will only slip on water if you have more than 20% staminaloss." diff --git a/html/changelogs/AutoChangeLog-pr-8062.yml b/html/changelogs/AutoChangeLog-pr-8062.yml deleted file mode 100644 index 2f1bc9b312..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8062.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "The atmospherics turf subsystem now has double the wait time, which should free up server processing power for other tasks." diff --git a/html/changelogs/AutoChangeLog-pr-8064.yml b/html/changelogs/AutoChangeLog-pr-8064.yml deleted file mode 100644 index 512095f583..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8064.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "The IRC now actually displays the actual survival rate" diff --git a/html/changelogs/AutoChangeLog-pr-8070.yml b/html/changelogs/AutoChangeLog-pr-8070.yml deleted file mode 100644 index a2ebab9068..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8070.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Bloodcult conversions are now consensual. Convertees are given a ten second timer to accept or wait out. This should drastically improve the quality of those that get converted into bloodcult." - - rscadd: "All sacrifices now count as a third of a cultist for the end-game narsie summon." diff --git a/html/changelogs/AutoChangeLog-pr-8071.yml b/html/changelogs/AutoChangeLog-pr-8071.yml deleted file mode 100644 index 040aa8b2cc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8071.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Nameless captains will no longer proc a \"Captain Captain on deck!\" message. Instead, it'll be a much more boring but much more sensical \"Captain on deck!\" message." diff --git a/html/changelogs/AutoChangeLog-pr-8080.yml b/html/changelogs/AutoChangeLog-pr-8080.yml deleted file mode 100644 index 9abd9e6f50..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8080.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - balance: "Halved borg energy guns self-recharge delay and increased their cell capacity by 3/4" diff --git a/html/changelogs/AutoChangeLog-pr-8084.yml b/html/changelogs/AutoChangeLog-pr-8084.yml deleted file mode 100644 index fbec9cfe1f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8084.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - tweak: "Clone pods no longer announce the name of the clone" diff --git a/html/changelogs/AutoChangeLog-pr-8090.yml b/html/changelogs/AutoChangeLog-pr-8090.yml deleted file mode 100644 index b314fde12b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8090.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58 (Original PR by actioninja)" -delete-after: True -changes: - - rscadd: "Disarm pushing (combat mode right click in disarm intent) will now actually push mobs away. Knockdowns from disarm pushing are no longer rng based on the target's staminaloss. Knockdowns from disarm pushing now only happen when you push someone into another mob, a table, or a wall. Pushes will now also temporarily stop targets from using firearms, and will disarm the firearm if performed a second time. Pushes still deal staminaloss to standing targets, and won't deal a single ounce of staminaloss to resting targets." - - rscdel: "You can no longer displace mobs that are in harm intent by simply walking into them. Mobs that aren't in help intent have to be disarm pushed to actually be moved." diff --git a/html/changelogs/AutoChangeLog-pr-8091.yml b/html/changelogs/AutoChangeLog-pr-8091.yml deleted file mode 100644 index e98b7df89c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8091.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Transit turfs on the centcom z-level now function properly again at keeping mobs within the areas defined by their boundaries." - - bugfix: "The title screen is also positioned correctly again." diff --git a/html/changelogs/AutoChangeLog-pr-8098.yml b/html/changelogs/AutoChangeLog-pr-8098.yml deleted file mode 100644 index 956b83d223..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8098.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Coolgat3" -delete-after: True -changes: - - bugfix: "Made the sec and warden berret offer as much protection like the helmet" diff --git a/html/changelogs/AutoChangeLog-pr-8104.yml b/html/changelogs/AutoChangeLog-pr-8104.yml deleted file mode 100644 index 61bf66a0c2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8104.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes chemical patches always checking the suit slot even if the targetted limb was the head." - - bugfix: "Skeleton, nightmare and golem races are once again available to get chemical patches applied onto." diff --git a/html/changelogs/AutoChangeLog-pr-8108.yml b/html/changelogs/AutoChangeLog-pr-8108.yml deleted file mode 100644 index fea83213be..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8108.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "Adds two cartons of space milk to the space skellie pirates cutter's fridge." diff --git a/html/changelogs/AutoChangeLog-pr-8114.yml b/html/changelogs/AutoChangeLog-pr-8114.yml deleted file mode 100644 index 96e6914e6b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8114.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "izzyinbox" -delete-after: True -changes: - - tweak: "lowered the player age for command jobs to 1/3 of their previous setting" diff --git a/html/changelogs/AutoChangeLog-pr-8118.yml b/html/changelogs/AutoChangeLog-pr-8118.yml deleted file mode 100644 index be5c0871ab..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8118.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "Ghost role eligibility for both event and spawner ghost roles is now affected by DNR status. If you suicide, ghost, or cryo out, you will be unable to qualify for any ghost roles" - - tweak: "Cryo now applies DNR status no matter how long the round has been going on" - - tweak: "Suicide is now properly admin logged as it is supposed to be. Ghosting while alive is now also logged." diff --git a/html/changelogs/AutoChangeLog-pr-8119.yml b/html/changelogs/AutoChangeLog-pr-8119.yml deleted file mode 100644 index 6e282e2a8d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8119.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Sparks and igniters will now actually heat areas rather than cooling them, as was intended." - - tweak: "To alleviate some potential complaints, RPDs now have a cooldown before they can create sparks, and both RPDs and emitters produce less sparks." diff --git a/html/changelogs/AutoChangeLog-pr-8121.yml b/html/changelogs/AutoChangeLog-pr-8121.yml deleted file mode 100644 index 27ce1ee0a1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8121.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "Conversion runes will now mute the victim temporarily while they're deciding whether to convert or be sacrificed." - - bugfix: "Conversion runes no longer require a third cultist to sacrifice if the victim refuses conversion" diff --git a/html/changelogs/AutoChangeLog-pr-8122.yml b/html/changelogs/AutoChangeLog-pr-8122.yml deleted file mode 100644 index 2b9d091601..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8122.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Staminaloss targeted at the head now properly redirects to the chest." diff --git a/html/changelogs/AutoChangeLog-pr-8123.yml b/html/changelogs/AutoChangeLog-pr-8123.yml deleted file mode 100644 index 56b2f82ad6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8123.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "Sprinting no longer takes stam when you're being pulled or when you're in zero gravity. Other sources of involuntary movement are not affected." diff --git a/html/changelogs/AutoChangeLog-pr-8130.yml b/html/changelogs/AutoChangeLog-pr-8130.yml deleted file mode 100644 index ac1dd56028..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8130.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "fixed flavor text appearing when your face is hidden but you're not an Unknown" diff --git a/html/changelogs/AutoChangeLog-pr-8132.yml b/html/changelogs/AutoChangeLog-pr-8132.yml deleted file mode 100644 index 05e27044be..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8132.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "Tauric suits now apply an (placeholder) blood overlay, as well as their shield overlay." diff --git a/html/changelogs/AutoChangeLog-pr-8140.yml b/html/changelogs/AutoChangeLog-pr-8140.yml deleted file mode 100644 index ae21917771..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8140.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - code_imp: "In an attempt to improve performance during highpop, mouse movements will now only call onmousemove() while a user is in combat mode" diff --git a/html/changelogs/AutoChangeLog-pr-8141.yml b/html/changelogs/AutoChangeLog-pr-8141.yml deleted file mode 100644 index 2a465b21e5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8141.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "Ballistic projectiles are now the only projectiles capable of emitting dinks." diff --git a/html/changelogs/AutoChangeLog-pr-8145.yml b/html/changelogs/AutoChangeLog-pr-8145.yml deleted file mode 100644 index 55cd6c378b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8145.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - admin: "Panic bunker toggling and bypassing is now logged in admin IRC" diff --git a/html/changelogs/AutoChangeLog-pr-8146.yml b/html/changelogs/AutoChangeLog-pr-8146.yml deleted file mode 100644 index 566532fdd3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8146.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "OOC and LOOC now use separate toggles. You can now use LOOC while OOC is globally toggled off, and admins now have the option to toggle LOOC off separately from OOC" - - code_imp: "also revamped and reorganized relevant looc adminverb code" diff --git a/html/changelogs/AutoChangeLog-pr-8159.yml b/html/changelogs/AutoChangeLog-pr-8159.yml deleted file mode 100644 index da0f13e28a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8159.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - balance: "Ashwalkers now have lungs. They cannot breath station air without suffocation effects, but are completely fine on their homeworld." - - balance: "Carbon mobs now have a maximum tolerance to oxygen of 50kPa." - - balance: "Deluxe synthetic lungs have a very high bonus to O2 tolerance." diff --git a/html/changelogs/AutoChangeLog-pr-8160.yml b/html/changelogs/AutoChangeLog-pr-8160.yml deleted file mode 100644 index 33d2445f48..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8160.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "Digitigrade legs returned to normal, since digi leg markings overlay them anyway." - - bugfix: "commented out lizard mam_snout entries, because too many abominations" diff --git a/html/changelogs/AutoChangeLog-pr-8164.yml b/html/changelogs/AutoChangeLog-pr-8164.yml deleted file mode 100644 index 5d00b5b9ba..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8164.yml +++ /dev/null @@ -1,12 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "Vore Panel restored to have various interactions available again. Semi-untested but should work as advertised." - - tweak: "Vore Panel has more feedback." - - rscadd: "is_wet var to bellies, toggled in the panel, will remove flesh sounding struggles and the internal loop. JSON version updated." - - rscadd: "Feeding var. You will need to enable feeding to recieve any feed vore actions, but you can now feed yourself to mobs that have this set. TODO, Dogborg sleeper feeding." - - rscadd: "vore mode button now required to be enabled to perform vore actions. It's the mouth icon!" - - bugfix: "Ash Drake vore fixed for actual reals this time" - - bugfix: "Mobs shouldn't spam the released contents announcement anymore on qdel or death. Only if triggered" - - tweak: "Hostile mob code now properly ignores targets in bellies" - - rscadd: "Your belly can quietly growl if you're starving now." diff --git a/html/changelogs/AutoChangeLog-pr-8167.yml b/html/changelogs/AutoChangeLog-pr-8167.yml deleted file mode 100644 index 105e5c34b8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8167.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "The endgame narsie summon rune no longer requires 24 total sacrifices, and will now properly account for cultists that surround it" diff --git a/html/changelogs/AutoChangeLog-pr-8169.yml b/html/changelogs/AutoChangeLog-pr-8169.yml deleted file mode 100644 index 5c50eac652..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8169.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "Normal blood splattering isn't offset due to tauric mode" diff --git a/html/changelogs/AutoChangeLog-pr-8172.yml b/html/changelogs/AutoChangeLog-pr-8172.yml deleted file mode 100644 index 87c4b5baf7..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8172.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "The succumb verb is now available in the IC tab" diff --git a/html/changelogs/AutoChangeLog-pr-8175.yml b/html/changelogs/AutoChangeLog-pr-8175.yml deleted file mode 100644 index 00e8ea4ee3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8175.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "Lighting now uses a linear algorithm to calculate falloff instead of an inverse-square algorithm." diff --git a/html/changelogs/AutoChangeLog-pr-8182.yml b/html/changelogs/AutoChangeLog-pr-8182.yml deleted file mode 100644 index 8247409f1b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8182.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - code_imp: "get_hearers_in_view() now actually caches the results of view() instead of calling view() twice" diff --git a/html/changelogs/AutoChangeLog-pr-8183.yml b/html/changelogs/AutoChangeLog-pr-8183.yml deleted file mode 100644 index 01b3cd4b2b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8183.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "bluespace bio bags" -delete-after: True -changes: - - rscadd: "Added bluespace bio bags and put it in the tech web, in the node applied bluespace" - - imageadd: "added a crappy icon for bluespace bio bags" diff --git a/html/changelogs/AutoChangeLog-pr-8184.yml b/html/changelogs/AutoChangeLog-pr-8184.yml deleted file mode 100644 index 6a55b6468b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8184.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - code_imp: "Goonchat's JS no longer contains checks related to a completely unused message filtering function, which should improve clientside performance quite a bit" diff --git a/html/changelogs/AutoChangeLog-pr-8185.yml b/html/changelogs/AutoChangeLog-pr-8185.yml deleted file mode 100644 index eec6e7c3b2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8185.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "The storage hud now properly takes into account the viewer's view size, meaning storage items with a large amount of storage slots will properly stretch across the bottom of the screen when running in widescreen." diff --git a/html/changelogs/AutoChangeLog-pr-8189.yml b/html/changelogs/AutoChangeLog-pr-8189.yml deleted file mode 100644 index 2a2fb9cbbf..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8189.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Action buttons are now able to fill the entire screen in widescreen and other weird view sizes." diff --git a/html/changelogs/AutoChangeLog-pr-8190.yml b/html/changelogs/AutoChangeLog-pr-8190.yml deleted file mode 100644 index d2b05015e4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8190.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscdel: "Omegastation's job changes will no longer be included at compile time." diff --git a/html/changelogs/AutoChangeLog-pr-8192.yml b/html/changelogs/AutoChangeLog-pr-8192.yml deleted file mode 100644 index 28d8f00814..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8192.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - code_imp: "The client update portion of /mob/Login() now double-checks to make sure client.player_details exists and is of the proper type. This should hopefully fix the \"cannot read null.player_details\" runtimes that can spontaneously cause clients to get kicked out and forced back to the lobby." diff --git a/html/changelogs/AutoChangeLog-pr-8194.yml b/html/changelogs/AutoChangeLog-pr-8194.yml deleted file mode 100644 index d7a8b0b540..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8194.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "Hippie Circuit Port" -delete-after: True -changes: - - rscadd: "Added all Atmospheric Circuits" - - rscadd: "Added the ability to color data disks" - - rscadd: "Added Selection and Storage Examiner Circuits" - - rscadd: "Added Smoke, Extinguisher, and Beaker Connector Circuits" - - rscadd: "Added Inserter, Renamer, Redescriber, and Repaint Circuits" - - rscadd: "Added MMI Tank and pAI Connector Circuits (The possibilities are endless!)" diff --git a/html/changelogs/AutoChangeLog-pr-8195.yml b/html/changelogs/AutoChangeLog-pr-8195.yml deleted file mode 100644 index b9e9346c95..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8195.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "You can now quickly use unequipped items on objects by simply click-dragging the item onto the object with an empty active hand. Doing so will place the item in your hand, and then use that item on the object." diff --git a/html/changelogs/AutoChangeLog-pr-8196.yml b/html/changelogs/AutoChangeLog-pr-8196.yml deleted file mode 100644 index 631ccb6728..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8196.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - code_imp: "In an attempt to improve the performance of /mob/Stat(), various time-related procs now use defines instead of being procs that call procs that call other procs that call even more procs." diff --git a/html/changelogs/AutoChangeLog-pr-8197.yml b/html/changelogs/AutoChangeLog-pr-8197.yml deleted file mode 100644 index cdd2b4e877..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8197.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - code_imp: "squeezed a little bit more perf out of atmos" diff --git a/html/changelogs/AutoChangeLog-pr-8198.yml b/html/changelogs/AutoChangeLog-pr-8198.yml deleted file mode 100644 index 46caa5da07..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8198.yml +++ /dev/null @@ -1,12 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Added plasma man suit icons for taurs" - - rscadd: "Added bee butt for insects to have stripes" - - tweak: "adjusted random spawn sprite accessories, humans won't be demi by default and lizard/mammal spawns will randomly get digitigrade legs" - - bugfix: "sprite adjustments for tentacles, as well as a misspelling." - - bugfix: "Humans once again use ears and tail_human, as intended. This is to prevent garish randomness" - - bugfix: "istype for species is actually correct and usable now, it'll be a factor for monkey form expansions." - - bugfix: "Hair functions are de-gendered and more easily selectable now." - - bugfix: "Slimes can *wag, select markings and snouts, and yes it works." - - bugfix: "Slimepeople extra parts now respect their hair_alpha in terms of being somewhat see-through. it shouldn't stand out as badly now!" diff --git a/html/changelogs/AutoChangeLog-pr-8199.yml b/html/changelogs/AutoChangeLog-pr-8199.yml deleted file mode 100644 index d3bf5a07e5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8199.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "Hunger noises are now toggled per character" diff --git a/html/changelogs/AutoChangeLog-pr-8200.yml b/html/changelogs/AutoChangeLog-pr-8200.yml deleted file mode 100644 index db6787ff02..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8200.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "Ashwalker den is habitable by ashwalkers again" diff --git a/html/changelogs/AutoChangeLog-pr-8207.yml b/html/changelogs/AutoChangeLog-pr-8207.yml deleted file mode 100644 index 22b31a834c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8207.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "If a living mob has vore initialized but doesnt have voreprefs initialized, then client login will force voreprefs to load." diff --git a/html/changelogs/AutoChangeLog-pr-8211.yml b/html/changelogs/AutoChangeLog-pr-8211.yml deleted file mode 100644 index bdfcdbf007..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8211.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Medical belts now have overlays! Now you can see if a belt is useful or just flatout empty." - - bugfix: "fixed hypo MK IIs not being able to be put on medical belts" diff --git a/html/changelogs/AutoChangeLog-pr-8214.yml b/html/changelogs/AutoChangeLog-pr-8214.yml deleted file mode 100644 index 96f835d2f5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8214.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "fixed Navy officer uniforms that failed to spawn" - - code_imp: "Loadout items will be forcefully added to backpacks or at your feet instead of left behind at title screen" diff --git a/html/changelogs/AutoChangeLog-pr-8219.yml b/html/changelogs/AutoChangeLog-pr-8219.yml deleted file mode 100644 index b0d77cdec0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8219.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Coolgat3" -delete-after: True -changes: - - rscadd: "Added berets for all the heads." - - imageadd: "Added sprites for the berets." - - code_imp: "Coded the berets to spawn in appropiate lockers." diff --git a/html/changelogs/AutoChangeLog-pr-8228.yml b/html/changelogs/AutoChangeLog-pr-8228.yml deleted file mode 100644 index bcfae35a3c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8228.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Coolgat3" -delete-after: True -changes: - - tweak: "Raised the ripley's movement speed and lights range by 1, also lowered its armor to compensate." diff --git a/html/changelogs/AutoChangeLog-pr-8229.yml b/html/changelogs/AutoChangeLog-pr-8229.yml deleted file mode 100644 index c22f1dab3d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8229.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Hopefully fixed paper crash 2: electric boogaloo" diff --git a/html/changelogs/AutoChangeLog-pr-8231.yml b/html/changelogs/AutoChangeLog-pr-8231.yml deleted file mode 100644 index f71ec3fd52..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8231.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - tweak: "hypospray kits hold 12 now, but only vials and sprays themselves" - - bugfix: "labcoats can carry MK II hyposprays on them now." diff --git a/html/changelogs/AutoChangeLog-pr-8232.yml b/html/changelogs/AutoChangeLog-pr-8232.yml deleted file mode 100644 index 00d319dfe5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8232.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Vore Mobs are a thing now, not just ash drakes" - - rscdel: "Removed hunger sound stuff. never taking requests from Coolgat3 ever again. -refractor: Simple Mobs use the same system regular human mobs do, itjustworks.png" diff --git a/html/changelogs/AutoChangeLog-pr-8233.yml b/html/changelogs/AutoChangeLog-pr-8233.yml deleted file mode 100644 index d9d827df4b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8233.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - tweak: "Character Window settings unsnowflaked and normalized. I have no fucking clue how to make them work with taurs still tho, sorry." - - imageadd: "added rotating background images for better clarity and contrast than just SOLID FUCKING BLACK. Images from Virgo/Polaris/Eris" diff --git a/html/changelogs/AutoChangeLog-pr-8235.yml b/html/changelogs/AutoChangeLog-pr-8235.yml deleted file mode 100644 index ab5aef0b8d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8235.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - balance: "Defib users automatically stop pulling when they attempt to perform a defib shock" diff --git a/html/changelogs/AutoChangeLog-pr-8236.yml b/html/changelogs/AutoChangeLog-pr-8236.yml deleted file mode 100644 index 3e266fb6fc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8236.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - refactor: "Added unomos, which is basically listmos except gas mixtures only use one single list for handling their gasses. This is a significant performance improvement that also offers a mild memory improvement under normal circumstances." diff --git a/html/changelogs/AutoChangeLog-pr-8237.yml b/html/changelogs/AutoChangeLog-pr-8237.yml deleted file mode 100644 index 7618d0ebd2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8237.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - imageadd: "added muzzled varients of space helmets and full masks" - - imageadd: "added knight_grey to taur suits, all paranormal ERT now have tauric versions enabled" - - bugfix: "Lava knights have digitigrade and tauric versions now" - - rscadd: "Added a glass version of the gas mask, because it was in the files and looked nice. does everything regular ones do except make you an unknown" diff --git a/html/changelogs/AutoChangeLog-pr-8247.yml b/html/changelogs/AutoChangeLog-pr-8247.yml deleted file mode 100644 index 1ab08ece4d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8247.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Added custom species names! Examining people will now display their species name unless they're an Unknown or have their face hidden. like flavor text. Set it in your character window!" - - code_imp: "changed how health scanners print messages, wrapping it in msg for one to_chat instead of printing every line to_chat." diff --git a/html/changelogs/AutoChangeLog-pr-8252.yml b/html/changelogs/AutoChangeLog-pr-8252.yml deleted file mode 100644 index c86d0b5aa0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8252.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - rscadd: "Adds the bonermeter; a device that measures arousal based statistics." - - refactor: "Added a new input to the electrostimulator that controls the strength of the shock. It accepts negative inputs which reduce arousal. Added a new output to the electrostimulator that displays the amount of arousal gained." - - balance: "Rebalanced the electro-stimulator to be less spammy by giving it a 2.5 second enforced cooldown per circuit contraption. Increased the complexity of electro stimulator from 10 to 15." diff --git a/html/changelogs/AutoChangeLog-pr-8255.yml b/html/changelogs/AutoChangeLog-pr-8255.yml deleted file mode 100644 index 1b2e81f5bd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8255.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerB" -delete-after: True -changes: - - tweak: "Tweaked the UI of the loadout to be less cluttered due to an issue with formatting." diff --git a/html/changelogs/AutoChangeLog-pr-8258.yml b/html/changelogs/AutoChangeLog-pr-8258.yml deleted file mode 100644 index 2d1f75603f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8258.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - refactor: "Reworked the Vent Clog event to spray smoke instead of foam, also made it shoot smoke over time instead through each vent instead of all at once." diff --git a/html/changelogs/AutoChangeLog-pr-8259.yml b/html/changelogs/AutoChangeLog-pr-8259.yml deleted file mode 100644 index 54a1dd6a4b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8259.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Locomotion circuits are now restricted to jogging speed" - - balance: "MMI circuits and pAI circuits both now have 60 complexity, up from their original 29." diff --git a/html/changelogs/AutoChangeLog-pr-8260.yml b/html/changelogs/AutoChangeLog-pr-8260.yml deleted file mode 100644 index e6ef697917..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8260.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "cakes!" - - imageadd: "Made some sprites! -Love them really came out well" diff --git a/html/changelogs/AutoChangeLog-pr-8261.yml b/html/changelogs/AutoChangeLog-pr-8261.yml deleted file mode 100644 index e7624aec73..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8261.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "new economics" - - tweak: "cargo and robotics relationships" - - balance: "unbalanced something" - - bugfix: "fixed a maybe oversight" diff --git a/html/changelogs/AutoChangeLog-pr-8264.yml b/html/changelogs/AutoChangeLog-pr-8264.yml deleted file mode 100644 index 15e525c581..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8264.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscdel: "Fun" - - tweak: "costs of suit voucher" - - balance: "Unblances miner vender" - - bugfix: "spare cheaper brute kit" diff --git a/html/changelogs/AutoChangeLog-pr-8265.yml b/html/changelogs/AutoChangeLog-pr-8265.yml deleted file mode 100644 index e581a93315..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8265.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "harm from hentie" - - balance: "rebalanced goliaths stun to be less auto death" diff --git a/html/changelogs/AutoChangeLog-pr-8274.yml b/html/changelogs/AutoChangeLog-pr-8274.yml deleted file mode 100644 index 41b2de1d9e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8274.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - tweak: "Increased the spawn area of the City of Cogs (Reebe). This does not affect the area in which builders can build." diff --git a/html/changelogs/AutoChangeLog-pr-8277.yml b/html/changelogs/AutoChangeLog-pr-8277.yml deleted file mode 100644 index 2a663ea2a4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8277.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - balance: "Significantly tweaks the Wizard race transformation event to be less unreasonably troublesome." diff --git a/html/changelogs/AutoChangeLog-pr-8278.yml b/html/changelogs/AutoChangeLog-pr-8278.yml deleted file mode 100644 index 57655b8ace..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8278.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Armor to blob shields" - - tweak: "block weaken state to 70% from 75%" diff --git a/html/changelogs/AutoChangeLog-pr-8279.yml b/html/changelogs/AutoChangeLog-pr-8279.yml deleted file mode 100644 index 7ed141640a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8279.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "restores the deathriplys missing armor" diff --git a/html/changelogs/AutoChangeLog-pr-8283.yml b/html/changelogs/AutoChangeLog-pr-8283.yml deleted file mode 100644 index 7a614e2e82..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8283.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - rscadd: "Adds a new 0 cost trait that makes you immune* to Crocin and Hexacrocin" diff --git a/html/changelogs/AutoChangeLog-pr-8286.yml b/html/changelogs/AutoChangeLog-pr-8286.yml deleted file mode 100644 index d59a8dad66..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8286.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - tweak: "Tweaks how slurring works so it's more of a gradual change into slurring instead of immediate." - - balance: "Slurring is now directly proportional to your drunkenness, with other sources of slur being added on top of it." diff --git a/html/changelogs/AutoChangeLog-pr-8287.yml b/html/changelogs/AutoChangeLog-pr-8287.yml deleted file mode 100644 index aafba03474..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8287.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "new lockable colalr" diff --git a/html/changelogs/AutoChangeLog-pr-8288.yml b/html/changelogs/AutoChangeLog-pr-8288.yml deleted file mode 100644 index 6b3fbadbd8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8288.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - tweak: "Bras are now separate from underwear, meaning you can mix and match bras if you're into that." - - tweak: "Men can wear female accessory clothing, and females can wear men accessory clothing. It's not a fetish, mom, it's PROGRESSIVE." - - code_imp: "Reorganized accessories into their own files to prevent a massive 1000 line file." - - server: "i'm 10% sure that merging this PR will cause preference corruption sooooooooooo I just need to hear from @deathride58 or perhaps someone else on how much damage this could possibly do." diff --git a/html/changelogs/AutoChangeLog-pr-8290.yml b/html/changelogs/AutoChangeLog-pr-8290.yml deleted file mode 100644 index 553bfbf4f9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8290.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "missing hopes and dreams" - - code_imp: "orgized the weapon file to be more cat brain friendly" diff --git a/html/changelogs/AutoChangeLog-pr-8294.yml b/html/changelogs/AutoChangeLog-pr-8294.yml deleted file mode 100644 index bce0031c2b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8294.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - imageadd: "This means sprite right?" diff --git a/html/changelogs/AutoChangeLog-pr-8295.yml b/html/changelogs/AutoChangeLog-pr-8295.yml deleted file mode 100644 index 833474e9af..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8295.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscdel: "Many engi flags on non-engi things" - - code_imp: "changed some code to be organized at a glance" diff --git a/html/changelogs/AutoChangeLog-pr-8296.yml b/html/changelogs/AutoChangeLog-pr-8296.yml deleted file mode 100644 index 78db7ccb0d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8296.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - balance: "25% < --- 50% For NPC blocking bullshit -ided: Yes" diff --git a/html/changelogs/AutoChangeLog-pr-8301.yml b/html/changelogs/AutoChangeLog-pr-8301.yml deleted file mode 100644 index 90e893bdf2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8301.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "mag gun uses cells" - - balance: "kev things their to op" diff --git a/html/changelogs/AutoChangeLog-pr-8302.yml b/html/changelogs/AutoChangeLog-pr-8302.yml deleted file mode 100644 index e2b535c40f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8302.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - tweak: "Tweaked penis." - - balance: "Rebalanced penis." diff --git a/html/changelogs/AutoChangeLog-pr-8303.yml b/html/changelogs/AutoChangeLog-pr-8303.yml deleted file mode 100644 index 8c3742ca8a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8303.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - rscadd: "Added the following reagents to the common list of vent clog reagents: ~~Cooking Oil~~, ~~Frost Oil~~, Sodium Chloride, Corn Oil, Uranium, Carpet, Firefighting Foam, semen, femcum, tear juice, strange reagent, ~~spraytan~~." - - balance: "Vent Clog smoke emits the same transparent smoke as a smoke machine, including how much it transfers. Vent Clogs also do not trigger in areas deemed \"Safe\" in code, such as in the dorms or trusted areas where dangerous things shouldn't occur." diff --git a/html/changelogs/AutoChangeLog-pr-8305.yml b/html/changelogs/AutoChangeLog-pr-8305.yml deleted file mode 100644 index 2293fa9163..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8305.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - server: "Discord bot will now report when a round ends and give the vague news ticker that a sister-station would have received for the game mode and result of the round." diff --git a/html/changelogs/AutoChangeLog-pr-8306.yml b/html/changelogs/AutoChangeLog-pr-8306.yml deleted file mode 100644 index 95ceb32968..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8306.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "fixed medical hardsuit overlay issue. I thought it was going to work well but fuck byond." - - bugfix: "None body markings shouldn't give rgb hell, but it also should reset properly anyway. ree." - - bugfix: "Sorted some sprites to better sooth my byond icon limit anxiety." diff --git a/html/changelogs/AutoChangeLog-pr-8311.yml b/html/changelogs/AutoChangeLog-pr-8311.yml deleted file mode 100644 index 6ec7aae071..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8311.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "syndicate phobia" - - tweak: "other phobia's" diff --git a/html/changelogs/AutoChangeLog-pr-8315.yml b/html/changelogs/AutoChangeLog-pr-8315.yml deleted file mode 100644 index 5d0b85e162..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8315.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "laser carbine" diff --git a/html/changelogs/AutoChangeLog-pr-8316.yml b/html/changelogs/AutoChangeLog-pr-8316.yml deleted file mode 100644 index b51a40c846..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8316.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "makes collars only locked via key" diff --git a/html/changelogs/AutoChangeLog-pr-8317.yml b/html/changelogs/AutoChangeLog-pr-8317.yml deleted file mode 100644 index 0fd31c3c52..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8317.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "Biogenerators now have a sane limit for production" diff --git a/html/changelogs/AutoChangeLog-pr-8318.yml b/html/changelogs/AutoChangeLog-pr-8318.yml deleted file mode 100644 index 0c0a5c06c4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8318.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - rscadd: "Adds additional random brain damage text" diff --git a/html/changelogs/AutoChangeLog-pr-8319.yml b/html/changelogs/AutoChangeLog-pr-8319.yml deleted file mode 100644 index e46b83c121..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8319.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - rscadd: "Adds penis enlargement pills." diff --git a/html/changelogs/AutoChangeLog-pr-8322.yml b/html/changelogs/AutoChangeLog-pr-8322.yml deleted file mode 100644 index 188c988021..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8322.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "charging" diff --git a/html/changelogs/AutoChangeLog-pr-8323.yml b/html/changelogs/AutoChangeLog-pr-8323.yml deleted file mode 100644 index 0c4fc13b48..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8323.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Combat inducers for COMBAT!" diff --git a/html/changelogs/AutoChangeLog-pr-8325.yml b/html/changelogs/AutoChangeLog-pr-8325.yml deleted file mode 100644 index 1e665e7917..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8325.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - code_imp: "made it look nice" diff --git a/html/changelogs/AutoChangeLog-pr-8334.yml b/html/changelogs/AutoChangeLog-pr-8334.yml deleted file mode 100644 index 3c9152c257..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8334.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "dtfe3" -delete-after: True -changes: - - tweak: "Increased music maxlines from 300 to 600" diff --git a/html/changelogs/AutoChangeLog-pr-8336.yml b/html/changelogs/AutoChangeLog-pr-8336.yml deleted file mode 100644 index 25a14e5d1f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8336.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - rscadd: "Adds Stun Circuit and Pneumatic Cannon Integrated Circuits" - - bugfix: "Fixed extinguisher and smoke circuits not accepting any reagents." diff --git a/html/changelogs/AutoChangeLog-pr-8341.yml b/html/changelogs/AutoChangeLog-pr-8341.yml deleted file mode 100644 index 50dedb7374..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8341.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "golden swag boxes" diff --git a/html/changelogs/AutoChangeLog-pr-8342.yml b/html/changelogs/AutoChangeLog-pr-8342.yml deleted file mode 100644 index a159f3240f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8342.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - rscadd: "Adds a few important clockcult tips." - - rscadd: "Added Mech Sensors, a brass-created trap that activates when a mech not controlled by a cultist crosses it." - - rscadd: "Added power nullifiers, an emp trap that emps everything in a 3x3 area, with the center suffering a heavy EMP." - - tweak: "Brass Skewers now deal 50 damage to mechs." diff --git a/html/changelogs/AutoChangeLog-pr-8348.yml b/html/changelogs/AutoChangeLog-pr-8348.yml deleted file mode 100644 index b4272de0a5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8348.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Crafting suitcases" diff --git a/html/changelogs/AutoChangeLog-pr-8349.yml b/html/changelogs/AutoChangeLog-pr-8349.yml deleted file mode 100644 index de4c08624a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8349.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "more bountys" - - rscdel: "Nitryl bounty" diff --git a/html/changelogs/AutoChangeLog-pr-8352.yml b/html/changelogs/AutoChangeLog-pr-8352.yml deleted file mode 100644 index ff9e9130db..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8352.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Fixed a fairly huge server crash exploit" diff --git a/html/changelogs/AutoChangeLog-pr-8362.yml b/html/changelogs/AutoChangeLog-pr-8362.yml deleted file mode 100644 index 29a840e22f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8362.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "dtfe3" -delete-after: True -changes: - - tweak: "Made it so any oxygen tank can be used instead of only red ones." diff --git a/html/changelogs/AutoChangeLog-pr-8366.yml b/html/changelogs/AutoChangeLog-pr-8366.yml deleted file mode 100644 index c7c16a8e7d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8366.yml +++ /dev/null @@ -1,10 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "Box Cryopods expanded to 6 public. Permabrig cryo fixed." - - bugfix: "Delta Cryopods expanded to 6 public. Permabrig cryo fixed." - - bugfix: "MetaStation Crypods expanded to 6 public, relocated above sparring ring. Permabrig cryo fixed" - - bugfix: "PubbyStation gained one more cryopod, Permabrig's cryo fixed." - - rscadd: "Omega given one more crypod as well." - - rscadd: "Gulag was given a cryopod." - - tweak: "Box and Meta's cryo rooms are now a new room entirely." diff --git a/html/changelogs/AutoChangeLog-pr-8367.yml b/html/changelogs/AutoChangeLog-pr-8367.yml deleted file mode 100644 index b5e3a87cc5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8367.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Added erect states for all phallic bodyparts" - - bugfix: "YOUR DICK ACTUALLY STANDS UP NOW, YOU'RE WELCOME." - - bugfix: "skintone locked genitals match the new skintone colorations." - - rscadd: "added two new vaginal types and descriptions." diff --git a/html/changelogs/AutoChangeLog-pr-8368.yml b/html/changelogs/AutoChangeLog-pr-8368.yml deleted file mode 100644 index cffcd2208e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8368.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "better stocks" diff --git a/html/changelogs/AutoChangeLog-pr-8369.yml b/html/changelogs/AutoChangeLog-pr-8369.yml deleted file mode 100644 index ca13347288..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8369.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "more evil blood fluff text" diff --git a/html/changelogs/AutoChangeLog-pr-8370.yml b/html/changelogs/AutoChangeLog-pr-8370.yml deleted file mode 100644 index 1ff275b762..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8370.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Added more mime names" diff --git a/html/changelogs/AutoChangeLog-pr-8372.yml b/html/changelogs/AutoChangeLog-pr-8372.yml deleted file mode 100644 index 88ebc9854c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8372.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "fixed borg defib runtimes" diff --git a/html/changelogs/AutoChangeLog-pr-8374.yml b/html/changelogs/AutoChangeLog-pr-8374.yml deleted file mode 100644 index e86e591827..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8374.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "fixed heart attacks being nonlethal" diff --git a/html/changelogs/AutoChangeLog-pr-8376.yml b/html/changelogs/AutoChangeLog-pr-8376.yml deleted file mode 100644 index 8ab3b8b8bc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8376.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Ported Oracle's cloning set up, you're now visible like cryo when being cloned, though it's a mystery until you have skin on your meat puppet existance" diff --git a/html/changelogs/AutoChangeLog-pr-8377.yml b/html/changelogs/AutoChangeLog-pr-8377.yml deleted file mode 100644 index b6265b3bff..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8377.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - balance: "Recyclers are unable to destroy the indestructible any longer." diff --git a/html/changelogs/AutoChangeLog-pr-8384.yml b/html/changelogs/AutoChangeLog-pr-8384.yml deleted file mode 100644 index f98b473e6c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8384.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Nero1024" -delete-after: True -changes: - - soundadd: "Bare feet will now make the correct footstep sounds." - - soundadd: "Other mobs will make the correct footstep sounds." - - soundadd: "Crawling/dragging sounds for downed/incapacitated mobs" diff --git a/html/changelogs/AutoChangeLog-pr-8387.yml b/html/changelogs/AutoChangeLog-pr-8387.yml deleted file mode 100644 index 4770fe08fc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8387.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "jtgsz" -delete-after: True -changes: - - rscadd: "ported gang mode" diff --git a/html/changelogs/AutoChangeLog-pr-8388.yml b/html/changelogs/AutoChangeLog-pr-8388.yml deleted file mode 100644 index 570b30448a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8388.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Useroth" -delete-after: True -changes: - - bugfix: "the collars are now aware of their proper overlay sprites" diff --git a/html/changelogs/AutoChangeLog-pr-8391.yml b/html/changelogs/AutoChangeLog-pr-8391.yml deleted file mode 100644 index 32e837a0a6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8391.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "replaces a sink with a autolathen" diff --git a/html/changelogs/AutoChangeLog-pr-8392.yml b/html/changelogs/AutoChangeLog-pr-8392.yml deleted file mode 100644 index 986bb0a6fa..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8392.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "Kiara's toy sabre now actually is the correct item + icon states" - - bugfix: "Generic armor for taurs fixed, there isn't actually any sprites for 'em, so. Full sprites overlay over bodies, but I really can't be bothered to do all the offset fixes otherwise." diff --git a/html/changelogs/AutoChangeLog-pr-8393.yml b/html/changelogs/AutoChangeLog-pr-8393.yml deleted file mode 100644 index 4bc0472560..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8393.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "WhiteHusky" -delete-after: True -changes: - - rscadd: "Sleepers now show blood level and type." diff --git a/html/changelogs/AutoChangeLog-pr-8397.yml b/html/changelogs/AutoChangeLog-pr-8397.yml deleted file mode 100644 index 28ed98666f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8397.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "WhiteHusky" -delete-after: True -changes: - - tweak: "Changed the styling of arousal messages to use pink-ish colors." - - bugfix: "The orgasm moodlet message new-lines properly." diff --git a/html/changelogs/AutoChangeLog-pr-8398.yml b/html/changelogs/AutoChangeLog-pr-8398.yml deleted file mode 100644 index a7ce2fbe2d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8398.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - balance: "Ass slapping only works if you're actually behind the target. Ass slapping now respects disarm blocking. You can no longer face/ass slap someone on an intent other than help, unless they are also face/ass slapping." - - bugfix: "Fixed ass and face slapping grammar." - - rscadd: "Adds meh effects for ass and face slapping." diff --git a/html/changelogs/AutoChangeLog-pr-8399.yml b/html/changelogs/AutoChangeLog-pr-8399.yml deleted file mode 100644 index 5c71d19faa..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8399.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Large maps have had a patient room transformed into micro chemistry stations with nothing else in them. They've been labelled 'Apothecary' rooms and are accessible by doctors." diff --git a/html/changelogs/AutoChangeLog-pr-8400.yml b/html/changelogs/AutoChangeLog-pr-8400.yml deleted file mode 100644 index 485e4c4812..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8400.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "dtfe3" -delete-after: True -changes: - - tweak: "Watcher wing Trophy's effect lasts 1 second instead of 0.5" diff --git a/html/changelogs/AutoChangeLog-pr-8401.yml b/html/changelogs/AutoChangeLog-pr-8401.yml deleted file mode 100644 index 0043ffa202..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8401.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - refactor: "Refactored implants to not be located inside mobs codewise, akin to organs." - - bugfix: "Fixed gps tracking implants." - - bugfix: "Fixed item not being dumped out of storage implants onto the owner's turf upon removal." diff --git a/html/changelogs/AutoChangeLog-pr-8404.yml b/html/changelogs/AutoChangeLog-pr-8404.yml deleted file mode 100644 index c230977a44..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8404.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "WhiteHusky" -delete-after: True -changes: - - bugfix: "Flavor text with special characters will not get partially unescaped." - - bugfix: "Canceling when setting flavor text does not clear it anymore." diff --git a/html/changelogs/AutoChangeLog-pr-8407.yml b/html/changelogs/AutoChangeLog-pr-8407.yml deleted file mode 100644 index 5f1d9d0729..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8407.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "females now have female defined sprites" - - bugfix: "Slime legs have had their excess pixels adjusted" - - bugfix: "Mammal normal legs are more in line with human legs now" diff --git a/html/changelogs/AutoChangeLog-pr-8408.yml b/html/changelogs/AutoChangeLog-pr-8408.yml deleted file mode 100644 index 548e4947be..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8408.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes cult potentially stalling if the target is erased from existence without being sacced." diff --git a/html/changelogs/AutoChangeLog-pr-8409.yml b/html/changelogs/AutoChangeLog-pr-8409.yml deleted file mode 100644 index 01f69bf437..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8409.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "fixed species like abductors and golems getting the fat tiddy or pingas" diff --git a/html/changelogs/AutoChangeLog-pr-8411.yml b/html/changelogs/AutoChangeLog-pr-8411.yml deleted file mode 100644 index 4d4a122cf2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8411.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - balance: "2 -> 3" diff --git a/html/changelogs/AutoChangeLog-pr-8413.yml b/html/changelogs/AutoChangeLog-pr-8413.yml deleted file mode 100644 index 01de909a3b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8413.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Useroth" -delete-after: True -changes: - - bugfix: "The space hotel dorms are now properly boltable with the buttons inside." - - bugfix: "Makes the booze-o-mat hacked by default. Alternative to https://github.com/Citadel-Station-13/Citadel-Station-13/pull/8350." diff --git a/html/changelogs/AutoChangeLog-pr-8414.yml b/html/changelogs/AutoChangeLog-pr-8414.yml deleted file mode 100644 index eaec60b3a9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8414.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "MASON SUIT!" diff --git a/html/changelogs/AutoChangeLog-pr-8416.yml b/html/changelogs/AutoChangeLog-pr-8416.yml deleted file mode 100644 index 34bac362be..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8416.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "adds the sec jetpack to sec hardsuit storge" diff --git a/html/changelogs/AutoChangeLog-pr-8417.yml b/html/changelogs/AutoChangeLog-pr-8417.yml deleted file mode 100644 index 2a6eaa6237..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8417.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Added a few jet packs to the space queens men" - - tweak: "volume of jet packs" diff --git a/html/changelogs/AutoChangeLog-pr-8419.yml b/html/changelogs/AutoChangeLog-pr-8419.yml deleted file mode 100644 index 037dba41ad..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8419.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "UntoldTactics" -delete-after: True -changes: - - tweak: "Rewords the click here prompt given when an attempted conversion is done on an offer rune (for blood cult)" diff --git a/html/changelogs/AutoChangeLog-pr-8420.yml b/html/changelogs/AutoChangeLog-pr-8420.yml deleted file mode 100644 index 60c8543647..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8420.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Shield blobs no longer become completely invulnerable to all forms of damage after reaching a \"\"\"weakened\"\"\" state" - - tweak: "Taken care of what appeared to have been an oversight where shield blobs don't recover their armor after becoming weakened." diff --git a/html/changelogs/AutoChangeLog-pr-8424.yml b/html/changelogs/AutoChangeLog-pr-8424.yml deleted file mode 100644 index 12295e8a82..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8424.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Arturlang" -delete-after: True -changes: - - rscadd: "You can now use CTRL and ALT click on pumps and filters to toggle them on and off and max their output respectively" diff --git a/html/changelogs/AutoChangeLog-pr-8429.yml b/html/changelogs/AutoChangeLog-pr-8429.yml deleted file mode 100644 index 0769af85aa..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8429.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Nerfed concatenators by limiting the amount of characters they're able to output" diff --git a/html/changelogs/AutoChangeLog-pr-8430.yml b/html/changelogs/AutoChangeLog-pr-8430.yml deleted file mode 100644 index e59f61821a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8430.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Bad Idea" diff --git a/html/changelogs/AutoChangeLog-pr-8432.yml b/html/changelogs/AutoChangeLog-pr-8432.yml deleted file mode 100644 index e65bfd68d3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8432.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - balance: "Nukes the stunprod's 3 seconds delay." - - bugfix: "Fixes teleprods." diff --git a/html/changelogs/AutoChangeLog-pr-8434.yml b/html/changelogs/AutoChangeLog-pr-8434.yml deleted file mode 100644 index d01858d2b4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8434.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Stops pulls of resting mobs breaking off whenever you swap turfs with someone else because of crawling delays." diff --git a/html/changelogs/AutoChangeLog-pr-8435.yml b/html/changelogs/AutoChangeLog-pr-8435.yml deleted file mode 100644 index 3c2caeb994..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8435.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "fixes IAA." diff --git a/html/changelogs/AutoChangeLog-pr-8436.yml b/html/changelogs/AutoChangeLog-pr-8436.yml deleted file mode 100644 index 6d626bf357..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8436.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "bio mass meat" diff --git a/html/changelogs/AutoChangeLog-pr-8437.yml b/html/changelogs/AutoChangeLog-pr-8437.yml deleted file mode 100644 index 4257a801c9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8437.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "more box options" - - bugfix: "a lack of replaceable boxes" diff --git a/html/changelogs/AutoChangeLog-pr-8439.yml b/html/changelogs/AutoChangeLog-pr-8439.yml deleted file mode 100644 index 1e4bd2efae..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8439.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - balance: "EMPs now flick off stunbatons, they can be turned back on immediately by the user anyway." - - balance: "Stunbatons now very slowly consume charge whilst kept on, at a rate of 4/1000th of a standard batoning charge cost per tick." - - balance: "Softened up the charge cost checks to stop the above update from practically reducing the maximum uses of a stun baton by one. Now, should the remaining charge be lower than the hit cost, the resulting stun will be be proportional to the remaining charge divided by the hitcost, within a limit under which the stun batoning just won't happen." diff --git a/html/changelogs/AutoChangeLog-pr-8442.yml b/html/changelogs/AutoChangeLog-pr-8442.yml deleted file mode 100644 index e73c67c6dc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8442.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "clothing needing a emag" diff --git a/html/changelogs/AutoChangeLog-pr-8443.yml b/html/changelogs/AutoChangeLog-pr-8443.yml deleted file mode 100644 index 1b1f82977b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8443.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "The timer for stripping an item off of a spaceman is no longer interrupted by your active held item changing. This means you no longer have to worry about filling both of your hands when you're stripping items off of someone." diff --git a/html/changelogs/AutoChangeLog-pr-8448.yml b/html/changelogs/AutoChangeLog-pr-8448.yml deleted file mode 100644 index e670ffc0f4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8448.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "4 - > 5" diff --git a/html/changelogs/AutoChangeLog-pr-8449.yml b/html/changelogs/AutoChangeLog-pr-8449.yml deleted file mode 100644 index c2c397cdd0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8449.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "5->6" diff --git a/html/changelogs/AutoChangeLog-pr-8450.yml b/html/changelogs/AutoChangeLog-pr-8450.yml deleted file mode 100644 index 8afa74c68c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8450.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "4tc - > 2tc" diff --git a/html/changelogs/AutoChangeLog-pr-8452.yml b/html/changelogs/AutoChangeLog-pr-8452.yml deleted file mode 100644 index 2b4e430757..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8452.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "mulligan costs 4 - > 3" diff --git a/html/changelogs/AutoChangeLog-pr-8453.yml b/html/changelogs/AutoChangeLog-pr-8453.yml deleted file mode 100644 index cda1843779..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8453.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "Tuberculosis 12tc - > 8tc" diff --git a/html/changelogs/AutoChangeLog-pr-8454.yml b/html/changelogs/AutoChangeLog-pr-8454.yml deleted file mode 100644 index 4cc6d98df1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8454.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "15 - >10" - - bugfix: "both bags have the same name" diff --git a/html/changelogs/AutoChangeLog-pr-8455.yml b/html/changelogs/AutoChangeLog-pr-8455.yml deleted file mode 100644 index e7944f5869..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8455.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "5 - > 2" diff --git a/html/changelogs/AutoChangeLog-pr-8456.yml b/html/changelogs/AutoChangeLog-pr-8456.yml deleted file mode 100644 index 3ff35b1c09..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8456.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "3 -> 1" diff --git a/html/changelogs/AutoChangeLog-pr-8459.yml b/html/changelogs/AutoChangeLog-pr-8459.yml deleted file mode 100644 index ebce2f0db1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8459.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "2 < - 4" diff --git a/html/changelogs/AutoChangeLog-pr-8460.yml b/html/changelogs/AutoChangeLog-pr-8460.yml deleted file mode 100644 index 39af97ef12..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8460.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "1->2 and ultra" diff --git a/html/changelogs/AutoChangeLog-pr-8463.yml b/html/changelogs/AutoChangeLog-pr-8463.yml deleted file mode 100644 index a6c8d05522..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8463.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "shield + crafting" diff --git a/html/changelogs/AutoChangeLog-pr-8465.yml b/html/changelogs/AutoChangeLog-pr-8465.yml deleted file mode 100644 index 91556b4afc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8465.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Useroth" -delete-after: True -changes: - - bugfix: "After the PR which raised the ammo capacity of said magazines, due to the code, they ended up with an invalid icon state. Fixed through changing the icon state name in the icon file." diff --git a/html/changelogs/AutoChangeLog-pr-8466.yml b/html/changelogs/AutoChangeLog-pr-8466.yml deleted file mode 100644 index a3cffc8f59..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8466.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "Atmos and Station alerts should be more alerting." diff --git a/html/changelogs/AutoChangeLog-pr-8470.yml b/html/changelogs/AutoChangeLog-pr-8470.yml deleted file mode 100644 index 39399c0724..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8470.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - balance: "Buffs condensed capsaicin, a yet another feature previously dunked by stam combat." - - balance: "speeds up pepper spray puffs." diff --git a/html/changelogs/AutoChangeLog-pr-8473.yml b/html/changelogs/AutoChangeLog-pr-8473.yml deleted file mode 100644 index a4743c9a39..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8473.yml +++ /dev/null @@ -1,10 +0,0 @@ -author: "Useroth" -delete-after: True -changes: - - rscadd: "Taeclowndo shoes which grant the four following abilities: -- Conjuring a cream pie right into their hand. Every three seconds. -- Making a banana peel appear out of thin air at the tile of the clown's choice. Every ten seconds. -- Mega HoNk. A touch-ranged, very small AOE ability, with effect equal to being honked by a Honkerblast on a clown mech, with the effects halved for anyone who isn't its direct target. Every ten seconds. -- Bluespace Banana Pie. You don't throw this one... not right away at least. This baby can fit an entire body inside. Good for disposal of evidence. 25 second-long action, 45 second cooldown. Also produces a \"[victim's name] cream pie\". The body drops out of the pie if you splat it somewhere or destroy the pie. If you eat it, it will chestburst out of you a'la monkey cube. - -It's a 14 TC item for traitor clowns and a 12 TC item for clown-ops." diff --git a/html/changelogs/AutoChangeLog-pr-8476.yml b/html/changelogs/AutoChangeLog-pr-8476.yml deleted file mode 100644 index 551a443f94..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8476.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "hierophant movment and melee attack" diff --git a/html/changelogs/AutoChangeLog-pr-8477.yml b/html/changelogs/AutoChangeLog-pr-8477.yml deleted file mode 100644 index f5478ed178..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8477.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Ported the zulie cloak and blackredgold coat donor items from RP." diff --git a/html/changelogs/AutoChangeLog-pr-8479.yml b/html/changelogs/AutoChangeLog-pr-8479.yml deleted file mode 100644 index b6c8340527..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8479.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - balance: "Buffed krav maga leg sweep stun and stamina damage. On the other hand, it's now unable to be used on already lying targets." diff --git a/html/changelogs/AutoChangeLog-pr-8482.yml b/html/changelogs/AutoChangeLog-pr-8482.yml deleted file mode 100644 index 095f93a7a3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8482.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "fixes eyestabbing people with cutlery while being a pacifist." diff --git a/html/changelogs/AutoChangeLog-pr-8483.yml b/html/changelogs/AutoChangeLog-pr-8483.yml deleted file mode 100644 index 2e3b35ca92..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8483.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by mrhugo13 on tgstation13)" -delete-after: True -changes: - - rscadd: "The Syndicate has decided to equip their Syndicate leaders operative (Aswell as their clown counterparts) with the new Combat Glove Plus! The new Combat Glove Plus does everything the old boring Combat Gloves does but with the added extra of learning Krav Maga upon wearing them, any other Syndicate operative who wants to get in on the action will have to pay 5tc." diff --git a/html/changelogs/AutoChangeLog-pr-8485.yml b/html/changelogs/AutoChangeLog-pr-8485.yml deleted file mode 100644 index abc79f1f30..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8485.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "More plushies" - - tweak: "attack verbs and descs" diff --git a/html/changelogs/AutoChangeLog-pr-8489.yml b/html/changelogs/AutoChangeLog-pr-8489.yml deleted file mode 100644 index 5e90c56d67..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8489.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Coolgat3" -delete-after: True -changes: - - rscadd: "Added combat gloves sprite" - - imageadd: "Added said sprite" diff --git a/html/changelogs/AutoChangeLog-pr-8491.yml b/html/changelogs/AutoChangeLog-pr-8491.yml deleted file mode 100644 index 0e82e809f7..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8491.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Reduces goonchat lag from being blasted by pellets and bullets repeatedly whilst wearing armor by properly removing the armor protection texts this times." - - spellcheck: "also reduced the size of armor protection messages in general. they clog up the chat box." diff --git a/html/changelogs/AutoChangeLog-pr-8494.yml b/html/changelogs/AutoChangeLog-pr-8494.yml deleted file mode 100644 index 2e4d7ac65e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8494.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "bone satchles" diff --git a/html/changelogs/AutoChangeLog-pr-8495.yml b/html/changelogs/AutoChangeLog-pr-8495.yml deleted file mode 100644 index 92777ef8b0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8495.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - tweak: "\"Unwillingly\" eating food now sends a warning message instead of a notice. Unable to stuff food down your throat sends a danger message instead of a warning message." diff --git a/html/changelogs/AutoChangeLog-pr-8497.yml b/html/changelogs/AutoChangeLog-pr-8497.yml deleted file mode 100644 index 4c42899313..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8497.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - rscadd: "Adds clockwork reflectors, a fragile anti-laser reflection shield object that can be constructed for 10 brass sheets. Upon firing on the object in the direction where it is shielded, it ricochets the bullet off of it relative to the shooting angle." - - tweak: "Renames some windows in the build menu for consistency." diff --git a/html/changelogs/AutoChangeLog-pr-8500.yml b/html/changelogs/AutoChangeLog-pr-8500.yml deleted file mode 100644 index 09bfbd9748..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8500.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - balance: "rebalanced stunslugs" diff --git a/html/changelogs/AutoChangeLog-pr-8501.yml b/html/changelogs/AutoChangeLog-pr-8501.yml deleted file mode 100644 index fba27c4d52..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8501.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "colored boxes, and more types" diff --git a/html/changelogs/AutoChangeLog-pr-8503.yml b/html/changelogs/AutoChangeLog-pr-8503.yml deleted file mode 100644 index f6c4a7dc75..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8503.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "harm and such" - - balance: "item classes" diff --git a/html/changelogs/AutoChangeLog-pr-8504.yml b/html/changelogs/AutoChangeLog-pr-8504.yml deleted file mode 100644 index 4e80d02845..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8504.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "resonators being so shitty" diff --git a/html/changelogs/AutoChangeLog-pr-8505.yml b/html/changelogs/AutoChangeLog-pr-8505.yml deleted file mode 100644 index 57d6399680..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8505.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - balance: "Clockwork Cult walls can no longer be deconstructed by RCDs when heated." diff --git a/html/changelogs/AutoChangeLog-pr-8506.yml b/html/changelogs/AutoChangeLog-pr-8506.yml deleted file mode 100644 index 6711217fb5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8506.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "CalamaBanana" -delete-after: True -changes: - - rscadd: "Added Deer taur" - - rscadd: "Added Elf ears to mammals" diff --git a/html/changelogs/AutoChangeLog-pr-8514.yml b/html/changelogs/AutoChangeLog-pr-8514.yml deleted file mode 100644 index f1d01a97e4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8514.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - rscadd: "Adds several new toy loot to the arcade machine." - - balance: "Rebalanced the arcade machine loot. Battlemachines now have a 0.5 second delay instead of a second delay between actions." - - bugfix: "Fixed a bug that would not allow the one in a million pulse rifle to spawn." diff --git a/html/changelogs/AutoChangeLog-pr-8515.yml b/html/changelogs/AutoChangeLog-pr-8515.yml deleted file mode 100644 index 99e414f5e1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8515.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes stunbatons icon not properly updating on cell removal and insertion." - - tweak: "Allows lower charge cells to be used with stun batons, and thus single use crapshots batons." diff --git a/html/changelogs/AutoChangeLog-pr-8516.yml b/html/changelogs/AutoChangeLog-pr-8516.yml deleted file mode 100644 index f7419f1add..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8516.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - balance: "Adds in a 7 seconds delay to the jackhammer dismantling a superheated clockwork wall." diff --git a/html/changelogs/AutoChangeLog-pr-8517.yml b/html/changelogs/AutoChangeLog-pr-8517.yml deleted file mode 100644 index 5e14c1c696..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8517.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Added visible and hidden testicles" - - rscadd: "Added multi-boob support. Now you can have two or three pairs of breasts." - - bugfix: "fixed missing vagina and breast sprites" diff --git a/html/changelogs/AutoChangeLog-pr-8518.yml b/html/changelogs/AutoChangeLog-pr-8518.yml deleted file mode 100644 index cbc34893b6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8518.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - tweak: "escape pods emergency suits storage can now be busted open by emags or excessive damage." - - bugfix: "Fixes alt click bypassing the escape pods' suits storage lock." diff --git a/html/changelogs/AutoChangeLog-pr-8522.yml b/html/changelogs/AutoChangeLog-pr-8522.yml deleted file mode 100644 index eb646034fd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8522.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Useroth" -delete-after: True -changes: - - tweak: "The tentacle now directly puts the item in your hands, instead of toggling your throwing and tossing it at you. Tentacles suffer from ranged inaccuracies as if they were guns, I think it's enough of an inconvenience." diff --git a/html/changelogs/AutoChangeLog-pr-8524.yml b/html/changelogs/AutoChangeLog-pr-8524.yml deleted file mode 100644 index 66a7b6d456..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8524.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - rscadd: "Adds a new trait \"Buns of Steel\" that makes you immune to the effects of ass slapping, and temporarily makes the user's arm useless like a stun baton hit. It costs 0 points." diff --git a/html/changelogs/AutoChangeLog-pr-8525.yml b/html/changelogs/AutoChangeLog-pr-8525.yml deleted file mode 100644 index ef26cf1a4b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8525.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "Game braking bug -critical: bug fix" diff --git a/html/changelogs/AutoChangeLog-pr-8528.yml b/html/changelogs/AutoChangeLog-pr-8528.yml deleted file mode 100644 index 0dece1e63d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8528.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "fixed prosthetic hands being invisible" - - bugfix: "male foxes exist again" - - bugfix: "female chest markings improved from being too dark in comparison to their other colors, blending better" - - bugfix: "Markings behave better on non-organic limbs." diff --git a/html/changelogs/AutoChangeLog-pr-8534.yml b/html/changelogs/AutoChangeLog-pr-8534.yml deleted file mode 100644 index 5c76fbdf36..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8534.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "dtfe3" -delete-after: True -changes: - - rscadd: "Pink Panties" diff --git a/html/changelogs/AutoChangeLog-pr-8537.yml b/html/changelogs/AutoChangeLog-pr-8537.yml deleted file mode 100644 index a537ba1c3a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8537.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes emags wasting charges on un-emaggable & co stuff." diff --git a/html/changelogs/AutoChangeLog-pr-8538.yml b/html/changelogs/AutoChangeLog-pr-8538.yml deleted file mode 100644 index 7349a31683..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8538.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "dtfe3" -delete-after: True -changes: - - rscadd: "Twintails" diff --git a/html/changelogs/AutoChangeLog-pr-8540.yml b/html/changelogs/AutoChangeLog-pr-8540.yml deleted file mode 100644 index 895b80bfa6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8540.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - balance: "Ass slapping blowback from the Buns of Steel perk now deals 20 stamina damage instead of 50, and no brute damage." diff --git a/html/changelogs/AutoChangeLog-pr-8541.yml b/html/changelogs/AutoChangeLog-pr-8541.yml deleted file mode 100644 index 82e76fe74b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8541.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "items to syndie surgery bags" diff --git a/html/changelogs/AutoChangeLog-pr-8543.yml b/html/changelogs/AutoChangeLog-pr-8543.yml deleted file mode 100644 index 1e1ce8922b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8543.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "SNOW CONES" diff --git a/html/changelogs/AutoChangeLog-pr-8544.yml b/html/changelogs/AutoChangeLog-pr-8544.yml deleted file mode 100644 index 1641eed42e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8544.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "carts buy-able cargo" diff --git a/html/changelogs/AutoChangeLog-pr-8547.yml b/html/changelogs/AutoChangeLog-pr-8547.yml deleted file mode 100644 index 51c2252138..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8547.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie (original PRs by Naksu and XDTM)" -delete-after: True -changes: - - bugfix: "Transferring quirks now properly removes the roundstart trait from the person losing the quirk." - - bugfix: "Roundstart traits no longer block the removal of other sources of that trait." - - code_imp: "status traits are now a datum var, the accessors are now defines rather than functions." diff --git a/html/changelogs/AutoChangeLog-pr-8548.yml b/html/changelogs/AutoChangeLog-pr-8548.yml deleted file mode 100644 index cd49f38686..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8548.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "dtfe3" -delete-after: True -changes: - - rscadd: "Schoolgirl outfits for the loadout menu!" diff --git a/html/changelogs/AutoChangeLog-pr-8549.yml b/html/changelogs/AutoChangeLog-pr-8549.yml deleted file mode 100644 index 32b99d1d49..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8549.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "selling/time to craft" - - bugfix: "crafting problems, and red stamp exsplote" - - rscadd: "gives paper work sprites that are nicer" diff --git a/html/changelogs/AutoChangeLog-pr-8551.yml b/html/changelogs/AutoChangeLog-pr-8551.yml deleted file mode 100644 index 738b410e26..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8551.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "tigercat2000@Paradise" -delete-after: True -changes: - - bugfix: "fixed invalid characters breaking chat output for that message" diff --git a/html/changelogs/AutoChangeLog-pr-8552.yml b/html/changelogs/AutoChangeLog-pr-8552.yml deleted file mode 100644 index 2b63c79756..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8552.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (Original PR by LaKiller8)" -delete-after: True -changes: - - bugfix: "Goonchat options should now save properly." diff --git a/html/changelogs/AutoChangeLog-pr-8553.yml b/html/changelogs/AutoChangeLog-pr-8553.yml deleted file mode 100644 index e89e04537b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8553.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - tweak: "tweaked the name of Sublter to distinguish its use" - - tweak: "Gave a hint for vore posting." diff --git a/html/changelogs/AutoChangeLog-pr-8554.yml b/html/changelogs/AutoChangeLog-pr-8554.yml deleted file mode 100644 index 8bf00955b5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8554.yml +++ /dev/null @@ -1,10 +0,0 @@ -author: "Ghommie (original PRs by Nichlas0010 and ShizCalev)" -delete-after: True -changes: - - tweak: "AI core display screen can now be set in character preferences." - - bugfix: "AI core display screen will now be restore when revived." - - spellcheck: "Corrected some inconsistent capitalization in the player preferences screen." - - imageadd: "Readded some forgotten AI sprites." - - bugfix: "Fixed Hades AI death animation not playing." - - tweak: "the AI icon-selection menu now uses a radial." - - imageadd: "Added in the death icon_states for the \"TechDemon\" AI screen." diff --git a/html/changelogs/AutoChangeLog-pr-8555.yml b/html/changelogs/AutoChangeLog-pr-8555.yml deleted file mode 100644 index bb2c116dfa..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8555.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - code_imp: "Ported some radials code updates." - - rscadd: "Ported the RCL wiring menu and a comfier RCD interface." diff --git a/html/changelogs/AutoChangeLog-pr-8556.yml b/html/changelogs/AutoChangeLog-pr-8556.yml deleted file mode 100644 index e84af4f774..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8556.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Readded Ninja speech modifications with their mask" diff --git a/html/changelogs/AutoChangeLog-pr-8557.yml b/html/changelogs/AutoChangeLog-pr-8557.yml deleted file mode 100644 index 601f70f2cb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8557.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original pr by Dennok on tgstation)" -delete-after: True -changes: - - bugfix: "Now you don't lose your pulled thing on the z level edge." diff --git a/html/changelogs/AutoChangeLog-pr-8558.yml b/html/changelogs/AutoChangeLog-pr-8558.yml deleted file mode 100644 index 6bb951f8a2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8558.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (Original PR by coiax)" -delete-after: True -changes: - - refactor: "atom/var/container_type has been moved into datum/reagents/var/reagents_holder_flags. There should be no visible changes to effects." diff --git a/html/changelogs/AutoChangeLog-pr-8559.yml b/html/changelogs/AutoChangeLog-pr-8559.yml deleted file mode 100644 index aee1727348..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8559.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by Naksu)" -delete-after: True -changes: - - code_imp: "get_area() is now a define rather than a proc." diff --git a/html/changelogs/AutoChangeLog-pr-8560.yml b/html/changelogs/AutoChangeLog-pr-8560.yml deleted file mode 100644 index aa1be89e09..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8560.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie (original PR by 4dplanner)" -delete-after: True -changes: - - bugfix: "thrown objects (but not mobs) no longer hit the thrower" - - bugfix: "mirror shield rebound no longer depends on the original thrower's momentum" diff --git a/html/changelogs/AutoChangeLog-pr-8561.yml b/html/changelogs/AutoChangeLog-pr-8561.yml deleted file mode 100644 index dca2bff2ff..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8561.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (Original PR by JJRcop)" -delete-after: True -changes: - - rscadd: "Ports in more emojis, including : flushed :" diff --git a/html/changelogs/AutoChangeLog-pr-8562.yml b/html/changelogs/AutoChangeLog-pr-8562.yml deleted file mode 100644 index a93babfdae..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8562.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "AnalWerewolf" -delete-after: True -changes: - - rscadd: "Fritz plushie" - - rscadd: "Donor item" diff --git a/html/changelogs/AutoChangeLog-pr-8565.yml b/html/changelogs/AutoChangeLog-pr-8565.yml deleted file mode 100644 index 91faa4d8b6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8565.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Skully)" -delete-after: True -changes: - - rscadd: "Nudity Permit, a completely invisible uniform that still has pockets and such, to loadout options. It is more or less a direct port from the RP server." diff --git a/html/changelogs/AutoChangeLog-pr-8566.yml b/html/changelogs/AutoChangeLog-pr-8566.yml deleted file mode 100644 index 085b74e87a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8566.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - tweak: "A milder combat stance message will show up if the user switch combat mode on while on help intent." diff --git a/html/changelogs/AutoChangeLog-pr-8567.yml b/html/changelogs/AutoChangeLog-pr-8567.yml deleted file mode 100644 index 3814607aaa..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8567.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Arturlang" -delete-after: True -changes: - - rscadd: "You can now use RPDs on windows and grilles." diff --git a/html/changelogs/AutoChangeLog-pr-8569.yml b/html/changelogs/AutoChangeLog-pr-8569.yml deleted file mode 100644 index 9a51ab1099..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8569.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "dtfe3" -delete-after: True -changes: - - tweak: "Now the fox ears are located in front of hair meaning they now behave much like cat ears, that being they are on-top of the hair layer." diff --git a/html/changelogs/AutoChangeLog-pr-8570.yml b/html/changelogs/AutoChangeLog-pr-8570.yml deleted file mode 100644 index 787b486685..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8570.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "origami" diff --git a/html/changelogs/AutoChangeLog-pr-8578.yml b/html/changelogs/AutoChangeLog-pr-8578.yml deleted file mode 100644 index 39ded33f2d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8578.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - spellcheck: "Properly rewords the extinguisher's instructions on how to empty it on the floor since it was changed to be a screwdriver action instead of Alt Click a while ago." diff --git a/html/changelogs/AutoChangeLog-pr-8579.yml b/html/changelogs/AutoChangeLog-pr-8579.yml deleted file mode 100644 index 56ecea119f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8579.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "gang tower shield" - - tweak: "costs of boots" diff --git a/html/changelogs/AutoChangeLog-pr-8581.yml b/html/changelogs/AutoChangeLog-pr-8581.yml deleted file mode 100644 index 90433ecb88..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8581.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "Reskinnable PDAs. A related game preference." - - refactor: "Refactoring the pda, pda painter, obj reskinning and chameleon pda a bit to support this feature." - - imageadd: "more PDA sprites and ported reskins." diff --git a/html/changelogs/AutoChangeLog-pr-8584.yml b/html/changelogs/AutoChangeLog-pr-8584.yml deleted file mode 100644 index 2621812d64..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8584.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "organ box" diff --git a/html/changelogs/AutoChangeLog-pr-8587.yml b/html/changelogs/AutoChangeLog-pr-8587.yml deleted file mode 100644 index 4b7fdeb64c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8587.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkullyRoberts" -delete-after: True -changes: - - rscadd: "Penis autosurgeon as rare maint loot." diff --git a/html/changelogs/AutoChangeLog-pr-8591.yml b/html/changelogs/AutoChangeLog-pr-8591.yml deleted file mode 100644 index 09eb449899..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8591.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (Original PR by Vile Beggar)" -delete-after: True -changes: - - rscadd: "Warden now has an added drill hat in his locker. You can change the loudness setting of it by using a screwdriver on it. Use wirecutters on it for a surprise." diff --git a/html/changelogs/AutoChangeLog-pr-8599.yml b/html/changelogs/AutoChangeLog-pr-8599.yml deleted file mode 100644 index 41134f4d5b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8599.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Pacifists can eat people for heal belly or noisy. Digestive modes are auto-swapped to noisy" diff --git a/html/changelogs/AutoChangeLog-pr-8602.yml b/html/changelogs/AutoChangeLog-pr-8602.yml deleted file mode 100644 index 4974c1ae79..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8602.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Added an underwear toggle button under 'Object' tab" - - tweak: "Genitals now layer under underwear. Hide these if they're too obnoxious." diff --git a/html/changelogs/AutoChangeLog-pr-8605.yml b/html/changelogs/AutoChangeLog-pr-8605.yml deleted file mode 100644 index c6a601f1ca..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8605.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Medical breifcaseses" diff --git a/html/changelogs/AutoChangeLog-pr-8611.yml b/html/changelogs/AutoChangeLog-pr-8611.yml deleted file mode 100644 index 8176d10a84..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8611.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Added digitigrade socks of all known ones anyway." diff --git a/html/changelogs/AutoChangeLog-pr-8614.yml b/html/changelogs/AutoChangeLog-pr-8614.yml deleted file mode 100644 index e9473181fb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8614.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by SpaceManiac)" -delete-after: True -changes: - - bugfix: "Disassembling a chem dispenser for the first time will no longer always yield a fully-charged cell." diff --git a/html/changelogs/AutoChangeLog-pr-8615.yml b/html/changelogs/AutoChangeLog-pr-8615.yml deleted file mode 100644 index 878b7957b9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8615.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - refactor: "turned virtual reality into a component datum, which is then applied to spawned virtual mobs. -This fixes mob transformations (such as wabbajack and monkeyizing) breaking the previously hardcoded behaviour and trapping you in VR, also enabling a more concrete virtual reality inception experience." diff --git a/html/changelogs/AutoChangeLog-pr-8618.yml b/html/changelogs/AutoChangeLog-pr-8618.yml deleted file mode 100644 index 77ba2439a1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8618.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "New cargo crate for tech-slugs!" - - rscadd: "Ammo to each fitting crate" - - bugfix: "Cat-code" - - spellcheck: "fixed a few typos - Again my bad" diff --git a/html/changelogs/AutoChangeLog-pr-8623.yml b/html/changelogs/AutoChangeLog-pr-8623.yml deleted file mode 100644 index 63f51b18eb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8623.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Arturlang" -delete-after: True -changes: - - rscadd: "The RD can now suplex a immovable rod. Good fucking luck." diff --git a/html/changelogs/AutoChangeLog-pr-8624.yml b/html/changelogs/AutoChangeLog-pr-8624.yml deleted file mode 100644 index 598ed9b457..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8624.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Arturlang" -delete-after: True -changes: - - bugfix: "Fixes high alert ERT suit sprites. You can see them now!" diff --git a/html/changelogs/AutoChangeLog-pr-8632.yml b/html/changelogs/AutoChangeLog-pr-8632.yml deleted file mode 100644 index b2f74869c2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8632.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Arturlang" -delete-after: True -changes: - - rscadd: "Traitor codewords are now highlighted for traitors." diff --git a/html/changelogs/AutoChangeLog-pr-8633.yml b/html/changelogs/AutoChangeLog-pr-8633.yml deleted file mode 100644 index 3cbc9a78aa..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8633.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Arturlang" -delete-after: True -changes: - - rscadd: "You can now examine pumps filters and mixers to see if you can use CTRL and Alt click on them." diff --git a/html/changelogs/AutoChangeLog-pr-8634.yml b/html/changelogs/AutoChangeLog-pr-8634.yml deleted file mode 100644 index d351579640..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8634.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes power cells being unable to be rigged. Also prevents them from starting processing on init if they don't self recharge." - - bugfix: "Fixes many, little or otherwise, issues with the stunbaton status refactor." diff --git a/html/changelogs/AutoChangeLog-pr-8636.yml b/html/changelogs/AutoChangeLog-pr-8636.yml deleted file mode 100644 index 3b291661b5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8636.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "fixed airless place" diff --git a/html/changelogs/AutoChangeLog-pr-8639.yml b/html/changelogs/AutoChangeLog-pr-8639.yml deleted file mode 100644 index f2f24d33ad..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8639.yml +++ /dev/null @@ -1,10 +0,0 @@ -author: "Useroth" -delete-after: True -changes: - - tweak: "Makes the netting much less clunky. If there's only one target you can net while you press the -button, it will just net that target instead of bringing up a list of mobs." - - tweak: "Energy nets now revive and fully heal capturees (even dead ones, after calculating points). If someone's got a scan and wants to get cloned, they can always kill themselves still." - - tweak: "Capture points are added on capture, rather than round-end, so it no longer matters whether your captures kill themselves in the holding facility or not." - - balance: "Makes the nets a bit more sturdy. (previously it took mere two welder hits to break one)" - - balance: "Makes stungloves actually stun people (currently comparably with stunbatons, adjustable). Because electrocute_act(25, H) did fuck all, stunwise, and on top of that, people in insulated gloves were completely unaffected." - - balance: "Reduced the stunglove electrocute_act value to 15 due to above. Could possibly be lowered further." diff --git a/html/changelogs/AutoChangeLog-pr-8640.yml b/html/changelogs/AutoChangeLog-pr-8640.yml deleted file mode 100644 index b06feb4613..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8640.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "baklava" diff --git a/html/changelogs/AutoChangeLog-pr-8643.yml b/html/changelogs/AutoChangeLog-pr-8643.yml deleted file mode 100644 index b172071e2e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8643.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "The sacrificial target icon will now display onto the cult objective ui alert once again." diff --git a/html/changelogs/AutoChangeLog-pr-8645.yml b/html/changelogs/AutoChangeLog-pr-8645.yml deleted file mode 100644 index c299dcbbb5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8645.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Stopping borgs from sprinting into negative cell charge." diff --git a/html/changelogs/AutoChangeLog-pr-8648.yml b/html/changelogs/AutoChangeLog-pr-8648.yml deleted file mode 100644 index 8d0f9d20c8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8648.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - balance: "makes uplink kits more usefull for the risk" diff --git a/html/changelogs/AutoChangeLog-pr-8649.yml b/html/changelogs/AutoChangeLog-pr-8649.yml deleted file mode 100644 index c8f61cc24e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8649.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - tweak: "The default amount of z-levels reserved specifically for space ruin generation has been increased from 1 to 2" diff --git a/html/changelogs/AutoChangeLog-pr-8652.yml b/html/changelogs/AutoChangeLog-pr-8652.yml deleted file mode 100644 index b788c5785c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8652.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (Original PR by Dennok)" -delete-after: True -changes: - - bugfix: "Now areas_in_z get areas spawned by templates and blueprints." diff --git a/html/changelogs/AutoChangeLog-pr-8654.yml b/html/changelogs/AutoChangeLog-pr-8654.yml deleted file mode 100644 index 336e55134d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8654.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie (Original PR by Dreamweaver)" -delete-after: True -changes: - - rscadd: "Nanotrasen has received word of a high-tech research facility that may contain advancements in bluespace-based research. Any crew members who become aware of its whereabouts are to report it to CentCom immediately and are restricted from sharing said info." - - refactor: "The turf reservation system now dynamically creates new z levels if the current reserved levels are full." diff --git a/html/changelogs/AutoChangeLog-pr-8658.yml b/html/changelogs/AutoChangeLog-pr-8658.yml deleted file mode 100644 index ad35118c3f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8658.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - tweak: "Moving some tablecrafting recipes to the appropriate categories: Kitty ears and lizard cloche hats to \"clothing\"; Hot dogs to \"Sandwichs\"; Cuban carb, fish and chips and fish fingers to \"Fish\"." - - bugfix: "Fixes the not-a-sandwich recipe being M.I.A." diff --git a/html/changelogs/AutoChangeLog-pr-8659.yml b/html/changelogs/AutoChangeLog-pr-8659.yml deleted file mode 100644 index 6287f1307f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8659.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by ninjanomnom)" -delete-after: True -changes: - - bugfix: "Orbiting is a little more aggressive about staying in orbit. The wisp as a result now correctly follows you over shuttle moves." diff --git a/html/changelogs/AutoChangeLog-pr-8660.yml b/html/changelogs/AutoChangeLog-pr-8660.yml deleted file mode 100644 index 710c4489ea..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8660.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - code_imp: "Changes some files to be better" diff --git a/html/changelogs/AutoChangeLog-pr-8663.yml b/html/changelogs/AutoChangeLog-pr-8663.yml deleted file mode 100644 index 3f5aeacd3c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8663.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "Adding in peanuts, peanut butter, peanut butter toasts and sandwiches, and the PB&J sandwich. -The peanuts contain a little bit of extractable cooking oil (similarly to soy beans) and can be microwaved or dried in a drying rack to make roasted peanuts, which can be mixed in a all-in-one-grinder for peanut butter, required to make those sandwiches." diff --git a/html/changelogs/AutoChangeLog-pr-8665.yml b/html/changelogs/AutoChangeLog-pr-8665.yml deleted file mode 100644 index fc34f9ac3e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8665.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - balance: "Buffed wizard and artificier's Magic Missile, wizard and xeno queen's Repulse and juggernaut's Gauntlet Echo." diff --git a/html/changelogs/AutoChangeLog-pr-8666.yml b/html/changelogs/AutoChangeLog-pr-8666.yml deleted file mode 100644 index df2e2e3af0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8666.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by YPOQ)" -delete-after: True -changes: - - bugfix: "Fixing roffle waffle, mushroom halluginogen and some invalid reagents." diff --git a/html/changelogs/AutoChangeLog-pr-8667.yml b/html/changelogs/AutoChangeLog-pr-8667.yml deleted file mode 100644 index 1f80a2917d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8667.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by Anturk)" -delete-after: True -changes: - - rscadd: "Recipe for fabled secret sauce can now be found in the deepest reaches of space." diff --git a/html/changelogs/AutoChangeLog-pr-8669.yml b/html/changelogs/AutoChangeLog-pr-8669.yml deleted file mode 100644 index 20770e8cc2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8669.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie (original PRs by Denton and Skoglol)" -delete-after: True -changes: - - tweak: "Reorganized the syndicate uplinks. Items are now mostly alphabetical, some misplaced items moved to more fitting categories. Bundles, random item and TC have been moved into a new category called \"Bundles and Telecrystals\". Gloves of the North Star and Box of Throwing Weapons have been moved to Conspicuous and Dangerous Weapons. Combat Gloves Plus have been moved to Stealthy and Inconspicuous Weapons. Moved all implants into the Implants category." - - tweak: "Added a new category to the uplink: Grenades and Explosives." diff --git a/html/changelogs/AutoChangeLog-pr-8671.yml b/html/changelogs/AutoChangeLog-pr-8671.yml deleted file mode 100644 index bb01481d5c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8671.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by wesoda25)" -delete-after: True -changes: - - balance: "disembowelment no longer works on mobs that aren't dead or in critical condition" diff --git a/html/changelogs/AutoChangeLog-pr-8673.yml b/html/changelogs/AutoChangeLog-pr-8673.yml deleted file mode 100644 index 6ff2c7135c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8673.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - balance: "As all things are not" diff --git a/html/changelogs/AutoChangeLog-pr-8674.yml b/html/changelogs/AutoChangeLog-pr-8674.yml deleted file mode 100644 index 3277946844..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8674.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "fixing cat code that dosnt work, my bad" diff --git a/html/changelogs/AutoChangeLog-pr-8675.yml b/html/changelogs/AutoChangeLog-pr-8675.yml deleted file mode 100644 index 170a44ca25..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8675.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "Arcades stealing from noodles" diff --git a/html/changelogs/AutoChangeLog-pr-8676.yml b/html/changelogs/AutoChangeLog-pr-8676.yml deleted file mode 100644 index e82a965985..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8676.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "rapier" diff --git a/html/changelogs/AutoChangeLog-pr-8677.yml b/html/changelogs/AutoChangeLog-pr-8677.yml deleted file mode 100644 index 181f6d2932..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8677.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "speedy quirk" diff --git a/html/changelogs/AutoChangeLog-pr-8681.yml b/html/changelogs/AutoChangeLog-pr-8681.yml deleted file mode 100644 index 1cd5f04124..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8681.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie (Original PRs by Tortellini Tony and BuffEngineering)" -delete-after: True -changes: - - bugfix: "E-cigs will continue to display their setting after being emagged." - - bugfix: "Vapes now come out of the mouth. -fix Fixes an E-cig initialize() runtime." diff --git a/html/changelogs/AutoChangeLog-pr-8687.yml b/html/changelogs/AutoChangeLog-pr-8687.yml deleted file mode 100644 index 65347093ef..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8687.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by monster860)" -delete-after: True -changes: - - bugfix: "fixes advanced proccall" diff --git a/html/changelogs/AutoChangeLog-pr-8688.yml b/html/changelogs/AutoChangeLog-pr-8688.yml deleted file mode 100644 index b22c2c52fd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8688.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie (Original PR by nemvar)" -delete-after: True -changes: - - rscadd: "Botanists can now get beeplushies (or cultivator and bucket) as an heirloom." - - bugfix: "Clowns and mimes will now properly pick either a can of paint or their brand as heirloom now." diff --git a/html/changelogs/AutoChangeLog-pr-8689.yml b/html/changelogs/AutoChangeLog-pr-8689.yml deleted file mode 100644 index bf44770c76..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8689.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - rscadd: "Added a panda simplemob" diff --git a/html/changelogs/AutoChangeLog-pr-8690.yml b/html/changelogs/AutoChangeLog-pr-8690.yml deleted file mode 100644 index 3ac76333a2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8690.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - bugfix: "fixes empathy exploit." diff --git a/html/changelogs/AutoChangeLog-pr-8691.yml b/html/changelogs/AutoChangeLog-pr-8691.yml deleted file mode 100644 index 680904cc5c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8691.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (Original PRs by nemvar and Rowell)" -delete-after: True -changes: - - rscadd: "Added beekini bras and panties, thigh-high and knee-high bee socks." diff --git a/html/changelogs/AutoChangeLog-pr-8692.yml b/html/changelogs/AutoChangeLog-pr-8692.yml deleted file mode 100644 index f1d87676ab..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8692.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Ghommie (original PRs by ShizCalev)" -delete-after: True -changes: - - bugfix: "Fixed a bug that allowed you to teleport an ID in your possession to a PDA anywhere ingame." - - bugfix: "Fixed an exploit allowing you to steal ID's/pens from PDA's not in your possession." - - bugfix: "Fixed an exploit allowing you unlimited control of a PDA's interface even if it wasn't near you/in your possession." - - bugfix: "Fixed Pride Mirror exploits." diff --git a/html/changelogs/AutoChangeLog-pr-8693.yml b/html/changelogs/AutoChangeLog-pr-8693.yml deleted file mode 100644 index 1e5e3fda58..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8693.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by Tlaltecuhtli)" -delete-after: True -changes: - - bugfix: "Other people's clothes burning no longer spam you" diff --git a/html/changelogs/AutoChangeLog-pr-8695.yml b/html/changelogs/AutoChangeLog-pr-8695.yml deleted file mode 100644 index 671eaa519e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8695.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie (original PRs by grandpawalton and Mickyan)" -delete-after: True -changes: - - tweak: "the contents on the smartfridge icon now change depending on how many items it contains" - - bugfix: "opening the maintenance panel of smartfridges now correctly updates the icon" - - bugfix: "Screwing a disk compartmentalizer no longer makes it look like a smartfridge." diff --git a/html/changelogs/AutoChangeLog-pr-8698.yml b/html/changelogs/AutoChangeLog-pr-8698.yml deleted file mode 100644 index 464f74427e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8698.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes flashlights being unable to be used for rudimentary eyes and mouth exams." diff --git a/html/changelogs/AutoChangeLog-pr-8708.yml b/html/changelogs/AutoChangeLog-pr-8708.yml deleted file mode 100644 index 0929c2ee6c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8708.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - spellcheck: "Ironic" diff --git a/html/changelogs/AutoChangeLog-pr-8709.yml b/html/changelogs/AutoChangeLog-pr-8709.yml deleted file mode 100644 index 4aa6fd9b1d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8709.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "A bunch of minor issues with xenobiology are no more!" diff --git a/html/changelogs/AutoChangeLog-pr-8711.yml b/html/changelogs/AutoChangeLog-pr-8711.yml deleted file mode 100644 index f836783659..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8711.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "Adds in a grey jumpsuit to the loadout choices, restricted to Assistants." diff --git a/html/changelogs/AutoChangeLog-pr-8715.yml b/html/changelogs/AutoChangeLog-pr-8715.yml deleted file mode 100644 index b99309cdd9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8715.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - rscadd: "Pentetic Jelly, new chemical made through mixing 1:1 slime jelly and pentetic acid." - - tweak: "Anatomic panacea now gives pent jelly instead of pent acid. Medbeams now have TRUE tox healing to heal TOXINLOVER as well." diff --git a/html/changelogs/AutoChangeLog-pr-8718.yml b/html/changelogs/AutoChangeLog-pr-8718.yml deleted file mode 100644 index 102fbd4f23..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8718.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - rscadd: "ability to quickly max sensors" diff --git a/html/changelogs/AutoChangeLog-pr-8720.yml b/html/changelogs/AutoChangeLog-pr-8720.yml deleted file mode 100644 index 81684baeac..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8720.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (Credits to Kmc2000 for the original PR)" -delete-after: True -changes: - - rscadd: "Porting in MRE boxes from Yogstation. But be careful, eating possibly expired MREs found in maintenance comes with an unrealistically large (actually small) chance of food poisoning. Otherwise just bail out and order actually safe-to-eat MREs from cargo for 2000 credits." diff --git a/html/changelogs/AutoChangeLog-pr-8721.yml b/html/changelogs/AutoChangeLog-pr-8721.yml deleted file mode 100644 index 4b616e9923..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8721.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by XDTM)" -delete-after: True -changes: - - bugfix: "Reagents now stop their passive effects (for example, stun immunity) if the liver stops working while they're active." diff --git a/html/changelogs/AutoChangeLog-pr-8722.yml b/html/changelogs/AutoChangeLog-pr-8722.yml deleted file mode 100644 index fe858768af..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8722.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "I didn't code it right it in the first place" diff --git a/html/changelogs/AutoChangeLog-pr-8724.yml b/html/changelogs/AutoChangeLog-pr-8724.yml deleted file mode 100644 index 5fc86dd9c9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8724.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "new nodes" - - balance: "points and node gear" diff --git a/html/changelogs/AutoChangeLog-pr-8725.yml b/html/changelogs/AutoChangeLog-pr-8725.yml deleted file mode 100644 index d42840ef0a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8725.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "stuff n things" diff --git a/html/changelogs/AutoChangeLog-pr-8726.yml b/html/changelogs/AutoChangeLog-pr-8726.yml deleted file mode 100644 index 49da4299ce..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8726.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - balance: "Changed bible heal proc, halving the healed damage and increasing brain damage 5x in exchange for a much wider array of items to protect you from it." diff --git a/html/changelogs/AutoChangeLog-pr-8727.yml b/html/changelogs/AutoChangeLog-pr-8727.yml deleted file mode 100644 index b1ca5f0d51..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8727.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie (original PRs by Jujumatic and PKPenguin321, respectively)" -delete-after: True -changes: - - rscadd: "Minesweeper Arcade machines. The higher the difficulty setting, the better the prizes will be." - - rscadd: "Also keep your eye out for another new (and rare) arcade game!" diff --git a/html/changelogs/AutoChangeLog-pr-8728.yml b/html/changelogs/AutoChangeLog-pr-8728.yml deleted file mode 100644 index 2e860e737f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8728.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - tweak: "Moved around some chems from emag list into upgrades." - - balance: "Added some fun chems to dispensers." - - bugfix: "Gave dispensers old tg functionality." diff --git a/html/changelogs/AutoChangeLog-pr-8729.yml b/html/changelogs/AutoChangeLog-pr-8729.yml deleted file mode 100644 index a72f624352..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8729.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by AffectedArc07)" -delete-after: True -changes: - - tweak: "Religion is now a globalvar instead of being a subsystem for some reason" diff --git a/html/changelogs/AutoChangeLog-pr-8730.yml b/html/changelogs/AutoChangeLog-pr-8730.yml deleted file mode 100644 index d0204f2830..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8730.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie (original PRs by Tlaltecuhtli and nicbn)" -delete-after: True -changes: - - rscadd: "alt click to eject beakers from chem masters + chem dispensers + grinders + chem heaters" - - rscadd: "hit chem master + chem dispenser + chem heaters with a beaker and if its loaded with another it swaps em" - - rscadd: "All-In-One Blender UI uses a radial menu now. You can see the contents and reagents by examining." diff --git a/html/changelogs/AutoChangeLog-pr-8731.yml b/html/changelogs/AutoChangeLog-pr-8731.yml deleted file mode 100644 index 0728c12124..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8731.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "Ghommie (original PRs by nicbn and coiax)" -delete-after: True -changes: - - rscadd: "Microwave UI uses a radial menu now. You can see the contents by examining." - - rscadd: "Microwaves have a single wire accessible when open, the activation wire. -When cut, the microwave will no longer function, when pulsed, the microwave -will turn on." - - rscadd: "Stabilized dark purple extracts now cook items in your hands, rather than dropping -the cooked item on the floor." diff --git a/html/changelogs/AutoChangeLog-pr-8732.yml b/html/changelogs/AutoChangeLog-pr-8732.yml deleted file mode 100644 index 69a79b93ac..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8732.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by Nicjh)" -delete-after: True -changes: - - rscadd: "Abductor console's select disguise option now uses a radial" diff --git a/html/changelogs/AutoChangeLog-pr-8733.yml b/html/changelogs/AutoChangeLog-pr-8733.yml deleted file mode 100644 index 593c06bd90..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8733.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by Swindly)" -delete-after: True -changes: - - rscadd: "Arm-mounted implants that contain more than one item use a radial menu instead of a list menu." diff --git a/html/changelogs/AutoChangeLog-pr-8734.yml b/html/changelogs/AutoChangeLog-pr-8734.yml deleted file mode 100644 index 4f746c4cd5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8734.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie (original PR by coiax)" -delete-after: True -changes: - - code_imp: "Randomly coloured gloves and randomly coloured glowsticks now have -slightly different typepaths, but otherwise function the same." diff --git a/html/changelogs/AutoChangeLog-pr-8736.yml b/html/changelogs/AutoChangeLog-pr-8736.yml deleted file mode 100644 index 68d64e2410..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8736.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "gear harness and a conflict merg" - - rscdel: "Nudity permits" - - bugfix: "nothing" diff --git a/html/changelogs/AutoChangeLog-pr-8737.yml b/html/changelogs/AutoChangeLog-pr-8737.yml deleted file mode 100644 index d8e868df33..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8737.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes CWC construct shells being visible as ghost role to latejoiners." diff --git a/html/changelogs/AutoChangeLog-pr-8738.yml b/html/changelogs/AutoChangeLog-pr-8738.yml deleted file mode 100644 index f0e48a77b5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8738.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by ShizCalev)" -delete-after: True -changes: - - bugfix: "Pineapple haters/lovers will get/no longer get pineapple pizzas respectively from infinite pizza boxes." diff --git a/html/changelogs/AutoChangeLog-pr-8739.yml b/html/changelogs/AutoChangeLog-pr-8739.yml deleted file mode 100644 index 0c25a1a649..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8739.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - rscadd: "Leather, cardboard, bronze & bone golems!" - - rscadd: "Bone hurting juice and interactions with plasmamen, skeletons & bone golems!" diff --git a/html/changelogs/AutoChangeLog-pr-8740.yml b/html/changelogs/AutoChangeLog-pr-8740.yml deleted file mode 100644 index 1966f34331..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8740.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie (original PR by Denton)" -delete-after: True -changes: - - tweak: "Nanotrasen has started shipping more types of bedsheets to its stations." - - rscadd: "Added in Runtime, Pirate and Gondola bedsheets. The second one can also be found in some pirate ships, while the last can be crafted from gondola hides." diff --git a/html/changelogs/AutoChangeLog-pr-8741.yml b/html/changelogs/AutoChangeLog-pr-8741.yml deleted file mode 100644 index be803933ae..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8741.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by AffectedArc07 and Shazbot)" -delete-after: True -changes: - - imageadd: "Added 8 new sock styles" diff --git a/html/changelogs/AutoChangeLog-pr-8742.yml b/html/changelogs/AutoChangeLog-pr-8742.yml deleted file mode 100644 index 03428fc8d1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8742.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Donner item" diff --git a/html/changelogs/AutoChangeLog-pr-8744.yml b/html/changelogs/AutoChangeLog-pr-8744.yml deleted file mode 100644 index 2979a4a842..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8744.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - bugfix: "atmos helmet visual bug" diff --git a/html/changelogs/AutoChangeLog-pr-8745.yml b/html/changelogs/AutoChangeLog-pr-8745.yml deleted file mode 100644 index 6feaa2eadd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8745.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - rscadd: "Ported addition of new CAS cards." - - bugfix: "Ported a fix for CAS." diff --git a/html/changelogs/AutoChangeLog-pr-8747.yml b/html/changelogs/AutoChangeLog-pr-8747.yml deleted file mode 100644 index c8a4689c60..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8747.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Luna's Gauntlets" diff --git a/html/changelogs/AutoChangeLog-pr-8750.yml b/html/changelogs/AutoChangeLog-pr-8750.yml deleted file mode 100644 index a3ff5e8a91..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8750.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Arturlang" -delete-after: True -changes: - - bugfix: "Fixes brain damage/trauma healing nanites so they actually work while there are only traumas." diff --git a/html/changelogs/AutoChangeLog-pr-8752.yml b/html/changelogs/AutoChangeLog-pr-8752.yml deleted file mode 100644 index 243b9695a8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8752.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - rscadd: "Added the ability to alter your genitalia as a slimeperson more than addition/removal." - - bugfix: "fixed genitalia removal proc in alter form." diff --git a/html/changelogs/AutoChangeLog-pr-8753.yml b/html/changelogs/AutoChangeLog-pr-8753.yml deleted file mode 100644 index 04fd009e2f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8753.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - balance: "Ported the inability for non-station AI to interact with station z-level." diff --git a/html/changelogs/AutoChangeLog-pr-8755.yml b/html/changelogs/AutoChangeLog-pr-8755.yml deleted file mode 100644 index a1c4742802..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8755.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - tweak: "tweaked the Genital character creation layout to look better" - - bugfix: "fixed having balls/womb when you don't have the linked organ at character creation" - - bugfix: "fixed being able to squeeze semen directly from your balls. Probably." diff --git a/html/changelogs/AutoChangeLog-pr-8756.yml b/html/changelogs/AutoChangeLog-pr-8756.yml deleted file mode 100644 index 8d78c6d5e8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8756.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - balance: "HoS mains can now peacefully sleep in their office." diff --git a/html/changelogs/AutoChangeLog-pr-8760.yml b/html/changelogs/AutoChangeLog-pr-8760.yml deleted file mode 100644 index 78812c5c05..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8760.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - balance: "rebalanced lingy dingy powery gamey" diff --git a/html/changelogs/AutoChangeLog-pr-8761.yml b/html/changelogs/AutoChangeLog-pr-8761.yml deleted file mode 100644 index 4ee792c3a6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8761.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "melee and block harm" - - bugfix: "sprites*" diff --git a/html/changelogs/AutoChangeLog-pr-8762.yml b/html/changelogs/AutoChangeLog-pr-8762.yml deleted file mode 100644 index e248589b1b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8762.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - imageadd: "new sprites for the flechette gun, its magazines and the toy ray gun" diff --git a/html/changelogs/AutoChangeLog-pr-8763.yml b/html/changelogs/AutoChangeLog-pr-8763.yml deleted file mode 100644 index d99b529656..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8763.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - balance: "bone satchles" diff --git a/html/changelogs/AutoChangeLog-pr-8764.yml b/html/changelogs/AutoChangeLog-pr-8764.yml deleted file mode 100644 index ad5b82505a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8764.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "holster doing holster things" diff --git a/html/changelogs/AutoChangeLog-pr-8765.yml b/html/changelogs/AutoChangeLog-pr-8765.yml deleted file mode 100644 index 2cac0773ad..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8765.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - tweak: "Merges the end-of-shift and its shuttle autocall announcements into one." - - bugfix: "Prevents the end-of-shift shuttle from being recalled (even if to no avail)." diff --git a/html/changelogs/AutoChangeLog-pr-8766.yml b/html/changelogs/AutoChangeLog-pr-8766.yml deleted file mode 100644 index 33c2a47a71..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8766.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes being able to teleport papers to your location with TK." diff --git a/html/changelogs/AutoChangeLog-pr-8767.yml b/html/changelogs/AutoChangeLog-pr-8767.yml deleted file mode 100644 index ce01bf471b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8767.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed some monkey-code shenanigeans making items sometimes disappear from pickpocketing." diff --git a/html/changelogs/AutoChangeLog-pr-8768.yml b/html/changelogs/AutoChangeLog-pr-8768.yml deleted file mode 100644 index de8338b545..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8768.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - imageadd: "New sprites for the some pda cartridges." diff --git a/html/changelogs/AutoChangeLog-pr-8773.yml b/html/changelogs/AutoChangeLog-pr-8773.yml deleted file mode 100644 index 6cc39f8184..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8773.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - tweak: "Podpeople now have customization options." diff --git a/html/changelogs/AutoChangeLog-pr-8774.yml b/html/changelogs/AutoChangeLog-pr-8774.yml deleted file mode 100644 index 7ba01cc6aa..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8774.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - bugfix: "Removed the human check for cult conversion of captain/chaplain minds." diff --git a/html/changelogs/AutoChangeLog-pr-8775.yml b/html/changelogs/AutoChangeLog-pr-8775.yml deleted file mode 100644 index 51e8a15b13..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8775.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - tweak: "The crew monitor's entry for the Quartermaster will now appear bolded, while HoP's will be of the same color of the service/unknown/other jobs." diff --git a/html/changelogs/AutoChangeLog-pr-8776.yml b/html/changelogs/AutoChangeLog-pr-8776.yml deleted file mode 100644 index bd3d30677a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8776.yml +++ /dev/null @@ -1,11 +0,0 @@ -author: "Ghommie (original PRs by ShizCalev, coiax and Tlaltecuhtli)" -delete-after: True -changes: - - bugfix: "Caks will no longer override the bonus reagents provided in a donut when frosting them." - - bugfix: "Caks can no longer create frosted frosted jelly donuts." - - bugfix: "Jelly donuts will no longer lose their vitamins when they're frosted." - - bugfix: "Fixed chaos donuts potentially doubling the amount of reagents added when microwaved with something else." - - bugfix: "Donuts now always contain 1 sprinkles as was stated on the wiki. Frosted donuts have a chance at adding an extra sprinkle." - - code_imp: "Improved the code for ensuring that security members enjoy donuts and security-themed alcoholic drinks." - - balance: "neurotoxin doesnt insta stun but gives you limb paralysis overtime and heart attacks if it stays in for too long and it is also alcholic" - - balance: "beepsky smash now summons imaginary beepskys that deal stamina damage instead of outright stunning" diff --git a/html/changelogs/AutoChangeLog-pr-8778.yml b/html/changelogs/AutoChangeLog-pr-8778.yml deleted file mode 100644 index 1fa8446e6a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8778.yml +++ /dev/null @@ -1,16 +0,0 @@ -author: "Ghommie (original PRs by carshalash, GranpaWalton, BebeYoshi & Hexmaniacosanna, Fire Chance, Ordonis, Krysonism and OnlineGirlfriend)" -delete-after: True -changes: - - tweak: "Reduced booze power of Mead, Red Mead, and Irish Cream." - - tweak: "Increased booze power of Grappa." - - rscadd: "Added a new premium drink to the soda machine called \"Grey Bull\" which gives temporary shock resistance" - - rscadd: "A new drink called Blank Paper was added to the bar menu, it was made by a mime and it represents a new start." - - rscadd: "Adds a variety of fine alcoholic beverages for discerning patrons of the bar: Wizz Fizz, Bug Spray, Champagne, Applejack, Jack Rose, Turbo, Old Timer, Rubberneck, Duplex, Trappist Beer, Blazaam and Planet Cracker!" - - rscadd: "Also more nonalcoholic drinks: Cream Soda, Lemonade and Red Queen." - - rscadd: "Packs of a novel artificial sweetener have been added to the kitchen vendor." - - rscadd: "Bottles of trappist beer and champagne are now available in the premium seection of the booze-o-mat." - - rscadd: "Juicing parsnips now yields parsnip juice." - - rscadd: "Maintenance peaches." - - bugfix: "Grape soda now cools you down like other sodas." - - tweak: "tweaked the Arnold Palmer recipe, it now uses lemonade." - - imageadd: "Added new drink, bottle, vomit and peach can sprites." diff --git a/html/changelogs/AutoChangeLog-pr-8779.yml b/html/changelogs/AutoChangeLog-pr-8779.yml deleted file mode 100644 index b5e90f7ecb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8779.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - balance: "Roundstart carbon jetpacks now have full_speed FALSE." diff --git a/html/changelogs/AutoChangeLog-pr-8781.yml b/html/changelogs/AutoChangeLog-pr-8781.yml deleted file mode 100644 index 12bd5ccdf0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8781.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - tweak: "Adds plasteel to medical and security techfabs." diff --git a/html/changelogs/AutoChangeLog-pr-8783.yml b/html/changelogs/AutoChangeLog-pr-8783.yml deleted file mode 100644 index 5b283b9b21..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8783.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "emergency pods' storage will now properly work." diff --git a/html/changelogs/AutoChangeLog-pr-8784.yml b/html/changelogs/AutoChangeLog-pr-8784.yml deleted file mode 100644 index 7d6d9d4739..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8784.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Donor item" diff --git a/html/changelogs/AutoChangeLog-pr-8785.yml b/html/changelogs/AutoChangeLog-pr-8785.yml deleted file mode 100644 index 0dd9cb0df4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8785.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Joy, Happiness, Honk" diff --git a/html/changelogs/AutoChangeLog-pr-8790.yml b/html/changelogs/AutoChangeLog-pr-8790.yml deleted file mode 100644 index 0c0e6cd116..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8790.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Bhijn" -delete-after: True -changes: - - rscadd: "It's now possible to forcefully eject the occupants of a dogborg's sleeper by using a crowbar on them. This action is instant." - - tweak: "Resist values for dogborg sleepers have been adjusted. The baseline has been decreased from 30 seconds to 15 seconds. Medihound sleepers have a resist timer of 3 seconds. Sechound sleepers retain a resist timer of 30 seconds." - - tweak: "It now takes 10 full seconds to insert people into your sleeper. This should hopefully give people some more room to breathe and react to a dogborg attempting to sleeper someone either for no reason or in a way that violates law 2." diff --git a/html/changelogs/AutoChangeLog-pr-8793.yml b/html/changelogs/AutoChangeLog-pr-8793.yml deleted file mode 100644 index 82a113c94d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8793.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "The PDA skin preference will now properly save up." - - tweak: "Changed the default PDA icon var to match the default PDA skin preference." diff --git a/html/changelogs/AutoChangeLog-pr-8794.yml b/html/changelogs/AutoChangeLog-pr-8794.yml deleted file mode 100644 index 612a3e655b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8794.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixing the `(pointless) badassary` category appearing between the `dangerous and conspicious` and `stealthy and inconspicious` categories." - - bugfix: "Combat gloves plus now properly use the combat gloves sprite." diff --git a/html/changelogs/AutoChangeLog-pr-8795.yml b/html/changelogs/AutoChangeLog-pr-8795.yml deleted file mode 100644 index 7fe2250a0b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8795.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Sishen1542, original by @zxaber" -delete-after: True -changes: - - balance: "Utility mechs no longer automatically get beacons." - - balance: "Tracking beacons no longer delete themselves when EMPing a mech, and instead have a ten-second cooldown in-between EMPs. They also now do heavy EMP damage rather than light." - - balance: "Mechs that take EMP damage lose the use of their weapons and equipment temporarily. Movement and abilities are not effected." - - balance: "Mechs taking EMP damage no longer roll for a random malfunction." diff --git a/html/changelogs/AutoChangeLog-pr-8796.yml b/html/changelogs/AutoChangeLog-pr-8796.yml deleted file mode 100644 index 2ffdee9b37..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8796.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "small mix up in terms" diff --git a/html/changelogs/AutoChangeLog-pr-8797.yml b/html/changelogs/AutoChangeLog-pr-8797.yml deleted file mode 100644 index 40c7afc570..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8797.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542, original by @Tlaltecuhtli" -delete-after: True -changes: - - bugfix: "alt clicking the emitter now rotates it instead of only flipping" diff --git a/html/changelogs/AutoChangeLog-pr-8798.yml b/html/changelogs/AutoChangeLog-pr-8798.yml deleted file mode 100644 index 367aadad80..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8798.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542, original by Arkatos" -delete-after: True -changes: - - rscadd: "Action buttons can now be dragged onto each other to swap places" diff --git a/html/changelogs/AutoChangeLog-pr-8799.yml b/html/changelogs/AutoChangeLog-pr-8799.yml deleted file mode 100644 index 73d3f590ba..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8799.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Promiscuous Organs crate, pills to lewd crate and testicles to maints" diff --git a/html/changelogs/AutoChangeLog-pr-8800.yml b/html/changelogs/AutoChangeLog-pr-8800.yml deleted file mode 100644 index 7b397ec23e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8800.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542, original by Skoglol" -delete-after: True -changes: - - rscadd: "Heaters/freezers now support ctrl clicking to turn on and alt clicking to min/max target temperature." diff --git a/html/changelogs/AutoChangeLog-pr-8801.yml b/html/changelogs/AutoChangeLog-pr-8801.yml deleted file mode 100644 index e1089f2f1d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8801.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542, original by NewSta" -delete-after: True -changes: - - tweak: "updated the miasma canister sprites" diff --git a/html/changelogs/AutoChangeLog-pr-8802.yml b/html/changelogs/AutoChangeLog-pr-8802.yml deleted file mode 100644 index b97119c32d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8802.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie (original PRs by ShizCalev, MrDoombringer, AnturK, bgobandit, 81Denton and actioninja)" -delete-after: True -changes: - - rscadd: "Failsafe codes for uplinks are now available for purchase." - - rscadd: "Nuke Ops now have the ability to purchase a usable RPG, the PML-9, as well as a couple different types of rockets for it. you can also suicide rocket jump with them!" - - spellcheck: "Improved Uplink item descriptions and formatting." diff --git a/html/changelogs/AutoChangeLog-pr-8805.yml b/html/changelogs/AutoChangeLog-pr-8805.yml deleted file mode 100644 index 8abefd9ce2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8805.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - bugfix: "supply display are now properly on the wall" diff --git a/html/changelogs/AutoChangeLog-pr-8812.yml b/html/changelogs/AutoChangeLog-pr-8812.yml deleted file mode 100644 index 0de67cfe59..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8812.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542, original by XDTM" -delete-after: True -changes: - - rscadd: "Using the wrong surgery tool during surgery no longer attacks the patient, if on help or disarm intent." diff --git a/html/changelogs/AutoChangeLog-pr-8819.yml b/html/changelogs/AutoChangeLog-pr-8819.yml deleted file mode 100644 index 0b750fccb6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8819.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - rscadd: "Added public autolathes to all maps." diff --git a/html/changelogs/AutoChangeLog-pr-8820.yml b/html/changelogs/AutoChangeLog-pr-8820.yml deleted file mode 100644 index 3e83e29cc3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8820.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by variableundefined)" -delete-after: True -changes: - - bugfix: "Cancel button to assault pod destination selector." diff --git a/html/changelogs/AutoChangeLog-pr-8821.yml b/html/changelogs/AutoChangeLog-pr-8821.yml deleted file mode 100644 index f45caba949..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8821.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Ghommie (original PRs by ShizCalev)" -delete-after: True -changes: - - tweak: "Corgi collars can now be removed!" - - tweak: "Updated the corgi & parrot inventory panels to use the same formatting as other mobs" - - bugfix: "Fixed corgi inventory panels not closing properly." - - bugfix: "Fixed the parrot inventory panel not closing properly if you're not able to interact with it." diff --git a/html/changelogs/AutoChangeLog-pr-8823.yml b/html/changelogs/AutoChangeLog-pr-8823.yml deleted file mode 100644 index b334bfbd7e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8823.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (Original PR by tralezab)" -delete-after: True -changes: - - bugfix: "Fixes an issue with spontaneous appendicitis picking incompatible mob biotypes." diff --git a/html/changelogs/AutoChangeLog-pr-8824.yml b/html/changelogs/AutoChangeLog-pr-8824.yml deleted file mode 100644 index 6a12573112..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8824.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by Mickyan)" -delete-after: True -changes: - - bugfix: "Fixed being unable to smother people using the damp rag" diff --git a/html/changelogs/AutoChangeLog-pr-8825.yml b/html/changelogs/AutoChangeLog-pr-8825.yml deleted file mode 100644 index a56be4e2ab..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8825.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie (original PR by MrDoomBringer, AnturK and YPOQ)" -delete-after: True -changes: - - bugfix: "Explosions will no longer damage wizards in rod form, the supermatter monitoring radio and megafauna GPS." - - bugfix: "Supplypods no longer detonate their contents." - - bugfix: "Fixed silicon items (e.g. cyborg modules) being destroyed by explosion epicenters." diff --git a/html/changelogs/AutoChangeLog-pr-8826.yml b/html/changelogs/AutoChangeLog-pr-8826.yml deleted file mode 100644 index 3f7520b84e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8826.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "Ghommie (original PR by Skoglol)" -delete-after: True -changes: - - code_imp: "New helper proc for alt-click turf listing, bypasses any interaction overrides." - - code_imp: "Ghosts and revenants now use the new proc." - - bugfix: "Ghosts can no longer toggleopen sleepers, adjust skateboard speed or close laptops" - - bugfix: "Revenant can now alt-click turf to list contents." - - tweak: "Revenant now slightly less nosy, use shift click to examine." - - tweak: "Alt-clicking the same turf again no longer closes the turf listing tab." diff --git a/html/changelogs/AutoChangeLog-pr-8827.yml b/html/changelogs/AutoChangeLog-pr-8827.yml deleted file mode 100644 index e1aaadd698..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8827.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by ninjanomnom)" -delete-after: True -changes: - - bugfix: "Gaps between sounds in some looping sound effects should no longer happen as much under heavy server lag." diff --git a/html/changelogs/AutoChangeLog-pr-8828.yml b/html/changelogs/AutoChangeLog-pr-8828.yml deleted file mode 100644 index 4278a14ae1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8828.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by Skoglol)" -delete-after: True -changes: - - bugfix: "Reduced ventcrawl lag greatly." diff --git a/html/changelogs/AutoChangeLog-pr-8829.yml b/html/changelogs/AutoChangeLog-pr-8829.yml deleted file mode 100644 index 6d0dd108dd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8829.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "BurgerLUA" -delete-after: True -changes: - - code_imp: "Added a new framework for reagents. Reagents can now have a bool that determines if it can be detected by handheld medical analyzers. Currently only the changeling sting chemical does this." - - balance: "Made changeling transformation string last between 10-15 minutes. Lowered the dna cost of changeling sting from 3 dna to 2 dna. Lowered the chemical cost from 50 to 10. Lowered the loudness from 2 to 1. Changeling sting transformation can be removed via high doses of calomel." diff --git a/html/changelogs/AutoChangeLog-pr-8830.yml b/html/changelogs/AutoChangeLog-pr-8830.yml deleted file mode 100644 index e4cb94374b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8830.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie (original PRs by Kmc2000 and actioninja)" -delete-after: True -changes: - - rscadd: "Added darkmode! You can opt-in to this by clicking the new toggle darkmode button just beside the settings one." - - rscadd: "Byond members will now have a new setting for their Antag OOC color, instead of using their OOC one. (Antag OOC still locked under admin discretion though)" - - rscdel: "Default black'n'white windows style." diff --git a/html/changelogs/AutoChangeLog-pr-8834.yml b/html/changelogs/AutoChangeLog-pr-8834.yml deleted file mode 100644 index 0b7a7b30c5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8834.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes the space ninja's energy netting." diff --git a/html/changelogs/AutoChangeLog-pr-8835.yml b/html/changelogs/AutoChangeLog-pr-8835.yml deleted file mode 100644 index cf646b879b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8835.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - tweak: "consistency in hop and cap berets" diff --git a/html/changelogs/AutoChangeLog-pr-8841.yml b/html/changelogs/AutoChangeLog-pr-8841.yml deleted file mode 100644 index 8bb73dac26..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8841.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "Adding one pAI to the wizard shuttle and ERT prep room" diff --git a/html/changelogs/AutoChangeLog-pr-8842.yml b/html/changelogs/AutoChangeLog-pr-8842.yml deleted file mode 100644 index 8a8903b7e5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8842.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "UristMcAstronaut" -delete-after: True -changes: - - bugfix: "allows a pai to activate its holoform while in a pai connector without getting derped." diff --git a/html/changelogs/AutoChangeLog-pr-8843.yml b/html/changelogs/AutoChangeLog-pr-8843.yml deleted file mode 100644 index 74a3cc07e8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8843.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Coolgat3" -delete-after: True -changes: - - imageadd: "added combat boots sprite" diff --git a/html/changelogs/AutoChangeLog-pr-8844.yml b/html/changelogs/AutoChangeLog-pr-8844.yml deleted file mode 100644 index 05f0f2fb22..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8844.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes the rocket launcher being unreloadable." - - balance: "Buffed its accuracy a bit." - - tweak: "Replaced the grenade launcher emagged minesweeper loot with the rocket launcher like it was originally supposed to be." diff --git a/html/changelogs/AutoChangeLog-pr-8845.yml b/html/changelogs/AutoChangeLog-pr-8845.yml deleted file mode 100644 index 4fe0319fad..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8845.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - imageadd: "Tweaked the :b: emoji." diff --git a/html/changelogs/AutoChangeLog-pr-8846.yml b/html/changelogs/AutoChangeLog-pr-8846.yml deleted file mode 100644 index 26b1dad6d5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8846.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "Rubber Toolboxes." diff --git a/html/changelogs/AutoChangeLog-pr-8847.yml b/html/changelogs/AutoChangeLog-pr-8847.yml deleted file mode 100644 index 678b3d433b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8847.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "Porting in two bar signs: Cyber Sylph's and Meow Mix." diff --git a/html/changelogs/AutoChangeLog-pr-8852.yml b/html/changelogs/AutoChangeLog-pr-8852.yml deleted file mode 100644 index 4d49f26831..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8852.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - imagedel: "Removes a moth plush from the game." diff --git a/html/changelogs/AutoChangeLog-pr-8853.yml b/html/changelogs/AutoChangeLog-pr-8853.yml deleted file mode 100644 index 1507e8620d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8853.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie (original PRs by Naksu and coiax, loser)" -delete-after: True -changes: - - code_imp: "Cleaned up saycode" - - bugfix: "Taking mutadone while having the communication disorder brain trauma will no longer spam your chat with messages." - - rscadd: "IPCs now come with a subtype of robotic tongue without the omnilingual ability, instead of innately having robotic voice spans." diff --git a/html/changelogs/AutoChangeLog-pr-8854.yml b/html/changelogs/AutoChangeLog-pr-8854.yml deleted file mode 100644 index fc45d2087e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8854.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixing stamina damage melee weaponry being unusable by pacifists, and still damaging objects and triggering electrified grilles when thrown." diff --git a/html/changelogs/AutoChangeLog-pr-8857.yml b/html/changelogs/AutoChangeLog-pr-8857.yml deleted file mode 100644 index 6e32fff883..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8857.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - refactor: "refactored underwears to allow custom color preferences, instead of manually colored sprites." - - rscdel: "The aforementioned manually colored pieces. Some of your char preferences may have been resetted as result." - - rscadd: "More underwear choices, including: Bowling shirts, long johns, a tank top, fishnets, more bee socks, bee t-shirt and bee boxers (original PR for the latter three by nemvar from /tg/station)." - - tweak: "random bodies will now have random underwear again." - - bugfix: "Dressers will now properly change undergarment again." diff --git a/html/changelogs/AutoChangeLog-pr-8858.yml b/html/changelogs/AutoChangeLog-pr-8858.yml deleted file mode 100644 index 6fc057f88d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8858.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "Made unholy water healtoxinlover" diff --git a/html/changelogs/AutoChangeLog-pr-8860.yml b/html/changelogs/AutoChangeLog-pr-8860.yml deleted file mode 100644 index 95593b1dad..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8860.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Zelus Oil, brass flasks" diff --git a/html/changelogs/AutoChangeLog-pr-8870.yml b/html/changelogs/AutoChangeLog-pr-8870.yml deleted file mode 100644 index 08c9860a30..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8870.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - tweak: "Toned down many species' female chest sprites to fit the smaller cups." - - bugfix: "Fixed some body parts sprites inconsistencies, such as the W/E female and male chest sprites being the same in some species, and jellypeople's legs being one tile off on W/E" diff --git a/html/changelogs/AutoChangeLog-pr-8872.yml b/html/changelogs/AutoChangeLog-pr-8872.yml deleted file mode 100644 index a79ec48298..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8872.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Normal mops now only use 2 stamina to mop a tile, nerfed from their previous value of 5 stamina per tile mopped." - - balance: "Advanced mops now only use 1 stamina to mop turfs, from their former value of 2 stam." diff --git a/html/changelogs/AutoChangeLog-pr-8873.yml b/html/changelogs/AutoChangeLog-pr-8873.yml deleted file mode 100644 index af166d496a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8873.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by YPOQ)" -delete-after: True -changes: - - bugfix: "Fixes clockwork armor not actually having armor." diff --git a/html/changelogs/AutoChangeLog-pr-8874.yml b/html/changelogs/AutoChangeLog-pr-8874.yml deleted file mode 100644 index 0d7b51a941..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8874.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie (original PRs by Floyd/Qustinnus, optimumtact, Denton and coiax)" -delete-after: True -changes: - - rscadd: "You can now select what your pills will look like when making pills from the Chem Master" - - rscadd: "Red pills can make you think." diff --git a/html/changelogs/AutoChangeLog-pr-8877.yml b/html/changelogs/AutoChangeLog-pr-8877.yml deleted file mode 100644 index 205ff8f2c3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8877.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerLUA" -delete-after: True -changes: - - bugfix: "Fixed most reagents having a placeholder color." diff --git a/html/changelogs/AutoChangeLog-pr-8880.yml b/html/changelogs/AutoChangeLog-pr-8880.yml deleted file mode 100644 index e720f00ccb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8880.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CameronWoof" -delete-after: True -changes: - - tweak: "air alarms are green now instead of blue when the atmosphere is ideal" diff --git a/html/changelogs/AutoChangeLog-pr-8881.yml b/html/changelogs/AutoChangeLog-pr-8881.yml deleted file mode 100644 index 3599d4fa23..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8881.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixing baklava pies a bit." diff --git a/html/changelogs/AutoChangeLog-pr-8883.yml b/html/changelogs/AutoChangeLog-pr-8883.yml deleted file mode 100644 index 715ce5dbfc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8883.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CameronWoof" -delete-after: True -changes: - - tweak: "Hexacrocin overdose no longer causes climaxes" diff --git a/html/changelogs/AutoChangeLog-pr-8884.yml b/html/changelogs/AutoChangeLog-pr-8884.yml deleted file mode 100644 index c63618a6d9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8884.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie (original PR by duckay)" -delete-after: True -changes: - - rscadd: "Added better names and descriptions for blueshirt officer gear." - - rscadd: "Added the above gear to the premium selection of the sectech" diff --git a/html/changelogs/AutoChangeLog-pr-8885.yml b/html/changelogs/AutoChangeLog-pr-8885.yml deleted file mode 100644 index 1469ccf460..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8885.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by coiax)" -delete-after: True -changes: - - code_imp: "The Squeak subsystem has been renamed to Minor Mapping." diff --git a/html/changelogs/AutoChangeLog-pr-8887.yml b/html/changelogs/AutoChangeLog-pr-8887.yml deleted file mode 100644 index 45826fe571..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8887.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "NT Newscasters have had repeated reports of gang activity and are now looking into it." - - rscadd: "NT Psykers keep mumbling about last words of someone who died. Somehow they even have a newsletter for this..." - - bugfix: "Gangster greeting messages are a batch message rather than 5 laggy to_chats" diff --git a/html/changelogs/AutoChangeLog-pr-8898.yml b/html/changelogs/AutoChangeLog-pr-8898.yml deleted file mode 100644 index e836d4225e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8898.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "WhiteHusky" -delete-after: True -changes: - - tweak: "Checking yourself shouldn't freeze the client anymore." diff --git a/html/changelogs/AutoChangeLog-pr-8900.yml b/html/changelogs/AutoChangeLog-pr-8900.yml deleted file mode 100644 index cbb910c3d5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8900.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Seris02" -delete-after: True -changes: - - rscadd: "Abductor Replication Lab ruin and advanced tools" diff --git a/html/changelogs/AutoChangeLog-pr-8906.yml b/html/changelogs/AutoChangeLog-pr-8906.yml deleted file mode 100644 index c988071f3e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8906.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - tweak: "Sweaters now cover groins too." diff --git a/html/changelogs/AutoChangeLog-pr-8908.yml b/html/changelogs/AutoChangeLog-pr-8908.yml deleted file mode 100644 index d9cbd5abed..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8908.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - balance: "Improved the zelus flask to be more viable for bottle smashing than the average barman's selection." - - code_imp: "Very slight bottle smashing code clean up, stupid const vars." diff --git a/html/changelogs/AutoChangeLog-pr-8909.yml b/html/changelogs/AutoChangeLog-pr-8909.yml deleted file mode 100644 index bfb1470f71..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8909.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes krav maga gloves, wizard spells knockdowns." diff --git a/html/changelogs/AutoChangeLog-pr-8912.yml b/html/changelogs/AutoChangeLog-pr-8912.yml deleted file mode 100644 index 5d5a7c38fc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8912.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie (original PRs by ShizCalev and bobbahbrown)" -delete-after: True -changes: - - rscadd: "Headsets now dynamically show in their description how to speak on any channels they can use when held or worn." - - code_imp: "Radio channels names and keys now use defines." - - tweak: "The head arrival announcement will now be broadcast to the supply for the quartermaster." diff --git a/html/changelogs/AutoChangeLog-pr-8913.yml b/html/changelogs/AutoChangeLog-pr-8913.yml deleted file mode 100644 index ccac6aef16..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8913.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Added new chairs" diff --git a/html/changelogs/AutoChangeLog-pr-8914.yml b/html/changelogs/AutoChangeLog-pr-8914.yml deleted file mode 100644 index ea7f548d6a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8914.yml +++ /dev/null @@ -1,13 +0,0 @@ -author: "Ghommie (original PRs by Mickyan, Anturk, ShizCalev, nemvar and Naksu)" -delete-after: True -changes: - - rscadd: "After rigorous mandatory art training for the crew, many new graffiti styles are now available" - - bugfix: "Cleaned up some crayon and spraycan code for futureproofing." - - bugfix: "Spraypainting blast doors no longer makes them see-through." - - balance: "Paint remover now works on blast doors and the like." - - rscadd: "Most objects can now be colored using a spray can." - - spellcheck: "Added visible message to spraying objects and windows." - - rscadd: "Colored lights now shine in different colours." - - rscdel: "Removed individual buttons text in crayon/spraycan UI, speeding it up." - - bugfix: "Text mode buffer is actually visible in the UI." - - tweak: "Last letter of a text mode buffer no longer rotates out to be replaced with \"a\", allowing the text mode to be used for individual symbols." diff --git a/html/changelogs/AutoChangeLog-pr-8915.yml b/html/changelogs/AutoChangeLog-pr-8915.yml deleted file mode 100644 index 5e3e0e77a9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8915.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - tweak: "Added in an alert pop up to the cult convertees, on top of the older \"click here to become a blood cultist\" chat message." - - tweak: "The convertee's screen will now flash red to fit in the aforementioned message's fluff." - - spellcheck: "Made said message less verbose." diff --git a/html/changelogs/AutoChangeLog-pr-8917.yml b/html/changelogs/AutoChangeLog-pr-8917.yml deleted file mode 100644 index 2b858cad47..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8917.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Bhijn" -delete-after: True -changes: - - bugfix: "Warp whistles no longer grant permanent invulnerability and invisibility" diff --git a/html/changelogs/AutoChangeLog-pr-8920.yml b/html/changelogs/AutoChangeLog-pr-8920.yml deleted file mode 100644 index 6d3ae3ada4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8920.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "Towels. Crafted with 3 sheets of cloth, they can be worn on head, suit and belt slots even without uniform, or laid flat on the floor. Sprites from Baystation and Aurora Station." - - rscadd: "You can combat mode right click people while wielding rags and towels to pat out their flames (to no use for rags) or otherwise drying them out." diff --git a/html/changelogs/AutoChangeLog-pr-8921.yml b/html/changelogs/AutoChangeLog-pr-8921.yml deleted file mode 100644 index 9c1c456f7f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8921.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - admin: "Bugtesting zone upgrades for easy bug/game testing" diff --git a/html/changelogs/AutoChangeLog-pr-8922.yml b/html/changelogs/AutoChangeLog-pr-8922.yml deleted file mode 100644 index 1e641bd424..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8922.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - rscadd: "Gamemode voting results are displayed at the end-round screen." diff --git a/html/changelogs/AutoChangeLog-pr-8925.yml b/html/changelogs/AutoChangeLog-pr-8925.yml deleted file mode 100644 index ddc90eba19..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8925.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerLUA" -delete-after: True -changes: - - bugfix: "Fixed autolathe wires not correctly shocking you when pulsed." diff --git a/html/changelogs/AutoChangeLog-pr-8926.yml b/html/changelogs/AutoChangeLog-pr-8926.yml deleted file mode 100644 index 762318ab21..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8926.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - rscadd: "Added the secbat, a box to hold it and the ability to dispense it from the SecTech vendor." diff --git a/html/changelogs/AutoChangeLog-pr-8927.yml b/html/changelogs/AutoChangeLog-pr-8927.yml deleted file mode 100644 index 3a87d7652e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8927.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - balance: "toned down the stamina costs of some of the bulkier weapons." - - code_imp: "repathed hypereutactic blades to be a subtype of dual sabers. Way less copypasta." diff --git a/html/changelogs/AutoChangeLog-pr-8929.yml b/html/changelogs/AutoChangeLog-pr-8929.yml deleted file mode 100644 index 4fed45f1d0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8929.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixing CX Shredder guns not accepting standard flechette mags." - - bugfix: "Fixing missing magpistol magazines icon states." diff --git a/html/changelogs/AutoChangeLog-pr-8931.yml b/html/changelogs/AutoChangeLog-pr-8931.yml deleted file mode 100644 index 2bde1025db..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8931.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "more cargo to cargo" diff --git a/html/changelogs/AutoChangeLog-pr-8932.yml b/html/changelogs/AutoChangeLog-pr-8932.yml deleted file mode 100644 index d9038ef1a5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8932.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "EmeraldSundisk" -delete-after: True -changes: - - rscadd: "Adds a gun range to Box Station" - - rscadd: "Provides some extra power grid connections" - - rscdel: "Sunglasses and Earmuffs removed from the Warden's Office - they can be found at the range instead" - - tweak: "Rearranges a few objects within the prison as to accommodate the new gun range" diff --git a/html/changelogs/AutoChangeLog-pr-8933.yml b/html/changelogs/AutoChangeLog-pr-8933.yml deleted file mode 100644 index 09d318be08..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8933.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - balance: "Cloning no longer gives you positive mutations, but a chance for a negative one. Cloning has a chance to \"scramble\" your visual DNA." diff --git a/html/changelogs/AutoChangeLog-pr-8934.yml b/html/changelogs/AutoChangeLog-pr-8934.yml deleted file mode 100644 index e86e47a45f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8934.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "More loadout gear" diff --git a/html/changelogs/AutoChangeLog-pr-8937.yml b/html/changelogs/AutoChangeLog-pr-8937.yml deleted file mode 100644 index 20302e4c49..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8937.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "sort of overhauled darkmode/lightmode to /vg/station's, also reincluding the pre-existing black'n'white theme." - - bugfix: "Fixed LOOC color, fixed .userlove and .love span classes being a bit too blurry on dark mode." diff --git a/html/changelogs/AutoChangeLog-pr-8939.yml b/html/changelogs/AutoChangeLog-pr-8939.yml deleted file mode 100644 index 6041d66721..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8939.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "The syndicate base's bathroom is now fitted with a shower, and a special towel." - - bugfix: "Fixed many issues with towels." - - tweak: "The dry people off with rags/towels action can only be done if the object is NOT moist with reagents now. Also cleans banana creaming." - - rscadd: "Towels deal more damage while soaked with reagents." - - rscadd: "You can now squeeze rags/towels with Alt-Click." - - rscdel: "deleted an old and crappier towel sprite that got in the way." diff --git a/html/changelogs/AutoChangeLog-pr-8942.yml b/html/changelogs/AutoChangeLog-pr-8942.yml deleted file mode 100644 index a1b80ba839..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8942.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Chayse" -delete-after: True -changes: - - tweak: "Changed the Warden's compact combat shotgun to instead be a regular combat shotgun with a foldable stock and penalties for being folded." diff --git a/html/changelogs/AutoChangeLog-pr-8945.yml b/html/changelogs/AutoChangeLog-pr-8945.yml deleted file mode 100644 index afa9bdaa95..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8945.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes Pubby's disposal conveyor belts and lack of a second lawyer spawner." diff --git a/html/changelogs/AutoChangeLog-pr-8949.yml b/html/changelogs/AutoChangeLog-pr-8949.yml deleted file mode 100644 index 83560d74f2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8949.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "Poojawa power creep" diff --git a/html/changelogs/AutoChangeLog-pr-8950.yml b/html/changelogs/AutoChangeLog-pr-8950.yml deleted file mode 100644 index 62b90d2407..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8950.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "Not my work not my credit" diff --git a/html/changelogs/AutoChangeLog-pr-8952.yml b/html/changelogs/AutoChangeLog-pr-8952.yml deleted file mode 100644 index df2ff22d09..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8952.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CdrCross" -delete-after: True -changes: - - rscadd: "Adds the ability for cloning consoles to read and write record lists to the circuit board, and provides a template for giving other machines local circuit board memory." diff --git a/html/changelogs/AutoChangeLog-pr-8953.yml b/html/changelogs/AutoChangeLog-pr-8953.yml deleted file mode 100644 index 2128149556..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8953.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Toriate" -delete-after: True -changes: - - rscadd: "RPD now has inhands" - - imageadd: "New sprites for RCDs and RPDs, inhands included" diff --git a/html/changelogs/AutoChangeLog-pr-8956.yml b/html/changelogs/AutoChangeLog-pr-8956.yml deleted file mode 100644 index d6d33b3bd2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8956.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CameronWoof" -delete-after: True -changes: - - tweak: "Altered the icons for inventory backplates. Sleek! Stylish! New!" diff --git a/html/changelogs/AutoChangeLog-pr-8958.yml b/html/changelogs/AutoChangeLog-pr-8958.yml deleted file mode 100644 index a800b1b218..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8958.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Emitter gun" diff --git a/html/changelogs/AutoChangeLog-pr-8959.yml b/html/changelogs/AutoChangeLog-pr-8959.yml deleted file mode 100644 index 87ca24462e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8959.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "suit storage nulling anti magic item protection" diff --git a/html/changelogs/AutoChangeLog-pr-8964.yml b/html/changelogs/AutoChangeLog-pr-8964.yml deleted file mode 100644 index 6675fecc50..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8964.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - balance: "rebalanced steal goals restrictions" - - spellcheck: "fixed a few misleading goals" diff --git a/html/changelogs/AutoChangeLog-pr-8965.yml b/html/changelogs/AutoChangeLog-pr-8965.yml deleted file mode 100644 index 138991e507..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8965.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "ports a fix" diff --git a/html/changelogs/AutoChangeLog-pr-8966.yml b/html/changelogs/AutoChangeLog-pr-8966.yml deleted file mode 100644 index 2d63b8356e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8966.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - imageadd: "RCL now show what color is currently in use" diff --git a/html/changelogs/AutoChangeLog-pr-8968.yml b/html/changelogs/AutoChangeLog-pr-8968.yml deleted file mode 100644 index 0a0b0e84d0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8968.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "oversight in benos" diff --git a/html/changelogs/AutoChangeLog-pr-8970.yml b/html/changelogs/AutoChangeLog-pr-8970.yml deleted file mode 100644 index 304c9115dc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8970.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "original by @randolfthemeh and @twaticus, port by sishen1542" -delete-after: True -changes: - - rscadd: "jumpskirts" - - rscadd: "more jumpskirts" - - rscadd: "jumpskirt/suit prefs" diff --git a/html/changelogs/AutoChangeLog-pr-8971.yml b/html/changelogs/AutoChangeLog-pr-8971.yml deleted file mode 100644 index c5b5215ff9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8971.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - tweak: "slime people now enjoy eating toxic food and it will not disgust them" diff --git a/html/changelogs/AutoChangeLog-pr-8974.yml b/html/changelogs/AutoChangeLog-pr-8974.yml deleted file mode 100644 index b71dc88ecd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8974.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "EgoSumStultus" -delete-after: True -changes: - - bugfix: "Fixed blood chiller's inhand" diff --git a/html/changelogs/AutoChangeLog-pr-8976.yml b/html/changelogs/AutoChangeLog-pr-8976.yml deleted file mode 100644 index 67e7bbc11a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8976.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "combat pushes will now properly stop targets from using firearms, and will disarm the firearm if performed a second time, and also slow down people by 15%, and won't push people on tables blocked by shutters or other dense object anymore." diff --git a/html/changelogs/AutoChangeLog-pr-8978.yml b/html/changelogs/AutoChangeLog-pr-8978.yml deleted file mode 100644 index 56e3760e9c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8978.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Yakumo Chen" -delete-after: True -changes: - - balance: "Made stealth implant boxes flimsier" diff --git a/html/changelogs/AutoChangeLog-pr-8979.yml b/html/changelogs/AutoChangeLog-pr-8979.yml deleted file mode 100644 index f826fcd681..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8979.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes CHECK_BITFIELD macro." diff --git a/html/changelogs/AutoChangeLog-pr-8980.yml b/html/changelogs/AutoChangeLog-pr-8980.yml deleted file mode 100644 index caba11ae69..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8980.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes hypovials being unable to transfer out liquids or be refilled by large dispensers like water tanks." - - bugfix: "Fixes chem-masters machineries not dispensing newly made pills inside loaded in pill bottles." diff --git a/html/changelogs/AutoChangeLog-pr-8982.yml b/html/changelogs/AutoChangeLog-pr-8982.yml deleted file mode 100644 index 8599966d64..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8982.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie (original PR by Skoglol)" -delete-after: True -changes: - - bugfix: "Mining bags will no longer drop ore into backpack." - - bugfix: "Mining bags in backpack no longer interferes with other mining bags." - - bugfix: "Fixes some storage size circumventions." diff --git a/html/changelogs/AutoChangeLog-pr-8984.yml b/html/changelogs/AutoChangeLog-pr-8984.yml deleted file mode 100644 index 31c45cdbc6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8984.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "Stunswords now fit in the captain's sabre sheat." diff --git a/html/changelogs/AutoChangeLog-pr-8985.yml b/html/changelogs/AutoChangeLog-pr-8985.yml deleted file mode 100644 index 37aaa4162d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8985.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - bugfix: "hos trenchcloak now properly has a sprite on digi characters" diff --git a/html/changelogs/AutoChangeLog-pr-8986.yml b/html/changelogs/AutoChangeLog-pr-8986.yml deleted file mode 100644 index 810631f5f5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8986.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "reworked ninja's stealth mode. Increased invisibility, but engaging in combat, attacking or throwing things, bumping people will temporarily lower it." - - rscadd: "Ninja shoes are even stealthier." - - code_imp: "cleaned up some 2014 tier processing code horror." diff --git a/html/changelogs/AutoChangeLog-pr-8988.yml b/html/changelogs/AutoChangeLog-pr-8988.yml deleted file mode 100644 index 9145d73c01..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8988.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "kiwedespars" -delete-after: True -changes: - - rscadd: "regenerative materia to hallucination sting" - - rscadd: "mindbreaker toxin as an actual chemical to hallucination sting" diff --git a/html/changelogs/AutoChangeLog-pr-8991.yml b/html/changelogs/AutoChangeLog-pr-8991.yml deleted file mode 100644 index 138991e507..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8991.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "ports a fix" diff --git a/html/changelogs/AutoChangeLog-pr-8992.yml b/html/changelogs/AutoChangeLog-pr-8992.yml deleted file mode 100644 index 299792fee3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8992.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Chayse" -delete-after: True -changes: - - rscadd: "Assorted space-worthy helmets can now act as masks for internals." - - refactor: "Internals code can now check any item with the ALLOWSINTERNALS flag through the GET_INTERNAL_SLOTS define. For now this only checks head and mask slots, since those are the most realistically speaking usable ones." diff --git a/html/changelogs/AutoChangeLog-pr-8994.yml b/html/changelogs/AutoChangeLog-pr-8994.yml deleted file mode 100644 index a3a4fef0b7..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8994.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - tweak: "the oxyloss fullscreen overlays now also take in consideration 1/5 of the user stamina loss." diff --git a/html/changelogs/AutoChangeLog-pr-8995.yml b/html/changelogs/AutoChangeLog-pr-8995.yml deleted file mode 100644 index 76669d7821..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8995.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "When you're jogging, you will only slip on water if you have more than 20% staminaloss, for real this time." diff --git a/html/changelogs/AutoChangeLog-pr-8996.yml b/html/changelogs/AutoChangeLog-pr-8996.yml deleted file mode 100644 index 7c631e3301..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8996.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - imageadd: "Different cuffs now come with different worn overlays instead of a generic one." diff --git a/html/changelogs/AutoChangeLog-pr-8998.yml b/html/changelogs/AutoChangeLog-pr-8998.yml deleted file mode 100644 index 981e746fc9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8998.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "High luminosity eyes can now be properly deactivated and won't illuminate your surroundings again until turned back on." diff --git a/html/changelogs/AutoChangeLog-pr-8999.yml b/html/changelogs/AutoChangeLog-pr-8999.yml deleted file mode 100644 index 182e3a8409..0000000000 --- a/html/changelogs/AutoChangeLog-pr-8999.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - balance: "Chestbursters no longer give and remove your brain. They just disembowel and kill you now." diff --git a/html/changelogs/AutoChangeLog-pr-9000.yml b/html/changelogs/AutoChangeLog-pr-9000.yml deleted file mode 100644 index 3fa3e8946f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9000.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "EgoSumStultus" -delete-after: True -changes: - - bugfix: "FIXED SHIELF" diff --git a/html/changelogs/AutoChangeLog-pr-9001.yml b/html/changelogs/AutoChangeLog-pr-9001.yml deleted file mode 100644 index be2fd2b833..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9001.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - rscdel: "duplicate definition of hos and sec skirts" diff --git a/html/changelogs/AutoChangeLog-pr-9005.yml b/html/changelogs/AutoChangeLog-pr-9005.yml deleted file mode 100644 index d65017a00d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9005.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "QM rooms not getting Key Aunths" diff --git a/html/changelogs/AutoChangeLog-pr-9008.yml b/html/changelogs/AutoChangeLog-pr-9008.yml deleted file mode 100644 index 0c73bc8ae9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9008.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - bugfix: "Krav Maga leg sweep now works properly." diff --git a/html/changelogs/AutoChangeLog-pr-9009.yml b/html/changelogs/AutoChangeLog-pr-9009.yml deleted file mode 100644 index 21cf0c8d85..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9009.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - bugfix: "Fixes WarOps miscalculating players." diff --git a/html/changelogs/AutoChangeLog-pr-9010.yml b/html/changelogs/AutoChangeLog-pr-9010.yml deleted file mode 100644 index 52aed38e2c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9010.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - balance: "Activating the nuclear device during war-ops informs the crew of the nuke's position." diff --git a/html/changelogs/AutoChangeLog-pr-9014.yml b/html/changelogs/AutoChangeLog-pr-9014.yml deleted file mode 100644 index f217b64afd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9014.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes freshly cloned people starting with undershirts. Fixes random characters possibly rolling with undergarments of the opposite gender (Doesn't affect preferences' freedom of choice)." diff --git a/html/changelogs/AutoChangeLog-pr-9018.yml b/html/changelogs/AutoChangeLog-pr-9018.yml deleted file mode 100644 index 7acb63b426..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9018.yml +++ /dev/null @@ -1,12 +0,0 @@ -author: "Ghommie (original PRs by XDTM, optimumtact, Nichlas0010 and monster860)" -delete-after: True -changes: - - rscadd: "Added Quantum Keycards, devices that can link to a quantum pad, and can be used on any other quantum pad to teleport to its linked pad. -spellchecking: Renamed \"Bluespace Teleportation Tech\" tech node to \"Bluespace Travel\"." - - tweak: "Moved roasting sticks from the \"Bluespace Travel\" to \"Practical Bluespace\"." - - rscadd: "Spraying holy water on tiles will now prevent cult-based teleportation from using them as a destination point." - - tweak: "Quantum, wormhole and magic teleportation is no longer disrupted by bags of holding." - - bugfix: "You are now also blocked from teleporting IN to no-teleport areas, not just out of them." - - tweak: "Quantum teleportation now makes pretty rainbow sparks instead of the normal ones." - - bugfix: "Non-bluespace teleportation (spells etc.) no longer makes sparks." - - bugfix: "Fixed teleportation deleting mob spawners like golem shells and ashwalker eggs." diff --git a/html/changelogs/AutoChangeLog-pr-9019.yml b/html/changelogs/AutoChangeLog-pr-9019.yml deleted file mode 100644 index 8006c134e3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9019.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - balance: "MRE menu 3 has cuban nachos instead of a chili now." - - bugfix: "Removed the illustration overlay from MREs, looks pretty weird otherwise." - - rscadd: "MRE menu 4, vegetarian." diff --git a/html/changelogs/AutoChangeLog-pr-9021.yml b/html/changelogs/AutoChangeLog-pr-9021.yml deleted file mode 100644 index e8809f1d7e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9021.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (by Floyd / Qustinnus, Arathian)" -delete-after: True -changes: - - rscadd: "The robotocist now has robe to show his love for toasters" diff --git a/html/changelogs/AutoChangeLog-pr-9022.yml b/html/changelogs/AutoChangeLog-pr-9022.yml deleted file mode 100644 index 4fb48506e4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9022.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (by nemvar)" -delete-after: True -changes: - - tweak: "Dwarfs are now more robust." diff --git a/html/changelogs/AutoChangeLog-pr-9024.yml b/html/changelogs/AutoChangeLog-pr-9024.yml deleted file mode 100644 index 1d75959c79..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9024.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (by Arkatos)" -delete-after: True -changes: - - bugfix: "Fixed an issue with a Lizardwine drink crafting, where a final product would contain unwated 100u of Ethanol." diff --git a/html/changelogs/AutoChangeLog-pr-9026.yml b/html/changelogs/AutoChangeLog-pr-9026.yml deleted file mode 100644 index bf8ce9efbe..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9026.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - rscadd: "The alert level is displayed at the job selection screen." diff --git a/html/changelogs/AutoChangeLog-pr-9030.yml b/html/changelogs/AutoChangeLog-pr-9030.yml deleted file mode 100644 index 94c797433a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9030.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CameronWoof" -delete-after: True -changes: - - bugfix: "Attaching a beaker that contains water to an IV stand no longer causes a visual glitch" diff --git a/html/changelogs/AutoChangeLog-pr-9032.yml b/html/changelogs/AutoChangeLog-pr-9032.yml deleted file mode 100644 index 53adfa0920..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9032.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Ghommie (original PRs by subject217, AarontheIdiot, pireamaineach, Gousaid67 and SouDescolado)" -delete-after: True -changes: - - balance: "Removed plasmamen species speedmod in favor of a slowdown for envirosuits." - - rscadd: "Nanotrasen has began deploying departementalized enviro plasmasuits to the station! plasmamens can now benefit from some of the bonuses aswell as the color pattern of their job, while allowing others to easily determine their profession!" - - bugfix: "Benevolent Nanotrasen makes gulag available for everyone! (Plasmamen retain their equipment and don't die.)" - - rscdel: "Removes code that theoretically limits plasmamen from being clowns and mimes, but actually doesn't." diff --git a/html/changelogs/AutoChangeLog-pr-9033.yml b/html/changelogs/AutoChangeLog-pr-9033.yml deleted file mode 100644 index 3e69bc9486..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9033.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "EgoSumStultus" -delete-after: True -changes: - - bugfix: "fixed magpistol magazine sprites" diff --git a/html/changelogs/AutoChangeLog-pr-9036.yml b/html/changelogs/AutoChangeLog-pr-9036.yml deleted file mode 100644 index afd2882fc3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9036.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - rscadd: "shoes can have a different icon used for their item and mob icons" - - bugfix: "combat gloves plus having no mob icon" diff --git a/html/changelogs/AutoChangeLog-pr-9040.yml b/html/changelogs/AutoChangeLog-pr-9040.yml deleted file mode 100644 index 33958a2ece..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9040.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "new books/cooking" diff --git a/html/changelogs/AutoChangeLog-pr-9042.yml b/html/changelogs/AutoChangeLog-pr-9042.yml deleted file mode 100644 index 38c4006383..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9042.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "EgoSumStultus" -delete-after: True -changes: - - rscadd: "Added the Femur Breaker" diff --git a/html/changelogs/AutoChangeLog-pr-9043.yml b/html/changelogs/AutoChangeLog-pr-9043.yml deleted file mode 100644 index 14c9331e5b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9043.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "chef" -delete-after: True -changes: - - rscadd: "Added main hallway approach to monastery" - - rscadd: "Added Maintenance hallway approach, with some maint loot" - - tweak: "moved the docking arm for the white ship" - - tweak: "changed placement of some grills and windows" diff --git a/html/changelogs/AutoChangeLog-pr-9044.yml b/html/changelogs/AutoChangeLog-pr-9044.yml deleted file mode 100644 index 6133ea45e9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9044.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Original by Citinited, port by Sishen1542" -delete-after: True -changes: - - rscadd: "You can now use an airlock electronics on a locker to add a lock, and can screwdriver an unlocked locker to remove its lock." - - rscadd: "You can now remove the locks on broken or emagged lockers." - - tweak: "Removing the lock from a personal locker now wipes that locker's ID details." - - tweak: "Broken lockers have had their appearance changed." diff --git a/html/changelogs/AutoChangeLog-pr-9045.yml b/html/changelogs/AutoChangeLog-pr-9045.yml deleted file mode 100644 index 8917707ae3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9045.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "CameronWoof" -delete-after: True -changes: - - tweak: "Fluid-producing sexual organs no longer start full" - - tweak: "Sexual organ fluid capacity decreased from 50 to 15" - - tweak: "Sexual organ production rate decreased from 5u to 0.035u per two seconds." - - tweak: "Sexual fluid decals no longer contain reagents" - - tweak: "Sexual fluids cannot by synthesized (e.g., by the Odysseus)" diff --git a/html/changelogs/AutoChangeLog-pr-9046.yml b/html/changelogs/AutoChangeLog-pr-9046.yml deleted file mode 100644 index 24e7035a88..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9046.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - tweak: "density = 0" diff --git a/html/changelogs/AutoChangeLog-pr-9047.yml b/html/changelogs/AutoChangeLog-pr-9047.yml deleted file mode 100644 index 1f024b71e3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9047.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Added RGB blood effects, know whose blood this is by color!" - - rscadd: "Added Synthetics blood, and a machine that produces it. A universal donor for medical to heal people with. Make it via medical protolathe!" - - bugfix: "With hearts, slimepeople shouldn't die from the effects of not having a heart." - - bugfix: "Plasma vessels from xenomorphs will restore blood if you're on resin." diff --git a/html/changelogs/AutoChangeLog-pr-9050.yml b/html/changelogs/AutoChangeLog-pr-9050.yml deleted file mode 100644 index 3b12a12f17..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9050.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "fixes a few bad touchs on combat mode pushing." diff --git a/html/changelogs/AutoChangeLog-pr-9052.yml b/html/changelogs/AutoChangeLog-pr-9052.yml deleted file mode 100644 index a75b6c51ae..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9052.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - balance: "Hierophant now goes sicko mode, but hey, at least you can't be multi-hit by melee waves!" diff --git a/html/changelogs/AutoChangeLog-pr-9054.yml b/html/changelogs/AutoChangeLog-pr-9054.yml deleted file mode 100644 index 5952c9ecfd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9054.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - balance: "hugboxing mining loot" diff --git a/html/changelogs/AutoChangeLog-pr-9057.yml b/html/changelogs/AutoChangeLog-pr-9057.yml deleted file mode 100644 index 4df1b23ca7..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9057.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "EgoSumStultus" -delete-after: True -changes: - - rscadd: "Adds male AI vox." diff --git a/html/changelogs/AutoChangeLog-pr-9061.yml b/html/changelogs/AutoChangeLog-pr-9061.yml deleted file mode 100644 index 4fc9d10ba5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9061.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "The femur breaker now uses `*scream` instead of forced speech. This means that the femur breaker will no longer spam deadchat with \"AAAAAAAAAHHHHHHHHHH!!\"" - - tweak: "The femur breaker will now guarantee that the victim falls into crit, which will make it harder to perform torture scenes with it since the victim can just succumb." diff --git a/html/changelogs/AutoChangeLog-pr-9062.yml b/html/changelogs/AutoChangeLog-pr-9062.yml deleted file mode 100644 index 12102204c3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9062.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - spellcheck: "less bad wording in slime" diff --git a/html/changelogs/AutoChangeLog-pr-9064.yml b/html/changelogs/AutoChangeLog-pr-9064.yml deleted file mode 100644 index 6e775c1eb4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9064.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Cebutris" -delete-after: True -changes: - - rscadd: "Hugs of the North Star! Get them from the arcades (if you're lucky) and hug your friends at INCREDIBLE hihg speeds!" diff --git a/html/changelogs/AutoChangeLog-pr-9069.yml b/html/changelogs/AutoChangeLog-pr-9069.yml deleted file mode 100644 index 0439515dd3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9069.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes clock cult Abscond scripture not dragging pulled mobs into Reebe. Also fixes blood cult tele runes teleporting you from the source turf to the source turf." diff --git a/html/changelogs/AutoChangeLog-pr-9070.yml b/html/changelogs/AutoChangeLog-pr-9070.yml deleted file mode 100644 index 2013550dd2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9070.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - rscadd: "inhands sprite for rainbow knife" - - tweak: "colour of highlight on the regular knife when held in the right hand" diff --git a/html/changelogs/AutoChangeLog-pr-9071.yml b/html/changelogs/AutoChangeLog-pr-9071.yml deleted file mode 100644 index 40ae43867f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9071.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Yakumo Chen" -delete-after: True -changes: - - balance: "Autocloning now requires tier 4 parts" diff --git a/html/changelogs/AutoChangeLog-pr-9077.yml b/html/changelogs/AutoChangeLog-pr-9077.yml deleted file mode 100644 index 2f42e36dd6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9077.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "original by actioninja, port by sishen1542" -delete-after: True -changes: - - tweak: "Medical and Security consoles now check access on worn or inhand ID instead of requiring an inserted ID" - - tweak: "mining vendor now reads from ID in hand or on person instead of requiring an inserted ID" - - bugfix: "ORM is functional again (for real this time)" - - tweak: "ORM claim points button transfers points to worn/inhand ID instead of to an inserted ID, no longer accepts insertions" - - tweak: "Same for gulag consoles" diff --git a/html/changelogs/AutoChangeLog-pr-9078.yml b/html/changelogs/AutoChangeLog-pr-9078.yml deleted file mode 100644 index 2e202ec43a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9078.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "kappa-sama" -delete-after: True -changes: - - rscdel: "Removed racism" - - tweak: "Teleporter calibration actually matters to all roundstart players" - - balance: "Slows down teleportation with the console/hub/teleporter setup if you care for your species." - - balance: "Dedicated non-humans can now get hulk without having to become human." diff --git a/html/changelogs/AutoChangeLog-pr-9079.yml b/html/changelogs/AutoChangeLog-pr-9079.yml deleted file mode 100644 index 42aa732e16..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9079.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - balance: "ling blade now has 40 armor pen" diff --git a/html/changelogs/AutoChangeLog-pr-9080.yml b/html/changelogs/AutoChangeLog-pr-9080.yml deleted file mode 100644 index 1ae1e3e2aa..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9080.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - rscadd: "Adds 3 new music tracks." diff --git a/html/changelogs/AutoChangeLog-pr-9081.yml b/html/changelogs/AutoChangeLog-pr-9081.yml deleted file mode 100644 index c66148e446..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9081.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerBB" -delete-after: True -changes: - - balance: "Central Command informs you when a Meteor Storm is about to hit 5 to 10 minutes before it happens." diff --git a/html/changelogs/AutoChangeLog-pr-9083.yml b/html/changelogs/AutoChangeLog-pr-9083.yml deleted file mode 100644 index 74b4d95ca3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9083.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "strawbarries and such" diff --git a/html/changelogs/AutoChangeLog-pr-9084.yml b/html/changelogs/AutoChangeLog-pr-9084.yml deleted file mode 100644 index c2569d10b4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9084.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "fixes clock cult mass recall." diff --git a/html/changelogs/AutoChangeLog-pr-9085.yml b/html/changelogs/AutoChangeLog-pr-9085.yml deleted file mode 100644 index 92f5dc4cf8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9085.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes underwear colors a bit." diff --git a/html/changelogs/AutoChangeLog-pr-9086.yml b/html/changelogs/AutoChangeLog-pr-9086.yml deleted file mode 100644 index 4dea682d47..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9086.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "original by TheChosenEvilOne, port by sishen1542" -delete-after: True -changes: - - rscadd: "Ported dynamic mode from /vg/, originally made by @DeityLink, @Kurfursten and @ShiftyRail" diff --git a/html/changelogs/AutoChangeLog-pr-9089.yml b/html/changelogs/AutoChangeLog-pr-9089.yml deleted file mode 100644 index dc1e351f25..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9089.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "original by Tlaltecuhtli, port by sishen1542" -delete-after: True -changes: - - rscadd: "rcd disk that gives rcd computer frame and machine frame designs" - - rscadd: "upgraded rcd in CE lockers" - - tweak: "moved deconstruction to the upgrade disk, ashwalker rcd comes upgraded" diff --git a/html/changelogs/AutoChangeLog-pr-9097.yml b/html/changelogs/AutoChangeLog-pr-9097.yml deleted file mode 100644 index 941c0e7b98..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9097.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "lolman360" -delete-after: True -changes: - - rscadd: "NT has authorized shipments or Cotton to Megaseed Servitors. It's time to start picking, liggers." diff --git a/html/changelogs/AutoChangeLog-pr-9098.yml b/html/changelogs/AutoChangeLog-pr-9098.yml deleted file mode 100644 index 6e11eaeb90..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9098.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Cebutris" -delete-after: True -changes: - - bugfix: "Tea Aspera now properly contains tea powder" diff --git a/html/changelogs/AutoChangeLog-pr-9099.yml b/html/changelogs/AutoChangeLog-pr-9099.yml deleted file mode 100644 index d3caa658f2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9099.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - tweak: "tweaked Neurotoxin" - - balance: "added more depth to Neurotoxin" - - bugfix: "fixed the inability to create Neurotoxin" diff --git a/html/changelogs/AutoChangeLog-pr-9100.yml b/html/changelogs/AutoChangeLog-pr-9100.yml deleted file mode 100644 index 81141b3b0c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9100.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Cebutris" -delete-after: True -changes: - - tweak: "Breasts no longer lactate by default, lactation is now a preference" diff --git a/html/changelogs/AutoChangeLog-pr-9101.yml b/html/changelogs/AutoChangeLog-pr-9101.yml deleted file mode 100644 index 174619dd49..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9101.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542, original by XDTM" -delete-after: True -changes: - - rscadd: "Surgery steps are now shown in detail only to the surgeon and anyone standing adjacent to them; the patient and people watching from further away get a more vague/ambiguous description." diff --git a/html/changelogs/AutoChangeLog-pr-9107.yml b/html/changelogs/AutoChangeLog-pr-9107.yml deleted file mode 100644 index 65a14b9576..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9107.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Bhijn" -delete-after: True -changes: - - bugfix: "You can now actually use the resist hotkey to resist out of handcuffs. Woah, revolutionary" diff --git a/html/changelogs/AutoChangeLog-pr-9109.yml b/html/changelogs/AutoChangeLog-pr-9109.yml deleted file mode 100644 index 137ca7f325..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9109.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "amazing things like tea of catnip, catnip and plant" diff --git a/html/changelogs/AutoChangeLog-pr-9113.yml b/html/changelogs/AutoChangeLog-pr-9113.yml deleted file mode 100644 index 1bdae7cab9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9113.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - bugfix: "fixes fermichem reactions for tiny volumes work" - - tweak: "makes quantisation level for chemistry finer" diff --git a/html/changelogs/AutoChangeLog-pr-9115.yml b/html/changelogs/AutoChangeLog-pr-9115.yml deleted file mode 100644 index 32c3109c43..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9115.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Thalpy" -delete-after: True -changes: - - bugfix: "fixes message_admins in SDZF" diff --git a/html/changelogs/AutoChangeLog-pr-9119.yml b/html/changelogs/AutoChangeLog-pr-9119.yml deleted file mode 100644 index 756c3edcb2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9119.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - rscadd: "mining shuttle console can now be printed after computer consoles have been researched" diff --git a/html/changelogs/AutoChangeLog-pr-9122.yml b/html/changelogs/AutoChangeLog-pr-9122.yml deleted file mode 100644 index 1d3ff248fb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9122.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - rscadd: "fun" - - rscdel: "bad stuff" - - balance: "mech bad" diff --git a/html/changelogs/AutoChangeLog-pr-9126.yml b/html/changelogs/AutoChangeLog-pr-9126.yml deleted file mode 100644 index c3e54a8f2d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9126.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "original by Skoglol, port by sishen1542" -delete-after: True -changes: - - balance: "Added lots of new virus cures, made cure difficulty scale more consistently. Cures are now picked from a list of possible cures per resistance level, multiple diseases at the same level no longer always share a cure. Looking at you table salt." diff --git a/html/changelogs/AutoChangeLog-pr-9130.yml b/html/changelogs/AutoChangeLog-pr-9130.yml deleted file mode 100644 index f10e72a6ce..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9130.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "Owai-Seek" -delete-after: True -changes: - - rscadd: "custodial cruiser cargo crate" - - tweak: "removed light replacer from power designs and moved to misc designs" - - tweak: "added pimpin ride to custodial locator" - - tweak: "added additional items to janibelt whitelist" - - tweak: "made plant DNA manipulator unwrenchable" - - balance: "reduced janitor premium supply costs" diff --git a/html/changelogs/AutoChangeLog-pr-9132.yml b/html/changelogs/AutoChangeLog-pr-9132.yml deleted file mode 100644 index f9dee17687..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9132.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Toriate" -delete-after: True -changes: - - imageadd: "Updated the sprites of all the regular crates" diff --git a/html/changelogs/AutoChangeLog-pr-9133.yml b/html/changelogs/AutoChangeLog-pr-9133.yml deleted file mode 100644 index 50bfced879..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9133.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Raptorizer" -delete-after: True -changes: - - tweak: "Doubled peach spawn rate" diff --git a/html/changelogs/AutoChangeLog-pr-9134.yml b/html/changelogs/AutoChangeLog-pr-9134.yml deleted file mode 100644 index f0be3bdd0a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9134.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Arturlang" -delete-after: True -changes: - - tweak: "Advanced toxin filtration nanites now heal slimes" diff --git a/html/changelogs/AutoChangeLog-pr-9136.yml b/html/changelogs/AutoChangeLog-pr-9136.yml deleted file mode 100644 index 7bb9e3ccf2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9136.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - balance: "rebalances strained muscles" diff --git a/html/changelogs/AutoChangeLog-pr-9137.yml b/html/changelogs/AutoChangeLog-pr-9137.yml deleted file mode 100644 index a61a3dbe6f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9137.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - rscadd: "added in the assistant response team" - - bugfix: "fixed up access on the centcom hangar button" diff --git a/html/changelogs/AutoChangeLog-pr-9138.yml b/html/changelogs/AutoChangeLog-pr-9138.yml deleted file mode 100644 index b78d505c5a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9138.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kappa-sama" -delete-after: True -changes: - - bugfix: "seed" diff --git a/html/changelogs/AutoChangeLog-pr-9141.yml b/html/changelogs/AutoChangeLog-pr-9141.yml deleted file mode 100644 index 86230537de..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9141.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Fixed another runtime in warp whistles." diff --git a/html/changelogs/AutoChangeLog-pr-9142.yml b/html/changelogs/AutoChangeLog-pr-9142.yml deleted file mode 100644 index 75fbfe4155..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9142.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "glue uplinks" diff --git a/html/changelogs/AutoChangeLog-pr-9145.yml b/html/changelogs/AutoChangeLog-pr-9145.yml deleted file mode 100644 index 27e5712dd0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9145.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "RPDs to drones" diff --git a/html/changelogs/AutoChangeLog-pr-9147.yml b/html/changelogs/AutoChangeLog-pr-9147.yml deleted file mode 100644 index 7f1dcb7e7e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9147.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Code-Cygnet" -delete-after: True -changes: - - rscadd: "Added new things - Mind trait, alcohol reagent, chemical reagent, drink sprite and recipe." - - imageadd: "added commander_and_chief sprite to drinks.dmi" diff --git a/html/changelogs/AutoChangeLog-pr-9149.yml b/html/changelogs/AutoChangeLog-pr-9149.yml deleted file mode 100644 index 8a10035d1f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9149.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Armor and such" diff --git a/html/changelogs/AutoChangeLog-pr-9150.yml b/html/changelogs/AutoChangeLog-pr-9150.yml deleted file mode 100644 index 585ea0a149..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9150.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "flavor" - - bugfix: "maybe a runtime" diff --git a/html/changelogs/AutoChangeLog-pr-9151.yml b/html/changelogs/AutoChangeLog-pr-9151.yml deleted file mode 100644 index ed01c0d137..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9151.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "chameloen clothing" diff --git a/html/changelogs/AutoChangeLog-pr-9155.yml b/html/changelogs/AutoChangeLog-pr-9155.yml deleted file mode 100644 index ad16ff6276..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9155.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - server: "Poly's speech now echos to the chat bot." diff --git a/html/changelogs/AutoChangeLog-pr-9162.yml b/html/changelogs/AutoChangeLog-pr-9162.yml deleted file mode 100644 index a415ce8bbc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9162.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - balance: "storage tweaks for belt briefcase" - - imageadd: "codersprite for belt briefcase" diff --git a/html/changelogs/AutoChangeLog-pr-9164.yml b/html/changelogs/AutoChangeLog-pr-9164.yml deleted file mode 100644 index 08d7ccec18..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9164.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "lolman360" -delete-after: True -changes: - - imageadd: "missing durathread sprites" diff --git a/html/changelogs/AutoChangeLog-pr-9169.yml b/html/changelogs/AutoChangeLog-pr-9169.yml deleted file mode 100644 index 2a9d3ae34b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9169.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "EmeraldSundisk" -delete-after: True -changes: - - rscadd: "Adds a mass driver to Delta Station's chapel" - - rscadd: "Adds a second means of entry into the chapel" - - tweak: "Slightly expands the chapel to make room for the driver, slight adjustment to air systems" - - tweak: "Clears a path in the station exterior for the mass driver to work properly" - - tweak: "Nearby maintenance loot has been relocated to accommodate the chapel expansion, surrounding area has been \"cleaned up\" somewhat" diff --git a/html/changelogs/AutoChangeLog-pr-9170.yml b/html/changelogs/AutoChangeLog-pr-9170.yml deleted file mode 100644 index 566d427605..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9170.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "tons of peach themed items" - - spellcheck: "caje" diff --git a/html/changelogs/AutoChangeLog-pr-9172.yml b/html/changelogs/AutoChangeLog-pr-9172.yml deleted file mode 100644 index 751cfa6d26..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9172.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - rscadd: "Racking shotguns is now more threatening." diff --git a/html/changelogs/AutoChangeLog-pr-9175.yml b/html/changelogs/AutoChangeLog-pr-9175.yml deleted file mode 100644 index d3aa92d42d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9175.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "lolman360" -delete-after: True -changes: - - rscadd: "Added durathread jumpskirt" - - imageadd: "Duraskirt sprites and rolled down jumpsuit sprites." diff --git a/html/changelogs/AutoChangeLog-pr-9177.yml b/html/changelogs/AutoChangeLog-pr-9177.yml deleted file mode 100644 index 4b8a06c8af..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9177.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "JTGSZ" -delete-after: True -changes: - - tweak: "Added one more gang boss slot bringing total to 4 from 3" - - bugfix: "Fixed Gang Boss being able to be deconverted" diff --git a/html/changelogs/AutoChangeLog-pr-9178.yml b/html/changelogs/AutoChangeLog-pr-9178.yml deleted file mode 100644 index 2a6de13f5e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9178.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Bhijn" -delete-after: True -changes: - - bugfix: "the `!tgs poly` command now actually works" diff --git a/html/changelogs/AutoChangeLog-pr-9180.yml b/html/changelogs/AutoChangeLog-pr-9180.yml deleted file mode 100644 index e184ad3205..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9180.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Bhijn" -delete-after: True -changes: - - rscadd: "Poly now has a 0.01% chance per squawk to speak through the TGS relay." diff --git a/html/changelogs/AutoChangeLog-pr-9183.yml b/html/changelogs/AutoChangeLog-pr-9183.yml deleted file mode 100644 index dc5b5a8bdb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9183.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes Blood Cult conversion prompts" diff --git a/html/changelogs/AutoChangeLog-pr-9184.yml b/html/changelogs/AutoChangeLog-pr-9184.yml deleted file mode 100644 index d0b4d1fa7e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9184.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscdel: "Removes an obnoxious temporary overlay var." diff --git a/html/changelogs/AutoChangeLog-pr-9186.yml b/html/changelogs/AutoChangeLog-pr-9186.yml deleted file mode 100644 index f0497ee7c2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9186.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - rscadd: "added pharaoh gear to chaplain vendor" - - spellcheck: "fixed typos in pharaoh items" diff --git a/html/changelogs/AutoChangeLog-pr-9189.yml b/html/changelogs/AutoChangeLog-pr-9189.yml deleted file mode 100644 index cf9b0c70a3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9189.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - rscadd: "made laser minigun not shitcode and also craftable" - - soundadd: "added new fire sounds for the laser minigun" diff --git a/html/changelogs/AutoChangeLog-pr-9191.yml b/html/changelogs/AutoChangeLog-pr-9191.yml deleted file mode 100644 index 242e268017..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9191.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - rscadd: "can now carry people on your back by aggressive grabbing them while they are laying down and then dragging their sprite onto yours." - - tweak: "dragging people who are prone is now much slower, and carrying them will allow you to move faster at the cost of taking 5 seconds to lift them up onto your back." - - tweak: "pacifists can now aggressive grab (cannot table slam people though)" diff --git a/html/changelogs/AutoChangeLog-pr-9194.yml b/html/changelogs/AutoChangeLog-pr-9194.yml deleted file mode 100644 index 24299209ea..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9194.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kappa-sama" -delete-after: True -changes: - - tweak: "added obj/item/key to wallet whitelist" diff --git a/html/changelogs/AutoChangeLog-pr-9198.yml b/html/changelogs/AutoChangeLog-pr-9198.yml deleted file mode 100644 index f06767334d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9198.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "New book - Unused" - - code_imp: "organized files" diff --git a/html/changelogs/AutoChangeLog-pr-9199.yml b/html/changelogs/AutoChangeLog-pr-9199.yml deleted file mode 100644 index bf0219c7d9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9199.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - balance: "added a small fire delay (3 ticks) to automatic shotguns" - - balance: "Reduced buckshot brute damage by 20%. (12.5 -> 10 brute per pellet) (75 -> 60 brute at close range)" - - balance: "Reduced rubbershot stamina damage by 40% (25 -> 15 stamina per pellet) (150 -> 90 stamina at close range)" - - balance: "Reduced beanbag stamina damage by 12.5% (80 -> 70 stamina per shot)" diff --git a/html/changelogs/AutoChangeLog-pr-9200.yml b/html/changelogs/AutoChangeLog-pr-9200.yml deleted file mode 100644 index d1be09ee4a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9200.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Owai-Seek" -delete-after: True -changes: - - bugfix: "fixed them strawberries" diff --git a/html/changelogs/AutoChangeLog-pr-9203.yml b/html/changelogs/AutoChangeLog-pr-9203.yml deleted file mode 100644 index 0ad87d26c1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9203.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - imageadd: "redid brass tools to look better*" diff --git a/html/changelogs/AutoChangeLog-pr-9204.yml b/html/changelogs/AutoChangeLog-pr-9204.yml deleted file mode 100644 index 3b70354fd9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9204.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "/cursed from a item path" diff --git a/html/changelogs/AutoChangeLog-pr-9208.yml b/html/changelogs/AutoChangeLog-pr-9208.yml deleted file mode 100644 index 1645164266..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9208.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "colorable socks can be colored again." diff --git a/html/changelogs/AutoChangeLog-pr-9209.yml b/html/changelogs/AutoChangeLog-pr-9209.yml deleted file mode 100644 index 5ed81d6856..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9209.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "original by redmoogle, port by sishen1542" -delete-after: True -changes: - - rscadd: "Added support for 3 new gasses; Tritium, Pluoxium, and BZ" diff --git a/html/changelogs/AutoChangeLog-pr-9210.yml b/html/changelogs/AutoChangeLog-pr-9210.yml deleted file mode 100644 index b02811e7a8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9210.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "EmeraldSundisk" -delete-after: True -changes: - - tweak: "CentCom has noticed the lack of coffins in Delta Station's chapel and provided some, but in exchange for reducing the chapel morgue's capacity." - - tweak: "Fixed a maintenance door the chaplain should have been able to open." - - bugfix: "Fixes space areas outside the driver -removal: CentCom Defense Analysts have ordered the maintenance hatch to the Mass Driver room be removed citing \"security concerns\"." diff --git a/html/changelogs/AutoChangeLog-pr-9211.yml b/html/changelogs/AutoChangeLog-pr-9211.yml deleted file mode 100644 index ab5eeb4e45..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9211.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Almost all clothing and most weaponds can be sold for pocket change" - - tweak: "Cargo costs of packets and selling" - - balance: "Lowered mat selling as well as most if not all bountys" - - code_imp: "Adds more files for easy finding/adding in packs" diff --git a/html/changelogs/AutoChangeLog-pr-9212.yml b/html/changelogs/AutoChangeLog-pr-9212.yml deleted file mode 100644 index 48e8b8b4d3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9212.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "dapnee" -delete-after: True -changes: - - rscadd: "Plasmaglass tables, spears, tiny plasmaglass shards" - - bugfix: "Plasmaglass structures now drop plasmaglass shards instead of nothing" diff --git a/html/changelogs/AutoChangeLog-pr-9214.yml b/html/changelogs/AutoChangeLog-pr-9214.yml deleted file mode 100644 index edc41426f2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9214.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "original by GuyonBroadway, SkowronX, and Arizon5. port by sishen1542 and kerse" -delete-after: True -changes: - - rscadd: "Clockwork cultists may now summon forth Neovgre, the ratvrarian super weapon. This powerful mech can be summoned when applications scripture has been unlocked, boasts superior offensive and defensive capabilities, however once a pilot enters he cannot leave and is doomed to die with the mech." - - imageadd: "Sexy Sprite work courtesy or SkowronX from /tg/" - - imageadd: "brass edits by Arizon5" - - soundadd: "steamy laser by kerse" diff --git a/html/changelogs/AutoChangeLog-pr-9216.yml b/html/changelogs/AutoChangeLog-pr-9216.yml deleted file mode 100644 index 0be9314dbc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9216.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "oops not being blacklisted" diff --git a/html/changelogs/AutoChangeLog-pr-9219.yml b/html/changelogs/AutoChangeLog-pr-9219.yml deleted file mode 100644 index 138991e507..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9219.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "ports a fix" diff --git a/html/changelogs/AutoChangeLog-pr-9221.yml b/html/changelogs/AutoChangeLog-pr-9221.yml deleted file mode 100644 index 0256c4a7c9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9221.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - rscadd: "holy lasrifle, hypertool, divine lightblade, and blessed baseball bat. Four new holy weapons!" - - balance: "stamina and force tweaks for most holy weapons." - - tweak: "prayer beads no longer deconvert after a 10 second timer, now just inject holy water for delayed effect" - - tweak: "cultist runes are now destroyed with a bible or a null rod" - - tweak: "bo-staff now functions as a nerfed sleepy carp staff" - - bugfix: "fixed kevinz code to add in non-null rod child items as holy weapons" diff --git a/html/changelogs/AutoChangeLog-pr-9226.yml b/html/changelogs/AutoChangeLog-pr-9226.yml deleted file mode 100644 index 17bafbf36b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9226.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - code_imp: "removes some cit-modular things" diff --git a/html/changelogs/AutoChangeLog-pr-9227.yml b/html/changelogs/AutoChangeLog-pr-9227.yml deleted file mode 100644 index 9f6bfabdc4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9227.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "Missing sprites with bad ones" diff --git a/html/changelogs/AutoChangeLog-pr-9229.yml b/html/changelogs/AutoChangeLog-pr-9229.yml deleted file mode 100644 index 5c617f6ab0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9229.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "emag charge amount" diff --git a/html/changelogs/AutoChangeLog-pr-9234.yml b/html/changelogs/AutoChangeLog-pr-9234.yml deleted file mode 100644 index 47fc449e73..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9234.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Reebe QoL aka creep in gear" - - bugfix: "???" - - server: "HEY MADE THE REEBEEE WAY SMALLER - Making it less lagging hopefully" diff --git a/html/changelogs/AutoChangeLog-pr-9235.yml b/html/changelogs/AutoChangeLog-pr-9235.yml deleted file mode 100644 index 112f34a7f0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9235.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Yakumo Chen" -delete-after: True -changes: - - rscdel: "Removes autoscan" - - balance: "Scanning people now requires someone to operate the cloning computer regardless of part level." diff --git a/html/changelogs/AutoChangeLog-pr-9238.yml b/html/changelogs/AutoChangeLog-pr-9238.yml deleted file mode 100644 index b2eb8db233..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9238.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Surgerys and spays in bags" diff --git a/html/changelogs/AutoChangeLog-pr-9239.yml b/html/changelogs/AutoChangeLog-pr-9239.yml deleted file mode 100644 index 781dcd82b6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9239.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "earthbloods stam regen" diff --git a/html/changelogs/AutoChangeLog-pr-9241.yml b/html/changelogs/AutoChangeLog-pr-9241.yml deleted file mode 100644 index 1cb08cd8d0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9241.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Alonefromhell" -delete-after: True -changes: - - rscadd: "Ported Oracle UI, a framework for self-updating and neat UI's" - - refactor: "Paper now uses OUI" - - refactor: "Bins now use OUI" diff --git a/html/changelogs/AutoChangeLog-pr-9242.yml b/html/changelogs/AutoChangeLog-pr-9242.yml deleted file mode 100644 index 1e47385e67..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9242.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kappa-sama" -delete-after: True -changes: - - tweak: "blood cult ritual daggers fit in jack/combat boots" diff --git a/html/changelogs/AutoChangeLog-pr-9246.yml b/html/changelogs/AutoChangeLog-pr-9246.yml deleted file mode 100644 index adffae737b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9246.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - bugfix: "blood on your body floating a bit to your right if you're a taur" - - bugfix: "some suits having no icon on tauric characters" - - tweak: "front facing CMO hardsuit icon for naga taurs" - - tweak: "colour of medical cross on CMO hardsuit for taurs" - - bugfix: "taur body and jumpsuit showing through mining suits" diff --git a/html/changelogs/AutoChangeLog-pr-9247.yml b/html/changelogs/AutoChangeLog-pr-9247.yml deleted file mode 100644 index 4f6e0b0875..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9247.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Fermi" -delete-after: True -changes: - - bugfix: "Fixes tiny runaway decimals in reagents system." diff --git a/html/changelogs/AutoChangeLog-pr-9248.yml b/html/changelogs/AutoChangeLog-pr-9248.yml deleted file mode 100644 index 3e6eff727c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9248.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - imageadd: "Red to Blue/Black crosses as questioned by Bhijn" diff --git a/html/changelogs/AutoChangeLog-pr-9249.yml b/html/changelogs/AutoChangeLog-pr-9249.yml deleted file mode 100644 index b2ef0c2d46..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9249.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "clean bot not cleaning basic cleanables" diff --git a/html/changelogs/AutoChangeLog-pr-9251.yml b/html/changelogs/AutoChangeLog-pr-9251.yml deleted file mode 100644 index c40c2e05fc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9251.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - tweak: "all chaplain suits can hold the same items in suit storage" - - code_imp: "improvement to organisation for chaplain suits" diff --git a/html/changelogs/AutoChangeLog-pr-9256.yml b/html/changelogs/AutoChangeLog-pr-9256.yml deleted file mode 100644 index dcf039a2a0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9256.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Fermi" -delete-after: True -changes: - - bugfix: "SDGF: Fixes infinite clones." diff --git a/html/changelogs/AutoChangeLog-pr-9257.yml b/html/changelogs/AutoChangeLog-pr-9257.yml deleted file mode 100644 index 79b5ae3645..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9257.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Fermi" -delete-after: True -changes: - - bugfix: "fixed an angery PR" diff --git a/html/changelogs/AutoChangeLog-pr-9260.yml b/html/changelogs/AutoChangeLog-pr-9260.yml deleted file mode 100644 index f94d9772f9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9260.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "dapnee" -delete-after: True -changes: - - rscadd: "Trim lines!" diff --git a/html/changelogs/AutoChangeLog-pr-9263.yml b/html/changelogs/AutoChangeLog-pr-9263.yml deleted file mode 100644 index 36a03fa125..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9263.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "new traitor bundle" diff --git a/html/changelogs/AutoChangeLog-pr-9267.yml b/html/changelogs/AutoChangeLog-pr-9267.yml deleted file mode 100644 index a894c0d468..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9267.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - balance: "Engivend RCDs now vend upgraded RCDs" diff --git a/html/changelogs/AutoChangeLog-pr-9269.yml b/html/changelogs/AutoChangeLog-pr-9269.yml deleted file mode 100644 index 693588208e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9269.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - tweak: "re-enables femichem explosions in grenades." - - tweak: "adds nuance to the SDGF and hatmium explosions." diff --git a/html/changelogs/AutoChangeLog-pr-9275.yml b/html/changelogs/AutoChangeLog-pr-9275.yml deleted file mode 100644 index cd74273366..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9275.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - bugfix: "Fixes analyse function on ChemMasters to correctly display purity." - - bugfix: "Fixes the custom transfer for buffer to beaker button." diff --git a/html/changelogs/AutoChangeLog-pr-9276.yml b/html/changelogs/AutoChangeLog-pr-9276.yml deleted file mode 100644 index f778c26c13..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9276.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "trash" - - imageadd: "eye bleed -:add: misstakes" diff --git a/html/changelogs/AutoChangeLog-pr-9277.yml b/html/changelogs/AutoChangeLog-pr-9277.yml deleted file mode 100644 index 4bf92cd32e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9277.yml +++ /dev/null @@ -1,11 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Added new wings to Insects and separated fluff from old ones, they're Insect's new body markings now without being per-limb (for now)." - - rscadd: "Horns are now available to mammals, and they have their own color." - - rscadd: "Legs are no longer a binary hack code, but actually something that can be changed. Framework for tauric adaptations." - - rscdel: "Purged Modular Citadel's sprite_accessories." - - bugfix: "improved the quality of a number of sprites." - - tweak: "Moths are now all insects. Avians and Aquatics are all anthromorphics. Just as planned." - - rscadd: "Anthromorphs can choose their preferred gibbing meat. I guess. Snowflakes are weird." - - bugfix: "Additional Gentlemen names." diff --git a/html/changelogs/AutoChangeLog-pr-9278.yml b/html/changelogs/AutoChangeLog-pr-9278.yml deleted file mode 100644 index 3ec1eb839a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9278.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Spamming forged packets no longer crashes the server." diff --git a/html/changelogs/AutoChangeLog-pr-9279.yml b/html/changelogs/AutoChangeLog-pr-9279.yml deleted file mode 100644 index 572f40e643..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9279.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed undergarments color preferences resetting each round." diff --git a/html/changelogs/AutoChangeLog-pr-9282.yml b/html/changelogs/AutoChangeLog-pr-9282.yml deleted file mode 100644 index 5a27defb41..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9282.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed a few dozen suits' body coverage inconsistencies. These changes shouldn't affect armor and utility vests for most." diff --git a/html/changelogs/AutoChangeLog-pr-9283.yml b/html/changelogs/AutoChangeLog-pr-9283.yml deleted file mode 100644 index 33e02f8539..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9283.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscdel: "Removed old things!" diff --git a/html/changelogs/AutoChangeLog-pr-9287.yml b/html/changelogs/AutoChangeLog-pr-9287.yml deleted file mode 100644 index 3bf2844b41..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9287.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - rscadd: "Debug option: Generate Wikichems" diff --git a/html/changelogs/AutoChangeLog-pr-9288.yml b/html/changelogs/AutoChangeLog-pr-9288.yml deleted file mode 100644 index 8a684431bf..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9288.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - bugfix: "UI memes" diff --git a/html/changelogs/AutoChangeLog-pr-9289.yml b/html/changelogs/AutoChangeLog-pr-9289.yml deleted file mode 100644 index 7abf947bfc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9289.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - bugfix: "fixing chems for strained muscles" diff --git a/html/changelogs/AutoChangeLog-pr-9292.yml b/html/changelogs/AutoChangeLog-pr-9292.yml deleted file mode 100644 index 33168f9c43..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9292.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed clown shoes and work boots." diff --git a/html/changelogs/AutoChangeLog-pr-9293.yml b/html/changelogs/AutoChangeLog-pr-9293.yml deleted file mode 100644 index a99bf1ab41..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9293.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed some overlay bug that happens when legcuffed and then handcuffed." diff --git a/html/changelogs/AutoChangeLog-pr-9295.yml b/html/changelogs/AutoChangeLog-pr-9295.yml deleted file mode 100644 index a96540c11b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9295.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - balance: "Slowed down police baton and tele baton speed by 75%, should be still be faster than the legacy speed (2 seconds) by 0.6 seconds. Telescopic batons' stamina cost per swing is now on par with police batons, ergo more expensive." diff --git a/html/changelogs/AutoChangeLog-pr-9296.yml b/html/changelogs/AutoChangeLog-pr-9296.yml deleted file mode 100644 index 101ec1aaa8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9296.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "EmeraldSundisk" -delete-after: True -changes: - - rscadd: "Increases the number of plots to 9 (from 5)" - - rscadd: "Additional lighting placed directly outside the garden" - - tweak: "Cleans up the area to reflect use. Moves the seed extractor to a more central location" - - tweak: "Relocates the seed packs on botany's counter to the garden -removal: Removes wooden barricades outside the garden" - - config: "Renames \"Abandoned Garden\" area designation to \"Maintenance Garden\", but does not replace the icon in Dream Maker" diff --git a/html/changelogs/AutoChangeLog-pr-9298.yml b/html/changelogs/AutoChangeLog-pr-9298.yml deleted file mode 100644 index 8301acbbd6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9298.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed undershirts n socks colors prefs." diff --git a/html/changelogs/AutoChangeLog-pr-9302.yml b/html/changelogs/AutoChangeLog-pr-9302.yml deleted file mode 100644 index 4f6ed4d336..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9302.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Things that access job_preferences now explicitly access keys, which means it no longer attempts to access invalid indices and runtimes as a result." diff --git a/html/changelogs/AutoChangeLog-pr-9304.yml b/html/changelogs/AutoChangeLog-pr-9304.yml deleted file mode 100644 index f4a919c52f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9304.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Blue space blood bag" diff --git a/html/changelogs/AutoChangeLog-pr-9306.yml b/html/changelogs/AutoChangeLog-pr-9306.yml deleted file mode 100644 index 0a560c8090..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9306.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "kappa-sama" -delete-after: True -changes: - - tweak: "voidcells can now unlock alien tech" - - balance: "rebalanced tech trees (not really)" diff --git a/html/changelogs/AutoChangeLog-pr-9307.yml b/html/changelogs/AutoChangeLog-pr-9307.yml deleted file mode 100644 index de787a4274..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9307.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BurgerLUA" -delete-after: True -changes: - - balance: "Rebalanced special jetpacks." diff --git a/html/changelogs/AutoChangeLog-pr-9309.yml b/html/changelogs/AutoChangeLog-pr-9309.yml deleted file mode 100644 index b3aef0372b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9309.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - rscadd: "graft synthtissue surgery, new reagent synthtissue" - - tweak: "neurine fixes brain objs -merge: combines fermichem's lung damage with tg's" diff --git a/html/changelogs/AutoChangeLog-pr-9310.yml b/html/changelogs/AutoChangeLog-pr-9310.yml deleted file mode 100644 index 34ded5a0db..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9310.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "GrayRachnid" -delete-after: True -changes: - - rscadd: "Added windoors to all the flaps on delta." diff --git a/html/changelogs/AutoChangeLog-pr-9312.yml b/html/changelogs/AutoChangeLog-pr-9312.yml deleted file mode 100644 index 487b79393b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9312.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "XDTM" -delete-after: True -changes: - - rscadd: "Added the experimental dissection surgery, which can be performed once per corpse to gain techweb points." - - rscadd: "Rarer specimens are more valuable, so xenos and rare species are more efficient subjects." - - rscadd: "Added two new surgery procedures, under the Experimental Surgery techweb node." - - rscadd: "Ligament Hook makes it so you can attach limbs manually (like skeletons) but makes dismemberment more likely as well." - - rscadd: "Ligament Reinforcement prevents dismemberment, but makes limbs easier to disable through damage." - - tweak: "Golem limbs can now be disabled, although they are still undismemberable." diff --git a/html/changelogs/AutoChangeLog-pr-9314.yml b/html/changelogs/AutoChangeLog-pr-9314.yml deleted file mode 100644 index 317fb48592..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9314.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "blood costs" diff --git a/html/changelogs/AutoChangeLog-pr-9316.yml b/html/changelogs/AutoChangeLog-pr-9316.yml deleted file mode 100644 index f4074bcee8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9316.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - rscadd: "on_mob_dead(), bitflags and CHECK_MULTIPLE_BITFIELDS" - - refactor: "refactored fermichem vars, moved impure chems into their own reagents subtype" diff --git a/html/changelogs/AutoChangeLog-pr-9317.yml b/html/changelogs/AutoChangeLog-pr-9317.yml deleted file mode 100644 index 11d58e79ce..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9317.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Ghommie (original PR by CrazyClown12)" -delete-after: True -changes: - - tweak: "The chloral hydrate inside of the sleepy pen is no longer slower acting than chloral hydrate made in chemistry." - - tweak: "The chloral hydrate inside of cookies synthesised by emagged borgs is no longer slower acting than chloral hydrate made in chemistry." - - balance: "Slight tirizene buff." - - rscdel: "Delayed chloral hydrate" diff --git a/html/changelogs/AutoChangeLog-pr-9318.yml b/html/changelogs/AutoChangeLog-pr-9318.yml deleted file mode 100644 index 5f7f4af654..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9318.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - bugfix: "Fixes small residues of chems that won't go away!" diff --git a/html/changelogs/AutoChangeLog-pr-9320.yml b/html/changelogs/AutoChangeLog-pr-9320.yml deleted file mode 100644 index 605de17ab2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9320.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie (original PR by harmonyn)" -delete-after: True -changes: - - balance: "Resisting out of bucklecuffs takes more/less time depending on the handcuffs you used, i.e., fake handcuffs will not bucklecuff someone for ages." - - tweak: "fake handcuffs shouldn't no longer demoralize restrained criminals scums." diff --git a/html/changelogs/AutoChangeLog-pr-9321.yml b/html/changelogs/AutoChangeLog-pr-9321.yml deleted file mode 100644 index d0c4f6d18d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9321.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - bugfix: "blood halberd not going back to 17 force after unwielding" - - spellcheck: "unnecessary 's at the end of blood rites healing" - - rscadd: "QoL to blood rites, examine the ritual aura to view how many blood charges are left" diff --git a/html/changelogs/AutoChangeLog-pr-9322.yml b/html/changelogs/AutoChangeLog-pr-9322.yml deleted file mode 100644 index 2d2632bb81..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9322.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - bugfix: "narsie no longer asks for consent" diff --git a/html/changelogs/AutoChangeLog-pr-9324.yml b/html/changelogs/AutoChangeLog-pr-9324.yml deleted file mode 100644 index 39879be110..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9324.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "TerraGS / Skoglol" -delete-after: True -changes: - - rscadd: "Adds toggleable light and blinking charge indicator to kinetic crusher" - - rscadd: "Kinetic crusher can now be one-hand carried. You'll still need two hand to use it." diff --git a/html/changelogs/AutoChangeLog-pr-9326.yml b/html/changelogs/AutoChangeLog-pr-9326.yml deleted file mode 100644 index 582230dedb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9326.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "YakumoChen" -delete-after: True -changes: - - tweak: "AEGs brought more in line with current radiation system. Try not to get EMP'd." diff --git a/html/changelogs/AutoChangeLog-pr-9331.yml b/html/changelogs/AutoChangeLog-pr-9331.yml deleted file mode 100644 index 0ecd5dfad7..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9331.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "You can now alt-click to rotate machinery such as the tachyon-droppler array or emitters again." diff --git a/html/changelogs/AutoChangeLog-pr-9332.yml b/html/changelogs/AutoChangeLog-pr-9332.yml deleted file mode 100644 index e8a2aa1faa..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9332.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Sofas can't be wielded and transformed back into plain chairs anymore." diff --git a/html/changelogs/AutoChangeLog-pr-9334.yml b/html/changelogs/AutoChangeLog-pr-9334.yml deleted file mode 100644 index cc31ec8896..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9334.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "Enables emojis for PDA messages." diff --git a/html/changelogs/AutoChangeLog-pr-9335.yml b/html/changelogs/AutoChangeLog-pr-9335.yml deleted file mode 100644 index b36c0957dd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9335.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Raptorizer" -delete-after: True -changes: - - tweak: "tweaked numbers/variables" - - balance: "rebalanced numbers/variables" - - spellcheck: "removed unneeded code" diff --git a/html/changelogs/AutoChangeLog-pr-9336.yml b/html/changelogs/AutoChangeLog-pr-9336.yml deleted file mode 100644 index 3f86da234e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9336.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - tweak: "tweaked beaker health and allows use of syringes/droppers on chem_heaters" - - soundadd: "added a sound for when beakers take temperature damage." - - imageadd: "added some icons for melting beakers" - - refactor: "refactored how beakers take damage" - - bugfix: "fixes how beakers would only take one instance of damage on pH damage" diff --git a/html/changelogs/AutoChangeLog-pr-9338.yml b/html/changelogs/AutoChangeLog-pr-9338.yml deleted file mode 100644 index e5909f52ae..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9338.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "lolman360" -delete-after: True -changes: - - bugfix: "Fixes an undocumented change to the naming of Plasmamen." diff --git a/html/changelogs/AutoChangeLog-pr-9339.yml b/html/changelogs/AutoChangeLog-pr-9339.yml deleted file mode 100644 index eeb5ae632c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9339.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - balance: "Removes revenant blight's shabby toxin damage in favor of mood maluses, and a dangerous necropolis curse if not cured in time. Remember" diff --git a/html/changelogs/AutoChangeLog-pr-9341.yml b/html/changelogs/AutoChangeLog-pr-9341.yml deleted file mode 100644 index e017f2941e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9341.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - tweak: "Blood cult altar, forge and archives now use radial menus." diff --git a/html/changelogs/AutoChangeLog-pr-9342.yml b/html/changelogs/AutoChangeLog-pr-9342.yml deleted file mode 100644 index 75d441f143..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9342.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed some machineries' UIs." diff --git a/html/changelogs/AutoChangeLog-pr-9343.yml b/html/changelogs/AutoChangeLog-pr-9343.yml deleted file mode 100644 index 04eb1995ef..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9343.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - code_imp: "surgery cleanup" - - tweak: "dissection available round-start" - - rscadd: "better dissection surgeries from RnD, gives more points" - - rscadd: "abductors can now see what glands do" - - code_imp: "antagonist abductors now have a surgeon trait that teaches them every surgery rather than having it just check if they're an abductor" - - rscadd: "muscled veins surgery" diff --git a/html/changelogs/AutoChangeLog-pr-9344.yml b/html/changelogs/AutoChangeLog-pr-9344.yml deleted file mode 100644 index c45c9269b6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9344.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie (original PRs by Time-Green and Qustinnus)" -delete-after: True -changes: - - tweak: "loot crates can't explode after unlocking anymore" - - bugfix: "jumping into loot crates no longers causes them to go boom" - - bugfix: "You can now deconstruct abandoned crates with a welder without making them go boom. After unlocking them, of course." diff --git a/html/changelogs/AutoChangeLog-pr-9348.yml b/html/changelogs/AutoChangeLog-pr-9348.yml deleted file mode 100644 index a58556b992..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9348.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - tweak: "blood and clock cultists messages from metabolizing" diff --git a/html/changelogs/AutoChangeLog-pr-9349.yml b/html/changelogs/AutoChangeLog-pr-9349.yml deleted file mode 100644 index e51b826f01..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9349.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed advanced medical scanners borg upgrades." - - bugfix: "Fixes certain borg upgrades being unapplicable on dogborg counterparts of the target cyborg type." diff --git a/html/changelogs/AutoChangeLog-pr-9351.yml b/html/changelogs/AutoChangeLog-pr-9351.yml deleted file mode 100644 index d235985d0e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9351.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Yakumo Chen" -delete-after: True -changes: - - balance: "removed antimagic component from holymelon" diff --git a/html/changelogs/AutoChangeLog-pr-9352.yml b/html/changelogs/AutoChangeLog-pr-9352.yml deleted file mode 100644 index e34277b531..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9352.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "JTGSZ" -delete-after: True -changes: - - tweak: "Gave Qualifies_for_Rank Check back its checks in job controller." diff --git a/html/changelogs/AutoChangeLog-pr-9356.yml b/html/changelogs/AutoChangeLog-pr-9356.yml deleted file mode 100644 index 65aacda077..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9356.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "EmeraldSundisk" -delete-after: True -changes: - - rscadd: "Expands the chapel mass driver room to make it easier to use" - - rscadd: "Rearranges the chapel backroom so there are now six coffins and burial garments roundstart" - - tweak: "Cleans up the Janitor's office" - - tweak: "Readjusts the station exterior so mass-driven coffins (hopefully) have less friction" - - bugfix: "Adds a fan to the chapel driver" - - bugfix: "The Janitor missed a few spots around the newly renovated Maintenance Garden" diff --git a/html/changelogs/AutoChangeLog-pr-9359.yml b/html/changelogs/AutoChangeLog-pr-9359.yml deleted file mode 100644 index 1eb933e4c5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9359.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Bhijn" -delete-after: True -changes: - - balance: "The point production mode of radiation collectors has been reverted to the original behavior of using all of the stored power every process cycle instead of just 4% of it" - - tweak: "Radiation collectors now display the amount of power/research points they're producing per minute rather than per process cycle, which should hopefully clear up a lot of confusion." - - tweak: "Radiation collectors also display what's happening to the gas within them, which should make it a lot more obvious as to how you get tritium." diff --git a/html/changelogs/AutoChangeLog-pr-9365.yml b/html/changelogs/AutoChangeLog-pr-9365.yml deleted file mode 100644 index 1a0543f28e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9365.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Ghommie (original PR by 81Denton, kriskog and nemvar)" -delete-after: True -changes: - - spellcheck: "Sleepers now show a message if players try to unscrew the maintenance hatch while they're occupied or open. Fixed typos in sleeper/organ harvester messages." - - tweak: "Sleepers and dna scanners can now be pried open with crowbars." - - tweak: "You can open and close sleepers and dna scanners by alt-clicking them." - - bugfix: "The scanner's hatch now must be closed (on top of being unoccupied), just like sleepers, before being screwdriverable. This fixes a tricky door stuck issue with the machine." diff --git a/html/changelogs/AutoChangeLog-pr-9367.yml b/html/changelogs/AutoChangeLog-pr-9367.yml deleted file mode 100644 index f875262781..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9367.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - rscadd: "Medical huds are now calibrated for Radioactive wavelengths." - - balance: "Engineering equipment, blue space, and common storage containers are radiation protected" - - bugfix: "fixed suit storage not cleaning radiation levels of everything stuffed into them." diff --git a/html/changelogs/AutoChangeLog-pr-9368.yml b/html/changelogs/AutoChangeLog-pr-9368.yml deleted file mode 100644 index 9d95e6c62b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9368.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Seris02" -delete-after: True -changes: - - tweak: "made the autoprocess button relevant" - - tweak: "changes so that spooktober starts earlier" - - bugfix: "fixed the dark blue lum major effect" diff --git a/html/changelogs/AutoChangeLog-pr-9373.yml b/html/changelogs/AutoChangeLog-pr-9373.yml deleted file mode 100644 index 0dc7d7a85f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9373.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Beebal and Honeybalm plants" diff --git a/html/changelogs/AutoChangeLog-pr-9374.yml b/html/changelogs/AutoChangeLog-pr-9374.yml deleted file mode 100644 index f43f28118b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9374.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "kappa-sama" -delete-after: True -changes: - - rscadd: "hugbox (/s)" - - tweak: "ashwalker spawn text now tells them \"i\" \"c\" not to leave lavaland" diff --git a/html/changelogs/AutoChangeLog-pr-9377.yml b/html/changelogs/AutoChangeLog-pr-9377.yml deleted file mode 100644 index 26587eb6c6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9377.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - bugfix: "fixes Janitor grenades." diff --git a/html/changelogs/AutoChangeLog-pr-9379.yml b/html/changelogs/AutoChangeLog-pr-9379.yml deleted file mode 100644 index 05301d3f72..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9379.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Chayse" -delete-after: True -changes: - - tweak: "Medbay doors can now be opened by anyone from the inside without having to press the exit button." diff --git a/html/changelogs/AutoChangeLog-pr-9380.yml b/html/changelogs/AutoChangeLog-pr-9380.yml deleted file mode 100644 index 0d42ef7276..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9380.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed people being shovable hrough windows, windoors and the such." - - rscadd: "You can now shove people into disposal bins." - - refactor: "refactored altdisarm(), ergo the \"shoving people around\" proc." diff --git a/html/changelogs/AutoChangeLog-pr-9382.yml b/html/changelogs/AutoChangeLog-pr-9382.yml deleted file mode 100644 index c82a6a4309..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9382.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Chayse" -delete-after: True -changes: - - bugfix: "Borgs now have the necessary dexterity to unbuckle people from themselves and from bucklable objects." diff --git a/html/changelogs/AutoChangeLog-pr-9384.yml b/html/changelogs/AutoChangeLog-pr-9384.yml deleted file mode 100644 index a941371f1c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9384.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Chayse" -delete-after: True -changes: - - bugfix: "Fixes the Trek Uniform/Suit worn icons" diff --git a/html/changelogs/AutoChangeLog-pr-9385.yml b/html/changelogs/AutoChangeLog-pr-9385.yml deleted file mode 100644 index 36c0f7c105..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9385.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - bugfix: "removed reflect from divine lightblade" diff --git a/html/changelogs/AutoChangeLog-pr-9386.yml b/html/changelogs/AutoChangeLog-pr-9386.yml deleted file mode 100644 index 8426b0be7c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9386.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "original by Bumtickley00, port by sishen1542" -delete-after: True -changes: - - tweak: "Suit storage units will now also remove radiation from mobs." diff --git a/html/changelogs/AutoChangeLog-pr-9387.yml b/html/changelogs/AutoChangeLog-pr-9387.yml deleted file mode 100644 index 6fa03cd817..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9387.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "original by: WJohnston, Antur, Arcane, plapatin, sprites by cogwerks and edited by mrdoombringer. port by sishen1542" -delete-after: True -changes: - - rscadd: "THE GOOSE IS LOOSE" diff --git a/html/changelogs/AutoChangeLog-pr-9388.yml b/html/changelogs/AutoChangeLog-pr-9388.yml deleted file mode 100644 index 9c42745219..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9388.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "original by Skoglol, port by sishen1542" -delete-after: True -changes: - - admin: "Dynamic gamemode now more auto-deadmin friendly." diff --git a/html/changelogs/AutoChangeLog-pr-9389.yml b/html/changelogs/AutoChangeLog-pr-9389.yml deleted file mode 100644 index 4ed6439d5b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9389.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Weblure" -delete-after: True -changes: - - rscadd: "Added the relevant Beepsky animations from TG's aibots.dmi file to Cit's aibots.dmi file." diff --git a/html/changelogs/AutoChangeLog-pr-9391.yml b/html/changelogs/AutoChangeLog-pr-9391.yml deleted file mode 100644 index 1b4525f717..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9391.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "GrayRachnid" -delete-after: True -changes: - - balance: "rebalanced k9dogborgs" diff --git a/html/changelogs/AutoChangeLog-pr-9393.yml b/html/changelogs/AutoChangeLog-pr-9393.yml deleted file mode 100644 index ef03eb483f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9393.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Chayse" -delete-after: True -changes: - - bugfix: "AIs can now once more talk through holopads successfully" diff --git a/html/changelogs/AutoChangeLog-pr-9394.yml b/html/changelogs/AutoChangeLog-pr-9394.yml deleted file mode 100644 index 2c1c89877b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9394.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "EmeraldSundisk" -delete-after: True -changes: - - bugfix: "Readjusts positioning of Delta's QM keycard device" - - bugfix: "Cleaned up a few spots I missed in #9356, particularly around the janitor's office" diff --git a/html/changelogs/AutoChangeLog-pr-9401.yml b/html/changelogs/AutoChangeLog-pr-9401.yml deleted file mode 100644 index ba40c9af65..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9401.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "actioninja" -delete-after: True -changes: - - bugfix: "APC UI autoupdates correctly" diff --git a/html/changelogs/AutoChangeLog-pr-9404.yml b/html/changelogs/AutoChangeLog-pr-9404.yml deleted file mode 100644 index 635b2f8aaf..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9404.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "QM is able to hire/fire people to their department now." diff --git a/html/changelogs/AutoChangeLog-pr-9405.yml b/html/changelogs/AutoChangeLog-pr-9405.yml deleted file mode 100644 index ee4bce83bd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9405.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Thalpy" -delete-after: True -changes: - - tweak: "Alkaline buffer recipe so people don't get grumpy and expanded the pH range" - - bugfix: "fixes buffers" diff --git a/html/changelogs/AutoChangeLog-pr-9406.yml b/html/changelogs/AutoChangeLog-pr-9406.yml deleted file mode 100644 index bf4048528d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9406.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Twaticus & Poojawa" -delete-after: True -changes: - - rscadd: "Added new carpets from TauCetiStation!" - - rscadd: "More Liquid carpet chemicals, mix carpet with certain reagents to get different colors!" - - refactor: "Tablets have a better means of being assembled codewise. nothing's different on player end." diff --git a/html/changelogs/AutoChangeLog-pr-9407.yml b/html/changelogs/AutoChangeLog-pr-9407.yml deleted file mode 100644 index dbfadaebb7..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9407.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "AdmiralPancakes1" -delete-after: True -changes: - - rscadd: "Cryo cell shortcuts: alt-click toggles the doors, ctrl-click toggles the power" diff --git a/html/changelogs/AutoChangeLog-pr-9410.yml b/html/changelogs/AutoChangeLog-pr-9410.yml deleted file mode 100644 index 910b9f6f2e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9410.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "cryopod UI isn't complete shit anymore" - - bugfix: "Cryopods purge silicon gear more efficiently now. Same with ghosts." diff --git a/html/changelogs/AutoChangeLog-pr-9412.yml b/html/changelogs/AutoChangeLog-pr-9412.yml deleted file mode 100644 index 3ea4bbdb46..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9412.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by AnturK)" -delete-after: True -changes: - - bugfix: "Supermatter now melt walls if it finds itself in one." diff --git a/html/changelogs/AutoChangeLog-pr-9413.yml b/html/changelogs/AutoChangeLog-pr-9413.yml deleted file mode 100644 index b352549d0b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9413.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - balance: "Med Sprays are now more aligned with patch mechanics" diff --git a/html/changelogs/AutoChangeLog-pr-9414.yml b/html/changelogs/AutoChangeLog-pr-9414.yml deleted file mode 100644 index e5b03cd5fa..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9414.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - balance: "Chemistry is encouraged to be more varied in their healing, as well as careful in its application" diff --git a/html/changelogs/AutoChangeLog-pr-9415.yml b/html/changelogs/AutoChangeLog-pr-9415.yml deleted file mode 100644 index 19d407b03e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9415.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - tweak: "war ops is now lowpop friendly and doesn't require roughly 54 starting players anymore." diff --git a/html/changelogs/AutoChangeLog-pr-9416.yml b/html/changelogs/AutoChangeLog-pr-9416.yml deleted file mode 100644 index cf36873498..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9416.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "Singularity beacons now also moderately increases the odds meteor waves, while lowering their estimeed arrival countdown." diff --git a/html/changelogs/AutoChangeLog-pr-9418.yml b/html/changelogs/AutoChangeLog-pr-9418.yml deleted file mode 100644 index 9950590005..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9418.yml +++ /dev/null @@ -1,19 +0,0 @@ -author: "Ghommie (original PRs by zeroisthebiggay, AnturK, MrDoomBringer, Cobby, ATHATH, optimumtact, GranpaWalton, Skoglol)" -delete-after: True -changes: - - bugfix: "Blob overminds, sentient diseases, etc. can no longer dump out boxes. Sorry gamers." - - rscadd: "Sentient Disease now has almost all symptoms at its disposal." - - code_imp: "Adding single-symptom disease abilities is super easy now." - - bugfix: "Sentient Disease can now hear (not sure if this was a bug or intentional)." - - rscadd: "Sentient Disease is a linguist and knows all languages. Still cannot speak." - - tweak: "Gives Sentient Diseases a medical hud to observe their victims further with." - - bugfix: "Fixes and moves around some on_stage_change() and Start()-related things for virus symptoms and (sentient) diseases." - - bugfix: "The inorganic biology symptom should work properly now when bought by a sentient disease." - - bugfix: "Oxyloss icon no-longer shows up when someone has the self respiration symptom" - - tweak: "The self respiration now makes you not contract diseases through the air and not breathe in smoke" - - bugfix: "Sentient diseases can no longer pick two cures that react and disappear when eaten." - - balance: "Sentient disease cures are now consistently harder, will only pick cures from tier 6 and up." - - bugfix: "Disease cures should now stay the same for all infected mobs." - - rscadd: "The regenerative coma symptom has a new resistance 4 threshold effect! Said threshold effect will give hosts of the symptom's virus the TRAIT_STABLECRIT trait if its threshold is met." - - bugfix: "An obscure, probably never reported before bug that may or may not exist involving sentient diseases and the self-respiration symptom should be fixed now (if it even existed in the first place)." - - balance: "The cooldown time between each removal or addition of a symptom for sentient diseases has been brought down from an agonizingly long 2 minutes to a more reasonable 1 minute." diff --git a/html/changelogs/AutoChangeLog-pr-9421.yml b/html/changelogs/AutoChangeLog-pr-9421.yml deleted file mode 100644 index 8b2e8a3982..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9421.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie (original PRs by Akrilla, Arkatos and Denton)" -delete-after: True -changes: - - tweak: "Sprays cans have a cap on how dark you can make objects. Art is uneffected." - - bugfix: "Fixed a bug where you could get cyborg spraycans via pyrite extracts." - - rscadd: "Added an infinite spraycan for admins to spawn." diff --git a/html/changelogs/AutoChangeLog-pr-9427.yml b/html/changelogs/AutoChangeLog-pr-9427.yml deleted file mode 100644 index bb1665fba5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9427.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Ghommie && Kevinz000" -delete-after: True -changes: - - balance: "Lichdom and necromantic stone skeletons are now of the spaceproof kind too." - - tweak: "skeletons now also like dairy products." - - rscdel: "Halloween roundstart skeletons and zombies are no more spaceproof." - - rscadd: "You can choose to set your species to zombie or skeleton through the pride mirror yet again, Alas they are not of the spaceproof kind either." diff --git a/html/changelogs/AutoChangeLog-pr-9431.yml b/html/changelogs/AutoChangeLog-pr-9431.yml deleted file mode 100644 index 65f825b278..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9431.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by Denton)" -delete-after: True -changes: - - balance: "You can no longer reveal the 'illegal tech' research node by deconstructing .357 speedloaders, riot dart boxes, syndicate cigarettes, syndicate playing cards or syndicate balloons." diff --git a/html/changelogs/AutoChangeLog-pr-9432.yml b/html/changelogs/AutoChangeLog-pr-9432.yml deleted file mode 100644 index a0cf63d8ee..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9432.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - tweak: "Bottles in PanD.E.M.I.C 2200 can now be replaced with an inhand bottle directly" - - tweak: "Ejecting a bottle from the PanD.E.M.I.C 2200 puts it directly into the user's hand" - - tweak: "Alt-clicking the PanD.E.M.I.C 2200 ejects the current bottle" diff --git a/html/changelogs/AutoChangeLog-pr-9434.yml b/html/changelogs/AutoChangeLog-pr-9434.yml deleted file mode 100644 index d6ad25361a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9434.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "EmeraldSundisk" -delete-after: True -changes: - - rscadd: "Adds some potted plants around Box Station" - - bugfix: "The tile mentioned in #9409 should now be radiation-free." diff --git a/html/changelogs/AutoChangeLog-pr-9435.yml b/html/changelogs/AutoChangeLog-pr-9435.yml deleted file mode 100644 index 4c7a2ab1a1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9435.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - bugfix: "having one of your hands used up if you fireman carry but the person being carried dismounts any way other than you dropping them" diff --git a/html/changelogs/AutoChangeLog-pr-9437.yml b/html/changelogs/AutoChangeLog-pr-9437.yml deleted file mode 100644 index 262fd2a86e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9437.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "JTGSZ" -delete-after: True -changes: - - rscadd: "Optional species based clothing restrictions" diff --git a/html/changelogs/AutoChangeLog-pr-9439.yml b/html/changelogs/AutoChangeLog-pr-9439.yml deleted file mode 100644 index e72b3bd25d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9439.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "JTGSZ" -delete-after: True -changes: - - tweak: "Gang Dominator excessive wall check tweaked to 25 open turfs" - - bugfix: "Gang Dominator no longer functions off-station." diff --git a/html/changelogs/AutoChangeLog-pr-9441.yml b/html/changelogs/AutoChangeLog-pr-9441.yml deleted file mode 100644 index a1321fb3a3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9441.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "lolman360" -delete-after: True -changes: - - tweak: "chainsaw kind of weapons and the mecha drill and the CLAMP can now be used with 100% accuracy for surgery" - - refactor: "surgery tools now work on defines" - - balance: "advanced surgerytools can now switch types instead of just being faster" diff --git a/html/changelogs/AutoChangeLog-pr-9442.yml b/html/changelogs/AutoChangeLog-pr-9442.yml deleted file mode 100644 index 1cde8b15f4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9442.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "YakumoChen" -delete-after: True -changes: - - tweak: "Jetpacks no longer last twice as long between air refills." diff --git a/html/changelogs/AutoChangeLog-pr-9443.yml b/html/changelogs/AutoChangeLog-pr-9443.yml deleted file mode 100644 index 6bc7507ea9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9443.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Thalpy" -delete-after: True -changes: - - bugfix: "fixes broken compiler because a var changed name" diff --git a/html/changelogs/AutoChangeLog-pr-9444.yml b/html/changelogs/AutoChangeLog-pr-9444.yml deleted file mode 100644 index 0a317feda1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9444.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - bugfix: "fixes reaction mechanics at low volumes" - - bugfix: "stops reactions constantly bubbling on the edge of reaction temperature" - - bugfix: "stops small amount reactions from occurring, and prevents disappearing tiny numbers" - - tweak: "Reduced minimum reaction volume from 1 to 0.01" - - refactor: "cleaned up Fermichem" diff --git a/html/changelogs/AutoChangeLog-pr-9445.yml b/html/changelogs/AutoChangeLog-pr-9445.yml deleted file mode 100644 index 0d479fa63a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9445.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Thalpy" -delete-after: True -changes: - - bugfix: "impure travis var anger" diff --git a/html/changelogs/AutoChangeLog-pr-9446.yml b/html/changelogs/AutoChangeLog-pr-9446.yml deleted file mode 100644 index 46c3ffc0ae..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9446.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Sishen1542" -delete-after: True -changes: - - bugfix: "teleporting a locker is bad" diff --git a/html/changelogs/AutoChangeLog-pr-9450.yml b/html/changelogs/AutoChangeLog-pr-9450.yml deleted file mode 100644 index 7616262604..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9450.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "JTGSZ" -delete-after: True -changes: - - rscadd: "Adds more control over species based offsets." diff --git a/html/changelogs/AutoChangeLog-pr-9451.yml b/html/changelogs/AutoChangeLog-pr-9451.yml deleted file mode 100644 index 12843efb68..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9451.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by ShizCalev)" -delete-after: True -changes: - - bugfix: "As a non-human mob, hovering your cursor over an inventory slot while holding an object in your active hand shouldn't runtime now." diff --git a/html/changelogs/AutoChangeLog-pr-9452.yml b/html/changelogs/AutoChangeLog-pr-9452.yml deleted file mode 100644 index 638c3249df..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9452.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "non-alphanumeric graffiti decals will no longer display as \"letter\"." diff --git a/html/changelogs/AutoChangeLog-pr-9456.yml b/html/changelogs/AutoChangeLog-pr-9456.yml deleted file mode 100644 index e4392394b8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9456.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - rscadd: "Adds Jacqueline the Pumpqueen and her familiar Bartholomew for the spooky season" - - soundadd: "Adds a giggle" - - imageadd: "Adds cauldron, Jacq and Jacq o lanterns, and a costume for halloween! -mapedit: adds a new landmark so Bartholomew can spawn somewhere sensible." diff --git a/html/changelogs/AutoChangeLog-pr-9458.yml b/html/changelogs/AutoChangeLog-pr-9458.yml deleted file mode 100644 index 44fc8370d8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9458.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - balance: "Nerfs cyborg disabler and its internal power cell to hold 25 disabler beam shots rather than 43/44, just like a normal disabler." diff --git a/html/changelogs/AutoChangeLog-pr-9459.yml b/html/changelogs/AutoChangeLog-pr-9459.yml deleted file mode 100644 index 5b4cf5736a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9459.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "dapnee" -delete-after: True -changes: - - bugfix: "You can now make plasmaglass tables again." diff --git a/html/changelogs/AutoChangeLog-pr-9461.yml b/html/changelogs/AutoChangeLog-pr-9461.yml deleted file mode 100644 index 91288f23fe..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9461.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "r4d6" -delete-after: True -changes: - - rscadd: "Added decoratives angel wings for Mammalians only" diff --git a/html/changelogs/AutoChangeLog-pr-9463.yml b/html/changelogs/AutoChangeLog-pr-9463.yml deleted file mode 100644 index 3a465c5a05..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9463.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Owai-Seek" -delete-after: True -changes: - - rscadd: "false codpiece" - - rscadd: "crocin/camphor bottles" - - tweak: "updated kinkmate item list" diff --git a/html/changelogs/AutoChangeLog-pr-9464.yml b/html/changelogs/AutoChangeLog-pr-9464.yml deleted file mode 100644 index 79a5960abd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9464.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "JTGSZ" -delete-after: True -changes: - - bugfix: "qualifies_for_rank now checks latejoin menu" diff --git a/html/changelogs/AutoChangeLog-pr-9466.yml b/html/changelogs/AutoChangeLog-pr-9466.yml deleted file mode 100644 index 473ec04eec..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9466.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Bhijn" -delete-after: True -changes: - - tweak: "Security borgs and K9s are now only available during red alert or higher." - - server: "Headmins or other folks with access to the server's config can choose the minimum alert level for secborgs to be chosen via the MINIMUM_SECBORG_ALERT config option. See the default game_options.txt for more info." diff --git a/html/changelogs/AutoChangeLog-pr-9467.yml b/html/changelogs/AutoChangeLog-pr-9467.yml deleted file mode 100644 index b57d60f9dd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9467.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Bhijn" -delete-after: True -changes: - - bugfix: "The server no longer attempts to check if the CID matches the IP of any bans, or if the IP matches any CIDs of any active bans, during client analyzation" diff --git a/html/changelogs/AutoChangeLog-pr-9472.yml b/html/changelogs/AutoChangeLog-pr-9472.yml deleted file mode 100644 index dd0aac8954..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9472.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - bugfix: "fixes food reactions and explosion runtimes," - - bugfix: "fixes the too much yes problem" diff --git a/html/changelogs/AutoChangeLog-pr-9473.yml b/html/changelogs/AutoChangeLog-pr-9473.yml deleted file mode 100644 index def08d4acd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9473.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "PersianXerxes" -delete-after: True -changes: - - code_imp: "Adds the clockwork_warp_allowed flag to the Captain's Office area, set to FALSE the same way it is for the chapel and armory." diff --git a/html/changelogs/AutoChangeLog-pr-9474.yml b/html/changelogs/AutoChangeLog-pr-9474.yml deleted file mode 100644 index 1e3737f1a5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9474.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - bugfix: "neural nanites only work/drain if you have brain damage or traumas the nanites can fix" diff --git a/html/changelogs/AutoChangeLog-pr-9477.yml b/html/changelogs/AutoChangeLog-pr-9477.yml deleted file mode 100644 index cf13d15860..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9477.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - bugfix: "Heart, Tongue and stomach regen." - - bugfix: "lung damage threshholds." - - bugfix: "Graft synthtissue" - - bugfix: "Skeleton's burning for no reason" - - bugfix: "Organ freezing handling." diff --git a/html/changelogs/AutoChangeLog-pr-9478.yml b/html/changelogs/AutoChangeLog-pr-9478.yml deleted file mode 100644 index d2c80d08fb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9478.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - tweak: "Pod people can no longer get fat from standing in the light" diff --git a/html/changelogs/AutoChangeLog-pr-9479.yml b/html/changelogs/AutoChangeLog-pr-9479.yml deleted file mode 100644 index cea218193e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9479.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "lolman360" -delete-after: True -changes: - - bugfix: "fixes bug with new surgerytools examine" diff --git a/html/changelogs/AutoChangeLog-pr-9480.yml b/html/changelogs/AutoChangeLog-pr-9480.yml deleted file mode 100644 index 048ebdbce1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9480.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "Clarified access descriptions of some jobs" diff --git a/html/changelogs/AutoChangeLog-pr-9482.yml b/html/changelogs/AutoChangeLog-pr-9482.yml deleted file mode 100644 index 4624f4696b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9482.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Fermis" -delete-after: True -changes: - - bugfix: "Fixes chemistry books to point to the right wiki, and keeps tg's just in case" - - tweak: "Changes top right wiki button location to go to both wikis" diff --git a/html/changelogs/AutoChangeLog-pr-9483.yml b/html/changelogs/AutoChangeLog-pr-9483.yml deleted file mode 100644 index 36cce96d9f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9483.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "ZeroNetAlpha" -delete-after: True -changes: - - tweak: "Cleans up autoylathe code and brings it back in line with the regular autolathe." - - bugfix: "Fixes autoylathe interface not updating propperly." diff --git a/html/changelogs/AutoChangeLog-pr-9486.yml b/html/changelogs/AutoChangeLog-pr-9486.yml deleted file mode 100644 index c624e6472c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9486.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ZeroNetAlpha" -delete-after: True -changes: - - tweak: "Silicons are now consumable by scrub pups." diff --git a/html/changelogs/AutoChangeLog-pr-9488.yml b/html/changelogs/AutoChangeLog-pr-9488.yml deleted file mode 100644 index dd5ac89610..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9488.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Adds some missing species_traits for cloth, clockwork and cult golems." diff --git a/html/changelogs/AutoChangeLog-pr-9489.yml b/html/changelogs/AutoChangeLog-pr-9489.yml deleted file mode 100644 index a395af0749..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9489.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by nemvar)" -delete-after: True -changes: - - imageadd: "Some drinks have new icons or slightly altered icons. In particular Wizz Fizz, Bug Spray, Jack Rose, Champagne and Applejack." diff --git a/html/changelogs/AutoChangeLog-pr-9491.yml b/html/changelogs/AutoChangeLog-pr-9491.yml deleted file mode 100644 index 0bfd6b6ee2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9491.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "fixed missing deco wing states" diff --git a/html/changelogs/AutoChangeLog-pr-9492.yml b/html/changelogs/AutoChangeLog-pr-9492.yml deleted file mode 100644 index 5481265898..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9492.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "Added towel linen bins, found in dormitory restrooms. Also enhanced the bedsheet bins found in some stations' dormitories" - - imageadd: "Resprited bedsheet bins in 3/4 perspective" diff --git a/html/changelogs/AutoChangeLog-pr-9493.yml b/html/changelogs/AutoChangeLog-pr-9493.yml deleted file mode 100644 index 69aef9dbec..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9493.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - tweak: "Made SDGF ghost poll message less verbose, made the experimental cloner's complaint with the former, and added ghost poll ignore options for both." diff --git a/html/changelogs/AutoChangeLog-pr-9498.yml b/html/changelogs/AutoChangeLog-pr-9498.yml deleted file mode 100644 index d01f41e555..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9498.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "JTGSZ" -delete-after: True -changes: - - rscadd: "Added Halloween Dwarves, for Halloween... Yep." diff --git a/html/changelogs/AutoChangeLog-pr-9499.yml b/html/changelogs/AutoChangeLog-pr-9499.yml deleted file mode 100644 index a4d41485cd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9499.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "r4d6" -delete-after: True -changes: - - rscadd: "Added blindfolds to the Loadout list" diff --git a/html/changelogs/AutoChangeLog-pr-9502.yml b/html/changelogs/AutoChangeLog-pr-9502.yml deleted file mode 100644 index 71939adfd8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9502.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - tweak: "PanD.E.M.I.C 2200 now ejects onto itself instead of onto user if user's hands are full" diff --git a/html/changelogs/AutoChangeLog-pr-9503.yml b/html/changelogs/AutoChangeLog-pr-9503.yml deleted file mode 100644 index 7b79ad7185..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9503.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "The taser's electrode has been reworked. Instead of being a strong knockdown that deals a heavy amount of stamloss, it now causes a weak knockdown, applies a debilitating status effect for 5 seconds, and deals 35 stamloss on hit up to a maximum 50 total stamloss." - - balance: "Roundstart turrets now have a nonlethal projectile that gets used when they're set to stun and the target is resting" - - tweak: "Hybrid tasers now have disablers set as their default mode." diff --git a/html/changelogs/AutoChangeLog-pr-9504.yml b/html/changelogs/AutoChangeLog-pr-9504.yml deleted file mode 100644 index 4915c1a2ea..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9504.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "fixed a few things related to vore content" diff --git a/html/changelogs/AutoChangeLog-pr-9505.yml b/html/changelogs/AutoChangeLog-pr-9505.yml deleted file mode 100644 index 7bbd289859..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9505.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Thalpy" -delete-after: True -changes: - - rscadd: "Added the ability to dispense smartdarts from the chemmaster." - - tweak: "Tweaks medolier amd chembags to allow quickpickups of smartdarts, lets the latter soak in beakers (on the floor)" - - bugfix: "fixed rounding errors with smartdart mixes." - - imageadd: "added modified smartdartgun icon." diff --git a/html/changelogs/AutoChangeLog-pr-9506.yml b/html/changelogs/AutoChangeLog-pr-9506.yml deleted file mode 100644 index e3a0e63b18..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9506.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "izzyinbox" -delete-after: True -changes: - - rscadd: "*bark emote" diff --git a/html/changelogs/AutoChangeLog-pr-9510.yml b/html/changelogs/AutoChangeLog-pr-9510.yml deleted file mode 100644 index b752fc06ea..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9510.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed tracking implant teleport issues." diff --git a/html/changelogs/AutoChangeLog-pr-9513.yml b/html/changelogs/AutoChangeLog-pr-9513.yml deleted file mode 100644 index ae4a8c246c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9513.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - balance: "Medibots no longer kill slimes when trying to heal their toxins." diff --git a/html/changelogs/AutoChangeLog-pr-9514.yml b/html/changelogs/AutoChangeLog-pr-9514.yml deleted file mode 100644 index ebf0735778..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9514.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - rscadd: "Four colour variants of ankle coverings. Select them on the loadout screen." - - imageadd: "ankle coverings" - - tweak: "allows for shoes that don't cover your feet to be taken into account for footstep sound effects and glass shards" diff --git a/html/changelogs/AutoChangeLog-pr-9515.yml b/html/changelogs/AutoChangeLog-pr-9515.yml deleted file mode 100644 index ece9a57449..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9515.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Ghommie (original PR by Skoglol)" -delete-after: True -changes: - - tweak: "Moved machine and computer frames below objects, parts are now always on top." - - tweak: "Moved structures (chairs, closets, windows, cult altars etc etc) below objects." - - tweak: "Moves mineral doors to airlock layers" - - tweak: "morgue/crematorium trays' layers shouldn't overlap bodybags' anymore." diff --git a/html/changelogs/AutoChangeLog-pr-9516.yml b/html/changelogs/AutoChangeLog-pr-9516.yml deleted file mode 100644 index f023b7eb14..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9516.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by MrDoomBringer)" -delete-after: True -changes: - - bugfix: "morgues have had their proton packs removed and as such no longer suck in ghosts on closing." diff --git a/html/changelogs/AutoChangeLog-pr-9517.yml b/html/changelogs/AutoChangeLog-pr-9517.yml deleted file mode 100644 index 06442cae43..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9517.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kappa-sama" -delete-after: True -changes: - - bugfix: "you can no longer have infinite ebows" diff --git a/html/changelogs/AutoChangeLog-pr-9520.yml b/html/changelogs/AutoChangeLog-pr-9520.yml deleted file mode 100644 index 20188b7137..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9520.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "r4d6" -delete-after: True -changes: - - rscadd: "Added Decorative Wings for Humans, Felinids, Slimepersons and Lizardpeoples." diff --git a/html/changelogs/AutoChangeLog-pr-9522.yml b/html/changelogs/AutoChangeLog-pr-9522.yml deleted file mode 100644 index e4c51bf1e0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9522.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - rscadd: "Tend Wounds surgery. Heal in the field, with better healing the more damage the patient has." - - rscdel: "Reconstruction replaced by Tend Wounds" - - balance: "made Revival more accessible, more viable alternative to cloning." diff --git a/html/changelogs/AutoChangeLog-pr-9523.yml b/html/changelogs/AutoChangeLog-pr-9523.yml deleted file mode 100644 index da6864ace8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9523.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - bugfix: "advanced surgery tools can't perform lobectomy or coronary bypass" diff --git a/html/changelogs/AutoChangeLog-pr-9524.yml b/html/changelogs/AutoChangeLog-pr-9524.yml deleted file mode 100644 index df1ff4959a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9524.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - rscadd: "Decorative and insect wings can now be coloured individually, similar to horns." - - bugfix: "people getting assigned wings if their savefile is old." - - rscdel: "wings that take the hair colour. Unnecessary if you can just set the colour." - - tweak: "Cannot make horns pure black. Trying to do so will set it to a default value." diff --git a/html/changelogs/AutoChangeLog-pr-9525.yml b/html/changelogs/AutoChangeLog-pr-9525.yml deleted file mode 100644 index a77b9e28b2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9525.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - bugfix: "decorative angel wings being invisible" diff --git a/html/changelogs/AutoChangeLog-pr-9534.yml b/html/changelogs/AutoChangeLog-pr-9534.yml deleted file mode 100644 index 4654503f9b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9534.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - bugfix: "abductors now actually work" - - tweak: "abductor scientist has their own greet message now" diff --git a/html/changelogs/AutoChangeLog-pr-9535.yml b/html/changelogs/AutoChangeLog-pr-9535.yml deleted file mode 100644 index fbebfe5a54..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9535.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Gorlex Marauders are pleased to announce non-slip grooves were given to their .50 sniper rifles, and thus shouldn't accidentally flop on the floor like pocket spaghettis whenever taken out of a bag anymore." diff --git a/html/changelogs/AutoChangeLog-pr-9536.yml b/html/changelogs/AutoChangeLog-pr-9536.yml deleted file mode 100644 index ffac8e8f6f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9536.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "r4d6" -delete-after: True -changes: - - tweak: "Change the SEVA suit & Exo-suit's descriptions" diff --git a/html/changelogs/AutoChangeLog-pr-9537.yml b/html/changelogs/AutoChangeLog-pr-9537.yml deleted file mode 100644 index 24318d4364..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9537.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Hatterhat" -delete-after: True -changes: - - rscadd: "Magnetic pistols now fit in boot pockets - jackboots, workboots, etc." diff --git a/html/changelogs/AutoChangeLog-pr-9539.yml b/html/changelogs/AutoChangeLog-pr-9539.yml deleted file mode 100644 index c6e687d444..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9539.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - rscadd: "The Syndicate started selling claymores to their agents." diff --git a/html/changelogs/AutoChangeLog-pr-9540.yml b/html/changelogs/AutoChangeLog-pr-9540.yml deleted file mode 100644 index 8dd4e46bc6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9540.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "YakumoChen" -delete-after: True -changes: - - rscdel: "Reverted laser miniguns." diff --git a/html/changelogs/AutoChangeLog-pr-9542.yml b/html/changelogs/AutoChangeLog-pr-9542.yml deleted file mode 100644 index 2ba9d14986..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9542.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - tweak: "Costs of crates and paperwork" - - rscadd: "Adds 2 more crates hacked only" diff --git a/html/changelogs/AutoChangeLog-pr-9545.yml b/html/changelogs/AutoChangeLog-pr-9545.yml deleted file mode 100644 index 970e463f41..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9545.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PR by Barhandar" -delete-after: True -changes: - - bugfix: "Pumpkin meteors on Halloween now replace catastrophic meteor waves, instead of ALL OF THEM." diff --git a/html/changelogs/AutoChangeLog-pr-9547.yml b/html/changelogs/AutoChangeLog-pr-9547.yml deleted file mode 100644 index 7e0abca8f4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9547.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Silicons can now operate teleporter, medical and security records console from a distance again." diff --git a/html/changelogs/AutoChangeLog-pr-9548.yml b/html/changelogs/AutoChangeLog-pr-9548.yml deleted file mode 100644 index f387875a4c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9548.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed custom say emotes conflict with drunk memes." diff --git a/html/changelogs/AutoChangeLog-pr-9549.yml b/html/changelogs/AutoChangeLog-pr-9549.yml deleted file mode 100644 index 6958e8c390..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9549.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes identity transfer (envy knife, changeling transformation, making a vr avatar) not copying digitigrade legs." diff --git a/html/changelogs/AutoChangeLog-pr-9550.yml b/html/changelogs/AutoChangeLog-pr-9550.yml deleted file mode 100644 index 8a50be40f6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9550.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixes temporary transformation sting triggering heart attacks on heartless humans." diff --git a/html/changelogs/AutoChangeLog-pr-9551.yml b/html/changelogs/AutoChangeLog-pr-9551.yml deleted file mode 100644 index da7aac0e48..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9551.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed mobs folded inside bluespace bodybags getting their clothing and items deleted when passing through a recycler." diff --git a/html/changelogs/AutoChangeLog-pr-9556.yml b/html/changelogs/AutoChangeLog-pr-9556.yml deleted file mode 100644 index 31951c3e70..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9556.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - bugfix: "unable to read paper on airlocks" - - tweak: "ai can see paper (still just shows stars)" diff --git a/html/changelogs/AutoChangeLog-pr-9561.yml b/html/changelogs/AutoChangeLog-pr-9561.yml deleted file mode 100644 index 6db9ad0385..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9561.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "The alien-bursting-from-your-thorax and the xeno \"hud\" embryo stage images will now properly delete them once the embryo egg lifecycle is complete." diff --git a/html/changelogs/AutoChangeLog-pr-9564.yml b/html/changelogs/AutoChangeLog-pr-9564.yml deleted file mode 100644 index deb7601e82..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9564.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "tinfoil hat wearer" -delete-after: True -changes: - - rscadd: "Added a new alien technology disk to scientist and roboticist uplinks that allows them to research the heavily-guarded secrets of the Grays." - - tweak: "Alientech is now the only Hidden alien research. To compensate for this, alien_bio and alien_engi have had their research costs doubled and now require advanced surgery tools and experimental tools respectively to research. Their export price is also halved." - - balance: "roboticists now have brainwashing disks AND alien technology added to their role-restricted uplink section. alien technology gives them brainwashing at a much later date, so brainwashing is the much cheaper option for instant power. makes logical sense because doctors get it as well because they do surgery, and roboticists can now either choose to brainwash people for less price but less power or emag borgs for higher prices, limited uses, but higher power." diff --git a/html/changelogs/AutoChangeLog-pr-9565.yml b/html/changelogs/AutoChangeLog-pr-9565.yml deleted file mode 100644 index e2c6aa0d12..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9565.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - balance: "Nerfed VTEC modules." diff --git a/html/changelogs/AutoChangeLog-pr-9566.yml b/html/changelogs/AutoChangeLog-pr-9566.yml deleted file mode 100644 index 92e5307b09..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9566.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - bugfix: "Neurotoxin no longer stuns non-carbons." diff --git a/html/changelogs/AutoChangeLog-pr-9568.yml b/html/changelogs/AutoChangeLog-pr-9568.yml deleted file mode 100644 index c5e65f7adc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9568.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "r4d6" -delete-after: True -changes: - - bugfix: "Batteries are now Rad-Proof like the other stock parts" diff --git a/html/changelogs/AutoChangeLog-pr-9572.yml b/html/changelogs/AutoChangeLog-pr-9572.yml deleted file mode 100644 index 767a78c3bc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9572.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "kevinz000" -delete-after: True -changes: - - bugfix: "Fixes storage bugs regarding reaching into things you shouldn't be able to reach into." diff --git a/html/changelogs/AutoChangeLog-pr-9574.yml b/html/changelogs/AutoChangeLog-pr-9574.yml new file mode 100644 index 0000000000..240d5ad0af --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9574.yml @@ -0,0 +1,4 @@ +author: "r4d6" +delete-after: True +changes: + - rscadd: "Added Departements Winter Coats to the loadout list." diff --git a/html/changelogs/AutoChangeLog-pr-9579.yml b/html/changelogs/AutoChangeLog-pr-9579.yml deleted file mode 100644 index df1a2c90bf..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9579.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "4dplanner, MMiracles" -delete-after: True -changes: - - tweak: "Wizard shapeshift now converts damage taken while transformed" - - bugfix: "transform spell transfers damage correctly instead of healing most of the time" - - bugfix: "0% simplemob health maps to 0 carbon health, 100% simplemob to 100% carbon" - - bugfix: "transforming to a form with brute resistance no longer heals you" - - bugfix: "transforming back to a species with brute resistance no longer heals you" diff --git a/html/changelogs/AutoChangeLog-pr-9582.yml b/html/changelogs/AutoChangeLog-pr-9582.yml deleted file mode 100644 index 7fde7388cd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9582.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - rscadd: "Added configs for a bunch of Dynamic rule parameters." - - config: "Added defaults for all the configs (WIP)." diff --git a/html/changelogs/AutoChangeLog-pr-9585.yml b/html/changelogs/AutoChangeLog-pr-9585.yml deleted file mode 100644 index c74c0dec46..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9585.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed artificier lesser magic missile." diff --git a/html/changelogs/AutoChangeLog-pr-9587.yml b/html/changelogs/AutoChangeLog-pr-9587.yml deleted file mode 100644 index 0eba144de5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9587.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Phantom thief masks will now fancy your combat mode yet again." diff --git a/html/changelogs/AutoChangeLog-pr-9588.yml b/html/changelogs/AutoChangeLog-pr-9588.yml deleted file mode 100644 index 03f4ab8a57..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9588.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "ItzGabby" -delete-after: True -changes: - - rscadd: "Bat Species parts for more leeway for character customization." - - code_imp: "Alphabetized decor wing selection window in character creator for simplicity." diff --git a/html/changelogs/AutoChangeLog-pr-9589.yml b/html/changelogs/AutoChangeLog-pr-9589.yml deleted file mode 100644 index 5fbc819844..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9589.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie (original PRs by ninjanomnom and nemvar)" -delete-after: True -changes: - - bugfix: "Trays now scatter their contents when used for attacks, like they are supposed to." diff --git a/html/changelogs/AutoChangeLog-pr-9590.yml b/html/changelogs/AutoChangeLog-pr-9590.yml deleted file mode 100644 index 5410681ebb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9590.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Ghommie (original PR by cacogen)" -delete-after: True -changes: - - rscadd: "The font size of all text in the chat window now scales" - - tweak: "High volume (megaphone/head of staff headset) is a slightly smaller" - - tweak: "Admins have slightly larger OOC text" diff --git a/html/changelogs/AutoChangeLog-pr-9593.yml b/html/changelogs/AutoChangeLog-pr-9593.yml deleted file mode 100644 index a61fcea1e4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9593.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Fixed gulag teleporter stripping the user of stuff it really shouldn't (like storage implant bags)." diff --git a/html/changelogs/AutoChangeLog-pr-9594.yml b/html/changelogs/AutoChangeLog-pr-9594.yml deleted file mode 100644 index 83774989ee..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9594.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Hatterhat" -delete-after: True -changes: - - tweak: "literally every pistol subtype fits in shoes now. go wild." diff --git a/html/changelogs/AutoChangeLog-pr-9595.yml b/html/changelogs/AutoChangeLog-pr-9595.yml deleted file mode 100644 index bc3eab54c8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9595.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Examining a spaceman, and other things that use get_examine_string(), will now actually properly show when an item is blood-stained." diff --git a/html/changelogs/AutoChangeLog-pr-9599.yml b/html/changelogs/AutoChangeLog-pr-9599.yml deleted file mode 100644 index 83063c12fc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9599.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Onule & Nemvar (ported by Ghommie)" -delete-after: True -changes: - - imageadd: "New Revenant icons" diff --git a/html/changelogs/AutoChangeLog-pr-9600.yml b/html/changelogs/AutoChangeLog-pr-9600.yml deleted file mode 100644 index e7c7c1da92..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9600.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Trilbyspaceclone" -delete-after: True -changes: - - rscadd: "Added two seed packets of cotten to ash walkers base" diff --git a/html/changelogs/AutoChangeLog-pr-9603.yml b/html/changelogs/AutoChangeLog-pr-9603.yml deleted file mode 100644 index 32b9afb97e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9603.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "fixing cydonian armor a bit." diff --git a/html/changelogs/AutoChangeLog-pr-9611.yml b/html/changelogs/AutoChangeLog-pr-9611.yml new file mode 100644 index 0000000000..48a0e9982b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9611.yml @@ -0,0 +1,6 @@ +author: "kevinz000" +delete-after: True +changes: + - rscadd: "Cargo has passive point generation again at 750 points/minute" + - balance: "Mindshield crate price increased from 3000 to 4000" + - balance: "Miasma sell price reduced from 15/mol to 4/mol" diff --git a/html/changelogs/AutoChangeLog-pr-9613.yml b/html/changelogs/AutoChangeLog-pr-9613.yml deleted file mode 100644 index 2056d9479c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9613.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Linzolle" -delete-after: True -changes: - - rscadd: "Target head and throw a hat at someone to toss it onto their head, knocking whatever they're wearing off if they are wearing a hat. Some headgear can't be knocked off this way." diff --git a/html/changelogs/AutoChangeLog-pr-9617.yml b/html/changelogs/AutoChangeLog-pr-9617.yml deleted file mode 100644 index 9c8e3fbdf2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9617.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "JTGSZ" -delete-after: True -changes: - - bugfix: "barricade girder walls use PlaceOnTop instead of new" diff --git a/html/changelogs/AutoChangeLog-pr-9620.yml b/html/changelogs/AutoChangeLog-pr-9620.yml deleted file mode 100644 index c6f5a460da..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9620.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "YakumoChen" -delete-after: True -changes: - - rscadd: "Adds beanbag slugs to the sec protolathe at round start" - - bugfix: "Brings shotgun ammo availability back in like between seclathe and autolathe." diff --git a/html/changelogs/AutoChangeLog-pr-9622.yml b/html/changelogs/AutoChangeLog-pr-9622.yml deleted file mode 100644 index 4a0fb38248..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9622.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - imageadd: "Improved the Cyber Sylph' good yet cumbersome bar sign a little." diff --git a/html/changelogs/AutoChangeLog-pr-9623.yml b/html/changelogs/AutoChangeLog-pr-9623.yml deleted file mode 100644 index 4ad167ca48..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9623.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Sirich96 and Dennok (ported by Ghommie)" -delete-after: True -changes: - - rscadd: "Added new Teleporter Station sprites" - - rscadd: "Added teleport station calibration animation." diff --git a/html/changelogs/AutoChangeLog-pr-9630.yml b/html/changelogs/AutoChangeLog-pr-9630.yml deleted file mode 100644 index b9e583297c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9630.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - bugfix: "Cyborgs can now use camera consoles on the edge of their widescreen. These consoles are also TK friendly now." diff --git a/html/changelogs/AutoChangeLog-pr-9635.yml b/html/changelogs/AutoChangeLog-pr-9635.yml deleted file mode 100644 index 946a1ffe13..0000000000 --- a/html/changelogs/AutoChangeLog-pr-9635.yml +++ /dev/null @@ -1,17 +0,0 @@ -author: "Thalpy" -delete-after: True -changes: - - bugfix: "1. Kev asked that there were no antag datums used, so that's been changed. -2. Tricks can no longer turn someone into a dullahan, instead you have to spend candies to get that. I felt it was too mean to turn people into that, I didn't realise you couldn't revert it. -3. Barth will no longer as for impossible items. -4. Barth will no longer as for the same item multiple times. -5. Barth will now accept broader things, rather than asking for something, when meaning something specific. -6. Jacq will now no longer poof off the z level. -7. Jacq will (hopefully) stop spooking the AI by teleporting into there -8. Jacq will now try to teleport to a location with someone nearby. -9. Barth will tell you where Jacq is currently when you speak to him. -10. You can trade 2 candies for a Jacq Tracq (tm) -11. Jacq should stop getting mad and cover the station in gas when killed. -12. Fixed Jacq not singing (the link died). -13. Slightly changed wording so that people will hopefully get to know her. -14. Jacq no longer disappears when you're getting to know her." diff --git a/html/changelogs/AutoChangeLog-pr-9694.yml b/html/changelogs/AutoChangeLog-pr-9694.yml new file mode 100644 index 0000000000..6c4842e70e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9694.yml @@ -0,0 +1,4 @@ +author: "him" +delete-after: True +changes: + - bugfix: "hos and aeg guns now conform to le epic taser rework standards" diff --git a/html/changelogs/AutoChangeLog-pr-9695.yml b/html/changelogs/AutoChangeLog-pr-9695.yml new file mode 100644 index 0000000000..60455c2bb5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9695.yml @@ -0,0 +1,7 @@ +author: "Ghommie (original PRs by ShizCalev, CRTXBacon and Niknakflak)" +delete-after: True +changes: + - rscadd: "Adds the intelliLantern, a big ol' spooky intelliCard skin" + - rscadd: "crafting recipe for the new intelliCard skin (requires 1 pumpkin, 1 intelliCard, 5 cables and a wirecutter as a tool)" + - tweak: "changed the intelliTater crafting recipe to match the intelliLantern recipe (but with a potato for obvious reasons) +add:cute pai gameboy face :3" diff --git a/html/changelogs/AutoChangeLog-pr-9696.yml b/html/changelogs/AutoChangeLog-pr-9696.yml new file mode 100644 index 0000000000..3188173d54 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9696.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Insert snarky remark about clock welders actually displaying the welder flame overlay when turned on now here." diff --git a/html/changelogs/AutoChangeLog-pr-9704.yml b/html/changelogs/AutoChangeLog-pr-9704.yml new file mode 100644 index 0000000000..f4c8127241 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9704.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - balance: "Minor ninja tweaks and stealth nerfs. The stealth penalty for the many combat-related actions, bumping and now teleporting/dashing or firing guns has been increased a by a third. There is now a cooldown of 5 seconds on toggling stealth as well as a slighty slowed stealth in/out animation." diff --git a/html/changelogs/AutoChangeLog-pr-9705.yml b/html/changelogs/AutoChangeLog-pr-9705.yml new file mode 100644 index 0000000000..c3dafc0582 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9705.yml @@ -0,0 +1,4 @@ +author: "kappa-sama" +delete-after: True +changes: + - tweak: "changed flavor text of alien tech on uplink" diff --git a/html/changelogs/AutoChangeLog-pr-9709.yml b/html/changelogs/AutoChangeLog-pr-9709.yml new file mode 100644 index 0000000000..73d3164433 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9709.yml @@ -0,0 +1,5 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - rscadd: "8 new cargo crates!" + - tweak: "tablet cargo crate by -3k" diff --git a/html/changelogs/AutoChangeLog-pr-9710.yml b/html/changelogs/AutoChangeLog-pr-9710.yml new file mode 100644 index 0000000000..fc815f5255 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9710.yml @@ -0,0 +1,5 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - admin: "Closes a bunch of issues" + - server: "updates changlogs and such" diff --git a/html/changelogs/AutoChangeLog-pr-8289.yml b/html/changelogs/AutoChangeLog-pr-9713.yml similarity index 53% rename from html/changelogs/AutoChangeLog-pr-8289.yml rename to html/changelogs/AutoChangeLog-pr-9713.yml index d389d95cd6..fcefecf94d 100644 --- a/html/changelogs/AutoChangeLog-pr-8289.yml +++ b/html/changelogs/AutoChangeLog-pr-9713.yml @@ -1,4 +1,4 @@ author: "Trilbyspaceclone" delete-after: True changes: - - tweak: "armor" + - bugfix: "fixed a catnip not having sprites" diff --git a/html/changelogs/AutoChangeLog-pr-9715.yml b/html/changelogs/AutoChangeLog-pr-9715.yml new file mode 100644 index 0000000000..a7cfb50426 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9715.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - imageadd: "Ported slighty better matchbox sprites from CEV-Eris, also resprited cigar boxes myself." diff --git a/html/changelogs/AutoChangeLog-pr-9716.yml b/html/changelogs/AutoChangeLog-pr-9716.yml new file mode 100644 index 0000000000..704b263b50 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9716.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed abductors/abductees objectives by porting an objective code." diff --git a/html/changelogs/AutoChangeLog-pr-9717.yml b/html/changelogs/AutoChangeLog-pr-9717.yml new file mode 100644 index 0000000000..7ac1988b74 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9717.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - tweak: "SDGF now copies memories as well as antag data and factions." diff --git a/html/changelogs/AutoChangeLog-pr-9724.yml b/html/changelogs/AutoChangeLog-pr-9724.yml new file mode 100644 index 0000000000..853d38b041 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9724.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed free real estate paraplegic trait and bolas." diff --git a/html/changelogs/AutoChangeLog-pr-9726.yml b/html/changelogs/AutoChangeLog-pr-9726.yml new file mode 100644 index 0000000000..9e8f3bf71e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9726.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "fixing a few runtimes on lightgeists, libido trait, rcd, one admin transformation topic, chem dispensers, glowing robotic eyes..." diff --git a/html/changelogs/AutoChangeLog-pr-9734.yml b/html/changelogs/AutoChangeLog-pr-9734.yml new file mode 100644 index 0000000000..dd134e480c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9734.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - imageadd: "Porting CEV-eris delivery packages sprites and dunking the old syndie cybernetics box sprite." diff --git a/html/changelogs/AutoChangeLog-pr-9168.yml b/html/changelogs/AutoChangeLog-pr-9744.yml similarity index 51% rename from html/changelogs/AutoChangeLog-pr-9168.yml rename to html/changelogs/AutoChangeLog-pr-9744.yml index 2375f6a28a..a653e77c1a 100644 --- a/html/changelogs/AutoChangeLog-pr-9168.yml +++ b/html/changelogs/AutoChangeLog-pr-9744.yml @@ -1,4 +1,4 @@ author: "Seris02" delete-after: True changes: - - rscadd: "Added looc hotkey" + - bugfix: "fixed the meteor hallucination" diff --git a/html/changelogs/AutoChangeLog-pr-9745.yml b/html/changelogs/AutoChangeLog-pr-9745.yml new file mode 100644 index 0000000000..95a6d943b5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9745.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Certain objects shouldn't be able to become radioactive because of a bitflag that previously was checked nowhere in the code anymore." diff --git a/html/changelogs/AutoChangeLog-pr-9746.yml b/html/changelogs/AutoChangeLog-pr-9746.yml new file mode 100644 index 0000000000..e4b1c312ea --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9746.yml @@ -0,0 +1,4 @@ +author: "actioninja" +delete-after: True +changes: + - bugfix: "med records no longer can eat id cards for no reason" diff --git a/html/changelogs/AutoChangeLog-pr-9765.yml b/html/changelogs/AutoChangeLog-pr-9765.yml new file mode 100644 index 0000000000..1cb21916cc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9765.yml @@ -0,0 +1,5 @@ +author: "dapnee" +delete-after: True +changes: + - bugfix: "fixed closet initialisation being broken" + - rscdel: "emergency closets no longer have a 1% chance to delete themselves" diff --git a/html/changelogs/AutoChangeLog-pr-9771.yml b/html/changelogs/AutoChangeLog-pr-9771.yml new file mode 100644 index 0000000000..55652519e4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9771.yml @@ -0,0 +1,8 @@ +author: "Robustin, Subject217" +delete-after: True +changes: + - balance: "The NukeOp Shuttle hull has been dramatically hardened. The walls are now \"R-Walls\" with far greater explosion resistance." + - balance: "The NukeOp Shuttle guns have been significantly buffed. They now rapidly fire a new type of penetrator round, at a greater range, and have far greater explosion resistance." + - balance: "The nuclear device on the NukeOp Shuttle is now in an anchored state by default, the Nuke can only be unanchored by inserting the disk and entering the proper code." + - balance: "Non-Syndicate cyborgs are now unable to access the NukeOp Shuttle Console." + - bugfix: "You can now unanchor Nukes even when the floor under them has been destroyed" diff --git a/html/changelogs/AutoChangeLog-pr-9772.yml b/html/changelogs/AutoChangeLog-pr-9772.yml new file mode 100644 index 0000000000..675b9a9cde --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9772.yml @@ -0,0 +1,7 @@ +author: "DeltaFire15" +delete-after: True +changes: + - rscadd: "Adds eight new plushies" + - imageadd: "Adds icons for the new plushies and adds a new icon for the skylar plush" + - imagedel: "Deleted a old, no-longer used icon for the skylar plush" + - spellcheck: "Fixed a typo in the trilby plush" diff --git a/html/changelogs/AutoChangeLog-pr-9773.yml b/html/changelogs/AutoChangeLog-pr-9773.yml new file mode 100644 index 0000000000..e02fe07a37 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9773.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - rscadd: "Added a new PDA reskin, sprites from CEV-Eris" diff --git a/html/changelogs/AutoChangeLog-pr-9779.yml b/html/changelogs/AutoChangeLog-pr-9779.yml new file mode 100644 index 0000000000..b6d1046957 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9779.yml @@ -0,0 +1,6 @@ +author: "Ghommie" +delete-after: True +changes: + - rscadd: "Clock cult starts with some spare vitality matrix charge scaled of the number of starter servants." + - balance: "Made the vitality matrix sigil slighty more visible, also allowed conversion runes to heal fresh converts at the cost of some vitality charge." + - bugfix: "Crawling won't save you from the wrath of ocular wardens and pressure sensors anymore, heretics. fix: Pressure sensors are no more triggered by floating/flying mobs." diff --git a/icons/mob/actions/actions_AI.dmi b/icons/mob/actions/actions_AI.dmi index 2ddc7923cc..e3ff3aba93 100644 Binary files a/icons/mob/actions/actions_AI.dmi and b/icons/mob/actions/actions_AI.dmi differ diff --git a/icons/mob/actions/backgrounds.dmi b/icons/mob/actions/backgrounds.dmi index 82303c5862..3697fe4ff5 100644 Binary files a/icons/mob/actions/backgrounds.dmi and b/icons/mob/actions/backgrounds.dmi differ diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index e9343c7ed2..a46ad83640 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/icons/mob/augmentation/augments.dmi b/icons/mob/augmentation/augments.dmi index 574a5ddc48..e311b6605d 100644 Binary files a/icons/mob/augmentation/augments.dmi and b/icons/mob/augmentation/augments.dmi differ diff --git a/icons/mob/augmentation/augments_engineer.dmi b/icons/mob/augmentation/augments_engineer.dmi index 7f2b2e8de9..8aac118b35 100644 Binary files a/icons/mob/augmentation/augments_engineer.dmi and b/icons/mob/augmentation/augments_engineer.dmi differ diff --git a/icons/mob/augmentation/augments_mining.dmi b/icons/mob/augmentation/augments_mining.dmi index 39df4823fd..61d8cc30e5 100644 Binary files a/icons/mob/augmentation/augments_mining.dmi and b/icons/mob/augmentation/augments_mining.dmi differ diff --git a/icons/mob/augmentation/augments_security.dmi b/icons/mob/augmentation/augments_security.dmi index 2679f7c9f8..e954c6e22a 100644 Binary files a/icons/mob/augmentation/augments_security.dmi and b/icons/mob/augmentation/augments_security.dmi differ diff --git a/icons/mob/augmentation/surplus_augments.dmi b/icons/mob/augmentation/surplus_augments.dmi index bc3e4bd73c..d2eb194c28 100644 Binary files a/icons/mob/augmentation/surplus_augments.dmi and b/icons/mob/augmentation/surplus_augments.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 3d8f26a82e..1c477e968f 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/human_parts.dmi b/icons/mob/human_parts.dmi index 6bd504674f..916686e63f 100644 Binary files a/icons/mob/human_parts.dmi and b/icons/mob/human_parts.dmi differ diff --git a/icons/mob/human_parts_greyscale.dmi b/icons/mob/human_parts_greyscale.dmi index 8b894fea6b..ab30929727 100644 Binary files a/icons/mob/human_parts_greyscale.dmi and b/icons/mob/human_parts_greyscale.dmi differ diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi index 8142e03498..d724747a50 100644 Binary files a/icons/mob/screen_alert.dmi and b/icons/mob/screen_alert.dmi differ diff --git a/icons/mob/screen_cyborg.dmi b/icons/mob/screen_cyborg.dmi index 7c64ace299..632443036e 100644 Binary files a/icons/mob/screen_cyborg.dmi and b/icons/mob/screen_cyborg.dmi differ diff --git a/icons/obj/aicards.dmi b/icons/obj/aicards.dmi index e03e5d9567..8e846c3796 100644 Binary files a/icons/obj/aicards.dmi and b/icons/obj/aicards.dmi differ diff --git a/icons/obj/cigarettes.dmi b/icons/obj/cigarettes.dmi index 0f0433be7f..5c55efd67f 100644 Binary files a/icons/obj/cigarettes.dmi and b/icons/obj/cigarettes.dmi differ diff --git a/icons/obj/citvending.dmi b/icons/obj/citvending.dmi index 37c2c8fcf1..8f836b7eb5 100644 Binary files a/icons/obj/citvending.dmi and b/icons/obj/citvending.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 6fb50da207..aa2129f686 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/computer.dmi b/icons/obj/computer.dmi index 1307f063a8..74ca148039 100644 Binary files a/icons/obj/computer.dmi and b/icons/obj/computer.dmi differ diff --git a/icons/obj/crates.dmi b/icons/obj/crates.dmi index 3ab7f4b510..ca81686e94 100644 Binary files a/icons/obj/crates.dmi and b/icons/obj/crates.dmi differ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index 75df4b5cc5..2ea48828d2 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi index a6d5c8a5e1..ca339b5262 100644 Binary files a/icons/obj/guns/energy.dmi and b/icons/obj/guns/energy.dmi differ diff --git a/icons/obj/hydroponics/growing_fruits.dmi b/icons/obj/hydroponics/growing_fruits.dmi index 029d49e196..dfcb54b7b9 100644 Binary files a/icons/obj/hydroponics/growing_fruits.dmi and b/icons/obj/hydroponics/growing_fruits.dmi differ diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi index fa5728f3b4..63dc8b98fd 100644 Binary files a/icons/obj/hydroponics/harvest.dmi and b/icons/obj/hydroponics/harvest.dmi differ diff --git a/icons/obj/hydroponics/seeds.dmi b/icons/obj/hydroponics/seeds.dmi index 7caf346f91..3c625cbe40 100644 Binary files a/icons/obj/hydroponics/seeds.dmi and b/icons/obj/hydroponics/seeds.dmi differ diff --git a/icons/obj/machines/dominator.dmi b/icons/obj/machines/dominator.dmi index 42337dc1c8..3718fc4f83 100644 Binary files a/icons/obj/machines/dominator.dmi and b/icons/obj/machines/dominator.dmi differ diff --git a/icons/obj/machines/mining_machines.dmi b/icons/obj/machines/mining_machines.dmi index 28d608125d..aa60e7100c 100644 Binary files a/icons/obj/machines/mining_machines.dmi and b/icons/obj/machines/mining_machines.dmi differ diff --git a/icons/obj/nuke_tools.dmi b/icons/obj/nuke_tools.dmi index 2c10b5424f..799c4baabb 100644 Binary files a/icons/obj/nuke_tools.dmi and b/icons/obj/nuke_tools.dmi differ diff --git a/icons/obj/pda_minimal.dmi b/icons/obj/pda_minimal.dmi new file mode 100644 index 0000000000..fdc3d96916 Binary files /dev/null and b/icons/obj/pda_minimal.dmi differ diff --git a/icons/obj/plushes.dmi b/icons/obj/plushes.dmi index 685b14cee5..f29208e71f 100644 Binary files a/icons/obj/plushes.dmi and b/icons/obj/plushes.dmi differ diff --git a/icons/obj/sofa.dmi b/icons/obj/sofa.dmi index dafe06a7f1..069fb1e08d 100644 Binary files a/icons/obj/sofa.dmi and b/icons/obj/sofa.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index 68bf9bd2bd..fedb6c828e 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index cad28e12fe..dd8f7bed1d 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/icons/obj/tools.dmi b/icons/obj/tools.dmi index 6130c67eb3..efd7974897 100644 Binary files a/icons/obj/tools.dmi and b/icons/obj/tools.dmi differ diff --git a/icons/turf/walls/plastitanium_wall.dmi b/icons/turf/walls/plastitanium_wall.dmi index 3cd7332b6a..01dfdd1234 100644 Binary files a/icons/turf/walls/plastitanium_wall.dmi and b/icons/turf/walls/plastitanium_wall.dmi differ diff --git a/modular_citadel/code/controllers/subsystem/shuttle.dm b/modular_citadel/code/controllers/subsystem/shuttle.dm index ce3f062bdd..567b23f202 100644 --- a/modular_citadel/code/controllers/subsystem/shuttle.dm +++ b/modular_citadel/code/controllers/subsystem/shuttle.dm @@ -1,7 +1,7 @@ /datum/controller/subsystem/shuttle/proc/autoEnd() //CIT CHANGE - allows shift to end after 2 hours have passed. if((world.realtime - SSshuttle.realtimeofstart) > auto_call && EMERGENCY_IDLE_OR_RECALLED) //2 hours SSshuttle.emergency.request(silent = TRUE) - priority_announce("The shift has come to an end and the shuttle called. [seclevel2num(get_security_level()) == SEC_LEVEL_RED ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [emergency.timeLeft(600)] minutes.", null, 'sound/ai/shuttlecalled.ogg', "Priority") + priority_announce("The shift has come to an end and the shuttle called. [seclevel2num(get_security_level()) == SEC_LEVEL_RED ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [emergency.timeLeft(600)] minutes.", null, "shuttlecalled", "Priority") log_game("Round time limit reached. Shuttle has been auto-called.") message_admins("Round time limit reached. Shuttle called.") emergencyNoRecall = TRUE diff --git a/modular_citadel/code/datums/components/souldeath.dm b/modular_citadel/code/datums/components/souldeath.dm index 5beddf3529..ab45210a46 100644 --- a/modular_citadel/code/datums/components/souldeath.dm +++ b/modular_citadel/code/datums/components/souldeath.dm @@ -29,7 +29,7 @@ if(!wearer) return //idfk new/obj/effect/temp_visual/souldeath(wearer.loc, wearer) - playsound(wearer, 'modular_citadel/sound/misc/souldeath.ogg', 100, FALSE) + playsound(wearer, 'sound/misc/souldeath.ogg', 100, FALSE) /datum/component/souldeath/neck equip_slot = SLOT_NECK diff --git a/modular_citadel/code/datums/mood_events/moodular.dm b/modular_citadel/code/datums/mood_events/moodular.dm index aa87f1b97a..ee502c7b39 100644 --- a/modular_citadel/code/datums/mood_events/moodular.dm +++ b/modular_citadel/code/datums/mood_events/moodular.dm @@ -18,7 +18,7 @@ // Jack the Ripper starring plush /obj/item/toy/plush/attackby(obj/item/I, mob/living/user, params) . = ..() - if(I.is_sharp()) + if(I.get_sharpness()) if(!grenade) SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT,"plushjack", /datum/mood_event/plushjack) diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index c5b9ca10ea..abf68cc398 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -37,64 +37,62 @@ alert_type = null var/moveCalc = 1 var/cachedmoveCalc = 1 + var/last_checked_size //used to prevent potential cpu waste from happening every tick. -/datum/status_effect/chem/breast_enlarger/on_apply(mob/living/carbon/human/H)//Removes clothes, they're too small to contain you. You belong to space now. +/datum/status_effect/chem/breast_enlarger/on_apply()//Removes clothes, they're too small to contain you. You belong to space now. log_game("FERMICHEM: [owner]'s breasts has reached comical sizes. ID: [owner.key]") - var/mob/living/carbon/human/o = owner - var/items = o.get_contents() - for(var/obj/item/W in items) - if(W == o.w_uniform || W == o.wear_suit) - o.dropItemToGround(W, TRUE) - playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1) - to_chat(o, "Your clothes give, ripping into peices under the strain of your swelling breasts! Unless you manage to reduce the size of your breasts, there's no way you're going to be able to put anything on over these melons..!") - o.visible_message("[o]'s chest suddenly bursts forth, ripping their clothes off!'") - else - to_chat(o, "Your bountiful bosom is so rich with mass, you seriously doubt you'll be able to fit any clothes over it.") - return ..() + var/mob/living/carbon/human/H = owner + var/message = FALSE + if(H.w_uniform) + H.dropItemToGround(H.w_uniform, TRUE) + message = TRUE + if(H.wear_suit) + H.dropItemToGround(H.wear_suit, TRUE) + message = TRUE + if(message) + playsound(H.loc, 'sound/items/poster_ripped.ogg', 50, 1) + H.visible_message("[H]'s chest suddenly bursts forth, ripping their clothes off!'", \ + "Your clothes give, ripping into peices under the strain of your swelling breasts! Unless you manage to reduce the size of your breasts, there's no way you're going to be able to put anything on over these melons..!") + else + to_chat(H, "Your bountiful bosom is so rich with mass, you seriously doubt you'll be able to fit any clothes over it.") + return ..() -/datum/status_effect/chem/breast_enlarger/tick(mob/living/carbon/human/H)//If you try to wear clothes, you fail. Slows you down if you're comically huge - var/mob/living/carbon/human/o = owner - var/obj/item/organ/genital/breasts/B = o.getorganslot("breasts") - moveCalc = 1+((round(B.cached_size) - 9)/3) //Afffects how fast you move, and how often you can click. +/datum/status_effect/chem/breast_enlarger/tick()//If you try to wear clothes, you fail. Slows you down if you're comically huge + var/mob/living/carbon/human/H = owner + var/obj/item/organ/genital/breasts/B = H.getorganslot(ORGAN_SLOT_BREASTS) if(!B) - o.remove_movespeed_modifier(BREAST_MOVEMENT_SPEED) - sizeMoveMod(1) - owner.remove_status_effect(src) - var/items = o.get_contents() - for(var/obj/item/W in items) - if(W == o.w_uniform || W == o.wear_suit) - o.dropItemToGround(W, TRUE) - playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1) - to_chat(owner, "Your enormous breasts are way too large to fit anything over them!") + H.remove_status_effect(src) + return + moveCalc = 1+((round(B.cached_size) - 9)/3) //Afffects how fast you move, and how often you can click. + var/message = FALSE + if(H.w_uniform) + H.dropItemToGround(H.w_uniform, TRUE) + message = TRUE + if(H.wear_suit) + H.dropItemToGround(H.wear_suit, TRUE) + message = TRUE + if(message) + playsound(H.loc, 'sound/items/poster_ripped.ogg', 50, 1) + to_chat(H, "Your enormous breasts are way too large to fit anything over them!") + + if(last_checked_size != B.cached_size) + H.add_movespeed_modifier(BREAST_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc) + sizeMoveMod(moveCalc) + if (B.size == "huge") if(prob(1)) to_chat(owner, "Your back is feeling sore.") - var/target = o.get_bodypart(BODY_ZONE_CHEST) - o.apply_damage(0.1, BRUTE, target) - if(!B.cached_size == B.breast_values[B.prev_size]) - o.add_movespeed_modifier(BREAST_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc) - sizeMoveMod(moveCalc) - return ..() - else if (B.breast_values[B.size] > B.breast_values[B.prev_size]) - o.add_movespeed_modifier(BREAST_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc) - sizeMoveMod(moveCalc) - else if (B.breast_values[B.size] < B.breast_values[B.prev_size]) - o.add_movespeed_modifier(BREAST_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc) - sizeMoveMod(moveCalc) - if((B.cached_size) < 16) - switch(round(B.cached_size)) - if(9) - if (B.breast_values[B.prev_size] != B.breast_values[B.size]) - to_chat(o, "Your expansive chest has become a more managable size, liberating your movements.") - if(10 to INFINITY) - if (B.breast_values[B.prev_size] != B.breast_values[B.size]) - to_chat(H, "Your indulgent busom is so substantial, it's affecting your movements!") + var/target = H.get_bodypart(BODY_ZONE_CHEST) + H.apply_damage(0.1, BRUTE, target) + else if(prob(1)) - to_chat(owner, "Your back is feeling a little sore.") - ..() + to_chat(H, "Your back is feeling a little sore.") + last_checked_size = B.cached_size + ..() -/datum/status_effect/chem/breast_enlarger/on_remove(mob/living/carbon/M) +/datum/status_effect/chem/breast_enlarger/on_remove() log_game("FERMICHEM: [owner]'s breasts has reduced to an acceptable size. ID: [owner.key]") + to_chat(owner, "Your expansive chest has become a more managable size, liberating your movements.") owner.remove_movespeed_modifier(BREAST_MOVEMENT_SPEED) sizeMoveMod(1) @@ -112,51 +110,57 @@ alert_type = null var/bloodCalc var/moveCalc + var/last_checked_size //used to prevent potential cpu waste, just like the above. -/datum/status_effect/chem/penis_enlarger/on_apply(mob/living/carbon/human/H)//Removes clothes, they're too small to contain you. You belong to space now. +/datum/status_effect/chem/penis_enlarger/on_apply()//Removes clothes, they're too small to contain you. You belong to space now. log_game("FERMICHEM: [owner]'s dick has reached comical sizes. ID: [owner.key]") - var/mob/living/carbon/human/o = owner - var/items = o.get_contents() - if(o.w_uniform || o.wear_suit) - to_chat(o, "Your clothes give, ripping into peices under the strain of your swelling pecker! Unless you manage to reduce the size of your emancipated trouser snake, there's no way you're going to be able to put anything on over this girth..!") - owner.visible_message("[o]'s schlong suddenly bursts forth, ripping their clothes off!'") + var/mob/living/carbon/human/H = owner + var/message = FALSE + if(H.w_uniform) + H.dropItemToGround(H.w_uniform, TRUE) + message = TRUE + if(H.wear_suit) + H.dropItemToGround(H.wear_suit, TRUE) + message = TRUE + if(message) + playsound(H.loc, 'sound/items/poster_ripped.ogg', 50, 1) + H.visible_message("[H]'s schlong suddenly bursts forth, ripping their clothes off!'", \ + "Your clothes give, ripping into peices under the strain of your swelling pecker! Unless you manage to reduce the size of your emancipated trouser snake, there's no way you're going to be able to put anything on over this girth..!") else - to_chat(o, "Your emancipated trouser snake is so ripe with girth, you seriously doubt you'll be able to fit any clothes over it.") - for(var/obj/item/W in items) - if(W == o.w_uniform || W == o.wear_suit) - o.dropItemToGround(W, TRUE) - playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1) + to_chat(H, "Your emancipated trouser snake is so ripe with girth, you seriously doubt you'll be able to fit any clothes over it.") return ..() -/datum/status_effect/chem/penis_enlarger/tick(mob/living/carbon/M) - var/mob/living/carbon/human/o = owner - var/obj/item/organ/genital/penis/P = o.getorganslot("penis") +/datum/status_effect/chem/penis_enlarger/tick() + var/mob/living/carbon/human/H = owner + var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) + if(!P) + owner.remove_status_effect(src) + return moveCalc = 1+((round(P.length) - 21)/3) //effects how fast you can move bloodCalc = 1+((round(P.length) - 21)/15) //effects how much blood you need (I didn' bother adding an arousal check because I'm spending too much time on this organ already.) - if(!P) - o.remove_movespeed_modifier(DICK_MOVEMENT_SPEED) - o.ResetBloodVol() - owner.remove_status_effect(src) - var/items = o.get_contents() - for(var/obj/item/W in items) - if(W == o.w_uniform || W == o.wear_suit) - o.dropItemToGround(W, TRUE) - playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1) - to_chat(owner, "Your enormous package is way to large to fit anything over!") - switch(round(P.cached_length)) - if(21) - to_chat(o, "Your rascally willy has become a more managable size, liberating your movements.") - o.remove_movespeed_modifier(DICK_MOVEMENT_SPEED) - o.AdjustBloodVol(bloodCalc) - if(22 to INFINITY) - if(prob(2)) - to_chat(o, "Your indulgent johnson is so substantial, it's taking all your blood and affecting your movements!") - o.add_movespeed_modifier(DICK_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc) - o.AdjustBloodVol(bloodCalc) + + var/message = FALSE + if(H.w_uniform) + H.dropItemToGround(H.w_uniform, TRUE) + message = TRUE + if(H.wear_suit) + H.dropItemToGround(H.wear_suit, TRUE) + message = TRUE + if(message) + playsound(H.loc, 'sound/items/poster_ripped.ogg', 50, 1) + to_chat(H, "Your enormous package is way to large to fit anything over!") + + if(P.length < 22 && H.has_movespeed_modifier(DICK_MOVEMENT_SPEED)) + to_chat(owner, "Your rascally willy has become a more managable size, liberating your movements.") + H.remove_movespeed_modifier(DICK_MOVEMENT_SPEED) + else if(P.length >= 22 && !H.has_movespeed_modifier(DICK_MOVEMENT_SPEED)) + to_chat(H, "Your indulgent johnson is so substantial, it's taking all your blood and affecting your movements!") + H.add_movespeed_modifier(DICK_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc) + H.AdjustBloodVol(bloodCalc) ..() -/datum/status_effect/chem/penis_enlarger/on_remove(mob/living/carbon/human/o) +/datum/status_effect/chem/penis_enlarger/on_remove() log_game("FERMICHEM: [owner]'s dick has reduced to an acceptable size. ID: [owner.key]") owner.remove_movespeed_modifier(DICK_MOVEMENT_SPEED) owner.ResetBloodVol() @@ -499,7 +503,7 @@ cooldown += 1 //Cooldown doesn't process till status is done else if(status == "charge") - ADD_TRAIT(owner, TRAIT_GOTTAGOFAST, "MKUltra") + owner.add_movespeed_modifier(MOVESPEED_ID_MKULTRA, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) status = "charged" if(master.client?.prefs.lewdchem) to_chat(owner, "Your [enthrallGender]'s order fills you with a burst of speed!") @@ -509,7 +513,7 @@ else if (status == "charged") if (statusStrength < 0) status = null - REMOVE_TRAIT(owner, TRAIT_GOTTAGOFAST, "MKUltra") + owner.remove_movespeed_modifier(MOVESPEED_ID_MKULTRA) owner.Knockdown(50) to_chat(owner, "Your body gives out as the adrenaline in your system runs out.") else diff --git a/modular_citadel/code/datums/traits/neutral.dm b/modular_citadel/code/datums/traits/neutral.dm deleted file mode 100644 index 197c9b94e1..0000000000 --- a/modular_citadel/code/datums/traits/neutral.dm +++ /dev/null @@ -1,43 +0,0 @@ -// Citadel-specific Neutral Traits - -/datum/quirk/libido - name = "Nymphomania" - desc = "You're always feeling a bit in heat. Also, you get aroused faster than usual." - value = 0 - mob_trait = TRAIT_NYMPHO - gain_text = "You are feeling extra wild." - lose_text = "You don't feel that burning sensation anymore." - -/datum/quirk/libido/add() - var/mob/living/M = quirk_holder - M.min_arousal = 16 - M.arousal_rate = 3 - -/datum/quirk/libido/remove() - var/mob/living/M = quirk_holder - M.min_arousal = initial(M.min_arousal) - M.arousal_rate = initial(M.arousal_rate) - -/datum/quirk/libido/on_process() - var/mob/living/M = quirk_holder - if(M.canbearoused == FALSE) - to_chat(quirk_holder, "Having high libido is useless when you can't feel arousal at all!") - qdel(src) - -/datum/quirk/maso - name = "Masochism" - desc = "You are aroused by pain." - value = 0 - mob_trait = TRAIT_MASO - gain_text = "You desire to be hurt." - lose_text = "Pain has become less exciting for you." - -/datum/quirk/pharmacokinesis //Prevents unwanted organ additions. - name = "Acute hepatic pharmacokinesis" - desc = "You've a rare genetic disorder that causes Incubus draft and Sucubus milk to be absorbed by your liver instead." - value = 0 - mob_trait = TRAIT_PHARMA - lose_text = "Your liver feels different." - var/active = FALSE - var/power = 0 - var/cachedmoveCalc = 1 diff --git a/modular_citadel/code/game/gamemodes/gangs/dominator.dm b/modular_citadel/code/game/gamemodes/gangs/dominator.dm index 4946cad510..c590baf62e 100644 --- a/modular_citadel/code/game/gamemodes/gangs/dominator.dm +++ b/modular_citadel/code/game/gamemodes/gangs/dominator.dm @@ -53,19 +53,17 @@ /obj/machinery/dominator/update_icon() cut_overlays() - if(!(stat & BROKEN)) - icon_state = "dominator-active" - if(operating) - var/mutable_appearance/dominator_overlay = mutable_appearance('icons/obj/machines/dominator.dmi', "dominator-overlay") - if(gang) - dominator_overlay.color = gang.color - add_overlay(dominator_overlay) - else - icon_state = "dominator" - if(obj_integrity/max_integrity < 0.66) - add_overlay("damage") - else + if(stat & BROKEN) icon_state = "dominator-broken" + return + icon_state = "dominator" + if(operating) + var/mutable_appearance/dominator_overlay = mutable_appearance('icons/obj/machines/dominator.dmi', "dominator-overlay") + if(gang) + dominator_overlay.color = gang.color + add_overlay(dominator_overlay) + if(obj_integrity/max_integrity < 0.66) + add_overlay("damage") /obj/machinery/dominator/examine(mob/user) ..() @@ -168,7 +166,7 @@ examine(user) return - if(tempgang.domination_time != NOT_DOMINATING) + if(tempgang.domination_time != NOT_DOMINATING) to_chat(user, "Error: Hostile Takeover is already in progress.") return diff --git a/modular_citadel/code/game/machinery/vending.dm b/modular_citadel/code/game/machinery/vending.dm index 6a91810173..a71175c345 100755 --- a/modular_citadel/code/game/machinery/vending.dm +++ b/modular_citadel/code/game/machinery/vending.dm @@ -72,32 +72,7 @@ /obj/item/reagent_containers/glass/bottle/hexacrocin = 10 ) refill_canister = /obj/item/vending_refill/kink -/* -/obj/machinery/vending/nazivend - name = "Nazivend" - desc = "A vending machine containing Nazi German supplies. A label reads: \"Remember the gorrilions lost.\"" - icon = 'icons/obj/citvending.dmi' - icon_state = "nazi" - vend_reply = "SIEG HEIL!" - product_slogans = "Das Vierte Reich wird zuruckkehren!;ENTFERNEN JUDEN!;Billiger als die Juden jemals geben!;Rader auf dem adminbus geht rund und rund.;Warten Sie, warum wir wieder hassen Juden?- *BZZT*" - products = list( - /obj/item/clothing/head/stalhelm = 20, - /obj/item/clothing/head/panzer = 20, - /obj/item/clothing/suit/soldiercoat = 20, - // /obj/item/clothing/under/soldieruniform = 20, - /obj/item/clothing/shoes/jackboots = 20 - ) - contraband = list( - /obj/item/clothing/head/naziofficer = 10, - // /obj/item/clothing/suit/officercoat = 10, - // /obj/item/clothing/under/officeruniform = 10, - /obj/item/clothing/suit/space/hardsuit/nazi = 3, - /obj/item/gun/energy/plasma/MP40k = 4 - ) - premium = list() - refill_canister = /obj/item/vending_refill/nazi -*/ /obj/machinery/vending/sovietvend name = "KomradeVendtink" desc = "Rodina-mat' zovyot!" @@ -137,10 +112,6 @@ icon = 'modular_citadel/icons/vending_restock.dmi' icon_state = "refill_kink" -/obj/item/vending_refill/nazi - machine_name = "nazivend" - icon_state = "refill_nazi" - /obj/item/vending_refill/soviet machine_name = "sovietvend" icon_state = "refill_soviet" diff --git a/modular_citadel/code/game/objects/items.dm b/modular_citadel/code/game/objects/items.dm index c94923f9de..dba460414e 100644 --- a/modular_citadel/code/game/objects/items.dm +++ b/modular_citadel/code/game/objects/items.dm @@ -9,7 +9,7 @@ alternate_screams = list('modular_citadel/sound/voice/scream_silicon.ogg') /obj/item/clothing/head/ushanka - alternate_screams = list('modular_citadel/sound/misc/cyka1.ogg', 'modular_citadel/sound/misc/cheekibreeki.ogg') + alternate_screams = list('sound/voice/human/cyka1.ogg', 'sound/voice/human/cheekibreeki.ogg') /obj/item/proc/grenade_prime_react(obj/item/grenade/nade) return \ No newline at end of file diff --git a/modular_citadel/code/game/objects/items/devices/aicard.dm b/modular_citadel/code/game/objects/items/devices/aicard.dm deleted file mode 100644 index a1509e4473..0000000000 --- a/modular_citadel/code/game/objects/items/devices/aicard.dm +++ /dev/null @@ -1,4 +0,0 @@ -/obj/item/aicard/potato - name = "Potat-OS" - desc = "A storage device for possibly malfunctioning AIs. Go on. Get a big fat eyeful. With your big fat eyes." - icon = 'modular_citadel/icons/aicards.dmi' diff --git a/modular_citadel/code/game/turfs/cit_turfs.dm b/modular_citadel/code/game/turfs/cit_turfs.dm deleted file mode 100644 index 76a8e75f9c..0000000000 --- a/modular_citadel/code/game/turfs/cit_turfs.dm +++ /dev/null @@ -1,24 +0,0 @@ -//Yes, hi. This is the file that handles Citadel's turf modifications. - -/* -/turf/open/floor/Entered(atom/obj, atom/oldloc) - . = ..() - CitDirtify(obj, oldloc)*/ - -//Baystation-styled tile dirtification. -/turf/open/floor/proc/CitDirtify(atom/obj, atom/oldloc) - if(prob(50)) - if(has_gravity(src) && !isobserver(obj)) - var/dirtamount - var/obj/effect/decal/cleanable/dirt/dirt = locate(/obj/effect/decal/cleanable/dirt, src) - if(!dirt) - dirt = new/obj/effect/decal/cleanable/dirt(src) - dirt.alpha = 0 - dirtamount = 0 - dirtamount = dirt.alpha + 1 - if(oldloc && istype(oldloc, /turf/open/floor)) - var/obj/effect/decal/cleanable/dirt/spreadindirt = locate(/obj/effect/decal/cleanable/dirt, oldloc) - if(spreadindirt && spreadindirt.alpha) - dirtamount += round(spreadindirt.alpha * 0.05) - dirt.alpha = min(dirtamount,255) - return TRUE diff --git a/modular_citadel/code/modules/admin/admin.dm b/modular_citadel/code/modules/admin/admin.dm index 52c787dbdb..529d0c79ec 100644 --- a/modular_citadel/code/modules/admin/admin.dm +++ b/modular_citadel/code/modules/admin/admin.dm @@ -15,7 +15,7 @@ return to_chat(M, "Man up, and deal with it.
Move on.") - M.playsound_local(M, 'modular_citadel/sound/misc/manup.ogg', 50, FALSE, pressure_affected = FALSE) + M.playsound_local(M, 'sound/voice/manup.ogg', 50, FALSE, pressure_affected = FALSE) log_admin("Man up: [key_name(usr)] told [key_name(M)] to man up") var/message = "[key_name_admin(usr)] told [key_name_admin(M)] to man up." @@ -32,7 +32,7 @@ to_chat(world, "Man up, and deal with it.
Move on.") for(var/mob/M in GLOB.player_list) - M.playsound_local(M, 'modular_citadel/sound/misc/manup.ogg', 50, FALSE, pressure_affected = FALSE) + M.playsound_local(M, 'sound/voice/manup.ogg', 50, FALSE, pressure_affected = FALSE) log_admin("Man up global: [key_name(usr)] told everybody to man up") message_admins("[key_name_admin(usr)] told everybody to man up.") diff --git a/modular_citadel/code/modules/arousal/arousal.dm b/modular_citadel/code/modules/arousal/arousal.dm index 27f7576e7f..6c9da17289 100644 --- a/modular_citadel/code/modules/arousal/arousal.dm +++ b/modular_citadel/code/modules/arousal/arousal.dm @@ -19,11 +19,6 @@ var/hidden_undershirt = FALSE var/hidden_socks = FALSE -/mob/living/carbon/human/New() - ..() - saved_underwear = underwear - saved_undershirt = undershirt - //Species vars /datum/species var/arousal_gain_rate = AROUSAL_START_VALUE //Rate at which this species becomes aroused @@ -35,60 +30,51 @@ //Mob procs /mob/living/carbon/human/proc/underwear_toggle() set name = "Toggle undergarments" - set category = "Object" - if(ishuman(src)) - var/mob/living/carbon/human/humz = src - var/confirm = input(src, "Select what part of your form to alter", "Undergarment Toggling", "Cancel") in list("Top", "Bottom", "Socks", "All", "Cancel") - if(confirm == "Top") - humz.hidden_undershirt = !humz.hidden_undershirt + set category = "IC" - if(confirm == "Bottom") - humz.hidden_underwear = !humz.hidden_underwear + var/confirm = input(src, "Select what part of your form to alter", "Undergarment Toggling") as null|anything in list("Top", "Bottom", "Socks", "All") + if(!confirm) + return + if(confirm == "Top") + hidden_undershirt = !hidden_undershirt - if(confirm == "Socks") - humz.hidden_socks = !humz.hidden_socks + if(confirm == "Bottom") + hidden_underwear = !hidden_underwear - if(confirm == "All") - humz.hidden_undershirt = !humz.hidden_undershirt - humz.hidden_underwear = !humz.hidden_underwear - humz.hidden_socks = !humz.hidden_socks + if(confirm == "Socks") + hidden_socks = !hidden_socks - if(confirm == "Cancel") - return - src.update_body() + if(confirm == "All") + var/on_off = (hidden_undershirt || hidden_underwear || hidden_socks) ? FALSE : TRUE + hidden_undershirt = on_off + hidden_underwear = on_off + hidden_socks = on_off - else - to_chat(src, "Humans only. How the fuck did you get this verb anyway.") + update_body() -/mob/living/proc/handle_arousal() - - -/mob/living/carbon/handle_arousal() - if(canbearoused && dna) - var/datum/species/S - S = dna.species - if(S && !(SSmobs.times_fired % 36) && getArousalLoss() < max_arousal)//Totally stolen from breathing code. Do this every 36 ticks. - adjustArousalLoss(arousal_rate * S.arousal_gain_rate) - if(dna.features["exhibitionist"] && client) - var/amt_nude = 0 - if(is_chest_exposed() && (getorganslot("breasts"))) - amt_nude++ - if(is_groin_exposed()) - if(getorganslot("penis")) - amt_nude++ - if(getorganslot("vagina")) - amt_nude++ - if(amt_nude) - var/watchers = 0 - for(var/mob/_M in view(world.view, src)) - var/mob/living/M = _M - if(!istype(M)) - continue - if(M.client && !M.stat && !M.eye_blind && (locate(src) in viewers(world.view,M))) - watchers++ - if(watchers) - adjustArousalLoss((amt_nude * watchers) + S.arousal_gain_rate) +/mob/living/proc/handle_arousal(times_fired) + return +/mob/living/carbon/handle_arousal(times_fired) + if(!canbearoused || !dna) + return + var/datum/species/S = dna.species + if(!S || (times_fired % 36) || !getArousalLoss() >= max_arousal)//Totally stolen from breathing code. Do this every 36 ticks. + return + var/our_loss = arousal_rate * S.arousal_gain_rate + if(HAS_TRAIT(src, TRAIT_EXHIBITIONIST) && client) + var/amt_nude = 0 + for(var/obj/item/organ/genital/G in internal_organs) + if(G.is_exposed()) + amt_nude++ + if(amt_nude) + var/watchers = 0 + for(var/mob/living/L in view(src)) + if(L.client && !L.stat && !L.eye_blind && (src in view(L))) + watchers++ + if(watchers) + our_loss += (amt_nude * watchers) + S.arousal_gain_rate + adjustArousalLoss(our_loss) /mob/living/proc/getArousalLoss() return arousalloss @@ -138,8 +124,6 @@ S = GLOB.breasts_shapes_list[G.shape] if(S?.alt_aroused) G.aroused_state = isPercentAroused(G.aroused_amount) - if(getArousalLoss() >= ((max_arousal / 100) * 33)) - G.aroused_state = TRUE else G.aroused_state = FALSE G.update_appearance() @@ -147,54 +131,16 @@ /mob/living/proc/update_arousal_hud() return FALSE -/datum/species/proc/update_arousal_hud(mob/living/carbon/human/H) - return FALSE - /mob/living/carbon/human/update_arousal_hud() - if(!client || !hud_used) - return FALSE - if(dna.species.update_arousal_hud()) + if(!client || !(hud_used?.arousal)) return FALSE if(!canbearoused) hud_used.arousal.icon_state = "" return FALSE else - if(hud_used.arousal) - if(stat == DEAD) - hud_used.arousal.icon_state = "arousal0" - return TRUE - if(getArousalLoss() == max_arousal) - hud_used.arousal.icon_state = "arousal100" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 90)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal90" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 80)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal80" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 70)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal70" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 60)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal60" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 50)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal50" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 40)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal40" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 30)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal30" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 20)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal10" - return TRUE - if(getArousalLoss() >= (max_arousal / 100) * 10)//M O D U L A R , W O W - hud_used.arousal.icon_state = "arousal10" - return TRUE - else - hud_used.arousal.icon_state = "arousal0" + var/value = FLOOR(getPercentAroused(), 10) + hud_used.arousal.icon_state = "arousal[value]" + return TRUE /obj/screen/arousal name = "arousal" @@ -213,7 +159,6 @@ to_chat(M, "Arousal is disabled. Feature is unavailable.") - /mob/living/proc/mob_climax()//This is just so I can test this shit without being forced to add actual content to get rid of arousal. Will be a very basic proc for a while. set name = "Masturbate" set category = "IC" @@ -221,225 +166,187 @@ if(mb_cd_timer <= world.time) //start the cooldown even if it fails mb_cd_timer = world.time + mb_cd_length - if(getArousalLoss() >= ((max_arousal / 100) * 33))//33% arousal or greater required - src.visible_message("[src] starts masturbating!", \ + if(getArousalLoss() >= 33)//one third of average max_arousal or greater required + visible_message("[src] starts masturbating!", \ "You start masturbating.") if(do_after(src, 30, target = src)) - src.visible_message("[src] relieves [p_them()]self!", \ + visible_message("[src] relieves [p_them()]self!", \ "You have relieved yourself.") SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) setArousalLoss(min_arousal) else to_chat(src, "You aren't aroused enough for that.") +/obj/item/organ/genital/proc/climaxable(mob/living/carbon/human/H, silent = FALSE) //returns the fluid source (ergo reagents holder) if found. + if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION)) + . = reagents + else + if(linked_organ) + . = linked_organ.reagents + if(!. && !silent) + to_chat(H, "Your [name] is unable to produce it's own fluids, it's missing the organs for it.") + +/mob/living/carbon/human/proc/do_climax(datum/reagents/R, atom/target, obj/item/organ/genital/G, spill = TRUE) + if(!G) + return + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) + setArousalLoss(min_arousal) + if(!target || !R) + return + var/turfing = isturf(target) + if(spill & R.total_volume >= 5) + R.reaction(turfing ? target : target.loc, TOUCH, 1, 0) + if(!turfing) + R.trans_to(target, R.total_volume * (spill ? G.fluid_transfer_factor : 1)) + R.clear_reagents() //These are various procs that we'll use later, split up for readability instead of having one, huge proc. //For all of these, we assume the arguments given are proper and have been checked beforehand. /mob/living/carbon/human/proc/mob_masturbate(obj/item/organ/genital/G, mb_time = 30) //Masturbation, keep it gender-neutral - var/total_fluids = 0 - var/datum/reagents/fluid_source = null - - if(G.producing) //Can it produce its own fluids, such as breasts? - fluid_source = G.reagents - else - if(!G.linked_organ) - to_chat(src, "Your [G.name] is unable to produce it's own fluids, it's missing the organs for it.") - return - fluid_source = G.linked_organ.reagents - total_fluids = fluid_source.total_volume + var/datum/reagents/fluid_source = G.climaxable(src) + if(!fluid_source) + return + var/obj/item/organ/genital/PP = CHECK_BITFIELD(G.genital_flags, MASTURBATE_LINKED_ORGAN) ? G.linked_organ : G + if(!PP) + to_chat(src, "You shudder, unable to cum with your [name].") if(mb_time) - src.visible_message("[src] starts to [G.masturbation_verb] [p_their()] [G.name].", \ - "You start to [G.masturbation_verb] your [G.name].", \ + visible_message("[src] starts to [G.masturbation_verb] [p_their()] [G.name].", \ "You start to [G.masturbation_verb] your [G.name].") - - if(do_after(src, mb_time, target = src)) - if(total_fluids > 5) - fluid_source.reaction(src.loc, TOUCH, 1, 0) - fluid_source.clear_reagents() - src.visible_message("[src] orgasms, cumming[istype(src.loc, /turf/open/floor) ? " onto [src.loc]" : ""]!", \ - "You cum[istype(src.loc, /turf/open/floor) ? " onto [src.loc]" : ""].", \ - "You have relieved yourself.") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - if(G.can_climax) - setArousalLoss(min_arousal) - + if(!do_after(src, mb_time, target = src) || !G.climaxable(src, TRUE)) + return + visible_message("[src] orgasms, [PP.orgasm_verb][isturf(loc) ? " onto [loc]" : ""] with [p_their()] [PP.name]!", \ + "You orgasm, [PP.orgasm_verb][isturf(loc) ? " onto [loc]" : ""] with your [PP.name].") + do_climax(fluid_source, loc, G) /mob/living/carbon/human/proc/mob_climax_outside(obj/item/organ/genital/G, mb_time = 30) //This is used for forced orgasms and other hands-free climaxes - var/total_fluids = 0 - var/datum/reagents/fluid_source = null - var/unable_to_come = FALSE - - if(G.producing) //Can it produce its own fluids, such as breasts? - fluid_source = G.reagents - total_fluids = fluid_source.total_volume - else - if(!G.linked_organ) - unable_to_come = TRUE - else - fluid_source = G.linked_organ.reagents - total_fluids = fluid_source.total_volume - - if(unable_to_come) - src.visible_message("[src] shudders, their [G.name] unable to cum.", \ - "Your [G.name] cannot cum, giving no relief.", \ + var/datum/reagents/fluid_source = G.climaxable(src, TRUE) + if(!fluid_source) + visible_message("[src] shudders, their [G.name] unable to cum.", \ "Your [G.name] cannot cum, giving no relief.") - else - total_fluids = fluid_source.total_volume - if(mb_time) //as long as it's not instant, give a warning - src.visible_message("[src] looks like they're about to cum.", \ - "You feel yourself about to orgasm.", \ - "You feel yourself about to orgasm.") - if(do_after(src, mb_time, target = src)) - if(total_fluids > 5) - fluid_source.reaction(src.loc, TOUCH, 1, 0) - fluid_source.clear_reagents() - src.visible_message("[src] orgasms[istype(src.loc, /turf/open/floor) ? ", spilling onto [src.loc]" : ""], using [p_their()] [G.name]!", \ - "You climax[istype(src.loc, /turf/open/floor) ? ", spilling onto [src.loc]" : ""] with your [G.name].", \ - "You climax using your [G.name].") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - if(G.can_climax) - setArousalLoss(min_arousal) - + return + if(mb_time) //as long as it's not instant, give a warning + visible_message("[src] looks like they're about to cum.", \ + "You feel yourself about to orgasm.") + if(!do_after(src, mb_time, target = src) || !G.climaxable(src, TRUE)) + return + visible_message("[src] orgasms[isturf(loc) ? " onto [loc]" : ""], using [p_their()] [G.name]!", \ + "You climax[isturf(loc) ? " onto [loc]" : ""] with your [G.name].") + do_climax(fluid_source, loc, G) /mob/living/carbon/human/proc/mob_climax_partner(obj/item/organ/genital/G, mob/living/L, spillage = TRUE, mb_time = 30) //Used for climaxing with any living thing - var/total_fluids = 0 - var/datum/reagents/fluid_source = null - - if(G.producing) //Can it produce its own fluids, such as breasts? - fluid_source = G.reagents - else - if(!G.linked_organ) - to_chat(src, "Your [G.name] is unable to produce it's own fluids, it's missing the organs for it.") - return - fluid_source = G.linked_organ.reagents - total_fluids = fluid_source.total_volume + var/datum/reagents/fluid_source = G.climaxable(src) + if(!fluid_source) + return if(mb_time) //Skip warning if this is an instant climax. - src.visible_message("[src] is about to climax with [L]!", \ - "You're about to climax with [L]!", \ - "You're preparing to climax with someone!") + visible_message("[src] is about to climax with [L]!", \ + "You're about to climax with [L]!") + if(!do_after(src, mb_time, target = src) || !in_range(src, L) || !G.climaxable(src, TRUE)) + return if(spillage) - if(do_after(src, mb_time, target = src) && in_range(src, L)) - fluid_source.trans_to(L, total_fluids*G.fluid_transfer_factor) - total_fluids -= total_fluids*G.fluid_transfer_factor - if(total_fluids > 5) - fluid_source.reaction(L.loc, TOUCH, 1, 0) - fluid_source.clear_reagents() - src.visible_message("[src] climaxes with [L][spillage ? ", overflowing and spilling":""], using [p_their()] [G.name]!", \ - "You orgasm with [L][spillage ? ", spilling out of them":""], using your [G.name].", \ - "You have climaxed with someone[spillage ? ", spilling out of them":""], using your [G.name].") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - if(G.can_climax) - setArousalLoss(min_arousal) + visible_message("[src] climaxes with [L], overflowing and spilling, using [p_their()] [G.name]!", \ + "You orgasm with [L], spilling out of them, using your [G.name].") else //knots and other non-spilling orgasms - if(do_after(src, mb_time, target = src) && in_range(src, L)) - fluid_source.trans_to(L, total_fluids) - total_fluids = 0 - src.visible_message("[src] climaxes with [L], [p_their()] [G.name] spilling nothing!", \ - "You ejaculate with [L], your [G.name] spilling nothing.", \ - "You have climaxed inside someone, your [G.name] spilling nothing.") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - if(G.can_climax) - setArousalLoss(min_arousal) + visible_message("[src] climaxes with [L], [p_their()] [G.name] spilling nothing!", \ + "You ejaculate with [L], your [G.name] spilling nothing.") + SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) + do_climax(fluid_source, spillage ? loc : L, G, spillage) /mob/living/carbon/human/proc/mob_fill_container(obj/item/organ/genital/G, obj/item/reagent_containers/container, mb_time = 30) //For beaker-filling, beware the bartender - var/total_fluids = 0 - var/datum/reagents/fluid_source = null - - if(G.producing) //Can it produce its own fluids, such as breasts? - fluid_source = G.reagents - else - if(!G.linked_organ) - to_chat(src, "Your [G.name] is unable to produce it's own fluids, it's missing the organs for it.") + var/datum/reagents/fluid_source = G.climaxable(src) + if(!fluid_source) + return + if(mb_time) + visible_message("[src] starts to [G.masturbation_verb] their [G.name] over [container].", \ + "You start to [G.masturbation_verb] your [G.name] over [container].") + if(!do_after(src, mb_time, target = src) || !in_range(src, container) || !G.climaxable(src, TRUE)) return - fluid_source = G.linked_organ.reagents - total_fluids = fluid_source.total_volume + visible_message("[src] uses [p_their()] [G.name] to fill [container]!", \ + "You used your [G.name] to fill [container].") + do_climax(fluid_source, container, G, FALSE) - //if(!container) //Something weird happened - // to_chat(src, "You need a container to do this!") - // return - - src.visible_message("[src] starts to [G.masturbation_verb] their [G.name] over [container].", \ - "You start to [G.masturbation_verb] your [G.name] over [container].", \ - "You start to [G.masturbation_verb] your [G.name] over something.") - if(do_after(src, mb_time, target = src) && in_range(src, container)) - fluid_source.trans_to(container, total_fluids) - src.visible_message("[src] uses [p_their()] [G.name] to fill [container]!", \ - "You used your [G.name] to fill [container].", \ - "You have relieved some pressure.") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm) - if(G.can_climax) - setArousalLoss(min_arousal) - -/mob/living/carbon/human/proc/pick_masturbate_genitals() - var/obj/item/organ/genital/ret_organ - var/list/genitals_list = list() +/mob/living/carbon/human/proc/pick_masturbate_genitals(silent = FALSE) + var/list/genitals_list var/list/worn_stuff = get_equipped_items() for(var/obj/item/organ/genital/G in internal_organs) - if(G.can_masturbate_with) //filter out what you can't masturbate with - if(G.is_exposed(worn_stuff)) //Nude or through_clothing - genitals_list += G - if(genitals_list.len) - ret_organ = input(src, "with what?", "Masturbate", null) as null|obj in genitals_list + if(CHECK_BITFIELD(G.genital_flags, CAN_MASTURBATE_WITH) && G.is_exposed(worn_stuff)) //filter out what you can't masturbate with + if(CHECK_BITFIELD(G.genital_flags, MASTURBATE_LINKED_ORGAN) && !G.linked_organ) + continue + LAZYADD(genitals_list, G) + if(LAZYLEN(genitals_list)) + var/obj/item/organ/genital/ret_organ = input(src, "with what?", "Masturbate", null) as null|obj in genitals_list return ret_organ - return null //error stuff + else if(!silent) + to_chat(src, "You cannot masturbate without available genitals.") - -/mob/living/carbon/human/proc/pick_climax_genitals() - var/obj/item/organ/genital/ret_organ - var/list/genitals_list = list() +/mob/living/carbon/human/proc/pick_climax_genitals(silent = FALSE) + var/list/genitals_list var/list/worn_stuff = get_equipped_items() for(var/obj/item/organ/genital/G in internal_organs) - if(G.can_climax) //filter out what you can't masturbate with - if(G.is_exposed(worn_stuff)) //Nude or through_clothing - genitals_list += G - if(genitals_list.len) - ret_organ = input(src, "with what?", "Climax", null) as null|obj in genitals_list + if(CHECK_BITFIELD(G.genital_flags, CAN_CLIMAX_WITH) && G.is_exposed(worn_stuff)) //filter out what you can't masturbate with + LAZYADD(genitals_list, G) + if(LAZYLEN(genitals_list)) + var/obj/item/organ/genital/ret_organ = input(src, "with what?", "Climax", null) as null|obj in genitals_list return ret_organ - return null //error stuff + else if(!silent) + to_chat(src, "You cannot climax without available genitals.") - -/mob/living/carbon/human/proc/pick_partner() +/mob/living/carbon/human/proc/pick_partner(silent = FALSE) var/list/partners = list() - if(src.pulling) - partners += src.pulling //Yes, even objects for now - if(src.pulledby) - partners += src.pulledby + if(pulling) + partners += pulling + if(pulledby) + partners += pulledby //Now we got both of them, let's check if they're proper - for(var/I in partners) - if(isliving(I)) - if(iscarbon(I)) - var/mob/living/carbon/C = I - if(!C.exposed_genitals.len) //Nothing through_clothing - if(!C.is_groin_exposed()) //No pants undone - if(!C.is_chest_exposed()) //No chest exposed - partners -= I //Then not proper, remove them - else - partners -= I //No fucking objects + for(var/mob/living/L in partners) + if(iscarbon(L)) + var/mob/living/carbon/C = L + if(!C.exposed_genitals.len && !C.is_groin_exposed() && !C.is_chest_exposed()) //Nothing through_clothing, no proper partner. + partners -= C //NOW the list should only contain correct partners if(!partners.len) - return null //No one left. - return input(src, "With whom?", "Sexual partner", null) in partners //pick one, default to null + if(!silent) + to_chat(src, "You cannot do this alone.") + return //No one left. + var/mob/living/target = input(src, "With whom?", "Sexual partner", null) as null|anything in partners //pick one, default to null + if(target && in_range(src, target)) + return target -/mob/living/carbon/human/proc/pick_climax_container() - var/obj/item/reagent_containers/SC = null +/mob/living/carbon/human/proc/pick_climax_container(silent = FALSE) var/list/containers_list = list() - for(var/obj/item/reagent_containers/container in held_items) - if(container.is_open_container() || istype(container, /obj/item/reagent_containers/food/snacks)) - containers_list += container + for(var/obj/item/reagent_containers/C in held_items) + if(C.is_open_container() || istype(C, /obj/item/reagent_containers/food/snacks)) + containers_list += C + for(var/obj/item/reagent_containers/C in range(1, src)) + if((C.is_open_container() || istype(C, /obj/item/reagent_containers/food/snacks)) && CanReach(C)) + containers_list += C if(containers_list.len) - SC = input(src, "Into or onto what?(Cancel for nowhere)", null) as null|obj in containers_list - if(SC) - if(in_range(src, SC)) - return SC - return null //If nothing correct, give null. + var/obj/item/reagent_containers/SC = input(src, "Into or onto what?(Cancel for nowhere)", null) as null|obj in containers_list + if(SC && CanReach(SC)) + return SC + else if(!silent) + to_chat(src, "You cannot do this without an appropriate container.") +/mob/living/carbon/human/proc/available_rosie_palms(silent = FALSE, list/whitelist_typepaths = list(/obj/item/dildo)) + if(restrained(TRUE)) //TRUE ignores grabs + if(!silent) + to_chat(src, "You can't do that while restrained!") + return FALSE + if(!get_num_arms() || !get_empty_held_indexes()) + if(whitelist_typepaths) + if(!islist(whitelist_typepaths)) + whitelist_typepaths = list(whitelist_typepaths) + for(var/path in whitelist_typepaths) + if(is_holding_item_of_type(path)) + return TRUE + if(!silent) + to_chat(src, "You need at least one free arm.") + return FALSE + return TRUE //Here's the main proc itself /mob/living/carbon/human/mob_climax(forced_climax=FALSE) //Forced is instead of the other proc, makes you cum if you have the tools for it, ignoring restraints @@ -447,156 +354,97 @@ if(!forced_climax) //Don't spam the message to the victim if forced to come too fast to_chat(src, "You need to wait [DisplayTimeText((mb_cd_timer - world.time), TRUE)] before you can do that again!") return - mb_cd_timer = (world.time + mb_cd_length) - - if(canbearoused && has_dna()) - if(stat==2) + if(!canbearoused || !has_dna()) + return + if(stat == DEAD) + if(!forced_climax) to_chat(src, "You can't do that while dead!") - return - if(forced_climax) //Something forced us to cum, this is not a masturbation thing and does not progress to the other checks - for(var/obj/item/organ/O in internal_organs) - if(istype(O, /obj/item/organ/genital)) - var/obj/item/organ/genital/G = O - if(!G.can_climax) //Skip things like wombs and testicles - continue - var/mob/living/partner - var/check_target - var/list/worn_stuff = get_equipped_items() + return + if(forced_climax) //Something forced us to cum, this is not a masturbation thing and does not progress to the other checks + for(var/obj/item/organ/genital/G in internal_organs) + if(!CHECK_BITFIELD(G.genital_flags, CAN_CLIMAX_WITH)) //Skip things like wombs and testicles + continue + var/mob/living/partner + var/check_target + var/list/worn_stuff = get_equipped_items() - if(G.is_exposed(worn_stuff)) - if(src.pulling) //Are we pulling someone? Priority target, we can't be making option menus for this, has to be quick - if(isliving(src.pulling)) //Don't fuck objects - check_target = src.pulling - if(src.pulledby && !check_target) //prioritise pulled over pulledby - if(isliving(src.pulledby)) - check_target = src.pulledby - //Now we should have a partner, or else we have to come alone - if(check_target) - if(iscarbon(check_target)) //carbons can have clothes - var/mob/living/carbon/C = check_target - if(C.exposed_genitals.len || C.is_groin_exposed() || C.is_chest_exposed()) //Are they naked enough? - partner = C - else //A cat is fine too - partner = check_target - if(partner) //Did they pass the clothing checks? - mob_climax_partner(G, partner, mb_time = 0) //Instant climax due to forced - continue //You've climaxed once with this organ, continue on - //not exposed OR if no partner was found while exposed, climax alone - mob_climax_outside(G, mb_time = 0) //removed climax timer for sudden, forced orgasms - //Now all genitals that could climax, have. - //Since this was a forced climax, we do not need to continue with the other stuff - return - //If we get here, then this is not a forced climax and we gotta check a few things. + if(G.is_exposed(worn_stuff)) + if(pulling) //Are we pulling someone? Priority target, we can't be making option menus for this, has to be quick + if(isliving(pulling)) //Don't fuck objects + check_target = pulling + if(pulledby && !check_target) //prioritise pulled over pulledby + if(isliving(pulledby)) + check_target = pulledby + //Now we should have a partner, or else we have to come alone + if(check_target) + if(iscarbon(check_target)) //carbons can have clothes + var/mob/living/carbon/C = check_target + if(C.exposed_genitals.len || C.is_groin_exposed() || C.is_chest_exposed()) //Are they naked enough? + partner = C + else //A cat is fine too + partner = check_target + if(partner) //Did they pass the clothing checks? + mob_climax_partner(G, partner, mb_time = 0) //Instant climax due to forced + continue //You've climaxed once with this organ, continue on + //not exposed OR if no partner was found while exposed, climax alone + mob_climax_outside(G, mb_time = 0) //removed climax timer for sudden, forced orgasms + //Now all genitals that could climax, have. + //Since this was a forced climax, we do not need to continue with the other stuff + mb_cd_timer = world.time + mb_cd_length + return + //If we get here, then this is not a forced climax and we gotta check a few things. - if(stat==1) //No sleep-masturbation, you're unconscious. - to_chat(src, "You must be conscious to do that!") - return - if(getArousalLoss() < 33) //flat number instead of percentage - to_chat(src, "You aren't aroused enough for that!") - return + if(stat == UNCONSCIOUS) //No sleep-masturbation, you're unconscious. + to_chat(src, "You must be conscious to do that!") + return + if(getArousalLoss() < 33) //flat number instead of percentage + to_chat(src, "You aren't aroused enough for that!") + return - //Ok, now we check what they want to do. - var/choice = input(src, "Select sexual activity", "Sexual activity:") in list("Masturbate", "Climax alone", "Climax with partner", "Fill container") + //Ok, now we check what they want to do. + var/choice = input(src, "Select sexual activity", "Sexual activity:") as null|anything in list("Masturbate", "Climax alone", "Climax with partner", "Fill container") + if(!choice) + return - switch(choice) - if("Masturbate") - if(restrained(TRUE)) //TRUE ignores grabs - to_chat(src, "You can't do that while restrained!") - return - var/free_hands = get_num_arms() - if(!free_hands) - to_chat(src, "You need at least one free arm.") - return - for(var/helditem in held_items)//how many hands are free - if(isobj(helditem)) - free_hands-- - if(free_hands <= 0) - to_chat(src, "You're holding too many things.") - return - //We got hands, let's pick an organ - var/obj/item/organ/genital/picked_organ - picked_organ = pick_masturbate_genitals() - if(picked_organ) - mob_masturbate(picked_organ) - return - else //They either lack organs that can masturbate, or they didn't pick one. - to_chat(src, "You cannot masturbate without choosing genitals.") - return + switch(choice) + if("Masturbate") + if(!available_rosie_palms()) + return + //We got hands, let's pick an organ + var/obj/item/organ/genital/picked_organ = pick_masturbate_genitals() + if(picked_organ && available_rosie_palms(TRUE)) + mob_masturbate(picked_organ) + return - if("Climax alone") - if(restrained(TRUE)) //TRUE ignores grabs - to_chat(src, "You can't do that while restrained!") - return - var/free_hands = get_num_arms() - if(!free_hands) - to_chat(src, "You need at least one free arm.") - return - for(var/helditem in held_items)//how many hands are free - if(isobj(helditem)) - free_hands-- - if(free_hands <= 0) - to_chat(src, "You're holding too many things.") - return - //We got hands, let's pick an organ - var/obj/item/organ/genital/picked_organ - picked_organ = pick_climax_genitals() - if(picked_organ) - mob_climax_outside(picked_organ) - return - else //They either lack organs that can masturbate, or they didn't pick one. - to_chat(src, "You cannot climax without choosing genitals.") - return + if("Climax alone") + if(!available_rosie_palms()) + return + var/obj/item/organ/genital/picked_organ = pick_climax_genitals() + if(picked_organ && available_rosie_palms(TRUE)) + mob_climax_outside(picked_organ) - if("Climax with partner") - //We need no hands, we can be restrained and so on, so let's pick an organ - var/obj/item/organ/genital/picked_organ - picked_organ = pick_climax_genitals() - if(picked_organ) - var/mob/living/partner = pick_partner() //Get someone - if(partner) - var/spillage = input(src, "Would your fluids spill outside?", "Choose overflowing option", "Yes") as anything in list("Yes", "No") - if(spillage == "Yes") - mob_climax_partner(picked_organ, partner, TRUE) - else - mob_climax_partner(picked_organ, partner, FALSE) - return - else - to_chat(src, "You cannot do this alone.") - return - else //They either lack organs that can masturbate, or they didn't pick one. - to_chat(src, "You cannot climax without choosing genitals.") - return + if("Climax with partner") + //We need no hands, we can be restrained and so on, so let's pick an organ + var/obj/item/organ/genital/picked_organ = pick_climax_genitals() + if(picked_organ) + var/mob/living/partner = pick_partner() //Get someone + if(partner) + var/spillage = input(src, "Would your fluids spill outside?", "Choose overflowing option", "Yes") as null|anything in list("Yes", "No") + if(spillage && in_range(src, partner)) + mob_climax_partner(picked_organ, partner, spillage == "Yes" ? TRUE : FALSE) - if("Fill container") - //We'll need hands and no restraints. - if(restrained(TRUE)) //TRUE ignores grabs - to_chat(src, "You can't do that while restrained!") - return - var/free_hands = get_num_arms() - if(!free_hands) - to_chat(src, "You need at least one free arm.") - return - for(var/helditem in held_items)//how many hands are free - if(isobj(helditem)) - free_hands-- - if(free_hands <= 0) - to_chat(src, "You're holding too many things.") - return - //We got hands, let's pick an organ - var/obj/item/organ/genital/picked_organ - picked_organ = pick_climax_genitals() //Gotta be climaxable, not just masturbation, to fill with fluids. - if(picked_organ) - //Good, got an organ, time to pick a container - var/obj/item/reagent_containers/fluid_container = pick_climax_container() - if(fluid_container) - mob_fill_container(picked_organ, fluid_container) - return - else - to_chat(src, "You cannot do this without anything to fill.") - return - else //They either lack organs that can climax, or they didn't pick one. - to_chat(src, "You cannot fill anything without choosing genitals.") - return - else //Somehow another option was taken, maybe something interrupted the selection or it was cancelled - return //Just end it in that case. + if("Fill container") + //We'll need hands and no restraints. + if(!available_rosie_palms(FALSE, /obj/item/reagent_containers)) + return + //We got hands, let's pick an organ + var/obj/item/organ/genital/picked_organ + picked_organ = pick_climax_genitals() //Gotta be climaxable, not just masturbation, to fill with fluids. + if(picked_organ) + //Good, got an organ, time to pick a container + var/obj/item/reagent_containers/fluid_container = pick_climax_container() + if(fluid_container && available_rosie_palms(TRUE, /obj/item/reagent_containers)) + mob_fill_container(picked_organ, fluid_container) + + mb_cd_timer = world.time + mb_cd_length \ No newline at end of file diff --git a/modular_citadel/code/modules/arousal/genitals.dm b/modular_citadel/code/modules/arousal/genitals.dm new file mode 100644 index 0000000000..9ecf67e4b0 --- /dev/null +++ b/modular_citadel/code/modules/arousal/genitals.dm @@ -0,0 +1,339 @@ +/obj/item/organ/genital + color = "#fcccb3" + w_class = WEIGHT_CLASS_NORMAL + var/shape = "human" + var/sensitivity = AROUSAL_START_VALUE + var/genital_flags //see citadel_defines.dm + var/masturbation_verb = "masturbate" + var/orgasm_verb = "cumming" //present continous + var/fluid_transfer_factor = 0 //How much would a partner get in them if they climax using this? + var/size = 2 //can vary between num or text, just used in icon_state strings + var/fluid_id = null + var/fluid_max_volume = 50 + var/fluid_efficiency = 1 + var/fluid_rate = CUM_RATE + var/fluid_mult = 1 + var/aroused_state = FALSE //Boolean used in icon_state strings + var/aroused_amount = 50 //This is a num from 0 to 100 for arousal percentage for when to use arousal state icons. + var/obj/item/organ/genital/linked_organ + var/linked_organ_slot //used for linking an apparatus' organ to its other half on update_link(). + var/layer_index = GENITAL_LAYER_INDEX //Order should be very important. FIRST vagina, THEN testicles, THEN penis, as this affects the order they are rendered in. + +/obj/item/organ/genital/Initialize(mapload, mob/living/carbon/human/H) + . = ..() + if(fluid_id) + create_reagents(fluid_max_volume) + if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION)) + reagents.add_reagent(fluid_id, fluid_max_volume) + if(H) + get_features(H) + Insert(H) + else + update() + +/obj/item/organ/genital/Destroy() + if(linked_organ) + update_link(TRUE)//this should remove any other links it has + if(owner) + Remove(owner, TRUE)//this should remove references to it, so it can be GCd correctly + return ..() + +/obj/item/organ/genital/proc/update(removing = FALSE) + if(QDELETED(src)) + return + update_size() + update_appearance() + if(linked_organ_slot || (linked_organ && removing)) + update_link(removing) + +//exposure and through-clothing code +/mob/living/carbon + var/list/exposed_genitals = list() //Keeping track of them so we don't have to iterate through every genitalia and see if exposed + +/obj/item/organ/genital/proc/is_exposed() + if(!owner || CHECK_BITFIELD(genital_flags, GENITAL_INTERNAL) || CHECK_BITFIELD(genital_flags, GENITAL_HIDDEN)) + return FALSE + if(CHECK_BITFIELD(genital_flags, GENITAL_THROUGH_CLOTHES)) + return TRUE + + switch(zone) //update as more genitals are added + if(BODY_ZONE_CHEST) + return owner.is_chest_exposed() + if(BODY_ZONE_PRECISE_GROIN) + return owner.is_groin_exposed() + +/obj/item/organ/genital/proc/toggle_visibility(visibility) + switch(visibility) + if("Always visible") + ENABLE_BITFIELD(genital_flags, GENITAL_THROUGH_CLOTHES) + DISABLE_BITFIELD(genital_flags, GENITAL_HIDDEN) + if(!(src in owner.exposed_genitals)) + owner.exposed_genitals += src + if("Hidden by clothes") + DISABLE_BITFIELD(genital_flags, GENITAL_THROUGH_CLOTHES) + DISABLE_BITFIELD(genital_flags, GENITAL_HIDDEN) + if(src in owner.exposed_genitals) + owner.exposed_genitals -= src + if("Always hidden") + DISABLE_BITFIELD(genital_flags, GENITAL_THROUGH_CLOTHES) + ENABLE_BITFIELD(genital_flags, GENITAL_HIDDEN) + if(src in owner.exposed_genitals) + owner.exposed_genitals -= src + + if(ishuman(owner)) //recast to use update genitals proc + var/mob/living/carbon/human/H = owner + H.update_genitals() + +/mob/living/carbon/verb/toggle_genitals() + set category = "IC" + set name = "Expose/Hide genitals" + set desc = "Allows you to toggle which genitals should show through clothes or not." + + var/list/genital_list = list() + for(var/obj/item/organ/O in internal_organs) + if(isgenital(O)) + var/obj/item/organ/genital/G = O + if(!CHECK_BITFIELD(G.genital_flags, GENITAL_INTERNAL)) + genital_list += G + if(!genital_list.len) //There is nothing to expose + return + //Full list of exposable genitals created + var/obj/item/organ/genital/picked_organ + picked_organ = input(src, "Choose which genitalia to expose/hide", "Expose/Hide genitals", null) in genital_list + if(picked_organ) + var/picked_visibility = input(src, "Choose visibility setting", "Expose/Hide genitals", "Hidden by clothes") in list("Always visible", "Hidden by clothes", "Always hidden") + picked_organ.toggle_visibility(picked_visibility) + return + +/obj/item/organ/genital/proc/modify_size(modifier, min = -INFINITY, max = INFINITY) + return + +/obj/item/organ/genital/proc/update_size() + return + +/obj/item/organ/genital/proc/update_appearance() + if(!owner || owner.stat == DEAD) + aroused_state = FALSE + +/obj/item/organ/genital/on_life() + if(!reagents || !owner) + return + reagents.maximum_volume = fluid_max_volume + if(fluid_id && CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION)) + generate_fluid() + +/obj/item/organ/genital/proc/generate_fluid() + var/amount = fluid_rate + if(!reagents.total_volume && amount < 0.1) // Apparently, 0.015 gets rounded down to zero and no reagents are created if we don't start it with 0.1 in the tank. + amount += 0.1 + var/multiplier = fluid_mult + if(reagents.total_volume >= 5) + multiplier *= 0.5 + if(reagents.total_volume < reagents.maximum_volume) + reagents.isolate_reagent(fluid_id)//remove old reagents if it changed and just clean up generally + reagents.add_reagent(fluid_id, (amount * multiplier))//generate the cum + return TRUE + return FALSE + +/obj/item/organ/genital/proc/update_link(removing = FALSE) + if(!removing && owner) + if(linked_organ) + return + linked_organ = owner.getorganslot(linked_organ_slot) + if(linked_organ) + linked_organ.linked_organ = src + linked_organ.upon_link() + upon_link() + return TRUE + else + if(linked_organ) + linked_organ.linked_organ = null + linked_organ = null + return FALSE + +//post organ duo making arrangements. +/obj/item/organ/genital/proc/upon_link() + return + +/obj/item/organ/genital/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = TRUE) + . = ..() + if(.) + update() + RegisterSignal(owner, COMSIG_MOB_DEATH, .proc/update_appearance) + +/obj/item/organ/genital/Remove(mob/living/carbon/M, special = FALSE, drop_if_replaced = TRUE) + . = ..() + if(.) + update(TRUE) + UnregisterSignal(M, COMSIG_MOB_DEATH) + +//proc to give a player their genitals and stuff when they log in +/mob/living/carbon/human/proc/give_genitals(clean = FALSE)//clean will remove all pre-existing genitals. proc will then give them any genitals that are enabled in their DNA + if(clean) + for(var/obj/item/organ/genital/G in internal_organs) + qdel(G) + if (NOGENITALS in dna.species.species_traits) + return + if(dna.features["has_vag"]) + give_genital(/obj/item/organ/genital/vagina) + if(dna.features["has_womb"]) + give_genital(/obj/item/organ/genital/womb) + if(dna.features["has_balls"]) + give_genital(/obj/item/organ/genital/testicles) + if(dna.features["has_breasts"]) + give_genital(/obj/item/organ/genital/breasts) + if(dna.features["has_cock"]) + give_genital(/obj/item/organ/genital/penis) + /* + if(dna.features["has_ovi"]) + give_genital(/obj/item/organ/genital/ovipositor) + if(dna.features["has_eggsack"]) + give_genital(/obj/item/organ/genital/eggsack) + */ + +/mob/living/carbon/human/proc/give_genital(obj/item/organ/genital/G) + if(!dna || (NOGENITALS in dna.species.species_traits) || getorganslot(initial(G.slot))) + return FALSE + G = new G(null, src) + return G + +/obj/item/organ/genital/proc/get_features(mob/living/carbon/human/H) + return + +/datum/species/proc/genitals_layertext(layer) + switch(layer) + if(GENITALS_BEHIND_LAYER) + return "BEHIND" + if(GENITALS_FRONT_LAYER) + return "FRONT" + +//procs to handle sprite overlays being applied to humans + +/mob/living/carbon/human/equip_to_slot(obj/item/I, slot) + . = ..() + if(!. && I && slot && !(slot in GLOB.no_genitals_update_slots)) //the item was successfully equipped, and the chosen slot wasn't merely storage, hands or cuffs. + update_genitals() + +/mob/living/carbon/human/doUnEquip(obj/item/I, force, newloc, no_move, invdrop = TRUE) + var/no_update = FALSE + if(!I || I == l_store || I == r_store || I == s_store || I == handcuffed || I == legcuffed || get_held_index_of_item(I)) //stops storages, cuffs and held items from triggering it. + no_update = TRUE + . = ..() + if(!. || no_update) + return + update_genitals() + +/mob/living/carbon/human/proc/update_genitals() + if(!QDELETED(src)) + dna.species.handle_genitals(src) + +//Checks to see if organs are new on the mob, and changes their colours so that they don't get crazy colours. +/mob/living/carbon/human/proc/emergent_genital_call() + if(!canbearoused) + return FALSE + + var/organCheck = locate(/obj/item/organ/genital) in internal_organs + var/breastCheck = getorganslot(ORGAN_SLOT_BREASTS) + var/willyCheck = getorganslot(ORGAN_SLOT_PENIS) + + if(organCheck == FALSE) + if(ishuman(src) && dna.species.id == "human") + dna.features["genitals_use_skintone"] = TRUE + dna.species.use_skintones = TRUE + if(MUTCOLORS) + if(src.dna.species.fixed_mut_color) + dna.features["cock_color"] = "[dna.species.fixed_mut_color]" + dna.features["breasts_color"] = "[dna.species.fixed_mut_color]" + return + //So people who haven't set stuff up don't get rainbow surprises. + dna.features["cock_color"] = "[dna.features["mcolor"]]" + dna.features["breasts_color"] = "[dna.features["mcolor"]]" + else //If there's a new organ, make it the same colour. + if(breastCheck == FALSE) + dna.features["breasts_color"] = dna.features["cock_color"] + else if (willyCheck == FALSE) + dna.features["cock_color"] = dna.features["breasts_color"] + return TRUE + +/datum/species/proc/handle_genitals(mob/living/carbon/human/H)//more like handle sadness + if(!H)//no args + CRASH("H = null") + if(!LAZYLEN(H.internal_organs) || ((NOGENITALS in species_traits) && !H.genital_override) || HAS_TRAIT(H, TRAIT_HUSK)) + return + var/list/relevant_layers = list(GENITALS_BEHIND_LAYER, GENITALS_FRONT_LAYER) + + for(var/L in relevant_layers) //Less hardcode + H.remove_overlay(L) + H.remove_overlay(GENITALS_EXPOSED_LAYER) + //start scanning for genitals + + var/list/gen_index[GENITAL_LAYER_INDEX_LENGTH] + var/list/genitals_to_add + var/list/fully_exposed + for(var/obj/item/organ/genital/G in H.internal_organs) + if(G.is_exposed()) //Checks appropriate clothing slot and if it's through_clothes + LAZYADD(gen_index[G.layer_index], G) + for(var/L in gen_index) + if(L) //skip nulls + LAZYADD(genitals_to_add, L) + if(!genitals_to_add) + return + //Now we added all genitals that aren't internal and should be rendered + //start applying overlays + for(var/layer in relevant_layers) + var/list/standing = list() + var/layertext = genitals_layertext(layer) + for(var/A in genitals_to_add) + var/obj/item/organ/genital/G = A + var/datum/sprite_accessory/S + var/size = G.size + var/aroused_state = G.aroused_state + switch(G.type) + if(/obj/item/organ/genital/penis) + S = GLOB.cock_shapes_list[G.shape] + if(/obj/item/organ/genital/testicles) + S = GLOB.balls_shapes_list[G.shape] + if(/obj/item/organ/genital/vagina) + S = GLOB.vagina_shapes_list[G.shape] + if(/obj/item/organ/genital/breasts) + S = GLOB.breasts_shapes_list[G.shape] + + if(!S || S.icon_state == "none") + continue + + var/mutable_appearance/genital_overlay = mutable_appearance(S.icon, layer = -layer) + genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size]_[aroused_state]_[layertext]" + + if(S.center) + genital_overlay = center_image(genital_overlay, S.dimension_x, S.dimension_y) + + if(use_skintones && H.dna.features["genitals_use_skintone"]) + genital_overlay.color = "#[skintone2hex(H.skin_tone)]" + genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size]-s_[aroused_state]_[layertext]" + else + switch(S.color_src) + if("cock_color") + genital_overlay.color = "#[H.dna.features["cock_color"]]" + if("balls_color") + genital_overlay.color = "#[H.dna.features["balls_color"]]" + if("breasts_color") + genital_overlay.color = "#[H.dna.features["breasts_color"]]" + if("vag_color") + genital_overlay.color = "#[H.dna.features["vag_color"]]" + + if(layer == GENITALS_FRONT_LAYER && CHECK_BITFIELD(G.genital_flags, GENITAL_THROUGH_CLOTHES)) + genital_overlay.layer = -GENITALS_EXPOSED_LAYER + LAZYADD(fully_exposed, genital_overlay) // to be added to a layer with higher priority than clothes, hence the name of the bitflag. + else + standing += genital_overlay + + if(LAZYLEN(standing)) + H.overlays_standing[layer] = standing + + if(LAZYLEN(fully_exposed)) + H.overlays_standing[GENITALS_EXPOSED_LAYER] = fully_exposed + H.apply_overlay(GENITALS_EXPOSED_LAYER) + + for(var/L in relevant_layers) + H.apply_overlay(L) + diff --git a/modular_citadel/code/modules/arousal/organs/genitals_sprite_accessories.dm b/modular_citadel/code/modules/arousal/genitals_sprite_accessories.dm similarity index 89% rename from modular_citadel/code/modules/arousal/organs/genitals_sprite_accessories.dm rename to modular_citadel/code/modules/arousal/genitals_sprite_accessories.dm index f4af8a40ba..15d84fa008 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals_sprite_accessories.dm +++ b/modular_citadel/code/modules/arousal/genitals_sprite_accessories.dm @@ -5,11 +5,9 @@ //DICKS,COCKS,PENISES,WHATEVER YOU WANT TO CALL THEM /datum/sprite_accessory/penis icon = 'modular_citadel/icons/obj/genitals/penis_onmob.dmi' - icon_state = null name = "penis" //the preview name of the accessory - gender_specific = 0 //Might be needed somewhere down the list. color_src = "cock_color" - locked = 0 + alt_aroused = TRUE /datum/sprite_accessory/penis/human icon_state = "human" @@ -75,27 +73,21 @@ icon_state = "testicle" name = "testicle" //the preview name of the accessory color_src = "balls_color" - locked = 0 /datum/sprite_accessory/testicles/hidden - icon_state = "hidden" + icon_state = "none" name = "Hidden" - alt_aroused = TRUE /datum/sprite_accessory/testicles/single icon_state = "single" name = "Single" - alt_aroused = TRUE //Vaginas /datum/sprite_accessory/vagina icon = 'modular_citadel/icons/obj/genitals/vagina_onmob.dmi' icon_state = null name = "vagina" - gender_specific = 0 color_src = "vag_color" - locked = 0 - alt_aroused = FALSE //if this is TRUE, then the genitals will use an alternate sprite for aroused states /datum/sprite_accessory/vagina/human icon_state = "human" @@ -131,35 +123,28 @@ //BREASTS BE HERE /datum/sprite_accessory/breasts icon = 'modular_citadel/icons/obj/genitals/breasts_onmob.dmi' - icon_state = null name = "breasts" - gender_specific = 0 color_src = "breasts_color" - locked = 0 + alt_aroused = TRUE /datum/sprite_accessory/breasts/pair icon_state = "pair" name = "Pair" - alt_aroused = TRUE /datum/sprite_accessory/breasts/quad icon_state = "quad" name = "Quad" - alt_aroused = TRUE /datum/sprite_accessory/breasts/sextuple icon_state = "sextuple" name = "Sextuple" - alt_aroused = TRUE //OVIPOSITORS BE HERE /datum/sprite_accessory/ovipositor icon = 'modular_citadel/icons/obj/genitals/penis_onmob.dmi' icon_state = null name = "Ovipositor" //the preview name of the accessory - gender_specific = 0 //Might be needed somewhere down the list. color_src = "cock_color" - locked = 0 /datum/sprite_accessory/ovipositor/knotted icon_state = "knotted" diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index 3df2218766..6299f68b6c 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -1,50 +1,29 @@ /obj/item/organ/genital/breasts - name = "breasts" - desc = "Female milk producing organs." - icon_state = "breasts" - icon = 'modular_citadel/icons/obj/genitals/breasts.dmi' - zone = "chest" - slot = "breasts" - w_class = 3 - size = BREASTS_SIZE_DEF //SHOULD BE A LETTER, starts as a number...??? - var/cached_size = null //for enlargement SHOULD BE A NUMBER - var/prev_size //For flavour texts SHOULD BE A LETTER - //var/breast_sizes = list ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "huge", "flat") - var/breast_values = list ("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5, "f" = 6, "g" = 7, "h" = 8, "i" = 9, "j" = 10, "k" = 11, "l" = 12, "m" = 13, "n" = 14, "o" = 15, "huge" = 16, "flat" = 0) - var/statuscheck = FALSE - fluid_id = "milk" - var/amount = 2 - producing = TRUE - shape = "Pair" - can_masturbate_with = TRUE - masturbation_verb = "massage" - can_climax = TRUE - fluid_transfer_factor = 0.5 + name = "breasts" + desc = "Female milk producing organs." + icon_state = "breasts" + icon = 'modular_citadel/icons/obj/genitals/breasts.dmi' + zone = BODY_ZONE_CHEST + slot = ORGAN_SLOT_BREASTS + size = "c" //refer to the breast_values static list below for the cups associated number values + fluid_id = "milk" + shape = "pair" + genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_FUID_PRODUCTION + masturbation_verb = "massage" + orgasm_verb = "leaking" + fluid_transfer_factor = 0.5 + var/static/list/breast_values = list("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5, "f" = 6, "g" = 7, "h" = 8, "i" = 9, "j" = 10, "k" = 11, "l" = 12, "m" = 13, "n" = 14, "o" = 15, "huge" = 16, "flat" = 0) + var/cached_size //these two vars pertain size modifications and so should be expressed in NUMBERS. + var/prev_size //former cached_size value, to allow update_size() to early return should be there no significant changes. -/obj/item/organ/genital/breasts/on_life() - if(QDELETED(src)) - return - if(!reagents || !owner) - return - reagents.maximum_volume = fluid_max_volume - if(fluid_id && producing) - if(reagents.total_volume == 0) // Apparently, 0.015 gets rounded down to zero and no reagents are created if we don't start it with 0.1 in the tank. - fluid_rate = 0.1 - else - fluid_rate = CUM_RATE - if(reagents.total_volume >= 5) - fluid_mult = 0.5 - else - fluid_mult = 1 - generate_milk() - -/obj/item/organ/genital/breasts/proc/generate_milk() - if(owner.stat == DEAD) - return FALSE - reagents.isolate_reagent(fluid_id) - reagents.add_reagent(fluid_id, (fluid_mult * fluid_rate)) +/obj/item/organ/genital/breasts/Initialize(mapload, mob/living/carbon/human/H) + if(!H) + cached_size = breast_values[size] + prev_size = cached_size + return ..() /obj/item/organ/genital/breasts/update_appearance() + . = ..() var/lowershape = lowertext(shape) switch(lowershape) if("pair") @@ -55,16 +34,15 @@ desc = "You see three sets of breasts, running from their chest to their belly." else desc = "You see some breasts, they seem to be quite exotic." - if(cached_size > 16) + if(size == "huge") desc = "You see [pick("some serious honkers", "a real set of badonkers", "some dobonhonkeros", "massive dohoonkabhankoloos", "two big old tonhongerekoogers", "a couple of giant bonkhonagahoogs", "a pair of humongous hungolomghnonoloughongous")]. Their volume is way beyond cupsize now, measuring in about [round(cached_size)]cm in diameter." - else if (!isnum(size)) + else if (size == "flat") desc += " They're very small and flatchested, however." else desc += " You estimate that they're [uppertext(size)]-cups." - //string = "breasts_[lowertext(shape)]_[size]-s" - if(producing && aroused_state) + if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION) && aroused_state) desc += " They're leaking [fluid_id]." var/string if(owner) @@ -80,57 +58,70 @@ var/mob/living/carbon/human/H = owner icon_state = sanitize_text(string) H.update_genitals() - icon_state = sanitize_text(string) - //Allows breasts to grow and change size, with sprite changes too. //maximum wah //Comical sizes slow you down in movement and actions. //Rediculous sizes makes you more cumbersome. //this is far too lewd wah -/obj/item/organ/genital/breasts/update_size()//wah - - if(!ishuman(owner) || !owner) +/obj/item/organ/genital/breasts/modify_size(modifier, min = -INFINITY, max = INFINITY) + var/new_value = CLAMP(cached_size + modifier, min, max) + if(new_value == cached_size) return - if(cached_size < 0)//I don't actually know what round() does to negative numbers, so to be safe!!fixed - to_chat(owner, "You feel your breasts shrinking away from your body as your chest flattens out.") - src.Remove(owner) - switch(round(cached_size)) - if(0) //If flatchested - size = "flat" - if(owner.has_status_effect(/datum/status_effect/chem/breast_enlarger)) - owner.remove_status_effect(/datum/status_effect/chem/breast_enlarger) - statuscheck = FALSE - if(1 to 8) //If modest size - size = breast_values[round(cached_size)] - if(owner.has_status_effect(/datum/status_effect/chem/breast_enlarger)) - owner.remove_status_effect(/datum/status_effect/chem/breast_enlarger) - statuscheck = FALSE - if(9 to 15) //If massive - size = breast_values[round(cached_size)] - if(!owner.has_status_effect(/datum/status_effect/chem/breast_enlarger)) - owner.apply_status_effect(/datum/status_effect/chem/breast_enlarger) - statuscheck = TRUE - if(16 to INFINITY) //if Rediculous - size = cached_size + prev_size = cached_size + cached_size = new_value + update() - if(round(cached_size) < 16)//Because byond doesn't count from 0, I have to do this. - if (prev_size == 0) - prev_size = "flat" - if(size == 0)//Bloody byond with it's counting from 1 +/obj/item/organ/genital/breasts/update_size()//wah + var/rounded_cached = round(cached_size) + if(cached_size < 0)//I don't actually know what round() does to negative numbers, so to be safe!!fixed + if(owner) + to_chat(owner, "You feel your breasts shrinking away from your body as your chest flattens out.") + QDEL_IN(src, 1) + return + var/enlargement = FALSE + switch(rounded_cached) + if(0) //flatchested size = "flat" - if(isnum(prev_size)) - prev_size = breast_values[prev_size] - if (breast_values[size] > breast_values[prev_size]) - to_chat(owner, "Your breasts [pick("swell up to", "flourish into", "expand into", "burst forth into", "grow eagerly into", "amplify into")] a [uppertext(size)]-cup.") - var/mob/living/carbon/human/H = owner - H.Force_update_genitals() - else if ((breast_values[size] < breast_values[prev_size]) && (breast_values[size] > 0.5)) - to_chat(owner, "Your breasts [pick("shrink down to", "decrease into", "diminish into", "deflate into", "shrivel regretfully into", "contracts into")] a [uppertext(size)]-cup.") - var/mob/living/carbon/human/H = owner - H.Force_update_genitals() - prev_size = size - else if (cached_size >= 16) - size = "huge" + if(1 to 8) //modest + size = breast_values[rounded_cached] + if(9 to 15) //massive + size = breast_values[rounded_cached] + enlargement = TRUE + if(16 to INFINITY) //rediculous + size = "huge" + enlargement = TRUE + if(owner) + var/status_effect = owner.has_status_effect(STATUS_EFFECT_BREASTS_ENLARGEMENT) + if(enlargement && !status_effect) + owner.apply_status_effect(STATUS_EFFECT_BREASTS_ENLARGEMENT) + else if(!enlargement && status_effect) + owner.remove_status_effect(STATUS_EFFECT_BREASTS_ENLARGEMENT) + + if(rounded_cached < 16 && owner)//Because byond doesn't count from 0, I have to do this. + var/mob/living/carbon/human/H = owner + var/r_prev_size = round(prev_size) + if (rounded_cached > r_prev_size) + to_chat(H, "Your breasts [pick("swell up to", "flourish into", "expand into", "burst forth into", "grow eagerly into", "amplify into")] a [uppertext(size)]-cup.") + else if (rounded_cached < r_prev_size) + to_chat(H, "Your breasts [pick("shrink down to", "decrease into", "diminish into", "deflate into", "shrivel regretfully into", "contracts into")] a [uppertext(size)]-cup.") + +/obj/item/organ/genital/breasts/get_features(mob/living/carbon/human/H) + var/datum/dna/D = H.dna + if(D.species.use_skintones && D.features["genitals_use_skintone"]) + color = "#[skintone2hex(H.skin_tone)]" + else + color = "#[D.features["breasts_color"]]" + size = D.features["breasts_size"] + shape = D.features["breasts_shape"] + fluid_id = D.features["breasts_fluid"] + if(!D.features["breasts_producing"]) + DISABLE_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION) + if(!isnum(size)) + cached_size = breast_values[size] + else + cached_size = size + size = breast_values[size] + prev_size = cached_size diff --git a/modular_citadel/code/modules/arousal/organs/eggsack.dm b/modular_citadel/code/modules/arousal/organs/eggsack.dm index 402d246e40..ebdefd2371 100644 --- a/modular_citadel/code/modules/arousal/organs/eggsack.dm +++ b/modular_citadel/code/modules/arousal/organs/eggsack.dm @@ -1,14 +1,14 @@ /obj/item/organ/genital/eggsack - name = "Egg sack" - desc = "An egg producing reproductive organ." - icon_state = "egg_sack" - icon = 'modular_citadel/icons/obj/genitals/ovipositor.dmi' - zone = "groin" - slot = "testicles" - color = null //don't use the /genital color since it already is colored - internal = TRUE + name = "Egg sack" + desc = "An egg producing reproductive organ." + icon_state = "egg_sack" + icon = 'modular_citadel/icons/obj/genitals/ovipositor.dmi' + zone = BODY_ZONE_PRECISE_GROIN + slot = ORGAN_SLOT_TESTICLES + genital_flags = GENITAL_INTERNAL|GENITAL_BLACKLISTED //unimplemented + linked_organ_slot = ORGAN_SLOT_PENIS + color = null //don't use the /genital color since it already is colored var/egg_girth = EGG_GIRTH_DEF var/cum_mult = CUM_RATE_MULT var/cum_rate = CUM_RATE var/cum_efficiency = CUM_EFFICIENCY - var/obj/item/organ/ovipositor/linked_ovi diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm deleted file mode 100644 index 3abe7ecb1f..0000000000 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ /dev/null @@ -1,414 +0,0 @@ -/obj/item/organ/genital - color = "#fcccb3" - w_class = WEIGHT_CLASS_NORMAL - var/shape = "Human" //Changed to be uppercase, let me know if this breaks everything..!! - var/sensitivity = AROUSAL_START_VALUE - var/list/genital_flags = list() - var/can_masturbate_with = FALSE - var/masturbation_verb = "masturbate" - var/can_climax = FALSE - var/fluid_transfer_factor = 0.0 //How much would a partner get in them if they climax using this? - var/size = 2 //can vary between num or text, just used in icon_state strings - var/fluid_id = null - var/fluid_max_volume = 15 - var/fluid_efficiency = 1 - var/fluid_rate = 1 - var/fluid_mult = 1 - var/producing = FALSE - var/aroused_state = FALSE //Boolean used in icon_state strings - var/aroused_amount = 50 //This is a num from 0 to 100 for arousal percentage for when to use arousal state icons. - var/obj/item/organ/genital/linked_organ - var/through_clothes = FALSE - var/internal = FALSE - var/hidden = FALSE - -/obj/item/organ/genital/Initialize() - . = ..() - if(!reagents) - create_reagents(fluid_max_volume) - update() - -/obj/item/organ/genital/Destroy() - remove_ref() - if(owner) - Remove(owner, 1)//this should remove references to it, so it can be GCd correctly - update_link()//this should remove any other links it has - return ..() - -/obj/item/organ/genital/proc/update() - if(QDELETED(src)) - return - update_size() - update_appearance() - update_link() - -//exposure and through-clothing code -/mob/living/carbon - var/list/exposed_genitals = list() //Keeping track of them so we don't have to iterate through every genitalia and see if exposed - -/obj/item/organ/genital/proc/is_exposed() - if(!owner) - return FALSE - if(hidden) - return FALSE - if(internal) - return FALSE - if(through_clothes) - return TRUE - - switch(zone) //update as more genitals are added - if("chest") - return owner.is_chest_exposed() - if("groin") - return owner.is_groin_exposed() - - return FALSE - -/obj/item/organ/genital/proc/toggle_visibility(visibility) - switch(visibility) - if("Always visible") - through_clothes = TRUE - hidden = FALSE - if(!(src in owner.exposed_genitals)) - owner.exposed_genitals += src - if("Hidden by clothes") - through_clothes = FALSE - hidden = TRUE - if(src in owner.exposed_genitals) - owner.exposed_genitals -= src - if("Always hidden") - through_clothes = FALSE - hidden = TRUE - if(src in owner.exposed_genitals) - owner.exposed_genitals -= src - - if(ishuman(owner)) //recast to use update genitals proc - var/mob/living/carbon/human/H = owner - H.update_genitals() - -/mob/living/carbon/verb/toggle_genitals() - set category = "IC" - set name = "Expose/Hide genitals" - set desc = "Allows you to toggle which genitals should show through clothes or not." - - var/list/genital_list = list() - for(var/obj/item/organ/O in internal_organs) - if(isgenital(O)) - var/obj/item/organ/genital/G = O - if(!G.internal) - genital_list += G - if(!genital_list.len) //There is nothing to expose - return - //Full list of exposable genitals created - var/obj/item/organ/genital/picked_organ - picked_organ = input(src, "Choose which genitalia to expose/hide", "Expose/Hide genitals", null) in genital_list - if(picked_organ) - var/picked_visibility = input(src, "Choose visibility setting", "Expose/Hide genitals", "Hidden by clothes") in list("Always visible", "Hidden by clothes", "Always hidden") - picked_organ.toggle_visibility(picked_visibility) - return - - - - -/obj/item/organ/genital/proc/update_size() - return - -/obj/item/organ/genital/proc/update_appearance() - return - -/obj/item/organ/genital/proc/update_link() - return - -/obj/item/organ/genital/proc/remove_ref() - if(linked_organ) - linked_organ.linked_organ = null - linked_organ = null - -/obj/item/organ/genital/Insert(mob/living/carbon/M, special = 0) - ..() - update() - -/obj/item/organ/genital/Remove(mob/living/carbon/M, special = 0) - ..() - update() - -//proc to give a player their genitals and stuff when they log in -/mob/living/carbon/human/proc/give_genitals(clean=0)//clean will remove all pre-existing genitals. proc will then give them any genitals that are enabled in their DNA - if(clean) - var/obj/item/organ/genital/GtoClean - for(GtoClean in internal_organs) - qdel(GtoClean) - if (NOGENITALS in dna.species.species_traits) - return - //Order should be very important. FIRST vagina, THEN testicles, THEN penis, as this affects the order they are rendered in. - if(dna.features["has_vag"]) - give_vagina() - if(dna.features["has_womb"]) - give_womb() - if(dna.features["has_balls"]) - give_balls() - if(dna.features["has_breasts"]) // since we have multi-boobs as a thing, we'll want to at least draw over these. but not over the pingas. - give_breasts() - if(dna.features["has_cock"]) - give_penis() - if(dna.features["has_ovi"]) - give_ovipositor() - if(dna.features["has_eggsack"]) - give_eggsack() - -/mob/living/carbon/human/proc/give_penis() - if(!dna) - return FALSE - if(NOGENITALS in dna.species.species_traits) - return FALSE - if(!getorganslot("penis")) - var/obj/item/organ/genital/penis/P = new - P.Insert(src) - if(P) - if(dna.species.use_skintones && dna.features["genitals_use_skintone"]) - P.color = "#[skintone2hex(skin_tone)]" - else - P.color = "#[dna.features["cock_color"]]" - P.length = dna.features["cock_length"] - P.girth_ratio = dna.features["cock_girth_ratio"] - P.shape = dna.features["cock_shape"] - P.prev_length = P.length - P.cached_length = P.length - P.update() - -/mob/living/carbon/human/proc/give_balls() - if(!dna) - return FALSE - if(NOGENITALS in dna.species.species_traits) - return FALSE - if(!getorganslot("testicles")) - var/obj/item/organ/genital/testicles/T = new - T.Insert(src) - if(T) - if(dna.species.use_skintones && dna.features["genitals_use_skintone"]) - T.color = "#[skintone2hex(skin_tone)]" - else - T.color = "#[dna.features["balls_color"]]" - T.size = dna.features["balls_size"] - T.sack_size = dna.features["balls_sack_size"] - T.shape = dna.features["balls_shape"] - if(dna.features["balls_shape"] == "Hidden") - T.internal = TRUE - else - T.internal = FALSE - T.fluid_id = dna.features["balls_fluid"] - T.fluid_rate = dna.features["balls_cum_rate"] - T.fluid_mult = dna.features["balls_cum_mult"] - T.fluid_efficiency = dna.features["balls_efficiency"] - T.update() - -/mob/living/carbon/human/proc/give_breasts() - if(!dna) - return FALSE - if(NOGENITALS in dna.species.species_traits) - return FALSE - if(!getorganslot("breasts")) - var/obj/item/organ/genital/breasts/B = new - B.Insert(src) - if(B) - if(dna.species.use_skintones && dna.features["genitals_use_skintone"]) - B.color = "#[skintone2hex(skin_tone)]" - else - B.color = "#[dna.features["breasts_color"]]" - B.size = dna.features["breasts_size"] - if(!isnum(B.size)) - if(B.size == "flat") - B.cached_size = 0 - B.prev_size = 0 - else if (B.cached_size == "huge") - B.prev_size = "huge" - else - B.cached_size = B.breast_values[B.size] - B.prev_size = B.size - else - B.cached_size = B.size - B.prev_size = B.size - B.shape = dna.features["breasts_shape"] - B.fluid_id = dna.features["breasts_fluid"] - B.producing = dna.features["breasts_producing"] - B.update() - - -/mob/living/carbon/human/proc/give_ovipositor() - return -/mob/living/carbon/human/proc/give_eggsack() - return - -/mob/living/carbon/human/proc/give_vagina() - if(!dna) - return FALSE - if(NOGENITALS in dna.species.species_traits) - return FALSE - if(!getorganslot("vagina")) - var/obj/item/organ/genital/vagina/V = new - V.Insert(src) - if(V) - if(dna.species.use_skintones && dna.features["genitals_use_skintone"]) - V.color = "#[skintone2hex(skin_tone)]" - else - V.color = "[dna.features["vag_color"]]" - V.shape = "[dna.features["vag_shape"]]" - V.update() - -/mob/living/carbon/human/proc/give_womb() - if(!dna) - return FALSE - if(NOGENITALS in dna.species.species_traits) - return FALSE - if(!getorganslot("womb")) - var/obj/item/organ/genital/womb/W = new - W.Insert(src) - if(W) - W.update() - - -/datum/species/proc/genitals_layertext(layer) - switch(layer) - if(GENITALS_BEHIND_LAYER) - return "BEHIND" - /*if(GENITALS_ADJ_LAYER) - return "ADJ"*/ - if(GENITALS_FRONT_LAYER) - return "FRONT" - -//procs to handle sprite overlays being applied to humans - -/obj/item/equipped(mob/user, slot) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - H.update_genitals() - ..() - -/mob/living/carbon/human/doUnEquip(obj/item/I, force) - . = ..() - if(!.) - return - update_genitals() - -/mob/living/carbon/human/proc/update_genitals() - if(src && !QDELETED(src)) - dna.species.handle_genitals(src) - -//fermichem procs -/mob/living/carbon/human/proc/Force_update_genitals(mob/living/carbon/human/H) //called in fermiChem - dna.species.handle_genitals(src)//should work. - //dna.species.handle_breasts(src) - -//Checks to see if organs are new on the mob, and changes their colours so that they don't get crazy colours. -/mob/living/carbon/human/proc/emergent_genital_call() - var/organCheck = FALSE - var/breastCheck = FALSE - var/willyCheck = FALSE - if(!canbearoused) - ADD_TRAIT(src, TRAIT_PHARMA, "pharma")//Prefs prevent unwanted organs. - return - for(var/obj/item/organ/O in internal_organs) - if(istype(O, /obj/item/organ/genital)) - organCheck = TRUE - if(/obj/item/organ/genital/penis) - //dna.features["has_cock"] = TRUE - willyCheck = TRUE - if(/obj/item/organ/genital/breasts) - //dna.features["has_breasts"] = TRUE//Goddamnit get in there. - breastCheck = TRUE - if(organCheck == FALSE) - if(ishuman(src) && dna.species.id == "human") - dna.features["genitals_use_skintone"] = TRUE - dna.species.use_skintones = TRUE - if(MUTCOLORS) - if(src.dna.species.fixed_mut_color) - dna.features["cock_color"] = "[src.dna.species.fixed_mut_color]" - dna.features["breasts_color"] = "[src.dna.species.fixed_mut_color]" - return - //So people who haven't set stuff up don't get rainbow surprises. - dna.features["cock_color"] = "[dna.features["mcolor"]]" - dna.features["breasts_color"] = "[dna.features["mcolor"]]" - else //If there's a new organ, make it the same colour. - if(breastCheck == FALSE) - dna.features["breasts_color"] = dna.features["cock_color"] - else if (willyCheck == FALSE) - dna.features["cock_color"] = dna.features["breasts_color"] - return - -/datum/species/proc/handle_genitals(mob/living/carbon/human/H)//more like handle sadness - if(!H)//no args - CRASH("H = null") - if(!LAZYLEN(H.internal_organs))//if they have no organs, we're done - return - if((NOGENITALS in species_traits) && (H.genital_override = FALSE))//golems and such - things that shouldn't - return - if(HAS_TRAIT(H, TRAIT_HUSK)) - return - var/list/genitals_to_add = list() - var/list/relevant_layers = list(GENITALS_BEHIND_LAYER, GENITALS_FRONT_LAYER) //GENITALS_ADJ_LAYER removed - var/list/standing = list() - var/size - var/aroused_state - - for(var/L in relevant_layers) //Less hardcode - H.remove_overlay(L) - //start scanning for genitals - for(var/obj/item/organ/O in H.internal_organs) - if(isgenital(O)) - var/obj/item/organ/genital/G = O - if(G.hidden) - return //we're gunna just hijack this for updates. - if(G.is_exposed()) //Checks appropriate clothing slot and if it's through_clothes - genitals_to_add += H.getorganslot(G.slot) - //Now we added all genitals that aren't internal and should be rendered - //start applying overlays - for(var/layer in relevant_layers) - var/layertext = genitals_layertext(layer) - for(var/obj/item/organ/genital/G in genitals_to_add) - var/datum/sprite_accessory/S - size = G.size - aroused_state = G.aroused_state - switch(G.type) - if(/obj/item/organ/genital/penis) - S = GLOB.cock_shapes_list[G.shape] - if(/obj/item/organ/genital/testicles) - S = GLOB.balls_shapes_list[G.shape] - if(/obj/item/organ/genital/vagina) - S = GLOB.vagina_shapes_list[G.shape] - if(/obj/item/organ/genital/breasts) - S = GLOB.breasts_shapes_list[G.shape] - - - - - if(!S || S.icon_state == "none") - continue - - var/mutable_appearance/genital_overlay = mutable_appearance(S.icon, layer = -layer) - genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size]_[aroused_state]_[layertext]" - - if(S.center) - genital_overlay = center_image(genital_overlay, S.dimension_x, S.dimension_y) - - if(use_skintones && H.dna.features["genitals_use_skintone"]) - genital_overlay.color = "#[skintone2hex(H.skin_tone)]" - genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size]-s_[aroused_state]_[layertext]" - else - switch(S.color_src) - if("cock_color") - genital_overlay.color = "#[H.dna.features["cock_color"]]" - if("balls_color") - genital_overlay.color = "#[H.dna.features["balls_color"]]" - if("breasts_color") - genital_overlay.color = "#[H.dna.features["breasts_color"]]" - if("vag_color") - genital_overlay.color = "#[H.dna.features["vag_color"]]" - - standing += genital_overlay - - if(LAZYLEN(standing)) - H.overlays_standing[layer] = standing.Copy() - standing = list() - - for(var/L in relevant_layers) - H.apply_overlay(L) diff --git a/modular_citadel/code/modules/arousal/organs/ovipositor.dm b/modular_citadel/code/modules/arousal/organs/ovipositor.dm index 76bf60d93c..c26424d296 100644 --- a/modular_citadel/code/modules/arousal/organs/ovipositor.dm +++ b/modular_citadel/code/modules/arousal/organs/ovipositor.dm @@ -3,14 +3,14 @@ desc = "An egg laying reproductive organ." icon_state = "ovi_knotted_2" icon = 'modular_citadel/icons/obj/genitals/ovipositor.dmi' - zone = "groin" - slot = "penis" - w_class = 3 + zone = BODY_ZONE_PRECISE_GROIN + slot = ORGAN_SLOT_PENIS + genital_flags = GENITAL_BLACKLISTED //unimplemented shape = "knotted" size = 3 + layer_index = PENIS_LAYER_INDEX var/length = 6 //inches var/girth = 0 var/girth_ratio = COCK_GIRTH_RATIO_DEF //citadel_defines.dm for these defines var/knot_girth_ratio = KNOT_GIRTH_RATIO_DEF var/list/oviflags = list() - var/obj/item/organ/eggsack/linked_eggsack diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm index 43a512acf6..17cd35c144 100644 --- a/modular_citadel/code/modules/arousal/organs/penis.dm +++ b/modular_citadel/code/modules/arousal/organs/penis.dm @@ -1,77 +1,78 @@ /obj/item/organ/genital/penis - name = "penis" - desc = "A male reproductive organ." - icon_state = "penis" - icon = 'modular_citadel/icons/obj/genitals/penis.dmi' - zone = "groin" - slot = ORGAN_SLOT_PENIS - can_masturbate_with = TRUE - masturbation_verb = "stroke" - can_climax = TRUE - fluid_transfer_factor = 0.5 - size = 2 //arbitrary value derived from length and girth for sprites. - var/length = 6 //inches - var/cached_length //used to detect a change in length - var/girth = 4.38 - var/girth_ratio = COCK_GIRTH_RATIO_DEF //0.73; check citadel_defines.dm - var/knot_girth_ratio = KNOT_GIRTH_RATIO_DEF - var/list/dickflags = list() - var/list/knotted_types = list("knotted", "barbed, knotted") - var/prev_length = 6 //really should be renamed to prev_length + name = "penis" + desc = "A male reproductive organ." + icon_state = "penis" + icon = 'modular_citadel/icons/obj/genitals/penis.dmi' + zone = BODY_ZONE_PRECISE_GROIN + slot = ORGAN_SLOT_PENIS + masturbation_verb = "stroke" + genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH + linked_organ_slot = ORGAN_SLOT_TESTICLES + fluid_transfer_factor = 0.5 + size = 2 //arbitrary value derived from length and girth for sprites. + layer_index = PENIS_LAYER_INDEX + var/length = 6 //inches + var/prev_length = 6 //really should be renamed to prev_length + var/girth = 4.38 + var/girth_ratio = COCK_GIRTH_RATIO_DEF //0.73; check citadel_defines.dm -/obj/item/organ/genital/penis/Initialize() - . = ..() - /* I hate genitals.*/ - -/obj/item/organ/genital/penis/update_size() - var/mob/living/carbon/human/o = owner - if(!ishuman(o) || !o) +/obj/item/organ/genital/penis/modify_size(modifier, min = -INFINITY, max = INFINITY) + var/new_value = CLAMP(length + modifier, min, max) + if(new_value == length) return - if(cached_length < 0)//I don't actually know what round() does to negative numbers, so to be safe!! - var/obj/item/organ/genital/penis/P = o.getorganslot("penis") - to_chat(o, "You feel your tallywacker shrinking away from your body as your groin flattens out!") - P.Remove(o) - switch(round(cached_length)) - if(0 to 4) //If modest size - length = cached_length - size = 1 - if(owner.has_status_effect(/datum/status_effect/chem/penis_enlarger)) - o.remove_status_effect(/datum/status_effect/chem/penis_enlarger) - if(5 to 10) //If modest size - length = cached_length - size = 2 - if(owner.has_status_effect(/datum/status_effect/chem/penis_enlarger)) - o.remove_status_effect(/datum/status_effect/chem/penis_enlarger) - if(11 to 20) //If massive - length = cached_length - size = 3 - if(owner.has_status_effect(/datum/status_effect/chem/penis_enlarger)) - o.remove_status_effect(/datum/status_effect/chem/penis_enlarger) - if(21 to 35) //If massive and due for large effects - length = cached_length - size = 3 - if(!owner.has_status_effect(/datum/status_effect/chem/penis_enlarger)) - o.apply_status_effect(/datum/status_effect/chem/penis_enlarger) - if(36 to INFINITY) //If comical - length = cached_length - size = 4 //no new sprites for anything larger yet - if(!owner.has_status_effect(/datum/status_effect/chem/penis_enlarger)) - o.apply_status_effect(/datum/status_effect/chem/penis_enlarger) - - if (round(length) > round(prev_length)) - to_chat(o, "Your [pick(GLOB.gentlemans_organ_names)] [pick("swells up to", "flourishes into", "expands into", "bursts forth into", "grows eagerly into", "amplifys into")] a [uppertext(round(length))] inch penis.") - else if ((round(length) < round(prev_length)) && (length > 0.5)) - to_chat(o, "Your [pick(GLOB.gentlemans_organ_names)] [pick("shrinks down to", "decreases into", "diminishes into", "deflates into", "shrivels regretfully into", "contracts into")] a [uppertext(round(length))] inch penis.") prev_length = length + length = CLAMP(length + modifier, min, max) + update() + +/obj/item/organ/genital/penis/update_size(modified = FALSE) + if(length < 0)//I don't actually know what round() does to negative numbers, so to be safe!! + if(owner) + to_chat(owner, "You feel your tallywacker shrinking away from your body as your groin flattens out!") + QDEL_IN(src, 1) + if(linked_organ) + QDEL_IN(linked_organ, 1) + return + var/rounded_length = round(length) + var/new_size + var/enlargement = FALSE + switch(rounded_length) + if(0 to 6) //If modest size + new_size = 1 + if(7 to 11) //If large + new_size = 2 + if(12 to 20) //If massive + new_size = 3 + if(21 to 34) //If massive and due for large effects + new_size = 3 + enlargement = TRUE + if(35 to INFINITY) //If comical + new_size = 4 //no new sprites for anything larger yet + enlargement = TRUE + if(owner) + var/status_effect = owner.has_status_effect(STATUS_EFFECT_PENIS_ENLARGEMENT) + if(enlargement && !status_effect) + owner.apply_status_effect(STATUS_EFFECT_PENIS_ENLARGEMENT) + else if(!enlargement && status_effect) + owner.remove_status_effect(STATUS_EFFECT_PENIS_ENLARGEMENT) + if(linked_organ) + linked_organ.size = CLAMP(size + new_size, BALLS_SIZE_MIN, BALLS_SIZE_MAX) + linked_organ.update() + size = new_size + + if(owner) + if (round(length) > round(prev_length)) + to_chat(owner, "Your [pick(GLOB.gentlemans_organ_names)] [pick("swells up to", "flourishes into", "expands into", "bursts forth into", "grows eagerly into", "amplifys into")] a [uppertext(round(length))] inch penis.") + else if ((round(length) < round(prev_length)) && (length > 0.5)) + to_chat(owner, "Your [pick(GLOB.gentlemans_organ_names)] [pick("shrinks down to", "decreases into", "diminishes into", "deflates into", "shrivels regretfully into", "contracts into")] a [uppertext(round(length))] inch penis.") icon_state = sanitize_text("penis_[shape]_[size]") girth = (length * girth_ratio)//Is it just me or is this ludicous, why not make it exponentially decay? - //I have no idea on how to update sprites and I hate it /obj/item/organ/genital/penis/update_appearance() + . = ..() var/string var/lowershape = lowertext(shape) - desc = "You see [aroused_state ? "an erect" : "a flaccid"] [lowershape] penis. You estimate it's about [round(length, 0.25)] inch[round(length, 0.25) != 1 ? "es" : ""] long and [round(girth, 0.25)] inch[round(girth, 0.25) != 1 ? "es" : ""] in girth." + desc = "You see [aroused_state ? "an erect" : "a flaccid"] [lowershape] [name]. You estimate it's about [round(length, 0.25)] inch[round(length, 0.25) != 1 ? "es" : ""] long and [round(girth, 0.25)] inch[round(girth, 0.25) != 1 ? "es" : ""] in girth." if(owner) if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"]) @@ -87,13 +88,13 @@ icon_state = sanitize_text(string) H.update_genitals() -/obj/item/organ/genital/penis/update_link() - if(owner) - linked_organ = (owner.getorganslot("testicles")) - if(linked_organ) - linked_organ.linked_organ = src - linked_organ.size = size +/obj/item/organ/genital/penis/get_features(mob/living/carbon/human/H) + var/datum/dna/D = H.dna + if(D.species.use_skintones && D.features["genitals_use_skintone"]) + color = "#[skintone2hex(H.skin_tone)]" else - if(linked_organ) - linked_organ.linked_organ = null - linked_organ = null + color = "#[D.features["cock_color"]]" + length = D.features["cock_length"] + girth_ratio = D.features["cock_girth_ratio"] + shape = D.features["cock_shape"] + prev_length = length diff --git a/modular_citadel/code/modules/arousal/organs/testicles.dm b/modular_citadel/code/modules/arousal/organs/testicles.dm index f4ef4b5064..547674a5f1 100644 --- a/modular_citadel/code/modules/arousal/organs/testicles.dm +++ b/modular_citadel/code/modules/arousal/organs/testicles.dm @@ -1,82 +1,46 @@ /obj/item/organ/genital/testicles - name = "testicles" - desc = "A male reproductive organ." - icon_state = "testicles" - icon = 'modular_citadel/icons/obj/genitals/testicles.dmi' - zone = "groin" - slot = "testicles" - size = BALLS_SIZE_MIN - var/size_name = "average" - shape = "single" - var/sack_size = BALLS_SACK_SIZE_DEF - fluid_id = "semen" - producing = TRUE - can_masturbate_with = FALSE - masturbation_verb = "massage" - can_climax = TRUE - var/sent_full_message = TRUE //defaults to 1 since they're full to start + name = "testicles" + desc = "A male reproductive organ." + icon_state = "testicles" + icon = 'modular_citadel/icons/obj/genitals/testicles.dmi' + zone = BODY_ZONE_PRECISE_GROIN + slot = ORGAN_SLOT_TESTICLES + size = BALLS_SIZE_MIN + linked_organ_slot = ORGAN_SLOT_PENIS + genital_flags = CAN_MASTURBATE_WITH|MASTURBATE_LINKED_ORGAN|GENITAL_FUID_PRODUCTION + var/size_name = "average" + shape = "Single" + var/sack_size = BALLS_SACK_SIZE_DEF + fluid_id = "semen" + masturbation_verb = "massage" + layer_index = TESTICLES_LAYER_INDEX -/obj/item/organ/genital/testicles/on_life() - if(QDELETED(src)) - return - if(reagents && producing) - if(reagents.total_volume == 0) // Apparently, 0.015 gets rounded down to zero and no reagents are created if we don't start it with 0.1 in the tank. - fluid_rate = 0.1 - else - fluid_rate = CUM_RATE - if(reagents.total_volume >= 5) - fluid_mult = 0.5 - else - fluid_mult = 1 - generate_cum() - -/obj/item/organ/genital/testicles/proc/generate_cum() - reagents.maximum_volume = fluid_max_volume - if(reagents.total_volume >= reagents.maximum_volume) - if(!sent_full_message) - send_full_message() - sent_full_message = TRUE +/obj/item/organ/genital/testicles/generate_fluid() + if(!linked_organ && !update_link()) return FALSE - sent_full_message = FALSE - update_link() - if(!linked_organ) - return FALSE - reagents.isolate_reagent(fluid_id)//remove old reagents if it changed and just clean up generally - reagents.add_reagent(fluid_id, (fluid_mult * fluid_rate))//generate the cum + . = ..() + if(. && reagents.holder_full()) + to_chat(owner, "Your balls finally feel full, again.") -/obj/item/organ/genital/testicles/update_link() - if(owner && !QDELETED(src)) - linked_organ = (owner.getorganslot("penis")) - if(linked_organ) - linked_organ.linked_organ = src - size = linked_organ.size +/obj/item/organ/genital/testicles/upon_link() + size = linked_organ.size + update_size() + update_appearance() - else - if(linked_organ) - linked_organ.linked_organ = null - linked_organ = null - -/obj/item/organ/genital/testicles/proc/send_full_message(msg = "Your balls finally feel full, again.") - if(owner && istext(msg)) - to_chat(owner, msg) - return TRUE - -/obj/item/organ/genital/testicles/update_appearance() +/obj/item/organ/genital/testicles/update_size(modified = FALSE) switch(size) - if(0.1 to 1) + if(BALLS_SIZE_MIN) size_name = "average" - if(1.1 to 2) + if(BALLS_SIZE_DEF) size_name = "enlarged" - if(2.1 to INFINITY) + if(BALLS_SIZE_MAX) size_name = "engorged" else size_name = "nonexistant" - if(!internal) - desc = "You see an [size_name] pair of testicles." - else - desc = "They don't have any testicles you can see." - +/obj/item/organ/genital/testicles/update_appearance() + . = ..() + desc = "You see an [size_name] pair of testicles." if(owner) var/string if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"]) @@ -91,3 +55,18 @@ var/mob/living/carbon/human/H = owner icon_state = sanitize_text(string) H.update_genitals() + +/obj/item/organ/genital/testicles/get_features(mob/living/carbon/human/H) + var/datum/dna/D = H.dna + if(D.species.use_skintones && D.features["genitals_use_skintone"]) + color = "#[skintone2hex(H.skin_tone)]" + else + color = "#[D.features["balls_color"]]" + sack_size = D.features["balls_sack_size"] + shape = D.features["balls_shape"] + if(D.features["balls_shape"] == "Hidden") + ENABLE_BITFIELD(genital_flags, GENITAL_INTERNAL) + fluid_id = D.features["balls_fluid"] + fluid_rate = D.features["balls_cum_rate"] + fluid_mult = D.features["balls_cum_mult"] + fluid_efficiency = D.features["balls_efficiency"] diff --git a/modular_citadel/code/modules/arousal/organs/vagina.dm b/modular_citadel/code/modules/arousal/organs/vagina.dm index 8c15aa5437..0df954fd79 100644 --- a/modular_citadel/code/modules/arousal/organs/vagina.dm +++ b/modular_citadel/code/modules/arousal/organs/vagina.dm @@ -1,26 +1,25 @@ /obj/item/organ/genital/vagina - name = "vagina" - desc = "A female reproductive organ." - icon = 'modular_citadel/icons/obj/genitals/vagina.dmi' - icon_state = "vagina" - zone = "groin" - slot = "vagina" - size = 1 //There is only 1 size right now - can_masturbate_with = TRUE - masturbation_verb = "finger" - can_climax = TRUE + name = "vagina" + desc = "A female reproductive organ." + icon = 'modular_citadel/icons/obj/genitals/vagina.dmi' + icon_state = ORGAN_SLOT_VAGINA + zone = BODY_ZONE_PRECISE_GROIN + slot = "vagina" + size = 1 //There is only 1 size right now + genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH + masturbation_verb = "finger" fluid_transfer_factor = 0.1 //Yes, some amount is exposed to you, go get your AIDS - w_class = 3 - var/cap_length = 8//D E P T H (cap = capacity) - var/cap_girth = 12 + layer_index = VAGINA_LAYER_INDEX + var/cap_length = 8//D E P T H (cap = capacity) + var/cap_girth = 12 var/cap_girth_ratio = 1.5 - var/clits = 1 - var/clit_diam = 0.25 - var/clit_len = 0.25 + var/clits = 1 + var/clit_diam = 0.25 + var/clit_len = 0.25 var/list/vag_types = list("tentacle", "dentata", "hairy", "spade", "furred") - /obj/item/organ/genital/vagina/update_appearance() + . = ..() var/string //Keeping this code here, so making multiple sprites for the different kinds is easier. var/lowershape = lowertext(shape) var/details @@ -63,12 +62,10 @@ icon_state = sanitize_text(string) H.update_genitals() -/obj/item/organ/genital/vagina/update_link() - if(owner) - linked_organ = (owner.getorganslot("womb")) - if(linked_organ) - linked_organ.linked_organ = src +/obj/item/organ/genital/vagina/get_features(mob/living/carbon/human/H) + var/datum/dna/D = H.dna + if(D.species.use_skintones && D.features["genitals_use_skintone"]) + color = "#[skintone2hex(H.skin_tone)]" else - if(linked_organ) - linked_organ.linked_organ = null - linked_organ = null + color = "[D.features["vag_color"]]" + shape = "[D.features["vag_shape"]]" diff --git a/modular_citadel/code/modules/arousal/organs/womb.dm b/modular_citadel/code/modules/arousal/organs/womb.dm index 3f190b72ac..9dfe811571 100644 --- a/modular_citadel/code/modules/arousal/organs/womb.dm +++ b/modular_citadel/code/modules/arousal/organs/womb.dm @@ -1,45 +1,10 @@ /obj/item/organ/genital/womb - name = "womb" - desc = "A female reproductive organ." - icon = 'modular_citadel/icons/obj/genitals/vagina.dmi' - icon_state = "womb" - zone = "groin" - slot = "womb" - internal = TRUE - fluid_id = "femcum" - producing = TRUE - -/obj/item/organ/genital/womb/on_life() - if(QDELETED(src)) - return - if(reagents && producing) - if(reagents.total_volume == 0) // Apparently, 0.015 gets rounded down to zero and no reagents are created if we don't start it with 0.1 in the tank. - fluid_rate = 0.1 - else - fluid_rate = CUM_RATE - if(reagents.total_volume >= 5) - fluid_mult = 0.5 - else - fluid_mult = 1 - generate_femcum() - -/obj/item/organ/genital/womb/proc/generate_femcum() - reagents.maximum_volume = fluid_max_volume - update_link() - if(!linked_organ) - return FALSE - reagents.isolate_reagent(fluid_id)//remove old reagents if it changed and just clean up generally - reagents.add_reagent(fluid_id, (fluid_mult * fluid_rate))//generate the cum - -/obj/item/organ/genital/womb/update_link() - if(owner) - linked_organ = (owner.getorganslot("vagina")) - if(linked_organ) - linked_organ.linked_organ = src - else - if(linked_organ) - linked_organ.linked_organ = null - linked_organ = null - -/obj/item/organ/genital/womb/Destroy() - return ..() + name = "womb" + desc = "A female reproductive organ." + icon = 'modular_citadel/icons/obj/genitals/vagina.dmi' + icon_state = "womb" + zone = BODY_ZONE_PRECISE_GROIN + slot = ORGAN_SLOT_WOMB + genital_flags = GENITAL_INTERNAL|GENITAL_FUID_PRODUCTION + fluid_id = "femcum" + linked_organ_slot = ORGAN_SLOT_VAGINA diff --git a/modular_citadel/code/modules/client/loadout/suit.dm b/modular_citadel/code/modules/client/loadout/suit.dm index 5a12a6bf0b..d3a8258fc0 100644 --- a/modular_citadel/code/modules/client/loadout/suit.dm +++ b/modular_citadel/code/modules/client/loadout/suit.dm @@ -64,6 +64,64 @@ category = SLOT_WEAR_SUIT path = /obj/item/clothing/suit/hooded/wintercoat +/* Commented out until it is "balanced" +/datum/gear/coat/sec + name = "Security winter coat" + category = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/hooded/wintercoat/security + restricted_roles = list("Head of Security", "Warden", "Detective", "Security Officer") // Reserve it to the Security Departement +*/ + +/datum/gear/coat/med + name = "Medical winter coat" + category = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/hooded/wintercoat/medical + restricted_roles = list("Chief Medical Officer", "Medical Doctor") // Reserve it to Medical Doctors and their boss, the Chief Medical Officer + +/* Commented out until there is a Chemistry Winter Coat +/datum/gear/coat/med/chem + name = "Chemistry winter coat" + category = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/hooded/wintercoat/medical/chemistry + restricted_roles = list("Chief Medical Officer", "Chemist") // Reserve it to Chemists and their boss, the Chief Medical Officer +*/ + +/datum/gear/coat/sci + name = "Science winter coat" + category = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/hooded/wintercoat/science + restricted_roles = list("Research Director", "Scientist", "Roboticist") // Reserve it to the Science Departement + +/datum/gear/coat/eng + name = "Engineering winter coat" + category = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/hooded/wintercoat/engineering + restricted_roles = list("Chief Engineer", "Station Engineer") // Reserve it to Station Engineers and their boss, the Chief Engineer + +/datum/gear/coat/eng/atmos + name = "Atmospherics winter coat" + category = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos + restricted_roles = list("Chief Engineer", "Atmospheric Technician") // Reserve it to Atmos Techs and their boss, the Chief Engineer + +/datum/gear/coat/hydro + name = "Hydroponics winter coat" + category = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/hooded/wintercoat/hydro + restricted_roles = list("Head of Personnel", "Botanist") // Reserve it to Botanists and their boss, the Head of Personnel + +/datum/gear/coat/cargo + name = "Cargo winter coat" + category = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/hooded/wintercoat/cargo + restricted_roles = list("Quartermaster", "Cargo Technician") // Reserve it to Cargo Techs and their boss, the Quartermaster + +/datum/gear/coat/miner + name = "Mining winter coat" + category = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/hooded/wintercoat/miner + restricted_roles = list("Quartermaster", "Shaft Miner") // Reserve it to Miners and their boss, the Quartermaster + /datum/gear/militaryjacket name = "Military Jacket" category = SLOT_WEAR_SUIT diff --git a/modular_citadel/code/modules/client/preferences_savefile.dm b/modular_citadel/code/modules/client/preferences_savefile.dm index 0a353e3f5d..5584181a70 100644 --- a/modular_citadel/code/modules/client/preferences_savefile.dm +++ b/modular_citadel/code/modules/client/preferences_savefile.dm @@ -32,7 +32,6 @@ WRITE_FILE(S["feature_ipc_antenna"], features["ipc_antenna"]) //Citadel WRITE_FILE(S["feature_genitals_use_skintone"], features["genitals_use_skintone"]) - WRITE_FILE(S["feature_exhibitionist"], features["exhibitionist"]) WRITE_FILE(S["feature_mcolor2"], features["mcolor2"]) WRITE_FILE(S["feature_mcolor3"], features["mcolor3"]) WRITE_FILE(S["feature_mam_body_markings"], features["mam_body_markings"]) diff --git a/modular_citadel/code/modules/clothing/glasses/phantomthief.dm b/modular_citadel/code/modules/clothing/glasses/phantomthief.dm index 5e488b9837..353b0afb14 100644 --- a/modular_citadel/code/modules/clothing/glasses/phantomthief.dm +++ b/modular_citadel/code/modules/clothing/glasses/phantomthief.dm @@ -27,7 +27,7 @@ if(istype(user) && combatmodestate && world.time >= nextadrenalinepop) nextadrenalinepop = world.time + 5 MINUTES user.reagents.add_reagent("syndicateadrenals", 5) - user.playsound_local(user, 'modular_citadel/sound/misc/adrenalinject.ogg', 100, 0, pressure_affected = FALSE) + user.playsound_local(user, 'sound/misc/adrenalinject.ogg', 100, 0, pressure_affected = FALSE) /obj/item/clothing/glasses/phantomthief/syndicate/equipped(mob/user, slot) . = ..() diff --git a/modular_citadel/code/modules/clothing/neck.dm b/modular_citadel/code/modules/clothing/neck.dm index 8d7d4747b7..20324516f6 100644 --- a/modular_citadel/code/modules/clothing/neck.dm +++ b/modular_citadel/code/modules/clothing/neck.dm @@ -15,7 +15,7 @@ /datum/action/item_action/zanderlocket/Trigger() new/obj/effect/temp_visual/souldeath(owner.loc, owner) - playsound(owner, 'modular_citadel/sound/misc/souldeath.ogg', 100, FALSE) + playsound(owner, 'sound/misc/souldeath.ogg', 100, FALSE) /obj/item/clothing/neck/undertale/Initialize() diff --git a/modular_citadel/code/modules/mob/living/carbon/carbon.dm b/modular_citadel/code/modules/mob/living/carbon/carbon.dm index 02b98bdbf2..4cc8edac1b 100644 --- a/modular_citadel/code/modules/mob/living/carbon/carbon.dm +++ b/modular_citadel/code/modules/mob/living/carbon/carbon.dm @@ -29,9 +29,9 @@ if(voremode) toggle_vore_mode() if(combatmode) - playsound_local(src, 'modular_citadel/sound/misc/ui_toggle.ogg', 50, FALSE, pressure_affected = FALSE) //Sound from interbay! + playsound_local(src, 'sound/misc/ui_toggle.ogg', 50, FALSE, pressure_affected = FALSE) //Sound from interbay! else - playsound_local(src, 'modular_citadel/sound/misc/ui_toggleoff.ogg', 50, FALSE, pressure_affected = FALSE) //Slightly modified version of the above! + playsound_local(src, 'sound/misc/ui_toggleoff.ogg', 50, FALSE, pressure_affected = FALSE) //Slightly modified version of the above! if(client) client.show_popup_menus = !combatmode // So we can right-click for alternate actions and all that other good shit. Also moves examine to shift+rightclick to make it possible to attack while sprinting if(hud_used && hud_used.static_inventory) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm b/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm index 409864c900..badda6b239 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm @@ -24,9 +24,9 @@ sprinting = !sprinting if(!resting && m_intent == MOVE_INTENT_RUN && canmove) if(sprinting) - playsound_local(src, 'modular_citadel/sound/misc/sprintactivate.ogg', 50, FALSE, pressure_affected = FALSE) + playsound_local(src, 'sound/misc/sprintactivate.ogg', 50, FALSE, pressure_affected = FALSE) else - playsound_local(src, 'modular_citadel/sound/misc/sprintdeactivate.ogg', 50, FALSE, pressure_affected = FALSE) + playsound_local(src, 'sound/misc/sprintdeactivate.ogg', 50, FALSE, pressure_affected = FALSE) if(hud_used && hud_used.static_inventory) for(var/obj/screen/sprintbutton/selector in hud_used.static_inventory) selector.insert_witty_toggle_joke_here(src) diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm index 59731bd715..39d1de1fa7 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @@ -13,13 +13,23 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! w_class = 3 hitsound = 'sound/weapons/bite.ogg' sharpness = IS_SHARP + var/stamtostunconversion = 0.1 //Total stamloss gets multiplied by this value for the help intent hard stun. Resting adds an additional 2x multiplier on top. Keep this low or so help me god. + var/stuncooldown = 4 SECONDS //How long it takes before you're able to attempt to stun a target again + var/nextstuntime + +/obj/item/dogborg/jaws/examine(mob/user) + . = ..() + if(!CONFIG_GET(flag/weaken_secborg)) + to_chat(user, "Use help intent to attempt to non-lethally incapacitate the target by latching on with your maw. This is more effective against exhausted and resting targets.") /obj/item/dogborg/jaws/big name = "combat jaws" desc = "The jaws of the law. Very sharp." icon_state = "jaws" - force = 10 //Lowered to match secborg. No reason it should be more than a secborg's baton. + force = 15 //Chomp chomp. Crew harm. attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced") + stamtostunconversion = 0.2 // 100*0.2*2=40. Stun's just long enough to slap on cuffs with click delay if the target is near hard stamcrit. + stuncooldown = 6 SECONDS /obj/item/dogborg/jaws/small @@ -31,11 +41,36 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! var/status = 0 /obj/item/dogborg/jaws/attack(atom/A, mob/living/silicon/robot/user) - ..() - user.do_attack_animation(A, ATTACK_EFFECT_BITE) + if(!istype(user)) + return + if(!CONFIG_GET(flag/weaken_secborg) && user.a_intent != INTENT_HARM && istype(A, /mob/living)) + if(A == user.pulling) + to_chat(user, "You already have [A] in your jaws.") + return + if(nextstuntime >= world.time) + to_chat(user, "Your jaw servos are still recharging.") + return + nextstuntime = world.time + stuncooldown + var/mob/living/M = A + var/cachedstam = M.getStaminaLoss() + var/totalstuntime = cachedstam * stamtostunconversion * (M.lying ? 2 : 1) + if(!M.resting) + M.Knockdown(cachedstam*2) //BORK BORK. GET DOWN. + M.Stun(totalstuntime) + user.do_attack_animation(A, ATTACK_EFFECT_BITE) + user.start_pulling(M, TRUE) //Yip yip. Come with. + user.changeNext_move(CLICK_CD_MELEE) + M.visible_message("[user] clamps [user.p_their()] [src] onto [M] and latches on!", "[user] clamps [user.p_their()] [src] onto you and latches on!") + if(totalstuntime >= 4 SECONDS) + playsound(usr, 'sound/effects/k9_jaw_strong.ogg', 75, FALSE, 2) //Wuff wuff. Big stun. + else + playsound(usr, 'sound/effects/k9_jaw_weak.ogg', 50, TRUE, -1) //Arf arf. Pls buff. + else + . = ..() + user.do_attack_animation(A, ATTACK_EFFECT_BITE) /obj/item/dogborg/jaws/small/attack_self(mob/user) - var/mob/living/silicon/robot.R = user + var/mob/living/silicon/robot/R = user if(R.cell && R.cell.charge > 100) if(R.emagged && status == 0) name = "combat jaws" @@ -43,14 +78,18 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! desc = "The jaws of the law." force = 12 attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced") + stamtostunconversion = 0.15 + stuncooldown = 5 SECONDS status = 1 to_chat(user, "Your jaws are now [status ? "Combat" : "Pup'd"].") else name = "puppy jaws" icon_state = "smalljaws" desc = "The jaws of a small dog." - force = 5 + force = initial(force) attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed") + stamtostunconversion = initial(stamtostunconversion) + stuncooldown = initial(stuncooldown) status = 0 if(R.emagged) to_chat(user, "Your jaws are now [status ? "Combat" : "Pup'd"].") @@ -167,7 +206,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! item_flags |= NOBLUDGEON //No more attack messages /obj/item/soap/tongue/attack_self(mob/user) - var/mob/living/silicon/robot.R = user + var/mob/living/silicon/robot/R = user if(R.cell && R.cell.charge > 100) if(R.emagged && status == 0) status = !status @@ -187,7 +226,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! update_icon() /obj/item/soap/tongue/afterattack(atom/target, mob/user, proximity) - var/mob/living/silicon/robot.R = user + var/mob/living/silicon/robot/R = user if(!proximity || !check_allowed_items(target)) return if(R.client && (target in R.client.screen)) @@ -343,8 +382,10 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! /mob/living/silicon/robot var/leaping = 0 var/pounce_cooldown = 0 - var/pounce_cooldown_time = 20 //Buffed to counter balance changes - var/pounce_spoolup = 1 + var/pounce_cooldown_time = 30 //Time in deciseconds between pounces + var/pounce_spoolup = 5 //Time in deciseconds for the pounce to happen after clicking + var/pounce_stamloss_cap = 120 //How much staminaloss pounces alone are capable of bringing a spaceman to + var/pounce_stamloss = 80 //Base staminaloss value of the pounce var/leap_at var/disabler var/laser @@ -356,13 +397,12 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! /obj/item/dogborg/pounce/afterattack(atom/A, mob/user) var/mob/living/silicon/robot/R = user - if(R && !R.pounce_cooldown) - R.pounce_cooldown = !R.pounce_cooldown + if(R && (world.time >= R.pounce_cooldown)) + R.pounce_cooldown = world.time + R.pounce_cooldown_time to_chat(R, "Your targeting systems lock on to [A]...") + playsound(R, 'sound/effects/servostep.ogg', 100, TRUE) addtimer(CALLBACK(R, /mob/living/silicon/robot.proc/leap_at, A), R.pounce_spoolup) - spawn(R.pounce_cooldown_time) - R.pounce_cooldown = !R.pounce_cooldown - else if(R && R.pounce_cooldown) + else if(R && (world.time < R.pounce_cooldown)) to_chat(R, "Your leg actuators are still recharging!") /mob/living/silicon/robot/proc/leap_at(atom/A) @@ -385,6 +425,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! update_icons() throw_at(A, MAX_K9_LEAP_DIST, 1, spin=0, diagonals_first = 1) cell.use(750) //Less than a stunbaton since stunbatons hit everytime. + playsound(src, 'sound/effects/stealthoff.ogg', 25, TRUE, -1) weather_immunities -= "lava" /mob/living/silicon/robot/throw_impact(atom/A) @@ -402,7 +443,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! blocked = 1 if(!blocked) L.visible_message("[src] pounces on [L]!", "[src] pounces on you!") - L.Knockdown(iscarbon(L) ? 225 : 45) // Temporary. If someone could rework how dogborg pounces work to accomodate for combat changes, that'd be nice. + L.Knockdown(iscarbon(L) ? 60 : 45, override_stamdmg = CLAMP(pounce_stamloss, 0, pounce_stamloss_cap-L.getStaminaLoss())) // Temporary. If someone could rework how dogborg pounces work to accomodate for combat changes, that'd be nice. playsound(src, 'sound/weapons/Egloves.ogg', 50, 1) sleep(2)//Runtime prevention (infinite bump() calls on hulks) step_towards(src,L) diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm b/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm index 964ef65ebc..28327cde0e 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -19,11 +19,11 @@ sprinting = shutdown ? FALSE : !sprinting if(!resting && canmove) if(sprinting) - playsound_local(src, 'modular_citadel/sound/misc/sprintactivate.ogg', 50, FALSE, pressure_affected = FALSE) + playsound_local(src, 'sound/misc/sprintactivate.ogg', 50, FALSE, pressure_affected = FALSE) else if(shutdown) playsound_local(src, 'sound/effects/light_flicker.ogg', 50, FALSE, pressure_affected = FALSE) - playsound_local(src, 'modular_citadel/sound/misc/sprintdeactivate.ogg', 50, FALSE, pressure_affected = FALSE) + playsound_local(src, 'sound/misc/sprintdeactivate.ogg', 50, FALSE, pressure_affected = FALSE) if(hud_used && hud_used.static_inventory) for(var/obj/screen/sprintbutton/selector in hud_used.static_inventory) selector.insert_witty_toggle_joke_here(src) diff --git a/modular_citadel/code/modules/mob/living/simple_animal/kiwi.dm b/modular_citadel/code/modules/mob/living/simple_animal/kiwi.dm deleted file mode 100644 index 27c1749011..0000000000 --- a/modular_citadel/code/modules/mob/living/simple_animal/kiwi.dm +++ /dev/null @@ -1,134 +0,0 @@ -/mob/living/simple_animal/kiwi - name = "space kiwi" - desc = "Exposure to low gravity made them grow larger." - gender = FEMALE - icon = 'modular_citadel/icons/mob/kiwi.dmi' - icon_state = "kiwi" - icon_living = "kiwi" - icon_dead = "dead" - speak = list("Chirp!","Cheep cheep chirp!!","Cheep.") - speak_emote = list("chirps","trills") - emote_hear = list("chirps.") - emote_see = list("pecks at the ground.","jumps in place.") - density = FALSE - speak_chance = 2 - turns_per_move = 3 - butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 3) - var/egg_type = /obj/item/reagent_containers/food/snacks/egg/kiwiEgg - var/food_type = /obj/item/reagent_containers/food/snacks/grown/wheat - response_help = "pets" - response_disarm = "gently pushes aside" - response_harm = "kicks" - attacktext = "kicks" - health = 25 - maxHealth = 25 - ventcrawler = VENTCRAWLER_ALWAYS - var/eggsleft = 0 - var/eggsFertile = TRUE - pass_flags = PASSTABLE | PASSMOB - mob_size = MOB_SIZE_SMALL - var/list/feedMessages = list("It chirps happily.","It chirps happily.") - var/list/layMessage = list("lays an egg.","squats down and croons.","begins making a huge racket.","begins chirping raucously.") - gold_core_spawnable = FRIENDLY_SPAWN - var/static/kiwi_count = 0 - -/mob/living/simple_animal/kiwi/Destroy() - --kiwi_count - return ..() - - -/mob/living/simple_animal/kiwi/Initialize() - . = ..() - ++kiwi_count - - -/mob/living/simple_animal/kiwi/Life() - . =..() - if(!.) - return - if((!stat && prob(3) && eggsleft > 0) && egg_type) - visible_message("[src] [pick(layMessage)]") - eggsleft-- - var/obj/item/E = new egg_type(get_turf(src)) - E.pixel_x = rand(-6,6) - E.pixel_y = rand(-6,6) - if(eggsFertile) - if(kiwi_count < MAX_CHICKENS && prob(25)) - START_PROCESSING(SSobj, E) - -/obj/item/reagent_containers/food/snacks/egg/kiwiEgg/process() - if(isturf(loc)) - amount_grown += rand(1,2) - if(amount_grown >= 100) - visible_message("[src] hatches with a quiet cracking sound.") - new /mob/living/simple_animal/babyKiwi(get_turf(src)) - STOP_PROCESSING(SSobj, src) - qdel(src) - else - STOP_PROCESSING(SSobj, src) - - -/mob/living/simple_animal/kiwi/attackby(obj/item/O, mob/user, params) - if(istype(O, food_type)) //feedin' dem kiwis - if(!stat && eggsleft < 8) - var/feedmsg = "[user] feeds [O] to [name]! [pick(feedMessages)]" - user.visible_message(feedmsg) - qdel(O) - eggsleft += rand(1, 4) - else - to_chat(user, "[name] doesn't seem hungry!") - else - ..() - - -/mob/living/simple_animal/babyKiwi - name = "baby space kiwi" - desc = "So huggable." - icon = 'modular_citadel/icons/mob/kiwi.dmi' - icon_state = "babyKiwi" - icon_living = "babyKiwi" - icon_dead = "deadBaby" - icon_gib = "chick_gib" - gender = FEMALE - speak = list("Cherp.","Cherp?","Chirrup.","Cheep!") - speak_emote = list("chirps") - emote_hear = list("chirps.") - emote_see = list("pecks at the ground.","Happily bounces in place.") - density = FALSE - speak_chance = 2 - turns_per_move = 2 - butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2) - response_help = "pets" - response_disarm = "gently pushes aside" - response_harm = "kicks" - attacktext = "kicks" - health = 10 - maxHealth = 10 - ventcrawler = VENTCRAWLER_ALWAYS - var/amount_grown = 0 - pass_flags = PASSTABLE | PASSGRILLE | PASSMOB - mob_size = MOB_SIZE_TINY - gold_core_spawnable = FRIENDLY_SPAWN - -/mob/living/simple_animal/babyKiwi/Initialize() - . = ..() - pixel_x = rand(-6, 6) - pixel_y = rand(0, 10) - -/mob/living/simple_animal/babyKiwi/Life() - . =..() - if(!.) - return - if(!stat && !ckey) - amount_grown += rand(1,2) - if(amount_grown >= 100) - new /mob/living/simple_animal/kiwi(src.loc) - qdel(src) - - -/obj/item/reagent_containers/food/snacks/egg/kiwiEgg - name = "kiwi egg" - icon = 'modular_citadel/icons/mob/kiwi.dmi' - desc = "A slightly bigger egg!" - icon_state = "egg" - diff --git a/modular_citadel/code/modules/projectiles/bullets/bullets/smg.dm b/modular_citadel/code/modules/projectiles/bullets/bullets/smg.dm index f069a73fe8..75151417d7 100644 --- a/modular_citadel/code/modules/projectiles/bullets/bullets/smg.dm +++ b/modular_citadel/code/modules/projectiles/bullets/bullets/smg.dm @@ -1,4 +1,4 @@ /obj/item/projectile/bullet/c46x30mm_tx name = "toxin tipped 4.6x30mm bullet" - damage = 15 + damage = 10 damage_type = TOX \ No newline at end of file diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index 70d3bee5af..8ee00bef06 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -57,10 +57,9 @@ icon_state = "magjectile-nl" damage = 2 knockdown = 0 - stamina = 25 - armour_penetration = -10 + stamina = 20 light_range = 2 - speed = 0.7 + speed = 0.6 range = 25 light_color = LIGHT_COLOR_BLUE @@ -109,9 +108,10 @@ fire_sound = 'sound/weapons/magpistol.ogg' mag_type = /obj/item/ammo_box/magazine/mmag/small can_suppress = 0 - casing_ejector = 0 + casing_ejector = FALSE fire_delay = 2 - recoil = 0.2 + recoil = 0.1 + inaccuracy_modifier = 0.25 /obj/item/gun/ballistic/automatic/pistol/mag/update_icon() ..() @@ -123,7 +123,6 @@ icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" ///research memes/// -/* /obj/item/gun/ballistic/automatic/pistol/mag/nopin pin = null spawnwithmagazine = FALSE @@ -155,7 +154,7 @@ materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250) build_path = /obj/item/ammo_box/magazine/mmag/small departmental_flags = DEPARTMENTAL_FLAG_SECURITY -*/ + //////toy memes///// /obj/item/projectile/bullet/reusable/foam_dart/mag @@ -201,9 +200,9 @@ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magjectile-large" damage = 20 - armour_penetration = 25 + armour_penetration = 20 light_range = 3 - speed = 0.7 + speed = 0.6 range = 35 light_color = LIGHT_COLOR_RED @@ -212,10 +211,10 @@ icon_state = "magjectile-large-nl" damage = 2 knockdown = 0 - stamina = 25 - armour_penetration = -10 + stamina = 20 + armour_penetration = 10 light_range = 3 - speed = 0.65 + speed = 0.6 range = 35 light_color = LIGHT_COLOR_BLUE @@ -227,6 +226,8 @@ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" projectile_type = /obj/item/projectile/bullet/magrifle + click_cooldown_override = 2.5 + delay = 3 /obj/item/ammo_casing/caseless/anlmagm desc = "A large, specialized ferromagnetic slug designed with a less-than-lethal payload." @@ -234,10 +235,12 @@ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mag-casing-live" projectile_type = /obj/item/projectile/bullet/nlmagrifle + click_cooldown_override = 2.5 + delay = 3 ///magazines/// -/obj/item/ammo_box/magazine/mmag/ +/obj/item/ammo_box/magazine/mmag name = "magrifle magazine (non-lethal disabler)" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "mediummagmag" @@ -261,17 +264,20 @@ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' icon_state = "magrifle" item_state = "arg" - slot_flags = 0 + slot_flags = NONE mag_type = /obj/item/ammo_box/magazine/mmag fire_sound = 'sound/weapons/magrifle.ogg' can_suppress = 0 - burst_size = 3 - fire_delay = 2 - spread = 5 - recoil = 0.15 - casing_ejector = 0 + burst_size = 1 + actions_types = null + fire_delay = 3 + spread = 0 + recoil = 0.1 + casing_ejector = FALSE + inaccuracy_modifier = 0.5 + weapon_weight = WEAPON_MEDIUM + dualwield_spread_mult = 1.4 -/* //research/// /obj/item/gun/ballistic/automatic/magrifle/nopin @@ -305,7 +311,7 @@ materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500) build_path = /obj/item/ammo_box/magazine/mmag departmental_flags = DEPARTMENTAL_FLAG_SECURITY -*/ + ///foamagrifle/// /obj/item/ammo_box/magazine/toy/foamag @@ -327,7 +333,6 @@ spread = 60 w_class = WEIGHT_CLASS_BULKY weapon_weight = WEAPON_HEAVY -/* // TECHWEBS IMPLEMENTATION // @@ -339,7 +344,6 @@ design_ids = list("magrifle", "magpisol", "mag_magrifle", "mag_magrifle_nl", "mag_magpistol", "mag_magpistol_nl") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 -*/ //////Hyper-Burst Rifle////// diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm index 8786eb6dc9..7e6a8b3389 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm @@ -143,6 +143,7 @@ // TECHWEBS IMPLEMENTATION */ +/* /datum/techweb_node/magnetic_weapons id = "magnetic_weapons" display_name = "Magnetic Weapons" @@ -151,6 +152,7 @@ design_ids = list("magrifle_e", "magpistol_e", "mag_magrifle_e", "mag_magrifle_e_nl", "mag_magpistol_e", "mag_magpistol_e_nl") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 +*/ ///magrifle/// diff --git a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm index 0f7db73d6e..5fc75fa414 100644 --- a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm @@ -1,13 +1,6 @@ /obj/item/gun/energy/e_gun name = "blaster carbine" desc = "A high powered particle blaster carbine with varitable setting for stunning or lethal applications." - icon = 'modular_citadel/icons/obj/guns/OVERRIDE_energy.dmi' - lefthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_lefthand.dmi' - righthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_righthand.dmi' - ammo_x_offset = 2 - flight_x_offset = 17 - flight_y_offset = 11 - /*///////////////////////////////////////////////////////////////////////////////////////////// The Recolourable Energy Gun diff --git a/modular_citadel/code/modules/projectiles/guns/energy/laser.dm b/modular_citadel/code/modules/projectiles/guns/energy/laser.dm index c82a3e9ed9..76d7403d16 100644 --- a/modular_citadel/code/modules/projectiles/guns/energy/laser.dm +++ b/modular_citadel/code/modules/projectiles/guns/energy/laser.dm @@ -1,19 +1,11 @@ /obj/item/gun/energy/laser name = "blaster rifle" desc = "a high energy particle blaster, efficient and deadly." - icon = 'modular_citadel/icons/obj/guns/OVERRIDE_energy.dmi' - ammo_x_offset = 1 - shaded_charge = 1 - lefthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_lefthand.dmi' - righthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_righthand.dmi' /obj/item/gun/energy/laser/practice + icon = 'modular_citadel/icons/obj/guns/energy.dmi' icon_state = "laser-p" - -/obj/item/gun/energy/laser/bluetag - lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' - -/obj/item/gun/energy/laser/redtag - lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' + lefthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_lefthand.dmi' + righthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_righthand.dmi' + ammo_x_offset = 1 + shaded_charge = 1 diff --git a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm index fa0e64032c..aef47a648e 100644 --- a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm +++ b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm @@ -75,9 +75,9 @@ /obj/item/gun/energy/pumpaction/proc/pump(mob/M) //pumping proc. Checks if the gun is empty and plays a different sound if it is. var/obj/item/ammo_casing/energy/shot = ammo_type[select] if(cell.charge < shot.e_cost) - playsound(M, 'modular_citadel/sound/weapons/laserPumpEmpty.ogg', 100, 1) //Ends with three beeps made from highly processed knife honing noises + playsound(M, 'sound/weapons/laserPumpEmpty.ogg', 100, 1) //Ends with three beeps made from highly processed knife honing noises else - playsound(M, 'modular_citadel/sound/weapons/laserPump.ogg', 100, 1) //Ends with high pitched charging noise + playsound(M, 'sound/weapons/laserPump.ogg', 100, 1) //Ends with high pitched charging noise recharge_newshot() //try to charge a new shot update_icon() return 1 @@ -152,14 +152,14 @@ e_cost = 150 pellets = 4 variance = 30 - fire_sound = 'modular_citadel/sound/weapons/ParticleBlaster.ogg' + fire_sound = 'sound/weapons/ParticleBlaster.ogg' select_name = "disable" /obj/item/ammo_casing/energy/disabler/slug projectile_type = /obj/item/projectile/beam/disabler/slug select_name = "overdrive" e_cost = 200 - fire_sound = 'modular_citadel/sound/weapons/LaserSlugv3.ogg' + fire_sound = 'sound/weapons/LaserSlugv3.ogg' /obj/item/ammo_casing/energy/laser/pump projectile_type = /obj/item/projectile/beam/weak @@ -167,12 +167,12 @@ select_name = "kill" pellets = 3 variance = 15 - fire_sound = 'modular_citadel/sound/weapons/ParticleBlaster.ogg' + fire_sound = 'sound/weapons/ParticleBlaster.ogg' /obj/item/ammo_casing/energy/electrode/pump projectile_type = /obj/item/projectile/energy/electrode/pump select_name = "stun" - fire_sound = 'modular_citadel/sound/weapons/LaserSlugv3.ogg' + fire_sound = 'sound/weapons/LaserSlugv3.ogg' e_cost = 300 pellets = 3 variance = 20 diff --git a/modular_citadel/code/modules/projectiles/guns/toys.dm b/modular_citadel/code/modules/projectiles/guns/toys.dm index 18d174d677..731f990cfb 100644 --- a/modular_citadel/code/modules/projectiles/guns/toys.dm +++ b/modular_citadel/code/modules/projectiles/guns/toys.dm @@ -39,7 +39,7 @@ projectile_type = /obj/item/projectile/beam/lasertag/wavemotion select_name = "overdrive" e_cost = 300 - fire_sound = 'modular_citadel/sound/weapons/LaserSlugv3.ogg' + fire_sound = 'sound/weapons/LaserSlugv3.ogg' /obj/item/ammo_casing/energy/laser/dispersal projectile_type = /obj/item/projectile/beam/lasertag/dispersal @@ -47,7 +47,7 @@ pellets = 5 variance = 25 e_cost = 200 - fire_sound = 'modular_citadel/sound/weapons/ParticleBlaster.ogg' + fire_sound = 'sound/weapons/ParticleBlaster.ogg' ////////////////////////////////////////////////////////////////////////////////////////////////////////////// //TOY REVOLVER diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm index e5844f204a..613d8819fa 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm @@ -94,6 +94,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING if(!SM.mind) //Something went wrong, use alt mechanics return ..() SM.mind.enslave_mind_to_creator(M) + SM.mind.store_memory(M.mind.memory) //If they're a zombie, they can try to negate it with this. //I seriously wonder if anyone will ever use this function. diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm index 69f76e380b..ee90f985c6 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm @@ -30,17 +30,15 @@ inverse_chem_val = 0.35 inverse_chem = "BEsmaller" //At really impure vols, it just becomes 100% inverse can_synth = FALSE + var/message_spam = FALSE -/datum/reagent/fermi/breast_enlarger/on_mob_add(mob/living/carbon/M) +/datum/reagent/fermi/breast_enlarger/on_mob_metabolize(mob/living/M) . = ..() if(!ishuman(M)) //The monkey clause if(volume >= 15) //To prevent monkey breast farms var/turf/T = get_turf(M) var/obj/item/organ/genital/breasts/B = new /obj/item/organ/genital/breasts(T) - var/list/seen = viewers(8, T) - for(var/mob/S in seen) - to_chat(S, "A pair of breasts suddenly fly out of the [M]!") - //var/turf/T2 = pick(turf in view(5, M)) + M.visible_message("A pair of breasts suddenly fly out of the [M]!") var/T2 = get_random_station_turf() M.adjustBruteLoss(25) M.Knockdown(50) @@ -48,94 +46,82 @@ B.throw_at(T2, 8, 1) M.reagents.remove_reagent(id, volume) return - log_game("FERMICHEM: [M] ckey: [M.key] has ingested Sucubus milk") var/mob/living/carbon/human/H = M - H.genital_override = TRUE - var/obj/item/organ/genital/breasts/B = H.getorganslot("breasts") - if(!B) - H.emergent_genital_call() - return - if(!B.size == "huge") - var/sizeConv = list("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5) - B.prev_size = B.size - B.cached_size = sizeConv[B.size] + if(!H.getorganslot(ORGAN_SLOT_BREASTS) && H.emergent_genital_call()) + H.genital_override = TRUE /datum/reagent/fermi/breast_enlarger/on_mob_life(mob/living/carbon/M) //Increases breast size if(!ishuman(M))//Just in case return..() var/mob/living/carbon/human/H = M - var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts") + var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS) if(!B) //If they don't have breasts, give them breasts. //If they have Acute hepatic pharmacokinesis, then route processing though liver. - if(HAS_TRAIT(M, TRAIT_PHARMA)) - var/obj/item/organ/liver/L = M.getorganslot("liver") + if(HAS_TRAIT(H, TRAIT_PHARMA) || !H.canbearoused) + var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER) if(L) - L.swelling+= 0.05 - return..() + L.swelling += 0.05 else - M.adjustToxLoss(1) - return..() + H.adjustToxLoss(1) + return..() //otherwise proceed as normal - var/obj/item/organ/genital/breasts/nB = new - nB.Insert(M) - if(nB) - if(M.dna.species.use_skintones && M.dna.features["genitals_use_skintone"]) - nB.color = skintone2hex(H.skin_tone) - else if(M.dna.features["breasts_color"]) - nB.color = "#[M.dna.features["breasts_color"]]" - else - nB.color = skintone2hex(H.skin_tone) - nB.size = "flat" - nB.cached_size = 0 - nB.prev_size = 0 - to_chat(M, "Your chest feels warm, tingling with newfound sensitivity.") - M.reagents.remove_reagent(id, 5) - B = nB + B = new + if(H.dna.species.use_skintones && H.dna.features["genitals_use_skintone"]) + B.color = skintone2hex(H.skin_tone) + else if(M.dna.features["breasts_color"]) + B.color = "#[M.dna.features["breasts_color"]]" + else + B.color = skintone2hex(H.skin_tone) + B.size = "flat" + B.cached_size = 0 + B.prev_size = 0 + to_chat(H, "Your chest feels warm, tingling with newfound sensitivity.") + H.reagents.remove_reagent(id, 5) + B.Insert(H) + //If they have them, increase size. If size is comically big, limit movement and rip clothes. - B.cached_size = B.cached_size + 0.05 - if (B.cached_size >= 8.5 && B.cached_size < 9) - if(H.w_uniform || H.wear_suit) - var/target = M.get_bodypart(BODY_ZONE_CHEST) - to_chat(M, "Your breasts begin to strain against your clothes tightly!") - M.adjustOxyLoss(5, 0) - M.apply_damage(1, BRUTE, target) - B.update() - ..() + B.modify_size(0.05) + + if (ISINRANGE_EX(B.cached_size, 8.5, 9) && (H.w_uniform || H.wear_suit)) + var/target = H.get_bodypart(BODY_ZONE_CHEST) + if(!message_spam) + to_chat(H, "Your breasts begin to strain against your clothes tightly!") + message_spam = TRUE + H.adjustOxyLoss(5, 0) + H.apply_damage(1, BRUTE, target) + return ..() /datum/reagent/fermi/breast_enlarger/overdose_process(mob/living/carbon/M) //Turns you into a female if male and ODing, doesn't touch nonbinary and object genders. //Acute hepatic pharmacokinesis. - if(HAS_TRAIT(M, TRAIT_PHARMA)) - var/obj/item/organ/liver/L = M.getorganslot("liver") + if(HAS_TRAIT(M, TRAIT_PHARMA) || !M.canbearoused) + var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) L.swelling+= 0.05 return ..() - var/obj/item/organ/genital/penis/P = M.getorganslot("penis") - var/obj/item/organ/genital/testicles/T = M.getorganslot("testicles") - var/obj/item/organ/genital/vagina/V = M.getorganslot("vagina") - var/obj/item/organ/genital/womb/W = M.getorganslot("womb") + var/obj/item/organ/genital/penis/P = M.getorganslot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/testicles/T = M.getorganslot(ORGAN_SLOT_TESTICLES) + var/obj/item/organ/genital/vagina/V = M.getorganslot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/womb/W = M.getorganslot(ORGAN_SLOT_WOMB) if(M.gender == MALE) M.gender = FEMALE M.visible_message("[M] suddenly looks more feminine!", "You suddenly feel more feminine!") if(P) - P.cached_length = P.cached_length - 0.05 - P.update() + P.modify_size(-0.05) if(T) - T.Remove(M) + qdel(T) if(!V) - var/obj/item/organ/genital/vagina/nV = new - nV.Insert(M) - V = nV + V = new + V.Insert(M) if(!W) - var/obj/item/organ/genital/womb/nW = new - nW.Insert(M) - W = nW - ..() + W = new + W.Insert(M) + return ..() /datum/reagent/fermi/BEsmaller name = "Modesty milk" @@ -147,19 +133,18 @@ can_synth = FALSE /datum/reagent/fermi/BEsmaller/on_mob_life(mob/living/carbon/M) - var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts") + var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS) if(!B) //Acute hepatic pharmacokinesis. - if(HAS_TRAIT(M, TRAIT_PHARMA)) - var/obj/item/organ/liver/L = M.getorganslot("liver") + if(HAS_TRAIT(M, TRAIT_PHARMA) || !M.canbearoused) + var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) L.swelling-= 0.05 return ..() //otherwise proceed as normal return..() - B.cached_size = B.cached_size - 0.05 - B.update() - ..() + B.modify_size(-0.05) + return ..() /datum/reagent/fermi/BEsmaller_hypo name = "Rectify milk" //Rectify @@ -171,31 +156,28 @@ var/sizeConv = list("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5) can_synth = TRUE -/datum/reagent/fermi/BEsmaller_hypo/on_mob_add(mob/living/carbon/M) +/datum/reagent/fermi/BEsmaller_hypo/on_mob_metabolize(mob/living/M) . = ..() - if(!M.getorganslot("vagina")) - if(M.dna.features["has_vag"]) - var/obj/item/organ/genital/vagina/nV = new - nV.Insert(M) - if(!M.getorganslot("womb")) - if(M.dna.features["has_womb"]) - var/obj/item/organ/genital/womb/nW = new - nW.Insert(M) + if(!ishuman(M)) + return + var/mob/living/carbon/human/H = M + if(!H.getorganslot(ORGAN_SLOT_VAGINA) && H.dna.features["has_vag"]) + H.give_genital(/obj/item/organ/genital/vagina) + if(!H.getorganslot(ORGAN_SLOT_WOMB) && H.dna.features["has_womb"]) + H.give_genital(/obj/item/organ/genital/womb) /datum/reagent/fermi/BEsmaller_hypo/on_mob_life(mob/living/carbon/M) - var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts") + var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS) if(!B) return..() - if(!M.dna.features["has_breasts"])//Fast fix for those who don't want it. - B.cached_size = B.cached_size - 0.1 - B.update() - else if(B.cached_size > (sizeConv[M.dna.features["breasts_size"]]+0.1)) - B.cached_size = B.cached_size - 0.05 - B.update() - else if(B.cached_size < (sizeConv[M.dna.features["breasts_size"]])+0.1) - B.cached_size = B.cached_size + 0.05 - B.update() - ..() + var/optimal_size = B.breast_values[M.dna.features["breasts_size"]] + if(!optimal_size)//Fast fix for those who don't want it. + B.modify_size(-0.1) + else if(B.cached_size > optimal_size) + B.modify_size(-0.05, optimal_size) + else if(B.cached_size < optimal_size) + B.modify_size(0.05, 0, optimal_size) + return ..() //////////////////////////////////////////////////////////////////////////////////////////////////// // PENIS ENLARGE @@ -215,16 +197,15 @@ inverse_chem_val = 0.35 inverse_chem = "PEsmaller" //At really impure vols, it just becomes 100% inverse and shrinks instead. can_synth = FALSE + var/message_spam = FALSE -/datum/reagent/fermi/penis_enlarger/on_mob_add(mob/living/carbon/M) +/datum/reagent/fermi/penis_enlarger/on_mob_metabolize(mob/living/M) . = ..() if(!ishuman(M)) //Just monkeying around. if(volume >= 15) //to prevent monkey penis farms var/turf/T = get_turf(M) var/obj/item/organ/genital/penis/P = new /obj/item/organ/genital/penis(T) - var/list/seen = viewers(8, T) - for(var/mob/S in seen) - to_chat(S, "A penis suddenly flies out of the [M]!") + M.visible_message("A penis suddenly flies out of the [M]!") var/T2 = get_random_station_turf() M.adjustBruteLoss(25) M.Knockdown(50) @@ -233,80 +214,71 @@ M.reagents.remove_reagent(id, volume) return var/mob/living/carbon/human/H = M - H.genital_override = TRUE - var/obj/item/organ/genital/penis/P = M.getorganslot("penis") - if(!P) - H.emergent_genital_call() - return - P.prev_length = P.length - P.cached_length = P.length + if(!H.getorganslot(ORGAN_SLOT_PENIS) && H.emergent_genital_call()) + H.genital_override = TRUE /datum/reagent/fermi/penis_enlarger/on_mob_life(mob/living/carbon/M) //Increases penis size, 5u = +1 inch. if(!ishuman(M)) - return + return ..() var/mob/living/carbon/human/H = M - var/obj/item/organ/genital/penis/P = M.getorganslot("penis") + var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) if(!P)//They do have a preponderance for escapism, or so I've heard. //If they have Acute hepatic pharmacokinesis, then route processing though liver. - if(HAS_TRAIT(M, TRAIT_PHARMA)) - var/obj/item/organ/liver/L = M.getorganslot("liver") + if(HAS_TRAIT(H, TRAIT_PHARMA) || !H.canbearoused) + var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER) if(L) - L.swelling+= 0.05 - return..() + L.swelling += 0.05 else - M.adjustToxLoss(1) - return..() + H.adjustToxLoss(1) + return ..() //otherwise proceed as normal - var/obj/item/organ/genital/penis/nP = new - nP.Insert(M) - if(nP) - nP.length = 1 - to_chat(M, "Your groin feels warm, as you feel a newly forming bulge down below.") - nP.cached_length = 1 - nP.prev_length = 1 - M.reagents.remove_reagent(id, 5) - P = nP + P = new + P.length = 1 + to_chat(H, "Your groin feels warm, as you feel a newly forming bulge down below.") + P.prev_length = 1 + H.reagents.remove_reagent(id, 5) + P.Insert(H) - P.cached_length = P.cached_length + 0.1 - if (P.cached_length >= 20.5 && P.cached_length < 21) - if(H.w_uniform || H.wear_suit) - var/target = M.get_bodypart(BODY_ZONE_CHEST) - to_chat(M, "Your cock begin to strain against your clothes tightly!") - M.apply_damage(2.5, BRUTE, target) + P.modify_size(0.1) + if (ISINRANGE_EX(P.length, 20.5, 21) && (H.w_uniform || H.wear_suit)) + var/target = H.get_bodypart(BODY_ZONE_CHEST) + if(!message_spam) + to_chat(H, "Your cock begin to strain against your clothes tightly!") + message_spam = TRUE + H.apply_damage(2.5, BRUTE, target) - P.update() - ..() + return ..() -/datum/reagent/fermi/penis_enlarger/overdose_process(mob/living/carbon/M) //Turns you into a male if female and ODing, doesn't touch nonbinary and object genders. +/datum/reagent/fermi/penis_enlarger/overdose_process(mob/living/carbon/human/M) //Turns you into a male if female and ODing, doesn't touch nonbinary and object genders. + if(!istype(M)) + return ..() //Acute hepatic pharmacokinesis. - if(HAS_TRAIT(M, TRAIT_PHARMA)) - var/obj/item/organ/liver/L = M.getorganslot("liver") + if(HAS_TRAIT(M, TRAIT_PHARMA) || !M.canbearoused) + var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) L.swelling+= 0.05 return..() - var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts") - var/obj/item/organ/genital/testicles/T = M.getorganslot("testicles") - var/obj/item/organ/genital/vagina/V = M.getorganslot("vagina") - var/obj/item/organ/genital/womb/W = M.getorganslot("womb") + var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS) + var/obj/item/organ/genital/testicles/T = M.getorganslot(ORGAN_SLOT_TESTICLES) + var/obj/item/organ/genital/vagina/V = M.getorganslot(ORGAN_SLOT_VAGINA) + var/obj/item/organ/genital/womb/W = M.getorganslot(ORGAN_SLOT_WOMB) if(M.gender == FEMALE) M.gender = MALE M.visible_message("[M] suddenly looks more masculine!", "You suddenly feel more masculine!") if(B) - B.cached_size = B.cached_size - 0.05 - B.update() - if(V) - V.Remove(M) + B.modify_size(-0.05) + if(M.getorganslot(ORGAN_SLOT_VAGINA)) + qdel(V) if(W) - W.Remove(M) + qdel(W) if(!T) - var/obj/item/organ/genital/testicles/nT = new - nT.Insert(M) - T = nT - ..() + T = new + T.Insert(M) + return ..() /datum/reagent/fermi/PEsmaller // Due to cozmo's request...! name = "Chastity draft" @@ -318,19 +290,18 @@ can_synth = FALSE /datum/reagent/fermi/PEsmaller/on_mob_life(mob/living/carbon/M) + if(!ishuman(M)) + return ..() var/mob/living/carbon/human/H = M - var/obj/item/organ/genital/penis/P = H.getorganslot("penis") + var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) if(!P) //Acute hepatic pharmacokinesis. if(HAS_TRAIT(M, TRAIT_PHARMA)) - var/obj/item/organ/liver/L = M.getorganslot("liver") + var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) L.swelling-= 0.05 - return..() - - //otherwise proceed as normal return..() - P.cached_length = P.cached_length - 0.1 - P.update() + + P.modify_size(-0.1) ..() /datum/reagent/fermi/PEsmaller_hypo @@ -342,24 +313,25 @@ metabolization_rate = 0.5 can_synth = TRUE -/datum/reagent/fermi/PEsmaller_hypo/on_mob_add(mob/living/carbon/M) +/datum/reagent/fermi/PEsmaller_hypo/on_mob_metabolize(mob/living/M) . = ..() - if(!M.getorganslot("testicles")) - if(M.dna.features["has_balls"]) - var/obj/item/organ/genital/testicles/nT = new - nT.Insert(M) + if(!ishuman(M)) + return + var/mob/living/carbon/human/H = M + if(!H.getorganslot(ORGAN_SLOT_PENIS) && H.dna.features["has_cock"]) + H.give_genital(/obj/item/organ/genital/penis) + if(!H.getorganslot(ORGAN_SLOT_TESTICLES) && H.dna.features["has_balls"]) + H.give_genital(/obj/item/organ/genital/testicles) /datum/reagent/fermi/PEsmaller_hypo/on_mob_life(mob/living/carbon/M) - var/obj/item/organ/genital/penis/P = M.getorganslot("penis") + var/obj/item/organ/genital/penis/P = M.getorganslot(ORGAN_SLOT_PENIS) if(!P) return ..() - if(!M.dna.features["has_cock"])//Fast fix for those who don't want it. - P.cached_length = P.cached_length - 0.2 - P.update() - else if(P.cached_length > (M.dna.features["cock_length"]+0.1)) - P.cached_length = P.cached_length - 0.1 - P.update() - else if(P.cached_length < (M.dna.features["cock_length"]+0.1)) - P.cached_length = P.cached_length + 0.1 - P.update() - ..() + var/optimal_size = M.dna.features["cock_length"] + if(!optimal_size)//Fast fix for those who don't want it. + P.modify_size(-0.2) + else if(P.length > optimal_size) + P.modify_size(-0.1, optimal_size) + else if(P.length < optimal_size) + P.modify_size(0.1, 0, optimal_size) + return ..() diff --git a/modular_citadel/code/modules/vehicles/secway.dm b/modular_citadel/code/modules/vehicles/secway.dm deleted file mode 100644 index 9320da6dc8..0000000000 --- a/modular_citadel/code/modules/vehicles/secway.dm +++ /dev/null @@ -1,54 +0,0 @@ -/obj/vehicle/ridden/secway - var/chargemax = 150 - var/chargerate = 0.35 - var/charge = 150 - var/chargespeed = 1 - var/normalspeed = 2 - var/last_tick = 0 - var/list/progressbars_by_rider = list() - -/obj/vehicle/ridden/secway/Initialize() - . = ..() - START_PROCESSING(SSfastprocess, src) - -/obj/vehicle/ridden/secway/process() - var/diff = world.time - last_tick - var/regen = chargerate * diff - charge = CLAMP(charge + regen, 0, chargemax) - last_tick = world.time - -/obj/vehicle/ridden/secway/relaymove(mob/user, direction) - var/new_speed = normalspeed - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(H.sprinting && charge) - charge-- - new_speed = chargespeed - var/datum/component/riding/D = GetComponent(/datum/component/riding) - D.vehicle_move_delay = new_speed - for(var/i in progressbars_by_rider) - var/datum/progressbar/B = progressbars_by_rider[i] - B.update(charge) - return ..() - -/obj/vehicle/ridden/secway/buckle_mob(mob/living/M, force, check_loc) - . = ..(M, force, check_loc) - if(.) - if(progressbars_by_rider[M]) - qdel(progressbars_by_rider[M]) - var/datum/progressbar/D = new(M, chargemax, src) - D.update(charge) - progressbars_by_rider[M] = D - -/obj/vehicle/ridden/secway/unbuckle_mob(mob/living/M, force) - . = ..(M, force) - if(.) - qdel(progressbars_by_rider[M]) - progressbars_by_rider -= M - -/obj/vehicle/ridden/secway/Destroy() - for(var/i in progressbars_by_rider) - qdel(progressbars_by_rider[i]) - progressbars_by_rider.Cut() - STOP_PROCESSING(SSfastprocess, src) - return ..() \ No newline at end of file diff --git a/modular_citadel/icons/aicards.dmi b/modular_citadel/icons/aicards.dmi deleted file mode 100644 index 363a828fb7..0000000000 Binary files a/modular_citadel/icons/aicards.dmi and /dev/null differ diff --git a/modular_citadel/icons/mob/BananaSpider.dmi b/modular_citadel/icons/mob/BananaSpider.dmi deleted file mode 100644 index da65ef43fa..0000000000 Binary files a/modular_citadel/icons/mob/BananaSpider.dmi and /dev/null differ diff --git a/modular_citadel/icons/mob/kiwi.dmi b/modular_citadel/icons/mob/kiwi.dmi deleted file mode 100644 index 18777f65cf..0000000000 Binary files a/modular_citadel/icons/mob/kiwi.dmi and /dev/null differ diff --git a/modular_citadel/icons/mob/mam_markings.dmi b/modular_citadel/icons/mob/mam_markings.dmi index d61baa4a51..af916d2fd0 100644 Binary files a/modular_citadel/icons/mob/mam_markings.dmi and b/modular_citadel/icons/mob/mam_markings.dmi differ diff --git a/modular_citadel/icons/mob/markings_notmammals.dmi b/modular_citadel/icons/mob/markings_notmammals.dmi index d9577698d1..79c97968ed 100644 Binary files a/modular_citadel/icons/mob/markings_notmammals.dmi and b/modular_citadel/icons/mob/markings_notmammals.dmi differ diff --git a/modular_citadel/icons/mob/mutant_bodyparts.dmi b/modular_citadel/icons/mob/mutant_bodyparts.dmi index 8c0856429b..a66895f864 100644 Binary files a/modular_citadel/icons/mob/mutant_bodyparts.dmi and b/modular_citadel/icons/mob/mutant_bodyparts.dmi differ diff --git a/modular_citadel/icons/mob/uniform_digi.dmi b/modular_citadel/icons/mob/uniform_digi.dmi index 513ebce439..3f1335153e 100644 Binary files a/modular_citadel/icons/mob/uniform_digi.dmi and b/modular_citadel/icons/mob/uniform_digi.dmi differ diff --git a/modular_citadel/icons/obj/aicards.dmi b/modular_citadel/icons/obj/aicards.dmi deleted file mode 100644 index f956a6e88d..0000000000 Binary files a/modular_citadel/icons/obj/aicards.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/genitals/hud.dmi b/modular_citadel/icons/obj/genitals/hud.dmi index bf2adcb1fc..f8c8643fe0 100644 Binary files a/modular_citadel/icons/obj/genitals/hud.dmi and b/modular_citadel/icons/obj/genitals/hud.dmi differ diff --git a/modular_citadel/icons/obj/genitals/testicles_onmob.dmi b/modular_citadel/icons/obj/genitals/testicles_onmob.dmi index 33659cf13c..65eb24268f 100644 Binary files a/modular_citadel/icons/obj/genitals/testicles_onmob.dmi and b/modular_citadel/icons/obj/genitals/testicles_onmob.dmi differ diff --git a/modular_citadel/icons/obj/guns/OVERRIDE_energy.dmi b/modular_citadel/icons/obj/guns/OVERRIDE_energy.dmi deleted file mode 100644 index 9a902e0dff..0000000000 Binary files a/modular_citadel/icons/obj/guns/OVERRIDE_energy.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/guns/energy.dmi b/modular_citadel/icons/obj/guns/energy.dmi new file mode 100644 index 0000000000..482ec04d94 Binary files /dev/null and b/modular_citadel/icons/obj/guns/energy.dmi differ diff --git a/sound/AI/aimalf.ogg b/sound/announcer/classic/aimalf.ogg similarity index 100% rename from sound/AI/aimalf.ogg rename to sound/announcer/classic/aimalf.ogg diff --git a/sound/AI/aliens.ogg b/sound/announcer/classic/aliens.ogg similarity index 100% rename from sound/AI/aliens.ogg rename to sound/announcer/classic/aliens.ogg diff --git a/sound/AI/animes.ogg b/sound/announcer/classic/animes.ogg similarity index 100% rename from sound/AI/animes.ogg rename to sound/announcer/classic/animes.ogg diff --git a/sound/AI/attention.ogg b/sound/announcer/classic/attention.ogg similarity index 100% rename from sound/AI/attention.ogg rename to sound/announcer/classic/attention.ogg diff --git a/sound/AI/commandreport.ogg b/sound/announcer/classic/commandreport.ogg similarity index 100% rename from sound/AI/commandreport.ogg rename to sound/announcer/classic/commandreport.ogg diff --git a/sound/AI/granomalies.ogg b/sound/announcer/classic/granomalies.ogg similarity index 100% rename from sound/AI/granomalies.ogg rename to sound/announcer/classic/granomalies.ogg diff --git a/sound/AI/intercept.ogg b/sound/announcer/classic/intercept.ogg similarity index 100% rename from sound/AI/intercept.ogg rename to sound/announcer/classic/intercept.ogg diff --git a/sound/AI/ionstorm.ogg b/sound/announcer/classic/ionstorm.ogg similarity index 100% rename from sound/AI/ionstorm.ogg rename to sound/announcer/classic/ionstorm.ogg diff --git a/sound/AI/meteors.ogg b/sound/announcer/classic/meteors.ogg similarity index 100% rename from sound/AI/meteors.ogg rename to sound/announcer/classic/meteors.ogg diff --git a/sound/AI/newAI.ogg b/sound/announcer/classic/newAI.ogg similarity index 100% rename from sound/AI/newAI.ogg rename to sound/announcer/classic/newAI.ogg diff --git a/sound/AI/outbreak5.ogg b/sound/announcer/classic/outbreak5.ogg similarity index 100% rename from sound/AI/outbreak5.ogg rename to sound/announcer/classic/outbreak5.ogg diff --git a/sound/AI/outbreak7.ogg b/sound/announcer/classic/outbreak7.ogg similarity index 100% rename from sound/AI/outbreak7.ogg rename to sound/announcer/classic/outbreak7.ogg diff --git a/sound/AI/poweroff.ogg b/sound/announcer/classic/poweroff.ogg similarity index 100% rename from sound/AI/poweroff.ogg rename to sound/announcer/classic/poweroff.ogg diff --git a/sound/AI/poweron.ogg b/sound/announcer/classic/poweron.ogg similarity index 100% rename from sound/AI/poweron.ogg rename to sound/announcer/classic/poweron.ogg diff --git a/sound/AI/radiation.ogg b/sound/announcer/classic/radiation.ogg similarity index 100% rename from sound/AI/radiation.ogg rename to sound/announcer/classic/radiation.ogg diff --git a/sound/AI/shuttlecalled.ogg b/sound/announcer/classic/shuttlecalled.ogg similarity index 100% rename from sound/AI/shuttlecalled.ogg rename to sound/announcer/classic/shuttlecalled.ogg diff --git a/sound/AI/shuttledock.ogg b/sound/announcer/classic/shuttledock.ogg similarity index 100% rename from sound/AI/shuttledock.ogg rename to sound/announcer/classic/shuttledock.ogg diff --git a/sound/AI/shuttlerecalled.ogg b/sound/announcer/classic/shuttlerecalled.ogg similarity index 100% rename from sound/AI/shuttlerecalled.ogg rename to sound/announcer/classic/shuttlerecalled.ogg diff --git a/sound/AI/spanomalies.ogg b/sound/announcer/classic/spanomalies.ogg similarity index 100% rename from sound/AI/spanomalies.ogg rename to sound/announcer/classic/spanomalies.ogg diff --git a/sound/AI/welcome.ogg b/sound/announcer/classic/welcome.ogg similarity index 100% rename from sound/AI/welcome.ogg rename to sound/announcer/classic/welcome.ogg diff --git a/sound/announcer/medibot/aliens.ogg b/sound/announcer/medibot/aliens.ogg new file mode 100644 index 0000000000..57fa70c3ca Binary files /dev/null and b/sound/announcer/medibot/aliens.ogg differ diff --git a/sound/announcer/medibot/animes.ogg b/sound/announcer/medibot/animes.ogg new file mode 100644 index 0000000000..7615a744a6 Binary files /dev/null and b/sound/announcer/medibot/animes.ogg differ diff --git a/sound/announcer/medibot/attention.ogg b/sound/announcer/medibot/attention.ogg new file mode 100644 index 0000000000..d4d5a27085 Binary files /dev/null and b/sound/announcer/medibot/attention.ogg differ diff --git a/sound/announcer/medibot/commandreport.ogg b/sound/announcer/medibot/commandreport.ogg new file mode 100644 index 0000000000..4e5c2e1d1f Binary files /dev/null and b/sound/announcer/medibot/commandreport.ogg differ diff --git a/sound/announcer/medibot/granomalies.ogg b/sound/announcer/medibot/granomalies.ogg new file mode 100644 index 0000000000..2713a3cb19 Binary files /dev/null and b/sound/announcer/medibot/granomalies.ogg differ diff --git a/sound/announcer/medibot/intercept.ogg b/sound/announcer/medibot/intercept.ogg new file mode 100644 index 0000000000..c59d0455c1 Binary files /dev/null and b/sound/announcer/medibot/intercept.ogg differ diff --git a/sound/announcer/medibot/ionstorm.ogg b/sound/announcer/medibot/ionstorm.ogg new file mode 100644 index 0000000000..15aeac9f7f Binary files /dev/null and b/sound/announcer/medibot/ionstorm.ogg differ diff --git a/sound/announcer/medibot/meteors.ogg b/sound/announcer/medibot/meteors.ogg new file mode 100644 index 0000000000..91208cae12 Binary files /dev/null and b/sound/announcer/medibot/meteors.ogg differ diff --git a/sound/announcer/medibot/newAI.ogg b/sound/announcer/medibot/newAI.ogg new file mode 100644 index 0000000000..c40b099020 Binary files /dev/null and b/sound/announcer/medibot/newAI.ogg differ diff --git a/sound/announcer/medibot/outbreak5.ogg b/sound/announcer/medibot/outbreak5.ogg new file mode 100644 index 0000000000..7118af4449 Binary files /dev/null and b/sound/announcer/medibot/outbreak5.ogg differ diff --git a/sound/announcer/medibot/outbreak7.ogg b/sound/announcer/medibot/outbreak7.ogg new file mode 100644 index 0000000000..1fc542534d Binary files /dev/null and b/sound/announcer/medibot/outbreak7.ogg differ diff --git a/sound/announcer/medibot/poweroff.ogg b/sound/announcer/medibot/poweroff.ogg new file mode 100644 index 0000000000..875df35002 Binary files /dev/null and b/sound/announcer/medibot/poweroff.ogg differ diff --git a/sound/announcer/medibot/poweron.ogg b/sound/announcer/medibot/poweron.ogg new file mode 100644 index 0000000000..4b1605b1c7 Binary files /dev/null and b/sound/announcer/medibot/poweron.ogg differ diff --git a/sound/announcer/medibot/radiation.ogg b/sound/announcer/medibot/radiation.ogg new file mode 100644 index 0000000000..5c48830b5f Binary files /dev/null and b/sound/announcer/medibot/radiation.ogg differ diff --git a/sound/announcer/medibot/shuttlecalled.ogg b/sound/announcer/medibot/shuttlecalled.ogg new file mode 100644 index 0000000000..a775567abe Binary files /dev/null and b/sound/announcer/medibot/shuttlecalled.ogg differ diff --git a/sound/announcer/medibot/shuttledocked.ogg b/sound/announcer/medibot/shuttledocked.ogg new file mode 100644 index 0000000000..933928db06 Binary files /dev/null and b/sound/announcer/medibot/shuttledocked.ogg differ diff --git a/sound/announcer/medibot/shuttlerecalled.ogg b/sound/announcer/medibot/shuttlerecalled.ogg new file mode 100644 index 0000000000..53b622576d Binary files /dev/null and b/sound/announcer/medibot/shuttlerecalled.ogg differ diff --git a/sound/announcer/medibot/spanomalies.ogg b/sound/announcer/medibot/spanomalies.ogg new file mode 100644 index 0000000000..d710999e1e Binary files /dev/null and b/sound/announcer/medibot/spanomalies.ogg differ diff --git a/sound/announcer/medibot/welcome.ogg b/sound/announcer/medibot/welcome.ogg new file mode 100644 index 0000000000..f9a698fd08 Binary files /dev/null and b/sound/announcer/medibot/welcome.ogg differ diff --git a/sound/AI/harmalarm.ogg b/sound/effects/harmalarm.ogg similarity index 100% rename from sound/AI/harmalarm.ogg rename to sound/effects/harmalarm.ogg diff --git a/sound/effects/k9_jaw_strong.ogg b/sound/effects/k9_jaw_strong.ogg new file mode 100644 index 0000000000..9f60050b95 Binary files /dev/null and b/sound/effects/k9_jaw_strong.ogg differ diff --git a/sound/effects/k9_jaw_weak.ogg b/sound/effects/k9_jaw_weak.ogg new file mode 100644 index 0000000000..3ef2272f01 Binary files /dev/null and b/sound/effects/k9_jaw_weak.ogg differ diff --git a/modular_citadel/sound/misc/adrenalinject.ogg b/sound/misc/adrenalinject.ogg similarity index 100% rename from modular_citadel/sound/misc/adrenalinject.ogg rename to sound/misc/adrenalinject.ogg diff --git a/modular_citadel/sound/misc/souldeath.ogg b/sound/misc/souldeath.ogg similarity index 100% rename from modular_citadel/sound/misc/souldeath.ogg rename to sound/misc/souldeath.ogg diff --git a/modular_citadel/sound/misc/sprintactivate.ogg b/sound/misc/sprintactivate.ogg similarity index 100% rename from modular_citadel/sound/misc/sprintactivate.ogg rename to sound/misc/sprintactivate.ogg diff --git a/modular_citadel/sound/misc/sprintdeactivate.ogg b/sound/misc/sprintdeactivate.ogg similarity index 100% rename from modular_citadel/sound/misc/sprintdeactivate.ogg rename to sound/misc/sprintdeactivate.ogg diff --git a/modular_citadel/sound/misc/ui_toggle.ogg b/sound/misc/ui_toggle.ogg similarity index 100% rename from modular_citadel/sound/misc/ui_toggle.ogg rename to sound/misc/ui_toggle.ogg diff --git a/modular_citadel/sound/misc/ui_toggleoff.ogg b/sound/misc/ui_toggleoff.ogg similarity index 100% rename from modular_citadel/sound/misc/ui_toggleoff.ogg rename to sound/misc/ui_toggleoff.ogg diff --git a/modular_citadel/sound/misc/cheekibreeki.ogg b/sound/voice/human/cheekibreeki.ogg similarity index 100% rename from modular_citadel/sound/misc/cheekibreeki.ogg rename to sound/voice/human/cheekibreeki.ogg diff --git a/modular_citadel/sound/misc/cyka1.ogg b/sound/voice/human/cyka1.ogg similarity index 100% rename from modular_citadel/sound/misc/cyka1.ogg rename to sound/voice/human/cyka1.ogg diff --git a/modular_citadel/sound/misc/manup.ogg b/sound/voice/manup.ogg similarity index 100% rename from modular_citadel/sound/misc/manup.ogg rename to sound/voice/manup.ogg diff --git a/modular_citadel/sound/weapons/LaserSlugv3.ogg b/sound/weapons/LaserSlugv3.ogg similarity index 100% rename from modular_citadel/sound/weapons/LaserSlugv3.ogg rename to sound/weapons/LaserSlugv3.ogg diff --git a/modular_citadel/sound/weapons/ParticleBlaster.ogg b/sound/weapons/ParticleBlaster.ogg similarity index 100% rename from modular_citadel/sound/weapons/ParticleBlaster.ogg rename to sound/weapons/ParticleBlaster.ogg diff --git a/modular_citadel/sound/weapons/laserPump.ogg b/sound/weapons/laserPump.ogg similarity index 100% rename from modular_citadel/sound/weapons/laserPump.ogg rename to sound/weapons/laserPump.ogg diff --git a/modular_citadel/sound/weapons/laserPumpEmpty.ogg b/sound/weapons/laserPumpEmpty.ogg similarity index 100% rename from modular_citadel/sound/weapons/laserPumpEmpty.ogg rename to sound/weapons/laserPumpEmpty.ogg diff --git a/tgstation.dme b/tgstation.dme index 36d7942910..b7e1bdeaa5 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -16,6 +16,7 @@ #include "_maps\_basemap.dm" #include "code\_compile_options.dm" #include "code\world.dm" +#include "code\__DEFINES\__513_compatibility.dm" #include "code\__DEFINES\_globals.dm" #include "code\__DEFINES\_protect.dm" #include "code\__DEFINES\_tick.dm" @@ -44,6 +45,7 @@ #include "code\__DEFINES\donator_groupings.dm" #include "code\__DEFINES\events.dm" #include "code\__DEFINES\exports.dm" +#include "code\__DEFINES\fantasy_affixes.dm" #include "code\__DEFINES\flags.dm" #include "code\__DEFINES\food.dm" #include "code\__DEFINES\footsteps.dm" @@ -343,6 +345,7 @@ #include "code\datums\components\_component.dm" #include "code\datums\components\anti_magic.dm" #include "code\datums\components\armor_plate.dm" +#include "code\datums\components\bane.dm" #include "code\datums\components\bouncy.dm" #include "code\datums\components\butchering.dm" #include "code\datums\components\caltrop.dm" @@ -356,9 +359,12 @@ #include "code\datums\components\empprotection.dm" #include "code\datums\components\footstep.dm" #include "code\datums\components\forced_gravity.dm" +#include "code\datums\components\igniter.dm" #include "code\datums\components\infective.dm" #include "code\datums\components\jousting.dm" +#include "code\datums\components\knockback.dm" #include "code\datums\components\knockoff.dm" +#include "code\datums\components\lifesteal.dm" #include "code\datums\components\lockon_aiming.dm" #include "code\datums\components\magnetic_catch.dm" #include "code\datums\components\material_container.dm" @@ -374,16 +380,23 @@ #include "code\datums\components\remote_materials.dm" #include "code\datums\components\riding.dm" #include "code\datums\components\rotation.dm" +#include "code\datums\components\shrapnel.dm" #include "code\datums\components\slippery.dm" #include "code\datums\components\spooky.dm" #include "code\datums\components\squeak.dm" #include "code\datums\components\stationloving.dm" +#include "code\datums\components\summoning.dm" #include "code\datums\components\swarming.dm" +#include "code\datums\components\tactical.dm" #include "code\datums\components\thermite.dm" #include "code\datums\components\uplink.dm" #include "code\datums\components\virtual_reality.dm" #include "code\datums\components\wearertargeting.dm" #include "code\datums\components\wet_floor.dm" +#include "code\datums\components\fantasy\_fantasy.dm" +#include "code\datums\components\fantasy\affix.dm" +#include "code\datums\components\fantasy\prefixes.dm" +#include "code\datums\components\fantasy\suffixes.dm" #include "code\datums\components\storage\storage.dm" #include "code\datums\components\storage\concrete\_concrete.dm" #include "code\datums\components\storage\concrete\bag_of_holding.dm" @@ -643,7 +656,6 @@ #include "code\game\machinery\computer\communications.dm" #include "code\game\machinery\computer\crew.dm" #include "code\game\machinery\computer\dna_console.dm" -#include "code\game\machinery\computer\gulag_teleporter.dm" #include "code\game\machinery\computer\launchpad_control.dm" #include "code\game\machinery\computer\law.dm" #include "code\game\machinery\computer\medical.dm" @@ -1191,6 +1203,7 @@ #include "code\modules\antagonists\blob\blob\blobs\node.dm" #include "code\modules\antagonists\blob\blob\blobs\resource.dm" #include "code\modules\antagonists\blob\blob\blobs\shield.dm" +#include "code\modules\antagonists\blood_contract\blood_contract.dm" #include "code\modules\antagonists\brainwashing\brainwashing.dm" #include "code\modules\antagonists\brother\brother.dm" #include "code\modules\antagonists\changeling\cellular_emporium.dm" @@ -1301,6 +1314,7 @@ #include "code\modules\antagonists\greentext\greentext.dm" #include "code\modules\antagonists\greybois\greybois.dm" #include "code\modules\antagonists\highlander\highlander.dm" +#include "code\modules\antagonists\magic_servant\magic_servant.dm" #include "code\modules\antagonists\monkey\monkey.dm" #include "code\modules\antagonists\morph\morph.dm" #include "code\modules\antagonists\morph\morph_antag.dm" @@ -1322,6 +1336,7 @@ #include "code\modules\antagonists\revenant\revenant_blight.dm" #include "code\modules\antagonists\revenant\revenant_spawn_event.dm" #include "code\modules\antagonists\revolution\revolution.dm" +#include "code\modules\antagonists\santa\santa.dm" #include "code\modules\antagonists\separatist\separatist.dm" #include "code\modules\antagonists\slaughter\slaughter.dm" #include "code\modules\antagonists\slaughter\slaughter_antag.dm" @@ -2219,6 +2234,7 @@ #include "code\modules\mob\living\simple_animal\guardian\types\standard.dm" #include "code\modules\mob\living\simple_animal\guardian\types\support.dm" #include "code\modules\mob\living\simple_animal\hostile\alien.dm" +#include "code\modules\mob\living\simple_animal\hostile\banana_spider.dm" #include "code\modules\mob\living\simple_animal\hostile\bear.dm" #include "code\modules\mob\living\simple_animal\hostile\bees.dm" #include "code\modules\mob\living\simple_animal\hostile\carp.dm" @@ -2772,6 +2788,7 @@ #include "code\modules\spells\spell_types\spacetime_distortion.dm" #include "code\modules\spells\spell_types\summonitem.dm" #include "code\modules\spells\spell_types\taeclowndo.dm" +#include "code\modules\spells\spell_types\telepathy.dm" #include "code\modules\spells\spell_types\the_traps.dm" #include "code\modules\spells\spell_types\touch_attacks.dm" #include "code\modules\spells\spell_types\trigger.dm" @@ -2957,7 +2974,6 @@ #include "modular_citadel\code\datums\status_effects\chems.dm" #include "modular_citadel\code\datums\status_effects\debuffs.dm" #include "modular_citadel\code\datums\traits\negative.dm" -#include "modular_citadel\code\datums\traits\neutral.dm" #include "modular_citadel\code\datums\wires\airlock.dm" #include "modular_citadel\code\datums\wires\autoylathe.dm" #include "modular_citadel\code\game\area\cit_areas.dm" @@ -2998,7 +3014,6 @@ #include "modular_citadel\code\game\objects\items\stunsword.dm" #include "modular_citadel\code\game\objects\items\vending_items.dm" #include "modular_citadel\code\game\objects\items\circuitboards\machine_circuitboards.dm" -#include "modular_citadel\code\game\objects\items\devices\aicard.dm" #include "modular_citadel\code\game\objects\items\devices\radio\encryptionkey.dm" #include "modular_citadel\code\game\objects\items\devices\radio\headset.dm" #include "modular_citadel\code\game\objects\items\devices\radio\shockcollar.dm" @@ -3008,17 +3023,16 @@ #include "modular_citadel\code\game\objects\structures\crates_lockers\closets\fitness.dm" #include "modular_citadel\code\game\objects\structures\crates_lockers\closets\wardrobe.dm" #include "modular_citadel\code\game\objects\structures\crates_lockers\closets\secure\citadel_lockers.dm" -#include "modular_citadel\code\game\turfs\cit_turfs.dm" #include "modular_citadel\code\modules\admin\admin.dm" #include "modular_citadel\code\modules\admin\chat_commands.dm" #include "modular_citadel\code\modules\admin\holder2.dm" #include "modular_citadel\code\modules\admin\secrets.dm" #include "modular_citadel\code\modules\admin\topic.dm" #include "modular_citadel\code\modules\arousal\arousal.dm" +#include "modular_citadel\code\modules\arousal\genitals.dm" +#include "modular_citadel\code\modules\arousal\genitals_sprite_accessories.dm" #include "modular_citadel\code\modules\arousal\organs\breasts.dm" #include "modular_citadel\code\modules\arousal\organs\eggsack.dm" -#include "modular_citadel\code\modules\arousal\organs\genitals.dm" -#include "modular_citadel\code\modules\arousal\organs\genitals_sprite_accessories.dm" #include "modular_citadel\code\modules\arousal\organs\ovipositor.dm" #include "modular_citadel\code\modules\arousal\organs\penis.dm" #include "modular_citadel\code\modules\arousal\organs\testicles.dm" @@ -3087,8 +3101,6 @@ #include "modular_citadel\code\modules\mob\living\carbon\human\human_movement.dm" #include "modular_citadel\code\modules\mob\living\silicon\robot\dogborg_equipment.dm" #include "modular_citadel\code\modules\mob\living\silicon\robot\robot_movement.dm" -#include "modular_citadel\code\modules\mob\living\simple_animal\banana_spider.dm" -#include "modular_citadel\code\modules\mob\living\simple_animal\kiwi.dm" #include "modular_citadel\code\modules\power\lighting.dm" #include "modular_citadel\code\modules\projectiles\gun.dm" #include "modular_citadel\code\modules\projectiles\ammunition\caseless.dm" @@ -3122,6 +3134,5 @@ #include "modular_citadel\code\modules\reagents\reagents\cit_reagents.dm" #include "modular_citadel\code\modules\recycling\disposal\bin.dm" #include "modular_citadel\code\modules\research\designs\autoylathe_designs.dm" -#include "modular_citadel\code\modules\vehicles\secway.dm" #include "modular_citadel\interface\skin.dmf" // END_INCLUDE diff --git a/tgui/package-lock.json b/tgui/package-lock.json index 3c1cad4bef..8cdec664cd 100644 --- a/tgui/package-lock.json +++ b/tgui/package-lock.json @@ -340,21 +340,14 @@ "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" }, "async-done": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.1.tgz", - "integrity": "sha512-R1BaUeJ4PMoLNJuk+0tLJgjmEqVsdN118+Z8O+alhnQDQgy0kmD5Mqi0DNEmMx2LM0Ed5yekKu+ZXYvIHceicg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.2", - "process-nextick-args": "^1.0.7", + "process-nextick-args": "^2.0.0", "stream-exhaust": "^1.0.1" - }, - "dependencies": { - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - } } }, "async-each": { @@ -2004,11 +1997,12 @@ } }, "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", "requires": { - "es5-ext": "^0.10.9" + "es5-ext": "^0.10.50", + "type": "^1.0.1" } }, "date-now": { @@ -2279,13 +2273,13 @@ } }, "es5-ext": { - "version": "0.10.50", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz", - "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==", + "version": "0.10.52", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.52.tgz", + "integrity": "sha512-bWCbE9fbpYQY4CU6hJbJ1vSz70EClMlDgJ7BmwI+zEJhxrwjesZRPglGJlsZhu0334U3hI+gaspwksH9IGD6ag==", "requires": { "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "^1.0.0" + "es6-symbol": "~3.1.2", + "next-tick": "~1.0.0" } }, "es6-iterator": { @@ -2304,22 +2298,22 @@ "integrity": "sha1-lu258v2wGZWCKyY92KratnSBgbw=" }, "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "d": "^1.0.1", + "ext": "^1.1.2" } }, "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", "requires": { "d": "1", - "es5-ext": "^0.10.14", - "es6-iterator": "^2.0.1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.1" } }, @@ -2376,6 +2370,21 @@ "homedir-polyfill": "^1.0.1" } }, + "ext": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.1.2.tgz", + "integrity": "sha512-/KLjJdTNyDepCihrk4HQt57nAE1IRCEo5jUt+WgWGCr1oARhibDvmI2DMcSNWood1T9AUWwq+jaV1wvRqaXfnA==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -3409,9 +3418,9 @@ }, "dependencies": { "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", + "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4515,9 +4524,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "lodash._baseassign": { "version": "3.2.0", @@ -4647,9 +4656,9 @@ "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=" }, "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, "lodash.partialright": { "version": "4.2.1", @@ -5138,9 +5147,9 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "requires": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -7434,6 +7443,11 @@ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", diff --git a/tools/Redirector/textprocs.dm b/tools/Redirector/textprocs.dm index 1b91511332..aedafe39da 100644 --- a/tools/Redirector/textprocs.dm +++ b/tools/Redirector/textprocs.dm @@ -40,12 +40,12 @@ proc ///////////////////// dd_hasprefix(text, prefix) var/start = 1 - var/end = lentext(prefix) + 1 + var/end = length(prefix) + 1 return findtext(text, prefix, start, end) dd_hasPrefix(text, prefix) var/start = 1 - var/end = lentext(prefix) + 1 + var/end = length(prefix) + 1 return findtextEx(text, prefix, start, end) @@ -66,8 +66,8 @@ proc // Turning text into lists // ///////////////////////////// dd_text2list(text, separator) - var/textlength = lentext(text) - var/separatorlength = lentext(separator) + var/textlength = length(text) + var/separatorlength = length(separator) var/list/textList = new /list() var/searchPosition = 1 var/findPosition = 1 @@ -86,8 +86,8 @@ proc return textList dd_text2List(text, separator) - var/textlength = lentext(text) - var/separatorlength = lentext(separator) + var/textlength = length(text) + var/separatorlength = length(separator) var/list/textList = new /list() var/searchPosition = 1 var/findPosition = 1 diff --git a/tools/mapmerge2/requirements.txt b/tools/mapmerge2/requirements.txt index adb42438e7..d24cb40dcc 100644 --- a/tools/mapmerge2/requirements.txt +++ b/tools/mapmerge2/requirements.txt @@ -1,3 +1,3 @@ pygit2==0.27.2 bidict==0.13.1 -Pillow==5.1.0 +Pillow==6.2.0