mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 04:30:44 +01:00
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:
@@ -66,5 +66,5 @@
|
||||
source.reagents.add_reagent(/datum/reagent/toxin/histamine, 3 * seconds_per_tick)
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
source.vomit(VOMIT_CATEGORY_DEFAULT)
|
||||
source.adjustOrganLoss(pick(ORGAN_SLOT_BRAIN, ORGAN_SLOT_APPENDIX, ORGAN_SLOT_LUNGS, ORGAN_SLOT_HEART, ORGAN_SLOT_LIVER, ORGAN_SLOT_STOMACH), 10)
|
||||
source.adjust_organ_loss(pick(ORGAN_SLOT_BRAIN, ORGAN_SLOT_APPENDIX, ORGAN_SLOT_LUNGS, ORGAN_SLOT_HEART, ORGAN_SLOT_LIVER, ORGAN_SLOT_STOMACH), 10)
|
||||
return NONE
|
||||
|
||||
@@ -35,11 +35,11 @@
|
||||
SIGNAL_HANDLER
|
||||
|
||||
var/mob/living/carbon/human/human_holder = quirk_holder
|
||||
if(human_holder.stat == DEAD || human_holder.blood_volume <= min_blood)
|
||||
|
||||
if(human_holder.stat == DEAD)
|
||||
return
|
||||
|
||||
if(!HAS_TRAIT(quirk_holder, TRAIT_NOBLOOD))
|
||||
human_holder.blood_volume = max(min_blood, human_holder.blood_volume - human_holder.dna.species.blood_deficiency_drain_rate * seconds_per_tick)
|
||||
human_holder.adjust_blood_volume(-human_holder.dna.species.blood_deficiency_drain_rate * seconds_per_tick, minimum = min_blood)
|
||||
|
||||
/// Try to update the mail goodies to match the quirk holder's blood type. If we fail for whatever reason then it will just default to the initial O- blood pack that we start with.
|
||||
/datum/quirk/blooddeficiency/proc/update_mail(mob/living/carbon/human/human_quirk_holder, datum/blood_type/new_blood_type, update_cached_blood_dna_info)
|
||||
|
||||
@@ -35,4 +35,4 @@
|
||||
return ..()
|
||||
|
||||
/datum/quirk/item_quirk/brainproblems/process(seconds_per_tick)
|
||||
quirk_holder.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.2 * seconds_per_tick)
|
||||
quirk_holder.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.2 * seconds_per_tick)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
preferred_organ = GLOB.organ_choice[pick(GLOB.organ_choice)]
|
||||
|
||||
var/list/possible_organ_slots = organ_slots.Copy()
|
||||
if(HAS_TRAIT(human_holder, TRAIT_NOBLOOD))
|
||||
if(!CAN_HAVE_BLOOD(human_holder))
|
||||
possible_organ_slots -= ORGAN_SLOT_HEART
|
||||
if(HAS_TRAIT(human_holder, TRAIT_NOBREATH))
|
||||
possible_organ_slots -= ORGAN_SLOT_LUNGS
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
ORGAN_SLOT_STOMACH = /obj/item/organ/stomach/cybernetic/surplus,
|
||||
)
|
||||
var/list/possible_organ_slots = organ_slots.Copy()
|
||||
if(HAS_TRAIT(human_holder, TRAIT_NOBLOOD))
|
||||
if(!CAN_HAVE_BLOOD(human_holder))
|
||||
possible_organ_slots -= ORGAN_SLOT_HEART
|
||||
if(HAS_TRAIT(human_holder, TRAIT_NOBREATH))
|
||||
possible_organ_slots -= ORGAN_SLOT_LUNGS
|
||||
|
||||
@@ -46,6 +46,31 @@
|
||||
COMSIG_CARBON_GAIN_ORGAN,
|
||||
COMSIG_CARBON_LOSE_ORGAN,
|
||||
))
|
||||
if(isnull(old_part))
|
||||
quirk_holder.clear_mood_event(MOOD_CATEGORY_TRANSHUMANIST_BODYPART)
|
||||
quirk_holder.clear_mood_event(MOOD_CATEGORY_TRANSHUMANIST_PEOPLE)
|
||||
return
|
||||
|
||||
if(QDELETED(quirk_holder)) // We don't ever want to be adding organs to qdeleting mobs
|
||||
QDEL_NULL(old_part)
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/human_holder = quirk_holder
|
||||
if(isbodypart(old_part))
|
||||
var/obj/item/bodypart/old_bodypart = old_part
|
||||
human_holder.del_and_replace_bodypart(old_bodypart, special = TRUE)
|
||||
old_bodypart = null
|
||||
else if(isorgan(old_part))
|
||||
var/obj/item/organ/old_organ = old_part
|
||||
old_part = human_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
|
||||
old_organ.Insert(quirk_holder, special = TRUE)
|
||||
old_part.moveToNullspace()
|
||||
STOP_PROCESSING(SSobj, old_part)
|
||||
old_organ = null
|
||||
old_part = null
|
||||
|
||||
quirk_holder.clear_mood_event(MOOD_CATEGORY_TRANSHUMANIST_BODYPART)
|
||||
quirk_holder.clear_mood_event(MOOD_CATEGORY_TRANSHUMANIST_PEOPLE)
|
||||
|
||||
/datum/quirk/transhumanist/proc/get_bodypart_score(mob/living/carbon/target, limbs_only = FALSE)
|
||||
var/organic_bodytypes = 0
|
||||
@@ -142,29 +167,6 @@
|
||||
else if (isorgan(old_part))
|
||||
to_chat(quirk_holder, span_bolddanger("Your [slot_string] brings you one step closer to silicon perfection, but you feel you're not quite there yet."))
|
||||
|
||||
/datum/quirk/transhumanist/remove()
|
||||
if(isnull(old_part))
|
||||
quirk_holder.clear_mood_event(MOOD_CATEGORY_TRANSHUMANIST_BODYPART)
|
||||
quirk_holder.clear_mood_event(MOOD_CATEGORY_TRANSHUMANIST_PEOPLE)
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/human_holder = quirk_holder
|
||||
if(isbodypart(old_part))
|
||||
var/obj/item/bodypart/old_bodypart = old_part
|
||||
human_holder.del_and_replace_bodypart(old_bodypart, special = TRUE)
|
||||
old_bodypart = null
|
||||
else if(isorgan(old_part))
|
||||
var/obj/item/organ/old_organ = old_part
|
||||
old_part = human_holder.get_organ_slot(ORGAN_SLOT_TONGUE)
|
||||
old_organ.Insert(quirk_holder, special = TRUE)
|
||||
old_part.moveToNullspace()
|
||||
STOP_PROCESSING(SSobj, old_part)
|
||||
old_organ = null
|
||||
old_part = null
|
||||
|
||||
quirk_holder.clear_mood_event(MOOD_CATEGORY_TRANSHUMANIST_BODYPART)
|
||||
quirk_holder.clear_mood_event(MOOD_CATEGORY_TRANSHUMANIST_PEOPLE)
|
||||
|
||||
/datum/quirk/transhumanist/process(seconds_per_tick)
|
||||
var/organics_nearby = 0
|
||||
var/silicons_nearby = 0
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
var/need_mob_update = FALSE
|
||||
switch(quirk_holder.get_drunk_amount())
|
||||
if (6 to 40)
|
||||
need_mob_update += quirk_holder.adjustBruteLoss(-0.1 * seconds_per_tick, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
|
||||
need_mob_update += quirk_holder.adjustFireLoss(-0.05 * seconds_per_tick, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
|
||||
need_mob_update += quirk_holder.adjust_brute_loss(-0.1 * seconds_per_tick, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
|
||||
need_mob_update += quirk_holder.adjust_fire_loss(-0.05 * seconds_per_tick, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
|
||||
if (41 to 60)
|
||||
need_mob_update += quirk_holder.adjustBruteLoss(-0.4 * seconds_per_tick, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
|
||||
need_mob_update += quirk_holder.adjustFireLoss(-0.2 * seconds_per_tick, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
|
||||
need_mob_update += quirk_holder.adjust_brute_loss(-0.4 * seconds_per_tick, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
|
||||
need_mob_update += quirk_holder.adjust_fire_loss(-0.2 * seconds_per_tick, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
|
||||
if (61 to INFINITY)
|
||||
need_mob_update += quirk_holder.adjustBruteLoss(-0.8 * seconds_per_tick, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
|
||||
need_mob_update += quirk_holder.adjustFireLoss(-0.4 * seconds_per_tick, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
|
||||
need_mob_update += quirk_holder.adjust_brute_loss(-0.8 * seconds_per_tick, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
|
||||
need_mob_update += quirk_holder.adjust_fire_loss(-0.4 * seconds_per_tick, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)
|
||||
if(need_mob_update)
|
||||
quirk_holder.updatehealth()
|
||||
|
||||
Reference in New Issue
Block a user