diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index d91dd5b7c8..9877f5b259 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -13347,7 +13347,6 @@ pixel_y = 32 }, /obj/structure/sink{ - dir = 1; pixel_y = 25 }, /obj/machinery/button/door{ @@ -14233,7 +14232,6 @@ pixel_y = 32 }, /obj/structure/sink{ - dir = 1; pixel_y = 25 }, /obj/machinery/button/door{ @@ -21718,7 +21716,6 @@ pixel_y = 32 }, /obj/structure/sink{ - dir = 1; pixel_y = 25 }, /obj/machinery/button/door{ @@ -53437,6 +53434,7 @@ "dfh" = ( /obj/machinery/power/apc{ areastring = "/area/science/circuit"; + dir = 4; name = "Circuitry Lab APC"; pixel_x = 30 }, @@ -54387,6 +54385,7 @@ /obj/structure/chair/office/dark{ dir = 1 }, +/obj/effect/landmark/start/atmospheric_technician, /turf/open/floor/plasteel, /area/engine/atmos) "fMp" = ( @@ -54776,7 +54775,6 @@ dir = 8 }, /obj/structure/sink{ - dir = 1; pixel_y = 25 }, /obj/structure/mirror{ @@ -57075,6 +57073,7 @@ dir = 4; pixel_y = 5 }, +/obj/item/clothing/head/hardhat/cakehat, /turf/open/floor/wood, /area/crew_quarters/bar) "oby" = ( @@ -57198,7 +57197,6 @@ dir = 8 }, /obj/structure/sink{ - dir = 1; pixel_y = 25 }, /obj/structure/mirror{ @@ -57847,7 +57845,6 @@ pixel_y = 32 }, /obj/structure/sink{ - dir = 1; pixel_y = 25 }, /turf/open/floor/mineral/titanium/blue, @@ -57910,7 +57907,6 @@ pixel_y = 32 }, /obj/structure/sink{ - dir = 1; pixel_y = 25 }, /obj/machinery/light/small{ @@ -60673,7 +60669,6 @@ pixel_y = 32 }, /obj/structure/sink{ - dir = 1; pixel_y = 25 }, /obj/machinery/button/door{ diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index bf8c332cf0..fbe5b954ff 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -30475,6 +30475,7 @@ /obj/machinery/light{ dir = 1 }, +/obj/machinery/airalarm/directional/north, /turf/open/floor/plasteel/dark, /area/science/research) "aXx" = ( @@ -57345,9 +57346,7 @@ name = "landing marker"; picked_color = "Burgundy" }, -/turf/open/floor/plating/airless{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/turf/open/floor/plating/airless, /area/hallway/secondary/entry) "bOe" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{ @@ -58565,9 +58564,7 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/turf/open/floor/plating/airless, /area/hallway/secondary/entry) "bQb" = ( /obj/structure/flora/rock, @@ -58930,7 +58927,7 @@ dir = 8 }, /obj/machinery/power/apc{ - areastring = "/area/janitor"; + areastring = "/area/vacant_room/commissary"; dir = 4; name = "Vacant Commissary APC"; pixel_x = 27; @@ -61285,9 +61282,7 @@ name = "landing marker"; picked_color = "Burgundy" }, -/turf/open/floor/plating/airless{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/turf/open/floor/plating/airless, /area/hallway/secondary/entry) "bUk" = ( /obj/effect/turf_decal/tile/red, @@ -61567,9 +61562,7 @@ /turf/closed/wall, /area/engine/atmos) "bUN" = ( -/turf/open/floor/plating/airless{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/turf/open/floor/plating/airless, /area/hallway/secondary/entry) "bUP" = ( /obj/machinery/door/airlock/external{ @@ -67994,9 +67987,7 @@ name = "landing marker"; picked_color = "Burgundy" }, -/turf/open/floor/plating/airless{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/turf/open/floor/plating/airless, /area/hallway/secondary/entry) "ceV" = ( /obj/effect/turf_decal/tile/yellow{ @@ -68021,18 +68012,14 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/turf/open/floor/plating/airless, /area/hallway/secondary/entry) "ceX" = ( /obj/machinery/light{ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/turf/open/floor/plating/airless, /area/hallway/secondary/entry) "ceY" = ( /obj/machinery/airalarm{ @@ -68880,9 +68867,7 @@ /area/engine/engineering) "cgI" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/turf/open/floor/plating/airless, /area/hallway/secondary/entry) "cgJ" = ( /obj/machinery/door/poddoor/preopen, @@ -80506,9 +80491,7 @@ /area/maintenance/fore) "cDp" = ( /obj/structure/lattice/catwalk, -/turf/open/floor/plating/airless{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/turf/open/floor/plating/airless, /area/hallway/secondary/entry) "cDq" = ( /obj/machinery/door/airlock/maintenance{ @@ -80896,9 +80879,6 @@ pixel_x = 4; pixel_y = 4 }, -/obj/item/storage/pill_bottle/dice{ - pixel_x = -4 - }, /obj/item/pen/red{ pixel_x = 4; pixel_y = 4 @@ -84920,9 +84900,7 @@ "jAT" = ( /obj/structure/lattice/catwalk, /obj/machinery/light, -/turf/open/floor/plating/airless{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/turf/open/floor/plating/airless, /area/hallway/secondary/entry) "jHJ" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ @@ -85370,9 +85348,7 @@ "rNm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/lattice/catwalk, -/turf/open/floor/plating/airless{ - initial_gas_mix = "o2=14;n2=23;TEMP=300" - }, +/turf/open/floor/plating/airless, /area/hallway/secondary/entry) "swG" = ( /obj/item/reagent_containers/food/drinks/drinkingglass{ diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 73d834dd64..f8a14b8c30 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -123,7 +123,7 @@ . = ..() if(!target || !user) return - if(!user.CheckActionCooldown()) + if(!user.CheckActionCooldown(CLICK_CD_MELEE)) return if(!focus) focus_object(target) @@ -146,7 +146,7 @@ else apply_focus_overlay() focus.throw_at(target, 10, 1,user) - user.DelayNextAction(immediate = FALSE) + user.DelayNextAction(considered_action = TRUE, flush = TRUE) update_icon() /proc/tkMaxRangeCheck(mob/user, atom/target) diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index c6386241ee..04fd5f6af5 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -21,7 +21,7 @@ . = ..() stored = new /obj/item/blackbox(src) -/obj/machinery/blackbox_recorder/attack_hand(mob/living/user) +/obj/machinery/blackbox_recorder/on_attack_hand(mob/living/user, act_intent, unarmed_attack_flags) . = ..() if(stored) to_chat(user, "You start struggling to pry the [stored] from the [src]...") diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm index 47a98623db..2d25ebb156 100644 --- a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm +++ b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm @@ -10,26 +10,24 @@ // // Show as dead when... -/datum/antagonist/bloodsucker/proc/LifeTick()// Should probably run from life.dm, same as handle_changeling, but will be an utter pain to move - set waitfor = FALSE // Don't make on_gain() wait for this function to finish. This lets this code run on the side. - var/notice_healing - while(owner && !AmFinalDeath()) // owner.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) == src - if(owner.current.stat == CONSCIOUS && !poweron_feed && !HAS_TRAIT(owner.current, TRAIT_FAKEDEATH)) // Deduct Blood - AddBloodVolume(passive_blood_drain) // -.1 currently - if(HandleHealing(1)) // Heal - if(!notice_healing && owner.current.blood_volume > 0) - to_chat(owner, "The power of your blood begins knitting your wounds...") - notice_healing = TRUE - else if(notice_healing == TRUE) - notice_healing = FALSE // Apply Low Blood Effects - HandleStarving() // Death - HandleDeath() // Standard Update - update_hud()// Daytime Sleep in Coffin - if(SSticker.mode.is_daylight() && !HAS_TRAIT_FROM(owner.current, TRAIT_FAKEDEATH, "bloodsucker")) - if(istype(owner.current.loc, /obj/structure/closet/crate/coffin)) - Torpor_Begin() - // Wait before next pass - sleep(10) +/datum/antagonist/bloodsucker/proc/LifeTick() //Runs from BiologicalLife, handles all the bloodsucker constant proccesses + if(!owner || AmFinalDeath()) + return + if(owner.current.stat == CONSCIOUS && !poweron_feed && !HAS_TRAIT(owner.current, TRAIT_FAKEDEATH)) // Deduct Blood + AddBloodVolume(passive_blood_drain) // -.1 currently + if(HandleHealing(1)) // Heal + if(!notice_healing && owner.current.blood_volume > 0) + to_chat(owner, "The power of your blood begins knitting your wounds...") + notice_healing = TRUE + else if(notice_healing) + notice_healing = FALSE // Apply Low Blood Effects + HandleStarving() // Death + HandleDeath() // Standard Update + update_hud()// Daytime Sleep in Coffin + if(SSticker.mode.is_daylight() && !HAS_TRAIT_FROM(owner.current, TRAIT_FAKEDEATH, "bloodsucker")) + if(istype(owner.current.loc, /obj/structure/closet/crate/coffin)) + Torpor_Begin() + // Wait before next pass FreeAllVassals() // Free my Vassals! (if I haven't yet) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm index 888db8193b..715de0648d 100644 --- a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm +++ b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm @@ -37,6 +37,7 @@ var/had_toxlover var/level_bloodcost var/passive_blood_drain = -0.1 //The amount of blood we loose each bloodsucker life() tick + var/notice_healing //Var to see if you are healing for preventing spam of the chat message inform the user of such // LISTS var/static/list/defaultTraits = list (TRAIT_STABLEHEART, TRAIT_NOBREATH, TRAIT_SLEEPIMMUNE, TRAIT_NOCRITDAMAGE, TRAIT_RESISTCOLD, TRAIT_RADIMMUNE, TRAIT_NIGHT_VISION, \ TRAIT_NOSOFTCRIT, TRAIT_NOHARDCRIT, TRAIT_AGEUSIA, TRAIT_COLDBLOODED, TRAIT_NONATURALHEAL, TRAIT_NOMARROW, TRAIT_NOPULSE, TRAIT_VIRUSIMMUNE, TRAIT_NODECAP, TRAIT_NOGUT) @@ -50,7 +51,6 @@ AssignStarterPowersAndStats()// Give Powers & Stats forge_bloodsucker_objectives()// Objectives & Team update_bloodsucker_icons_added(owner.current, "bloodsucker") // Add Antag HUD - LifeTick() // Run Life Function . = ..() diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index c12702424b..746bd3458a 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -268,13 +268,13 @@ our_alert = our_guy.throw_alert("shoealert", /obj/screen/alert/shoes/untied) -/obj/item/clothing/shoes/attack_hand(mob/living/carbon/human/user) +/obj/item/clothing/shoes/on_attack_hand(mob/living/user, act_intent, unarmed_attack_flags) if(!istype(user)) return ..() if(loc == user && tied != SHOES_TIED && (user.mobility_flags & MOBILITY_USE)) handle_tying(user) return - ..() + return ..() /obj/item/clothing/shoes/attack_self(mob/user) . = ..() diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm index a0b5bbc143..72af4e9572 100644 --- a/code/modules/clothing/under/syndicate.dm +++ b/code/modules/clothing/under/syndicate.dm @@ -73,6 +73,9 @@ item_state = "g_suit" can_adjust = FALSE +/obj/item/clothing/under/syndicate/camo/cosmetic + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + /obj/item/clothing/under/syndicate/soviet name = "Ratnik 5 tracksuit" desc = "Badly translated labels tell you to clean this in Vodka. Great for squatting in." diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 56582386f1..36a6f6296b 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -14,7 +14,8 @@ var/obj/item/bodypart/BP = X temp_bleed += BP.get_bleed_rate() BP.generic_bleedstacks = max(0, BP.generic_bleedstacks - 1) - bleed(temp_bleed) + if(temp_bleed) + bleed(temp_bleed) //Blood regeneration if there is some space if(blood_volume < BLOOD_VOLUME_NORMAL) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 725feb214c..e29c6b9ffe 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -1,6 +1,8 @@ /mob/living/carbon/BiologicalLife(seconds, times_fired) //Updates the number of stored chemicals for powers handle_changeling() + //Handles the unique mentabolism of bloodsuckers, look at /datum/antagonist/bloodsucker/proc/LifeTick() + handle_bloodsucker() //Reagent processing needs to come before breathing, to prevent edge cases. handle_organs() . = ..() // if . is false, we are dead. @@ -422,6 +424,12 @@ hud_used.lingchemdisplay.invisibility = INVISIBILITY_ABSTRACT +/mob/living/carbon/proc/handle_bloodsucker() + if(mind && AmBloodsucker(src)) + var/datum/antagonist/bloodsucker/B = mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) + B.LifeTick() + + /mob/living/carbon/handle_mutations_and_radiation() if(dna && dna.temporary_mutations.len) for(var/mut in dna.temporary_mutations) diff --git a/code/modules/projectiles/guns/ballistic/toy.dm b/code/modules/projectiles/guns/ballistic/toy.dm index 5cdd773894..1f66cfdf8a 100644 --- a/code/modules/projectiles/guns/ballistic/toy.dm +++ b/code/modules/projectiles/guns/ballistic/toy.dm @@ -56,6 +56,7 @@ item_flags = NONE casing_ejector = FALSE can_suppress = FALSE + weapon_weight = WEAPON_MEDIUM /obj/item/gun/ballistic/shotgun/toy/process_chamber(mob/living/user, empty_chamber = 0) ..() diff --git a/code/modules/research/designs/tool_designs.dm b/code/modules/research/designs/tool_designs.dm index 0a278602c1..4fe07cb02f 100644 --- a/code/modules/research/designs/tool_designs.dm +++ b/code/modules/research/designs/tool_designs.dm @@ -91,8 +91,8 @@ build_path = /obj/item/construction/rld/mini category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO - - /datum/design/ranged_analyzer + +/datum/design/ranged_analyzer name = "Long-range Analyzer" desc = "A new advanced atmospheric analyzer design, capable of performing scans at long range." id = "ranged_analyzer" diff --git a/code/modules/vending/autodrobe.dm b/code/modules/vending/autodrobe.dm index 260b124283..bc824cc994 100644 --- a/code/modules/vending/autodrobe.dm +++ b/code/modules/vending/autodrobe.dm @@ -116,7 +116,8 @@ /obj/item/gun/magic/wand = 2, /obj/item/clothing/glasses/sunglasses/garb = 2, /obj/item/clothing/glasses/sunglasses/blindfold = 1, - /obj/item/clothing/mask/muzzle = 2) + /obj/item/clothing/mask/muzzle = 2, + /obj/item/clothing/under/syndicate/camo/cosmetic = 3) premium = list(/obj/item/clothing/suit/pirate/captain = 2, /obj/item/clothing/head/pirate/captain = 2, /obj/item/clothing/head/helmet/roman/fake = 1, diff --git a/html/changelog.html b/html/changelog.html index 3248f6d729..b87a49f7f2 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -50,6 +50,61 @@ -->