mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-02 04:52:10 +00:00
Fixes mounted chainsaws leaving a limb if acided Adds species support for mutanthands, basically hard-equipped items like zombie claws Fixes zombies not having claws on new arms Mobs manually set to zombie species revert to human when their infection is removed Inserts organs back into the mob when a bodypart is reattached No longer generates eyes or ears when a mob changes species without having a head Todo: fix the initial problem of zombies being able to not have claws due to having a nodrop item before zombification and losing it
64 lines
2.0 KiB
Plaintext
64 lines
2.0 KiB
Plaintext
/obj/item/zombie_hand
|
|
name = "zombie claw"
|
|
desc = "A zombie's claw is its primary tool, capable of infecting \
|
|
humans, butchering all other living things to \
|
|
sustain the zombie, smashing open airlock doors and opening \
|
|
child-safe caps on bottles."
|
|
flags = NODROP|ABSTRACT|DROPDEL
|
|
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
|
icon = 'icons/effects/blood.dmi'
|
|
icon_state = "bloodhand_left"
|
|
var/icon_left = "bloodhand_left"
|
|
var/icon_right = "bloodhand_right"
|
|
hitsound = 'sound/hallucinations/growl1.ogg'
|
|
force = 20
|
|
damtype = "brute"
|
|
|
|
var/removing_airlock = FALSE
|
|
|
|
/obj/item/zombie_hand/equipped(mob/user, slot)
|
|
. = ..()
|
|
//these are intentionally inverted
|
|
var/i = user.get_held_index_of_item(src)
|
|
if(!(i % 2))
|
|
icon_state = icon_left
|
|
else
|
|
icon_state = icon_right
|
|
|
|
/obj/item/zombie_hand/afterattack(atom/target, mob/user, proximity_flag)
|
|
. = ..()
|
|
if(!proximity_flag)
|
|
return
|
|
else if(isliving(target))
|
|
if(ishuman(target))
|
|
check_infection(target, user)
|
|
else
|
|
check_feast(target, user)
|
|
|
|
/obj/item/zombie_hand/proc/check_infection(mob/living/carbon/human/target, mob/user)
|
|
CHECK_DNA_AND_SPECIES(target)
|
|
|
|
if(NOZOMBIE in target.dna.species.species_traits)
|
|
// cannot infect any NOZOMBIE subspecies (such as high functioning
|
|
// zombies)
|
|
return
|
|
|
|
var/obj/item/organ/zombie_infection/infection
|
|
infection = target.getorganslot("zombie_infection")
|
|
if(!infection)
|
|
infection = new()
|
|
infection.Insert(target)
|
|
|
|
/obj/item/zombie_hand/proc/check_feast(mob/living/target, mob/living/user)
|
|
if(target.stat == DEAD)
|
|
var/hp_gained = target.maxHealth
|
|
target.gib()
|
|
// zero as argument for no instant health update
|
|
user.adjustBruteLoss(-hp_gained, 0)
|
|
user.adjustToxLoss(-hp_gained, 0)
|
|
user.adjustFireLoss(-hp_gained, 0)
|
|
user.adjustCloneLoss(-hp_gained, 0)
|
|
user.updatehealth()
|
|
user.adjustBrainLoss(-hp_gained) // Zom Bee gibbers "BRAAAAISNSs!1!"
|
|
user.nutrition = min(user.nutrition + hp_gained, NUTRITION_LEVEL_FULL)
|