Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions modular_meta/features/spaceman_races/code/felinid_tweaks/pierce.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
// ORIGINAL FILE: code/datums/wounds/pierce.dm
//modular override for self-licking, for some reason you CAN lick someone else's wound, but can't do the same for yourself..
// fixes being unable to lick-self your bleeding wounds as felinids
/datum/wound/pierce/try_handling(mob/living/user)
var/self_licking = (user == victim)
if((!self_licking && user.pulling != victim) || !HAS_TRAIT(user, TRAIT_WOUND_LICKER) || !victim.try_inject(user, injection_flags = INJECT_TRY_SHOW_ERROR_MESSAGE))
return FALSE
if(!isnull(user.hud_used?.zone_select) && user.zone_selected != limb.body_zone)
return FALSE

if(DOING_INTERACTION_WITH_TARGET(user, victim))
to_chat(user, span_warning("You're already interacting with [victim]!"))
return
if(iscarbon(user))
var/mob/living/carbon/carbon_user = user
if(carbon_user.is_mouth_covered())
to_chat(user, span_warning("Your mouth is covered, you can't lick [victim]'s wounds!"))
return
if(!carbon_user.get_organ_slot(ORGAN_SLOT_TONGUE))
to_chat(user, span_warning("You can't lick wounds without a tongue!"))
return

lick_wounds(user)
return TRUE

/datum/wound/pierce/proc/disease_chance(mob/living/target)
if(isfelinid(target))
return 40 // all cats are friends - they're immune
if(ishumanbasic(target))
return 65 // humans are friends!! :3 - and they're very simillar to us, thus you get lower chance
return 80 // other races suck, duh!! you get disease!
// now properly infects the [victim] instead of the [user] felinid
/datum/wound/pierce/proc/lick_wounds(mob/living/user)
// transmission is one way patient -> felinid since google said cat saliva is antiseptic or whatever, and also because felinids are already risking getting beaten for this even without people suspecting they're spreading a deathvirus
for(var/datum/disease/iter_disease as anything in user.diseases)
if(iter_disease.spread_flags & (DISEASE_SPREAD_SPECIAL | DISEASE_SPREAD_NON_CONTAGIOUS))
continue
if(prob(disease_chance(victim)))
victim.ForceContractDisease(iter_disease)

user.visible_message(span_notice("[user] begins licking the wounds on [victim]'s [limb.plaintext_zone]."), span_notice("You begin licking the wounds on [victim]'s [limb.plaintext_zone]..."), ignored_mobs=victim)
to_chat(victim, span_notice("[user] begins to lick the wounds on your [limb.plaintext_zone]."))
if(!do_after(user, base_treat_time, target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists))))
return

user.visible_message(span_notice("[user] licks the wounds on [victim]'s [limb.plaintext_zone]."), span_notice("You lick some of the wounds on [victim]'s [limb.plaintext_zone]"), ignored_mobs=victim)
to_chat(victim, span_green("[user] licks the wounds on your [limb.plaintext_zone]!"))
var/mob/victim_stored = victim
adjust_blood_flow(-0.5)

if(blood_flow >= 0 || !QDELETED(src)) // for some reason wound/pierce doesn't use the same bleeding logic as wound/slash do..
try_handling(user)
else
to_chat(user, span_green("You successfully lower the severity of [user == victim_stored ? "your" : "[victim_stored]'s"] cuts."))
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@

/datum/wound/slash/flesh/proc/disease_chance(mob/living/target)
if(isfelinid(target))
return 15 // all cats are friends - they're immune
return 40 // all cats are friends - they're immune
if(ishumanbasic(target))
return 45 // humans are friends!! :3 - and they're very simillar to us, thus you get lower chance
return 65 // humans are friends!! :3 - and they're very simillar to us, thus you get lower chance
return 80 // other races suck, duh!! you get disease!
// now properly infects the [victim] instead of the [user] felinid
/datum/wound/slash/flesh/lick_wounds(mob/living/user)
Expand Down
3 changes: 2 additions & 1 deletion modular_meta/features/spaceman_races/includes.dm
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "code\felinid_tweaks\wound_licking.dm"
#include "code\felinid_tweaks\pierce.dm"
#include "code\felinid_tweaks\slash.dm"

/datum/modpack/spaceman_races
id = "RACES"
Expand Down
Loading