This commit is contained in:
izac112
2020-05-30 16:01:43 +02:00
57 changed files with 19737 additions and 22761 deletions
@@ -44,6 +44,20 @@ var/global/mob/living/carbon/human/dummy/mannequin/sleevemate_mob
/obj/item/device/sleevemate/attack(mob/living/M, mob/living/user)
// Gather potential subtargets
var/list/choices = list(M)
if(istype(M))
for(var/belly in M.vore_organs)
var/obj/belly/B = belly
for(var/mob/living/carbon/human/H in B) // I do want an istype
choices += H
// Subtargets
if(choices.len > 1)
var/mob/living/new_M = input(user, "Ambiguous target. Please validate target:", "Target Validation", M) as null|anything in choices
if(!new_M || !M.Adjacent(user))
return
M = new_M
if(ishuman(M))
scan_mob(M, user)
else
+22 -1
View File
@@ -24,6 +24,11 @@
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
return 1
var/available = get_amount()
if(!available)
to_chat(user, "<span class='warning'>There's not enough [uses_charge ? "charge" : "items"] left to use that!</span>")
return 1
if (istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting)
@@ -101,11 +106,12 @@
to_chat(user, "<span class='warning'>The wounds on [M]'s [affecting.name] have already been bandaged.</span>")
return 1
else
var/available = get_amount()
user.visible_message("<span class='notice'>\The [user] starts bandaging [M]'s [affecting.name].</span>", \
"<span class='notice'>You start bandaging [M]'s [affecting.name].</span>" )
var/used = 0
for (var/datum/wound/W in affecting.wounds)
if (W.internal)
if(W.internal)
continue
if(W.bandaged)
continue
@@ -119,6 +125,10 @@
to_chat(user, "<span class='warning'>The wounds on [M]'s [affecting.name] have already been bandaged.</span>")
return 1
if(used >= available)
to_chat(user, "<span class='warning'>You run out of [src]!</span>")
break
if (W.current_stage <= W.max_bleeding_stage)
user.visible_message("<span class='notice'>\The [user] bandages \a [W.desc] on [M]'s [affecting.name].</span>", \
"<span class='notice'>You bandage \a [W.desc] on [M]'s [affecting.name].</span>" )
@@ -164,6 +174,7 @@
to_chat(user, "<span class='warning'>The wounds on [M]'s [affecting.name] have already been bandaged.</span>")
return 1
else
var/available = get_amount()
user.visible_message("<span class='notice'>\The [user] starts treating [M]'s [affecting.name].</span>", \
"<span class='notice'>You start treating [M]'s [affecting.name].</span>" )
var/used = 0
@@ -182,6 +193,10 @@
to_chat(user, "<span class='warning'>The wounds on [M]'s [affecting.name] have already been bandaged.</span>")
return 1
if(used >= available)
to_chat(user, "<span class='warning'>You run out of [src]!</span>")
break
if (W.current_stage <= W.max_bleeding_stage)
user.visible_message("<span class='notice'>\The [user] bandages \a [W.desc] on [M]'s [affecting.name].</span>", \
"<span class='notice'>You bandage \a [W.desc] on [M]'s [affecting.name].</span>" )
@@ -271,6 +286,7 @@
to_chat(user, "<span class='warning'>The wounds on [M]'s [affecting.name] have already been treated.</span>")
return 1
else
var/available = get_amount()
user.visible_message("<span class='notice'>\The [user] starts treating [M]'s [affecting.name].</span>", \
"<span class='notice'>You start treating [M]'s [affecting.name].</span>" )
var/used = 0
@@ -287,6 +303,11 @@
if(affecting.is_bandaged() && affecting.is_disinfected()) // We do a second check after the delay, in case it was bandaged after the first check.
to_chat(user, "<span class='warning'>The wounds on [M]'s [affecting.name] have already been bandaged.</span>")
return 1
if(used >= available)
to_chat(user, "<span class='warning'>You run out of [src]!</span>")
break
if (W.current_stage <= W.max_bleeding_stage)
user.visible_message("<span class='notice'>\The [user] cleans \a [W.desc] on [M]'s [affecting.name] and seals the edges with bioglue.</span>", \
"<span class='notice'>You clean and seal \a [W.desc] on [M]'s [affecting.name].</span>" )
+56 -1
View File
@@ -18,4 +18,59 @@
if(9)
icon_state = "[initial(icon_state)]_9"
else
icon_state = "[initial(icon_state)]_10"
icon_state = "[initial(icon_state)]_10"
/obj/item/stack/medical/advanced/clotting
name = "liquid bandage kit"
singular_name = "liquid bandage kit"
desc = "A spray that stops bleeding using a patented chemical cocktail. Non-refillable. Only one use required per patient."
icon_state = "clotkit"
heal_burn = 0
heal_brute = 2 // Only applies to non-humans, to give this some slight application on animals
origin_tech = list(TECH_BIO = 3)
apply_sounds = list('sound/effects/spray.ogg', 'sound/effects/spray2.ogg', 'sound/effects/spray3.ogg')
amount = 5
max_amount = 5
/obj/item/stack/medical/advanced/clotting/attack(mob/living/carbon/human/H, var/mob/user)
if(..())
return 1
if(!istype(H))
return
var/clotted = 0
var/too_far_gone = 0
for(var/org in H.organs) //'organs' is just external organs, as opposed to 'internal_organs'
var/obj/item/organ/external/affecting = org
// No amount of clotting is going to help you here.
if(affecting.open)
too_far_gone++
continue
for(var/wnd in affecting.wounds)
var/datum/wound/W = wnd
// No need
if(W.bandaged)
continue
// It's not that amazing
if(W.internal)
continue
if(W.current_stage <= W.max_bleeding_stage)
clotted++
W.bandage()
var/healmessage = "<span class='notice'>You spray [src] onto [H], sealing [clotted ? clotted : "no"] wounds.</span>"
if(too_far_gone)
healmessage += " <span class='warning'>You can see some wounds that are too large where the spray is not taking effect.</span>"
to_chat(user, healmessage)
use(1)
playsound(src, pick(apply_sounds), 25)
update_icon()
/obj/item/stack/medical/advanced/clotting/update_icon()
icon_state = "[initial(icon_state)]_[amount]"
+1 -4
View File
@@ -364,10 +364,7 @@
return ..()
/obj/item/stack/proc/combine_in_loc()
for(var/obj/item/stack/S in loc)
if(S == src)
continue
S.transfer_to(src) // them to us, so if we're being pulled, we can keep being pulled
return //STUBBED for now, as it seems to randomly delete stacks
/obj/item/stack/dropped(atom/old_loc)
. = ..()