diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index b10416f63713..3a111afaccac 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -27,7 +27,7 @@ if(!type_to_spawn) return - for(var/atom/A as anything in create_instance(type_to_spawn)) + for(var/atom/A as anything in create_instance(type_to_spawn, loc)) if(pixel_x || pixel_y) A.default_pixel_x = pixel_x A.default_pixel_y = pixel_y diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index b92b9cf9ccae..fdacc8c04d43 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -374,7 +374,7 @@ var/old_height = old_turf.get_physical_height() + REAGENT_TOTAL_VOLUME(old_turf.reagents) var/current_height = get_physical_height() + REAGENT_TOTAL_VOLUME(reagents) if(abs(current_height - old_height) > FLUID_SHALLOW) - if(current_height > old_height) + if(current_height > old_height && !is_open() && !old_turf?.is_open()) // check is_open() due to open turf depth stuff. return 0 if(istype(mover_mob) && MOVING_DELIBERATELY(mover_mob)) to_chat(mover_mob, SPAN_WARNING("You refrain from stepping over the edge; it looks like a steep drop down to \the [src].")) diff --git a/code/modules/clothing/armor_attachment/plate.dm b/code/modules/clothing/armor_attachment/plate.dm index 5723b909ce9b..84ef485f04da 100644 --- a/code/modules/clothing/armor_attachment/plate.dm +++ b/code/modules/clothing/armor_attachment/plate.dm @@ -17,6 +17,7 @@ /decl/material/solid/metal/steel = MATTER_AMOUNT_SECONDARY ) origin_tech = @'{"materials":1,"engineering":1,"combat":1}' + draw_on_mob_when_equipped = FALSE /obj/item/clothing/armor_attachment/plate/get_fibers() return null //plates do not shed diff --git a/code/modules/clothing/suits/armor/plate_carrier.dm b/code/modules/clothing/suits/armor/plate_carrier.dm index 26d057e38302..20bb9d7cf56f 100644 --- a/code/modules/clothing/suits/armor/plate_carrier.dm +++ b/code/modules/clothing/suits/armor/plate_carrier.dm @@ -8,7 +8,6 @@ restricted_accessory_slots = list(ACCESSORY_SLOT_INSIGNIA, ACCESSORY_SLOT_ARMOR_C, ACCESSORY_SLOT_ARMOR_A, ACCESSORY_SLOT_ARMOR_L, ACCESSORY_SLOT_ARMOR_S) material = /decl/material/solid/organic/leather starting_accessories = null - draw_on_mob_when_equipped = FALSE /obj/item/clothing/suit/armor/pcarrier/light starting_accessories = list( diff --git a/code/modules/modular_computers/networking/machinery/telecomms.dm b/code/modules/modular_computers/networking/machinery/telecomms.dm index 7afe7441668f..acf603cd60db 100644 --- a/code/modules/modular_computers/networking/machinery/telecomms.dm +++ b/code/modules/modular_computers/networking/machinery/telecomms.dm @@ -190,7 +190,7 @@ var/global/list/telecomms_hubs = list() listeners[ghost_listener] = TRUE for(var/mob/listener in listeners) - listener.hear_radio(message, message_verb, speaking, formatted_msg, " ", "", speaker, message_compression, vname = send_name, vsource = (listeners[listener] ? send_overmap_object.name : null)) + listener.hear_radio(message, message_verb, speaking, formatted_msg, " ", "", speaker, message_compression, vname = send_name, vsource = (listeners[listener] ? send_overmap_object?.name : null)) if(!chain_transmit) return diff --git a/code/modules/organs/external/_external.dm b/code/modules/organs/external/_external.dm index e48dd3d10ad3..be2996656b75 100644 --- a/code/modules/organs/external/_external.dm +++ b/code/modules/organs/external/_external.dm @@ -150,6 +150,8 @@ /obj/item/organ/external/copy_from_mob_snapshot(datum/mob_snapshot/supplied_appearance) _icon_cache_key = null + skin_colour = supplied_appearance.skin_color //match skin colors + skin_tone = supplied_appearance.skin_tone if(organ_tag in supplied_appearance?.sprite_accessories) var/list/sprite_cats = supplied_appearance.sprite_accessories[organ_tag] for(var/category in sprite_cats) diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index f0960ad6f4fc..5c298cdb09bf 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -24,6 +24,12 @@ else icon_state = "[get_world_inventory_state()]-empty" +/obj/item/gun/projectile/shotgun/pump/update_base_icon_state() + if(chambered) + icon_state = get_world_inventory_state() + else + icon_state = "[get_world_inventory_state()]-empty" + /obj/item/gun/projectile/shotgun/pump/consume_next_projectile() if(chambered) return chambered.BB diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 961da084398e..2f03bcaf2a23 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -502,6 +502,8 @@ var/global/datum/reagents/sink/infinite_reagent_sink = new /// Removes up to [amount] of reagents from [src]. Returns actual amount removed. /datum/reagents/proc/remove_any(var/amount = 1, var/defer_update = FALSE, var/removed_phases = (MAT_PHASE_LIQUID | MAT_PHASE_SOLID), skip_reagents = null) + amount = CHEMS_QUANTIZE(amount) + if(amount <= 0) return 0 @@ -537,8 +539,11 @@ var/global/datum/reagents/sink/infinite_reagent_sink = new else return 0 - var/removing = clamp(CHEMS_QUANTIZE(amount), 0, total_volume) // not ideal but something is making total_volume become NaN - if(!removing || total_volume <= 0) + var/removing = clamp(amount, 0, total_volume) // not ideal but something is making total_volume become NaN + if(!removing) + return 0 // don't clear, we aren't removing any + + if(total_volume <= removing) // we're removing everything . = 0 clear_reagents() return diff --git a/code/modules/reagents/chems/chems_drinks.dm b/code/modules/reagents/chems/chems_drinks.dm index 95ee2c8611c7..caabab56dc72 100644 --- a/code/modules/reagents/chems/chems_drinks.dm +++ b/code/modules/reagents/chems/chems_drinks.dm @@ -185,6 +185,7 @@ color = "#eeddcc" uid = "chem_drink_garlic" antibiotic_strength = 0.65 + affect_blood_on_ingest = TRUE glass_name = "garlic oil" glass_desc = "A potion of guaranteed bad breath." diff --git a/html/changelog.html b/html/changelog.html index 9e0ead821a49..2aecab0a3e31 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -51,36 +51,6 @@ -->
- -

10 January 2026

-

Penelope Haze updated:

- - -

06 January 2026

-

MistakeNot4892 updated:

- - -

02 January 2026

-

Sutures updated:

- - -

31 December 2025

-

Penelope Haze updated:

- - -

30 December 2025

-

Penelope Haze updated:

-
diff --git a/maps/~mapsystem/maps.dm b/maps/~mapsystem/maps.dm index 83ec36784973..5ddba61742de 100644 --- a/maps/~mapsystem/maps.dm +++ b/maps/~mapsystem/maps.dm @@ -555,7 +555,7 @@ var/global/const/MAP_HAS_RANK = 2 //Rank system, also toggleable var/obj/item/passport/pass = new passport_type(get_turf(H)) if(istype(pass)) pass.set_info(H) - if(!H.equip_to_slot(pass, slot_in_wallet_str) && !H.equip_to_slot(pass, slot_in_backpack_str)) + if(!H.equip_to_slot_if_possible(pass, slot_in_wallet_str, del_on_fail=FALSE, disable_warning=TRUE) && !H.equip_to_slot_if_possible(pass, slot_in_backpack_str, del_on_fail=FALSE, disable_warning=TRUE)) H.put_in_hands(pass) /datum/map/proc/populate_overmap_events()