Xenobiology QOL tweaks (#30062)

* Xenobiology QOL tweaks

* fixes

* Update generic.dm

* name tweak

* Update code/__HELPERS/trait_helpers.dm

Co-authored-by: warriorstar-orion <orion@snowfrost.garden>
Signed-off-by: Kyani <65205627+EmeraldCandy@users.noreply.github.com>

---------

Signed-off-by: Kyani <65205627+EmeraldCandy@users.noreply.github.com>
Co-authored-by: warriorstar-orion <orion@snowfrost.garden>
This commit is contained in:
Kyani
2025-08-25 17:51:27 +00:00
committed by GitHub
co-authored by warriorstar-orion
parent ad159dc4e0
commit e6e5f5ce36
6 changed files with 15 additions and 2 deletions
+3
View File
@@ -316,6 +316,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
/// A surgical tool; If a surgical tool has this flag it can be used as an alternative to an open hand in surgery
#define TRAIT_SURGICAL_OPEN_HAND "surgical_hand_alternative"
/// Surgical tools with this trait have their prob_success set to 100 (but is still able to fail from other factors)
#define TRAIT_SURGICAL_CANNOT_FAIL "surgical_cannot_fail"
/// A wearable item that protects the covered areas from viral infection
#define TRAIT_ANTI_VIRAL "anti_viral"
@@ -446,6 +446,10 @@
phrases += "What happened?"
if(!slimes_near)
phrases += "Lonely..."
if(trained && prob(3))
phrases += "Treat? Have treat?"
phrases += "Can have treat?"
phrases += "Treat?..."
if(stat == CONSCIOUS)
say (pick(phrases))
@@ -417,6 +417,7 @@
S.use(5)
if(Discipline)
trained = TRUE
name = "tamed [name]"
else
discipline_slime(user, positive_reinforcement = TRUE)
return ITEM_INTERACT_COMPLETE
@@ -431,7 +432,8 @@
Discipline = 0
return ITEM_INTERACT_COMPLETE
if(trained && prob(20)) // trained slimes are more resistant to losing discipline
trained = 0
trained = FALSE
name = initial(name)
visible_message("<span class='warning'>[src] gets spooked and cowers from [user]!</span>")
/mob/living/simple_animal/slime/attacked_by(obj/item/I, mob/living/user)
@@ -455,6 +457,7 @@
if(trained && prob(75))
say("Ow! HEY!!!", pick(speak_emote))
trained = FALSE
name = initial(name)
rabid = TRUE
if(!client && Target && volume >= 3) // Like cats
Target = null
@@ -26,6 +26,7 @@
/obj/item/dissector/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_SURGICAL, ROUNDSTART_TRAIT)
ADD_TRAIT(src, TRAIT_SURGICAL_CANNOT_FAIL, ROUNDSTART_TRAIT)
AddComponent(/datum/component/surgery_initiator)
RegisterSignal(src, COMSIG_BIT_ATTACH, PROC_REF(add_bit))
RegisterSignal(src, COMSIG_CLICK_ALT, PROC_REF(remove_bit))
-1
View File
@@ -12,7 +12,6 @@
allowed_tools = list(
TOOL_SCALPEL = 100,
/obj/item/kitchen/knife = 90,
TOOL_DISSECTOR = 75,
/obj/item/kitchen/knife/shiv = 70,
/obj/item/shard = 60,
TOOL_WIRECUTTER = 35,
+3
View File
@@ -375,6 +375,9 @@
surgery.step_in_progress = FALSE
return SURGERY_INITIATE_INTERRUPTED
if(HAS_TRAIT(tool, TRAIT_SURGICAL_CANNOT_FAIL))
prob_success = 100 // going to snowflake this in otherwise dissections fail repeatedtly with "proper" tools.
var/chem_check_result = chem_check(target)
var/pain_mod = deal_pain(user, target, target_zone, tool, surgery)
prob_success *= pain_mod