diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index b55e323ab5..2df3996366 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -807,6 +807,11 @@ }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/fitness/pool) +"abU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/landmark/xmastree, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/bar) "abV" = ( /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel/white, @@ -824,6 +829,13 @@ "abY" = ( /turf/open/floor/plasteel/white, /area/ai_monitored/turret_protected/ai) +"abZ" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/sparsegrass, +/obj/effect/landmark/xmastree, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) "acc" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -47489,12 +47501,6 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) -"cgj" = ( -/obj/structure/flora/ausbushes/ywflowers, -/obj/structure/flora/ausbushes/ppflowers, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/grass, -/area/hydroponics/garden/monastery) "cgk" = ( /obj/structure/flora/ausbushes/ywflowers, /obj/structure/flora/ausbushes/sparsegrass, @@ -79791,7 +79797,7 @@ cuE cgK cgJ cgH -cgj +abZ cvj bWV cfn @@ -94889,7 +94895,7 @@ aYg aZd beB bbq -beB +abU bdx beB bft @@ -110826,7 +110832,7 @@ bcQ aaa aaa aaa -abN +bBW aaa aEj aEj @@ -111083,7 +111089,7 @@ bcQ aaa aaa aaa -aaa +cFB aaa aEl bnl diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index dad2a38afd..7bb124fe0f 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -115,7 +115,7 @@ #define MAX_HIGH_PRESSURE_DAMAGE 16 // CITADEL CHANGES Max to 16, low to 8. #define LOW_PRESSURE_DAMAGE 8 //The amount of damage someone takes when in a low pressure area (The pressure threshold is so low that it doesn't make sense to do any calculations, so it just applies this flat value). -#define COLD_SLOWDOWN_FACTOR 20 //Humans are slowed by the difference between bodytemp and BODYTEMP_COLD_DAMAGE_LIMIT divided by this +#define COLD_SLOWDOWN_FACTOR 35 //Humans are slowed by the difference between bodytemp and BODYTEMP_COLD_DAMAGE_LIMIT divided by this //PIPES //Atmos pipe limits diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index ef3979d822..f4a53d5c72 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -438,12 +438,19 @@ return else linked_alert.icon_state = "fleshmend" - owner.adjustBruteLoss(-10, FALSE) - owner.adjustFireLoss(-5, FALSE) owner.adjustOxyLoss(-10) if(!iscarbon(owner)) + owner.adjustBruteLoss(-10, FALSE) + owner.adjustFireLoss(-5, FALSE) return var/mob/living/carbon/C = owner + var/list/damaged_parts = C.get_damaged_bodyparts(TRUE,TRUE, status = list(BODYPART_ORGANIC, BODYPART_HYBRID, BODYPART_NANITES)) + if(damaged_parts.len) + for(var/obj/item/bodypart/part in damaged_parts) + part.heal_damage(10/damaged_parts.len, 5/damaged_parts.len, only_organic = FALSE, updating_health = FALSE) + C.updatehealth() + C.update_damage_overlays() + QDEL_LIST(C.all_scars) /obj/screen/alert/status_effect/fleshmend @@ -599,7 +606,7 @@ //Heal brain damage and toxyloss, alongside trauma owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, -8) - owner.adjustToxLoss(-6, forced = TRUE) + owner.adjustToxLoss(-6, forced = TRUE, toxins_type = TOX_OMNI) M.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC) //Purges 50 rads per tick if(owner.radiation > 0) diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index fe27cc2baf..3cbf4b3cd2 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -137,12 +137,18 @@ GLOBAL_LIST_EMPTY(family_heirlooms) var/lums = T.get_lumcount() if(lums <= 0.2) if(quirk_holder.m_intent == MOVE_INTENT_RUN) - to_chat(quirk_holder, "Easy, easy, take it slow... you're in the dark...") - quirk_holder.toggle_move_intent() + addtimer(CALLBACK(src, .proc/recheck),2) //0.2 seconds of being in the dark SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "nyctophobia", /datum/mood_event/nyctophobia) else SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "nyctophobia") +/datum/quirk/nyctophobia/proc/recheck() + var/turf/T = get_turf(quirk_holder) + var/lums = T.get_lumcount() + if(lums <= 0.2) //check again, did they remain in the dark for 0.2 seconds? + to_chat(quirk_holder, "Easy, easy, take it slow... you're in the dark...") + quirk_holder.toggle_move_intent() + /datum/quirk/lightless name = "Light Sensitivity" desc = "Bright lights irritate you. Your eyes start to water, your skin feels itchy against the photon radiation, and your hair gets dry and frizzy. Maybe it's a medical condition. If only Nanotrasen was more considerate of your needs..." diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 4c9ea06620..296b46bf85 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -377,10 +377,3 @@ hitsound = 'sound/weapons/taserhit.ogg' w_class = WEIGHT_CLASS_SMALL breakouttime = 60 - -/obj/item/restraints/legcuffs/bola/energy/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) - if(iscarbon(hit_atom)) - var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy/cyborg(get_turf(hit_atom)) - B.Crossed(hit_atom) - qdel(src) - ..() diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 46eb82342a..52082637a3 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -446,8 +446,11 @@ var/mob/living/L = O if(!issilicon(L)) L.DefaultCombatKnockdown(40) - O.forceMove(T) - close() + if(istype(src, /obj/structure/closet/supplypod/extractionpod)) + O.forceMove(src) + else + O.forceMove(T) + close() else O.forceMove(T) return 1 diff --git a/code/modules/admin/view_variables/topic.dm b/code/modules/admin/view_variables/topic.dm index af412a6caa..d7e893ec03 100644 --- a/code/modules/admin/view_variables/topic.dm +++ b/code/modules/admin/view_variables/topic.dm @@ -98,7 +98,7 @@ L.adjustFireLoss(amount) newamt = L.getFireLoss() if("toxin") - L.adjustToxLoss(amount, toxins_type = TOX_OMNI) + L.adjustToxLoss(amount, toxins_type = TOX_OMNI, forced = TRUE) newamt = L.getToxLoss() if("oxygen") L.adjustOxyLoss(amount) diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm index 4117fc2b36..3e358cd795 100644 --- a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm +++ b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm @@ -120,9 +120,14 @@ if(bruteheal + fireheal + toxinheal > 0) // Just a check? Don't heal/spend, and return. if(mult == 0) return TRUE + // We have damage. Let's heal (one time) - C.adjustBruteLoss(-bruteheal * mult, forced = TRUE)// Heal BRUTE / BURN in random portions throughout the body. - C.adjustFireLoss(-fireheal * mult, forced = TRUE) + var/list/damaged_parts = C.get_damaged_bodyparts(TRUE,TRUE, status = list(BODYPART_ORGANIC, BODYPART_HYBRID, BODYPART_NANITES)) + if(damaged_parts.len) + for(var/obj/item/bodypart/part in damaged_parts) // Heal BRUTE / BURN equally distibuted over all damaged bodyparts. + part.heal_damage((bruteheal * mult)/damaged_parts.len, (fireheal * mult)/damaged_parts.len, only_organic = FALSE, updating_health = FALSE) + C.updatehealth() + C.update_damage_overlays() C.adjustToxLoss(-toxinheal * mult * 2, forced = TRUE) //Toxin healing because vamps arent immune //C.heal_overall_damage(bruteheal * mult, fireheal * mult) // REMOVED: We need to FORCE this, because otherwise, vamps won't heal EVER. Swapped to above. AddBloodVolume((bruteheal * -0.5 + fireheal * -1 + toxinheal * -0.2) / mult * costMult) // Costs blood to heal @@ -276,7 +281,7 @@ /datum/antagonist/bloodsucker/proc/FinalDeath() //Dont bother if we are already supposed to be dead if(FinalDeath) - return + return FinalDeath = TRUE //We are now supposed to die. Lets not spam it. if(!iscarbon(owner.current)) //Check for non carbons. owner.current.gib() diff --git a/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm b/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm index f5c54dd7bf..9d65396c63 100644 --- a/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm +++ b/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm @@ -69,7 +69,7 @@ var/mob/living/living_user = user living_user.adjustBruteLoss(-3, FALSE) living_user.adjustFireLoss(-3, FALSE) - living_user.adjustToxLoss(-3, FALSE) + living_user.adjustToxLoss(-3, FALSE, TRUE) living_user.adjustOxyLoss(-1, FALSE) living_user.adjustStaminaLoss(-6) diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm index 6169c4d3f0..efac62c930 100644 --- a/code/modules/cargo/supplypod.dm +++ b/code/modules/cargo/supplypod.dm @@ -74,7 +74,6 @@ bluespace = TRUE explosionSize = list(0,0,1,2) landingDelay = 25 //Longer than others - reverseOptionList = list("Mobs"=TRUE,"Objects"=FALSE,"Anchored"=FALSE,"Underfloor"=FALSE,"Wallmounted"=FALSE,"Floors"=FALSE,"Walls"=FALSE) /obj/structure/closet/supplypod/centcompod style = STYLE_CENTCOM diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 12829ed0e7..40ad6dddd1 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -873,9 +873,9 @@ /obj/item/clothing/head/helmet/space/hardsuit/lavaknight name = "cydonian helmet" desc = "A helmet designed with both form and function in mind, it protects the user against physical trauma and hazardous conditions while also having polychromic light strips." - icon_state = "knight_cydonia" + icon_state = "hardsuit0-knight_cydonia" item_state = "knight_yellow" - hardsuit_type = null + hardsuit_type = "knight_cydonia" max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | LAVA_PROOF heat_protection = HEAD diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 8af6ee07c7..b03d977aa8 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -255,7 +255,7 @@ Contains: helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/alert armor = list("melee" = 70, "bullet" = 55, "laser" = 50, "energy" = 50, "bomb" = 65, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100, "wound" = 50) resistance_flags = FIRE_PROOF | ACID_PROOF - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC //ERT Security /obj/item/clothing/head/helmet/space/hardsuit/ert/alert/sec diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm index c3e849efa6..ee2f945b65 100644 --- a/code/modules/mob/living/carbon/death.dm +++ b/code/modules/mob/living/carbon/death.dm @@ -5,7 +5,7 @@ silent = FALSE losebreath = 0 - if(!gibbed) + if(!gibbed && !HAS_TRAIT(src, TRAIT_DEATHCOMA)) emote("deathgasp") . = ..() diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index a16bfaab63..3ab2ae710f 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -14,7 +14,7 @@ blocks_emissive = EMISSIVE_BLOCK_UNIQUE block_parry_data = /datum/block_parry_data/unarmed/human - default_block_parry_data = /datum/block_parry_data/unarmed/pugilist + default_block_parry_data = /datum/block_parry_data/unarmed/human //Hair colour and style var/hair_color = "000" diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index fd442bb7a6..fb9e6ff6c6 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -100,6 +100,10 @@ var/impact_light_intensity = 3 var/impact_light_range = 2 var/impact_light_color_override + // Normal lighting effects + var/fired_light_intensity = 1 + var/fired_light_range = 0 + var/fired_light_color = rgb(255, 255, 255) //Homing var/homing = FALSE @@ -506,6 +510,7 @@ transform = M trajectory_ignore_forcemove = TRUE forceMove(starting) + set_light(fired_light_range, fired_light_intensity, fired_light_color) trajectory_ignore_forcemove = FALSE if(isnull(pixel_increment_amount)) pixel_increment_amount = SSprojectiles.global_pixel_increment_amount diff --git a/code/modules/projectiles/projectile/bullets/ferromagnetic.dm b/code/modules/projectiles/projectile/bullets/ferromagnetic.dm index 78deff601f..03482e2a9d 100644 --- a/code/modules/projectiles/projectile/bullets/ferromagnetic.dm +++ b/code/modules/projectiles/projectile/bullets/ferromagnetic.dm @@ -2,22 +2,22 @@ icon_state = "magjectile" damage = 20 armour_penetration = 20 - light_range = 3 + fired_light_range = 3 pixels_per_second = TILES_TO_PIXELS(16.667) range = 35 - light_color = LIGHT_COLOR_RED + fired_light_color = LIGHT_COLOR_RED /obj/item/projectile/bullet/magnetic/disabler icon_state = "magjectile-nl" //nl stands for non-lethal damage = 2 armour_penetration = 10 stamina = 20 - light_color = LIGHT_COLOR_BLUE + fired_light_color = LIGHT_COLOR_BLUE /obj/item/projectile/bullet/magnetic/weak damage = 15 armour_penetration = 10 - light_range = 2 + fired_light_range = 2 range = 25 /obj/item/projectile/bullet/magnetic/weak/disabler @@ -30,8 +30,8 @@ stamina = 10 movement_type = FLYING | UNSTOPPABLE range = 6 - light_range = 1 - light_color = LIGHT_COLOR_RED + fired_light_range = 1 + fired_light_color = LIGHT_COLOR_RED /obj/item/projectile/bullet/incendiary/mag_inferno icon_state = "magjectile-large" @@ -40,8 +40,8 @@ movement_type = FLYING | UNSTOPPABLE range = 20 pixels_per_second = TILES_TO_PIXELS(12.5) - light_range = 4 - light_color = LIGHT_COLOR_RED + fired_light_range = 4 + fired_light_color = LIGHT_COLOR_RED /obj/item/projectile/bullet/incendiary/mag_inferno/on_hit(atom/target, blocked = FALSE) ..() diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 44b6e85f47..0b44c33926 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -171,11 +171,13 @@ /datum/reagent/drug/methamphetamine/on_mob_metabolize(mob/living/L) ..() - L.ignore_slowdown(type) + ADD_TRAIT(L, TRAIT_IGNOREDAMAGESLOWDOWN, type) + L.update_movespeed() ADD_TRAIT(L, TRAIT_TASED_RESISTANCE, type) /datum/reagent/drug/methamphetamine/on_mob_end_metabolize(mob/living/L) - L.unignore_slowdown(type) + REMOVE_TRAIT(L, TRAIT_IGNOREDAMAGESLOWDOWN, type) + L.update_movespeed() REMOVE_TRAIT(L, TRAIT_TASED_RESISTANCE, type) ..() diff --git a/html/changelogs/AutoChangeLog-pr-13838.yml b/html/changelogs/AutoChangeLog-pr-13838.yml new file mode 100644 index 0000000000..deff5913b3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13838.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - bugfix: "things in DEATHCOMA do not deathgasp on death" diff --git a/html/changelogs/AutoChangeLog-pr-13846.yml b/html/changelogs/AutoChangeLog-pr-13846.yml new file mode 100644 index 0000000000..68e013acf0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13846.yml @@ -0,0 +1,4 @@ +author: "DeltaFire15" +delete-after: True +changes: + - balance: "Fleshmend, Anatomic Panacea and bloodsucker healing now work for Synths / IPCs." diff --git a/html/changelogs/AutoChangeLog-pr-13870.yml b/html/changelogs/AutoChangeLog-pr-13870.yml new file mode 100644 index 0000000000..820c524224 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13870.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - bugfix: "Magrifle ammo no longer glows." diff --git a/html/changelogs/AutoChangeLog-pr-13873.yml b/html/changelogs/AutoChangeLog-pr-13873.yml new file mode 100644 index 0000000000..320a5b69a4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13873.yml @@ -0,0 +1,4 @@ +author: "BlueWildrose" +delete-after: True +changes: + - tweak: "Nyctophobia quirk now has some light lag compensation." diff --git a/html/changelogs/AutoChangeLog-pr-13881.yml b/html/changelogs/AutoChangeLog-pr-13881.yml new file mode 100644 index 0000000000..0ad2d3afc8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13881.yml @@ -0,0 +1,4 @@ +author: "BlueWildrose" +delete-after: True +changes: + - rscadd: "PubbyStation now has two Christmas Tree spawners." diff --git a/html/changelogs/AutoChangeLog-pr-13893.yml b/html/changelogs/AutoChangeLog-pr-13893.yml new file mode 100644 index 0000000000..9eb7a3f79d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13893.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - tweak: "Meth and changeling adrenals no longer ignore all slowdowns, rather damage slowdowns." diff --git a/html/changelogs/AutoChangeLog-pr-13894.yml b/html/changelogs/AutoChangeLog-pr-13894.yml new file mode 100644 index 0000000000..31e1e66328 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13894.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - tweak: "temperature slowdown divisor nerfed to 35 from 20." diff --git a/html/changelogs/AutoChangeLog-pr-13896.yml b/html/changelogs/AutoChangeLog-pr-13896.yml new file mode 100644 index 0000000000..f733efa09d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13896.yml @@ -0,0 +1,6 @@ +author: "Sonic121x" +delete-after: True +changes: + - rscadd: "alarm ert hardsuit sprite for naga and canine" + - tweak: "adjust the naga ert hardsuit to cover the hand" + - bugfix: "cydonia hardsuit helmet" diff --git a/html/changelogs/AutoChangeLog-pr-13897.yml b/html/changelogs/AutoChangeLog-pr-13897.yml new file mode 100644 index 0000000000..05637b0908 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13897.yml @@ -0,0 +1,5 @@ +author: "keronshb" +delete-after: True +changes: + - bugfix: "Allows Energy Bola to be caught" + - balance: "This also allows them to be dropped/picked up." diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index 889888ef0a..62d6644311 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/mob/clothing/head_muzzled.dmi b/icons/mob/clothing/head_muzzled.dmi index 62c1ebea0a..0c72221833 100644 Binary files a/icons/mob/clothing/head_muzzled.dmi and b/icons/mob/clothing/head_muzzled.dmi differ diff --git a/icons/mob/clothing/taur_canine.dmi b/icons/mob/clothing/taur_canine.dmi index 24cf51d2e5..6155a274f2 100644 Binary files a/icons/mob/clothing/taur_canine.dmi and b/icons/mob/clothing/taur_canine.dmi differ diff --git a/icons/mob/clothing/taur_naga.dmi b/icons/mob/clothing/taur_naga.dmi index d178ba4a1c..3525333fb3 100644 Binary files a/icons/mob/clothing/taur_naga.dmi and b/icons/mob/clothing/taur_naga.dmi differ