Merge remote-tracking branch 'tgstation/master' into upstream-2025-11-29

# Conflicts:
#	_maps/RandomRuins/SpaceRuins/derelict_sulaco.dmm
#	_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	_maps/map_files/tramstation/tramstation.dmm
#	code/_onclick/hud/new_player.dm
#	code/datums/components/squashable.dm
#	code/datums/diseases/advance/symptoms/heal.dm
#	code/datums/diseases/chronic_illness.dm
#	code/datums/status_effects/buffs.dm
#	code/datums/status_effects/debuffs/drunk.dm
#	code/datums/status_effects/debuffs/stamcrit.dm
#	code/game/machinery/computer/crew.dm
#	code/game/objects/items/devices/scanners/health_analyzer.dm
#	code/game/objects/items/wall_mounted.dm
#	code/game/turfs/closed/indestructible.dm
#	code/modules/admin/view_variables/filterrific.dm
#	code/modules/antagonists/heretic/influences.dm
#	code/modules/cargo/orderconsole.dm
#	code/modules/client/preferences.dm
#	code/modules/events/space_vines/vine_mutations.dm
#	code/modules/mob/dead/new_player/new_player.dm
#	code/modules/mob/living/carbon/human/death.dm
#	code/modules/mob/living/carbon/human/species_types/jellypeople.dm
#	code/modules/mob/living/damage_procs.dm
#	code/modules/mob/living/living.dm
#	code/modules/mob_spawn/ghost_roles/mining_roles.dm
#	code/modules/mob_spawn/mob_spawn.dm
#	code/modules/projectiles/ammunition/energy/laser.dm
#	code/modules/projectiles/guns/ballistic/launchers.dm
#	code/modules/projectiles/guns/energy/laser.dm
#	code/modules/reagents/chemistry/machinery/chem_dispenser.dm
#	code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
#	code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
#	code/modules/reagents/chemistry/reagents/medicine_reagents.dm
#	code/modules/surgery/healing.dm
#	code/modules/unit_tests/designs.dm
#	icons/mob/inhands/items_lefthand.dmi
#	icons/mob/inhands/items_righthand.dmi
#	tgui/packages/tgui/interfaces/ChemDispenser.tsx
This commit is contained in:
nevimer
2025-11-29 22:49:21 -05:00
1185 changed files with 39068 additions and 32028 deletions
@@ -39,7 +39,7 @@
return
user.do_attack_animation(attacked_mob)
attacked_mob.adjustStaminaLoss(stamina_damage)
attacked_mob.adjust_stamina_loss(stamina_damage)
attacked_mob.set_confusion_if_lower(5 SECONDS)
attacked_mob.adjust_stutter(20 SECONDS)
attacked_mob.set_jitter_if_lower(5 SECONDS)
@@ -174,7 +174,7 @@
)
else
if(!iscyborg(attacked_mob))
attacked_mob.adjustFireLoss(10)
attacked_mob.adjust_fire_loss(10)
user.visible_message(
span_userdanger("[user] shocks [attacked_mob]!"),
span_danger("You shock [attacked_mob]!"),
@@ -201,7 +201,7 @@
span_danger("You crush [attacked_mob]!"),
)
playsound(loc, 'sound/items/weapons/smash.ogg', 50, TRUE, -1)
attacked_mob.adjustBruteLoss(15)
attacked_mob.adjust_brute_loss(15)
user.cell.use(0.3 * STANDARD_CELL_CHARGE, force = TRUE)
COOLDOWN_START(src, crush_cooldown, HUG_CRUSH_COOLDOWN)
+11 -13
View File
@@ -112,13 +112,13 @@
* In most places we add + 1 because we're secretly keeping [max_volume_per_reagent + 1]
* units, so that when this reagent runs out it's not wholesale removed from the reagents
*/
var/max_volume_per_reagent = 30
var/max_volume_per_reagent = 25
/// Cell cost for charging a reagent
var/charge_cost = 0.05 * STANDARD_CELL_CHARGE
var/charge_cost = 0.075 * STANDARD_CELL_CHARGE
/// Counts up to the next time we charge
var/charge_timer = 0
/// Time it takes for shots to recharge (in seconds)
var/recharge_time = 10
var/recharge_time = 12
///Optional variable to override the temperature add_reagent() will use
var/dispensed_temperature = DEFAULT_REAGENT_TEMPERATURE
/// If the hypospray can go through armor or thick material
@@ -178,10 +178,12 @@
/obj/item/reagent_containers/borghypo/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(!iscarbon(interacting_with))
return NONE
var/mob/living/carbon/injectee = interacting_with
if(!selected_reagent)
balloon_alert(user, "no reagent selected!")
return ITEM_INTERACT_BLOCKING
if(!stored_reagents.has_reagent(selected_reagent.type, amount_per_transfer_from_this))
balloon_alert(user, "not enough [selected_reagent.name]!")
return ITEM_INTERACT_BLOCKING
@@ -190,20 +192,16 @@
balloon_alert(user, "[injectee.parse_zone_with_bodypart(user.zone_selected)] is blocked!")
return ITEM_INTERACT_BLOCKING
// This is the in-between where we're storing the reagent we're going to inject the injectee with
// because we cannot specify a singular reagent to transfer in trans_to
var/datum/reagents/hypospray_injector = new()
stored_reagents.remove_reagent(selected_reagent.type, amount_per_transfer_from_this)
hypospray_injector.add_reagent(selected_reagent.type, amount_per_transfer_from_this, reagtemp = dispensed_temperature, no_react = TRUE)
if (!injectee.reagents)
balloon_alert(user, "unable to inject!")
return ITEM_INTERACT_BLOCKING
to_chat(injectee, span_warning("You feel a tiny prick!"))
to_chat(user, span_notice("You inject [injectee] with the injector ([selected_reagent.name])."))
user.changeNext_move(CLICK_CD_MELEE)
if(injectee.reagents)
hypospray_injector.trans_to(injectee, amount_per_transfer_from_this, transferred_by = user, methods = INJECT)
balloon_alert(user, "[amount_per_transfer_from_this] unit\s injected")
log_combat(user, injectee, "injected", src, "(CHEMICALS: [selected_reagent])")
stored_reagents.trans_to(injectee, amount_per_transfer_from_this, target_id = selected_reagent.type, transferred_by = user, methods = INJECT)
balloon_alert(user, "[amount_per_transfer_from_this] unit\s injected")
log_combat(user, injectee, "injected", src, "(CHEMICALS: [selected_reagent])")
return ITEM_INTERACT_SUCCESS
/obj/item/reagent_containers/borghypo/ui_interact(mob/user, datum/tgui/ui)
@@ -359,8 +359,8 @@
else
repair_amount = -1
energy_cost = 0.01 * STANDARD_CELL_CHARGE
cyborg.adjustBruteLoss(repair_amount)
cyborg.adjustFireLoss(repair_amount)
cyborg.adjust_brute_loss(repair_amount)
cyborg.adjust_fire_loss(repair_amount)
cyborg.updatehealth()
cyborg.cell.use(energy_cost)
else