mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 00:29:02 +01:00
[MIRROR] Cutting the Burdened Cheese Part 1: Removes free burden points from removing unnecessary or cosmetic organs. [MDB IGNORE] (#18493)
* Cutting the Burdened Cheese Part 1: Removes free burden points from removing unnecessary or cosmetic organs. (#71938) Burdened organs now only count for the main organs only. Cyberimplants don't count, alien organs don't count, etc. This is because someone could get a bunch of extra organs, and then take the burdened sect and remove them for free burden points. Useless organs for species also do not count (stomachs given to species that do not hunger, for instance) Removes the error on burden points clamping on negative values. This can happen when someone previously disabled takes burden sect. Cheese is being used to bypass the unique gameplay goals burdened sect provides. Will throw another pr when fikou finishes bat mutants ;) 🆑 fix: Removed some cheese strategies from burdened sect. /🆑 Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> * Modular! * Aaaaaa Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com> Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> Co-authored-by: Funce <funce.973@gmail.com>
This commit is contained in:
co-authored by
Fikou
tralezab
Funce
parent
94be12f27d
commit
2785d37cf0
@@ -671,8 +671,8 @@
|
||||
UnregisterSignal(old_owner, list(
|
||||
SIGNAL_REMOVETRAIT(TRAIT_NOLIMBDISABLE),
|
||||
SIGNAL_ADDTRAIT(TRAIT_NOLIMBDISABLE),
|
||||
SIGNAL_REMOVETRAIT(TRAIT_NOBLEED),
|
||||
SIGNAL_ADDTRAIT(TRAIT_NOBLEED),
|
||||
SIGNAL_REMOVETRAIT(TRAIT_NOBLOOD),
|
||||
SIGNAL_ADDTRAIT(TRAIT_NOBLOOD),
|
||||
))
|
||||
if(owner)
|
||||
if(initial(can_be_disabled))
|
||||
@@ -682,8 +682,8 @@
|
||||
RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_NOLIMBDISABLE), PROC_REF(on_owner_nolimbdisable_trait_loss))
|
||||
RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_NOLIMBDISABLE), PROC_REF(on_owner_nolimbdisable_trait_gain))
|
||||
// Bleeding stuff
|
||||
RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_NOBLEED), PROC_REF(on_owner_nobleed_loss))
|
||||
RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_NOBLEED), PROC_REF(on_owner_nobleed_gain))
|
||||
RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_NOBLOOD), PROC_REF(on_owner_nobleed_loss))
|
||||
RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_NOBLOOD), PROC_REF(on_owner_nobleed_gain))
|
||||
|
||||
if(needs_update_disabled)
|
||||
update_disabled()
|
||||
@@ -1087,7 +1087,7 @@
|
||||
if(!owner)
|
||||
return
|
||||
|
||||
if(HAS_TRAIT(owner, TRAIT_NOBLEED) || !IS_ORGANIC_LIMB(src))
|
||||
if(HAS_TRAIT(owner, TRAIT_NOBLOOD) || !IS_ORGANIC_LIMB(src))
|
||||
if(cached_bleed_rate != old_bleed_rate)
|
||||
update_part_wound_overlay()
|
||||
return
|
||||
@@ -1128,7 +1128,7 @@
|
||||
/obj/item/bodypart/proc/update_part_wound_overlay()
|
||||
if(!owner)
|
||||
return FALSE
|
||||
if(HAS_TRAIT(owner, TRAIT_NOBLEED) || !IS_ORGANIC_LIMB(src) || (NOBLOOD in species_flags_list))
|
||||
if(HAS_TRAIT(owner, TRAIT_NOBLOOD) || !IS_ORGANIC_LIMB(src))
|
||||
if(bleed_overlay_icon)
|
||||
bleed_overlay_icon = null
|
||||
owner.update_wound_overlays()
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
hair_hidden = TRUE
|
||||
facial_hair_hidden = TRUE
|
||||
|
||||
if(!hair_hidden && !owner.getorganslot(ORGAN_SLOT_BRAIN) && !(NOBLOOD in species_flags_list))
|
||||
if(!hair_hidden && !owner.getorganslot(ORGAN_SLOT_BRAIN) && !HAS_TRAIT(owner, TRAIT_NOBLOOD))
|
||||
show_debrained = TRUE
|
||||
else
|
||||
show_debrained = FALSE
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
else if(bodytype & BODYTYPE_LARVA_PLACEHOLDER)
|
||||
debrain_overlay.icon = 'icons/mob/species/alien/bodyparts.dmi'
|
||||
debrain_overlay.icon_state = "debrained_larva"
|
||||
else if(!(NOBLOOD in species_flags_list))
|
||||
else if(!(TRAIT_NOBLOOD in species_flags_list))
|
||||
debrain_overlay.icon = 'icons/mob/species/human/human_face.dmi'
|
||||
debrain_overlay.icon_state = "debrained"
|
||||
. += debrain_overlay
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
/datum/surgery_step/incise_heart/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/target_human = target
|
||||
if (!(NOBLOOD in target_human.dna.species.species_traits))
|
||||
if (!HAS_TRAIT(target_human, TRAIT_NOBLOOD))
|
||||
display_results(
|
||||
user,
|
||||
target,
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
/datum/surgery_step/incise/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
if ishuman(target)
|
||||
var/mob/living/carbon/human/human_target = target
|
||||
if (!(NOBLOOD in human_target.dna.species.species_traits))
|
||||
if (!HAS_TRAIT(human_target, TRAIT_NOBLOOD))
|
||||
display_results(
|
||||
user,
|
||||
target,
|
||||
|
||||
@@ -291,9 +291,10 @@ INITIALIZE_IMMEDIATE(/obj/item/organ)
|
||||
* For example, lungs won't be given if you have NO_BREATH, stomachs check for NO_HUNGER, and livers check for NO_METABOLISM.
|
||||
* If you want a carbon to have a trait that normally blocks an organ but still want the organ. Attach the trait to the organ using the organ_traits var
|
||||
* Arguments:
|
||||
* owner_species - species, needed to return whether the species has an organ specific trait
|
||||
* owner_species - species, needed to return the mutant slot as true or false. stomach set to null means it shouldn't have one.
|
||||
* owner_mob - for more specific checks, like nightmares.
|
||||
*/
|
||||
/obj/item/organ/proc/get_availability(datum/species/owner_species)
|
||||
/obj/item/organ/proc/get_availability(datum/species/owner_species, mob/living/owner_mob)
|
||||
return TRUE
|
||||
|
||||
/// Called before organs are replaced in regenerate_organs with new ones
|
||||
|
||||
@@ -69,8 +69,8 @@
|
||||
organ_owner.adjustOrganLoss(ORGAN_SLOT_APPENDIX, 15)
|
||||
|
||||
|
||||
/obj/item/organ/internal/appendix/get_availability(datum/species/owner_species)
|
||||
return !((TRAIT_NOHUNGER in owner_species.inherent_traits) || (NOAPPENDIX in owner_species.species_traits))
|
||||
/obj/item/organ/internal/appendix/get_availability(datum/species/owner_species, mob/living/owner_mob)
|
||||
return owner_species.mutantappendix
|
||||
|
||||
/obj/item/organ/internal/appendix/Remove(mob/living/carbon/organ_owner, special = FALSE)
|
||||
REMOVE_TRAIT(organ_owner, TRAIT_DISEASELIKE_SEVERITY_MEDIUM, type)
|
||||
|
||||
@@ -95,8 +95,8 @@
|
||||
owner.set_heartattack(TRUE)
|
||||
failed = TRUE
|
||||
|
||||
/obj/item/organ/internal/heart/get_availability(datum/species/owner_species)
|
||||
return !(NOBLOOD in owner_species.species_traits)
|
||||
/obj/item/organ/internal/heart/get_availability(datum/species/owner_species, mob/living/owner_mob)
|
||||
return owner_species.mutantheart
|
||||
|
||||
/obj/item/organ/internal/heart/cursed
|
||||
name = "cursed heart"
|
||||
@@ -128,7 +128,7 @@
|
||||
if(world.time > (last_pump + pump_delay))
|
||||
if(ishuman(owner) && owner.client) //While this entire item exists to make people suffer, they can't control disconnects.
|
||||
var/mob/living/carbon/human/accursed_human = owner
|
||||
if(accursed_human.dna && !(NOBLOOD in accursed_human.dna.species.species_traits))
|
||||
if(accursed_human.dna && !HAS_TRAIT(accursed_human, TRAIT_NOBLOOD))
|
||||
accursed_human.blood_volume = max(accursed_human.blood_volume - blood_loss, 0)
|
||||
to_chat(accursed_human, span_userdanger("You have to keep pumping your blood!"))
|
||||
if(add_colour)
|
||||
@@ -166,7 +166,7 @@
|
||||
|
||||
var/mob/living/carbon/human/accursed = owner
|
||||
if(istype(accursed))
|
||||
if(accursed.dna && !(NOBLOOD in accursed.dna.species.species_traits))
|
||||
if(accursed.dna && !HAS_TRAIT(accursed, TRAIT_NOBLOOD))
|
||||
accursed.blood_volume = min(accursed.blood_volume + cursed_heart.blood_loss*0.5, BLOOD_VOLUME_MAXIMUM)
|
||||
accursed.remove_client_colour(/datum/client_colour/cursed_heart_blood)
|
||||
cursed_heart.add_colour = TRUE
|
||||
|
||||
@@ -210,8 +210,8 @@
|
||||
for(var/datum/reagent/chem as anything in carbon_owner.reagents.reagent_list)
|
||||
chem.on_mob_dead(carbon_owner, delta_time)
|
||||
|
||||
/obj/item/organ/internal/liver/get_availability(datum/species/species)
|
||||
return !(TRAIT_NOMETABOLISM in species.inherent_traits)
|
||||
/obj/item/organ/internal/liver/get_availability(datum/species/owner_species, mob/living/owner_mob)
|
||||
return owner_species.mutantliver
|
||||
|
||||
/obj/item/organ/internal/liver/plasmaman
|
||||
name = "reagent processing crystal"
|
||||
|
||||
@@ -543,8 +543,8 @@
|
||||
owner.visible_message(span_danger("[owner] grabs [owner.p_their()] throat, struggling for breath!"), span_userdanger("You suddenly feel like you can't breathe!"))
|
||||
failed = TRUE
|
||||
|
||||
/obj/item/organ/internal/lungs/get_availability(datum/species/owner_species)
|
||||
return !(TRAIT_NOBREATH in owner_species.inherent_traits)
|
||||
/obj/item/organ/internal/lungs/get_availability(datum/species/owner_species, mob/living/owner_mob)
|
||||
return owner_species.mutantlungs
|
||||
|
||||
/obj/item/organ/internal/lungs/plasmaman
|
||||
name = "plasma filter"
|
||||
|
||||
@@ -205,8 +205,8 @@
|
||||
else
|
||||
human.remove_movespeed_modifier(/datum/movespeed_modifier/hunger)
|
||||
|
||||
/obj/item/organ/internal/stomach/get_availability(datum/species/owner_species)
|
||||
return !(NOSTOMACH in owner_species.species_traits)
|
||||
/obj/item/organ/internal/stomach/get_availability(datum/species/owner_species, mob/living/owner_mob)
|
||||
return owner_species.mutantstomach
|
||||
|
||||
///This gets called after the owner takes a bite of food
|
||||
/obj/item/organ/internal/stomach/proc/after_eat(atom/edible)
|
||||
|
||||
@@ -110,8 +110,8 @@
|
||||
/obj/item/organ/internal/tongue/could_speak_language(datum/language/language_path)
|
||||
return (language_path in languages_possible)
|
||||
|
||||
/obj/item/organ/internal/tongue/get_availability(datum/species/owner_species)
|
||||
return !(NO_TONGUE in owner_species.species_traits)
|
||||
/obj/item/organ/internal/tongue/get_availability(datum/species/owner_species, mob/living/owner_mob)
|
||||
return owner_species.mutanttongue
|
||||
|
||||
/obj/item/organ/internal/tongue/lizard
|
||||
name = "forked tongue"
|
||||
|
||||
Reference in New Issue
Block a user