mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-29 06:58:30 +01:00
Antiseptic Mlems take 3
This commit is contained in:
@@ -109,3 +109,12 @@
|
||||
desc = "Makes your nice clawed, scaled, hooved, armored, or otherwise just awfully calloused feet immune to glass shards."
|
||||
cost = 1
|
||||
var_changes = list("flags" = NO_MINOR_CUT) //Checked the flag is only used by shard stepping.
|
||||
|
||||
/datum/trait/antiseptic_saliva
|
||||
name = "Antiseptic Saliva"
|
||||
desc = "Your saliva has especially strong antiseptic properties that can be used to heal small wounds."
|
||||
cost = 1
|
||||
|
||||
/datum/trait/antiseptic_saliva/apply(var/datum/species/S,var/mob/living/carbon/human/H)
|
||||
..()
|
||||
H.verbs |= /mob/living/carbon/human/verb/lick_wounds
|
||||
@@ -0,0 +1,78 @@
|
||||
/mob/living/carbon/human/verb/lick_wounds(var/mob/living/carbon/M in living_mobs(1))
|
||||
set name = "Lick Wounds"
|
||||
set category = "Abilities"
|
||||
set desc = "Disinfect and heal small wounds with your saliva."
|
||||
|
||||
if(nutrition < 50)
|
||||
to_chat(src, "<span class='warning'>You need more energy to produce antiseptic enzymes. Eat something and try again.</span>")
|
||||
return
|
||||
|
||||
if ( ! (istype(src, /mob/living/carbon/human) || \
|
||||
istype(src, /mob/living/silicon)) )
|
||||
src << "<span class='warning'>If you even have a tongue, it doesn't work that way.</span>"
|
||||
return
|
||||
|
||||
if (istype(M, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/affecting = H.get_organ(src.zone_sel.selecting)
|
||||
|
||||
if(!affecting)
|
||||
to_chat(src, "<span class='warning'>No body part there to work on!</span>")
|
||||
return
|
||||
|
||||
if(affecting.organ_tag == BP_HEAD)
|
||||
if(H.head && istype(H.head,/obj/item/clothing/head/helmet/space))
|
||||
to_chat(src, "<span class='warning'>You can't seem to lick through [H.head]!</span>")
|
||||
return
|
||||
|
||||
else
|
||||
if(H.wear_suit && istype(H.wear_suit,/obj/item/clothing/suit/space))
|
||||
to_chat(src, "<span class='warning'>You can't lick your way through [H.wear_suit]!</span>")
|
||||
return
|
||||
|
||||
if(affecting.robotic == ORGAN_ROBOT)
|
||||
to_chat(src, "<span class='warning'>You don't think your spit will help a robotic limb.</span>")
|
||||
return
|
||||
|
||||
if(affecting.robotic >= ORGAN_LIFELIKE)
|
||||
to_chat(src, "<span class='warning'>You lick [M]'s [affecting.name], but it seems to have no effect...</span>")
|
||||
return
|
||||
|
||||
if(affecting.open)
|
||||
to_chat(src, "<span class='notice'>The [affecting.name] is cut open, you don't think your spit will help them!</span>")
|
||||
return
|
||||
|
||||
if(affecting.is_bandaged() && affecting.is_salved())
|
||||
to_chat(src, "<span class='warning'>The wounds on [M]'s [affecting.name] have already been treated.</span>")
|
||||
return
|
||||
|
||||
else
|
||||
visible_message("<span class='notice'>\The [src] starts licking the wounds on [M]'s [affecting.name] clean.</span>", \
|
||||
"<span class='notice'>You start licking the wounds on [M]'s [affecting.name] clean.</span>" )
|
||||
|
||||
for (var/datum/wound/W in affecting.wounds)
|
||||
|
||||
if(W.bandaged && W.salved && W.disinfected)
|
||||
continue
|
||||
|
||||
if(!do_mob(src, M, W.damage/5))
|
||||
to_chat(src, "<span class='notice'>You must stand still to clean wounds.</span>")
|
||||
break
|
||||
|
||||
if(affecting.is_bandaged() && affecting.is_salved()) // We do a second check after the delay, in case it was bandaged after the first check.
|
||||
to_chat(src, "<span class='warning'>The wounds on [M]'s [affecting.name] have already been treated.</span>")
|
||||
return
|
||||
|
||||
else
|
||||
visible_message("<span class='notice'>\The [src] [pick("slathers \a [W.desc] on [M]'s [affecting.name] with their spit.",
|
||||
"drags their tongue across \a [W.desc] on [M]'s [affecting.name].",
|
||||
"drips saliva onto \a [W.desc] on [M]'s [affecting.name].",
|
||||
"uses their tongue to disinfect \a [W.desc] on [M]'s [affecting.name].",
|
||||
"licks \a [W.desc] on [M]'s [affecting.name], cleaning it.")]</span>", \
|
||||
"<span class='notice'>You treat \a [W.desc] on [M]'s [affecting.name] with your antiseptic saliva.</span>" )
|
||||
nutrition -= 20
|
||||
W.salve()
|
||||
W.bandage()
|
||||
W.disinfect()
|
||||
H.UpdateDamageIcon()
|
||||
playsound(src.loc, 'sound/effects/ointment.ogg', 25)
|
||||
@@ -2055,6 +2055,7 @@
|
||||
#include "code\modules\mob\living\carbon\carbon_defines.dm"
|
||||
#include "code\modules\mob\living\carbon\carbon_powers.dm"
|
||||
#include "code\modules\mob\living\carbon\give.dm"
|
||||
#include "code\modules\mob\living\carbon\lick_wounds.dm"
|
||||
#include "code\modules\mob\living\carbon\resist.dm"
|
||||
#include "code\modules\mob\living\carbon\shock.dm"
|
||||
#include "code\modules\mob\living\carbon\taste.dm"
|
||||
|
||||
Reference in New Issue
Block a user