diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index a0035761ded..8f2cfc88a03 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -3,20 +3,6 @@ #define BLOODCRAWL_EAT 2 /mob/living/proc/phaseout(var/obj/effect/decal/cleanable/B) - - if(iscarbon(src)) - var/mob/living/carbon/C = src - if(C.l_hand || C.r_hand) - C << "You may not hold items while blood crawling!" - return 0 - var/obj/item/weapon/bloodcrawl/B1 = new(C) - var/obj/item/weapon/bloodcrawl/B2 = new(C) - B1.icon_state = "bloodhand_left" - B2.icon_state = "bloodhand_right" - C.put_in_hands(B1) - C.put_in_hands(B2) - C.regenerate_icons() - var/mob/living/kidnapped = null var/turf/mobloc = get_turf(src.loc) var/turf/bloodloc = get_turf(B.loc) @@ -43,11 +29,10 @@ if(istype(src.pulling, /mob/living/)) var/mob/living/victim = src.pulling if(victim.stat == CONSCIOUS) - src.visible_message("[victim] kicks free of [B] just before entering it!") + src.visible_message("[victim] kicks free of \the [src] at the last second!") else victim.loc = holder///holder - victim.emote("scream") - src.visible_message("[src] drags [victim] into [B]!") + src.visible_message("\The [src] drags [victim] into [B]!") kidnapped = victim flick("jaunt",animation) src.loc = holder @@ -59,44 +44,32 @@ sleep(6) if (animation) qdel(animation) - for(var/i = 3; i > 0; i--) - playsound(get_turf(src),'sound/misc/Demon_consume.ogg', 100, 1) - sleep(30) - if (kidnapped) - src << "You devour [kidnapped]. Your health is fully restored." - src.adjustBruteLoss(-1000) - src.adjustFireLoss(-1000) - src.adjustOxyLoss(-1000) - src.adjustToxLoss(-1000) + playsound(get_turf(src),'sound/misc/Demon_consume.ogg', 100, 1) + sleep(30) + playsound(get_turf(src),'sound/misc/Demon_consume.ogg', 100, 1) + sleep(30) + playsound(get_turf(src),'sound/misc/Demon_consume.ogg', 100, 1) + sleep(30) + src << "You devour [kidnapped]. Your health is fully restored." + src.adjustBruteLoss(-1000) + src.adjustFireLoss(-1000) + src.adjustOxyLoss(-1000) + src.adjustToxLoss(-1000) + kidnapped.ghostize() + qdel(kidnapped) + if (istype(src, /mob/living/simple_animal/slaughter)) //rason, do not want humans to get this - if (istype(src, /mob/living/simple_animal/slaughter)) //rason, do not want humans to get this - - var/mob/living/simple_animal/slaughter/demon = src - demon.devoured++ - kidnapped << "You feel teeth sink into your flesh, and the--" - kidnapped.adjustBruteLoss(1000) - kidnapped.loc = src - demon.consumed_mobs.Add(kidnapped) - else - kidnapped.ghostize() - qdel(kidnapped) - else - src << "You happily devour... nothing? Your meal vanished at some point!" + var/mob/living/simple_animal/slaughter/demon = src + demon.devoured++ else sleep(6) if (animation) qdel(animation) src.notransform = 0 -/obj/item/weapon/bloodcrawl - name = "blood crawl" - desc = "You are unable to hold anything while in this form." - icon = 'icons/effects/blood.dmi' - flags = NODROP - /mob/living/proc/phasein(var/obj/effect/decal/cleanable/B) if(src.notransform) - src << "Finish eating first!" + src << "Finish eating first!" else var/atom/movable/overlay/animation = new /atom/movable/overlay( B.loc ) animation.name = "odd blood" @@ -107,34 +80,19 @@ animation.layer = 5 animation.master = B.loc animation.dir = src.dir - B.visible_message("[B] starts to bubble...") - if(!do_after(src, 20, target = B)) - return - if(!B) - return + flick("jauntup",animation) src.loc = B.loc src.client.eye = src - if (prob(25) && istype(src, /mob/living/simple_animal/slaughter)) + if (prob(25)) var/list/voice = list('sound/hallucinations/behind_you1.ogg','sound/hallucinations/im_here1.ogg','sound/hallucinations/turn_around1.ogg','sound/hallucinations/i_see_you1.ogg') playsound(get_turf(src), pick(voice),50, 1, -1) src.visible_message("\The [src] rises out of \the [B]!") playsound(get_turf(src), 'sound/misc/exit_blood.ogg', 100, 1, -1) - flick("jauntup",animation) qdel(src.holder) src.holder = null - if(iscarbon(src)) - var/mob/living/carbon/C = src - for(var/obj/item/weapon/bloodcrawl/BC in C) - C.flags = null - C.unEquip(BC) - qdel(BC) - var/oldcolor = src.color - src.color = B.color - sleep(6)//wait for animation to finish + sleep(6) if(animation) qdel(animation) - spawn(24)//was 30, accounting for the above spawn 6 - src.color = oldcolor /obj/effect/decal/cleanable/blood/CtrlClick(mob/living/user) ..() diff --git a/code/modules/mob/living/simple_animal/slaughter/slaughter.dm b/code/modules/mob/living/simple_animal/slaughter/slaughter.dm index 5bde734b34e..a54b0e0e1e2 100644 --- a/code/modules/mob/living/simple_animal/slaughter/slaughter.dm +++ b/code/modules/mob/living/simple_animal/slaughter/slaughter.dm @@ -1,9 +1,9 @@ //////////////////The Monster /mob/living/simple_animal/slaughter - name = "slaughter demon" - real_name = "slaughter demon" - desc = "A large, menacing creature covered in armored black scales. You should run." + name = "Slaughter Demon" + real_name = "Slaughter Demon" + desc = "You should run." speak = list("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri", "orkan", "allaq") speak_emote = list("gurgles") emote_hear = list("wails","screeches") @@ -43,7 +43,6 @@ var/devoured = 0 - var/list/consumed_mobs = list() var/list/nearby_mortals = list() var/cooldown = 0 @@ -62,7 +61,6 @@ src.mind.current.verbs += /mob/living/simple_animal/slaughter/proc/slaughterWhisper src << src.playstyle_string src << "You are not currently in the same plane of existence as the station. Ctrl+Click a blood pool to manifest." - src << 'sound/misc/demon_dies.ogg' if(!(vialspawned)) var/datum/objective/slaughter/objective = new var/datum/objective/demonFluff/fluffObjective = new @@ -88,16 +86,9 @@ new /obj/effect/decal/cleanable/blood (src.loc) new /obj/effect/gibspawner/generic(get_turf(src)) new /obj/effect/gibspawner/generic(get_turf(src)) - var/obj/effect/decal/cleanable/blood/innards = new (get_turf(src)) - innards.icon = 'icons/obj/surgery.dmi' - innards.icon_state = "innards" - innards.name = "pile of viscera" - innards.desc = "A repulsive pile of guts and gore." - new /obj/item/organ/heart/demon(src.loc) playsound(get_turf(src),'sound/misc/demon_dies.ogg', 200, 1) - visible_message("[src] screams in anger as it collapses into a puddle of viscera, its most recent meals spilling out of it.") - for(var/mob/living/M in consumed_mobs) - M.loc = get_turf(src) + new /obj/item/weapon/demonheart (src.loc) + visible_message("The [src] screams in anger as its form collapes into a pool of viscera.") ghostize() qdel(src) @@ -106,7 +97,7 @@ /mob/living/simple_animal/slaughter/phasein() ..() speed = 0 - boost = world.time + 60 + boost = world.time + 30 ////////////////////The Powers @@ -137,30 +128,23 @@ //////////The Loot -//The loot from killing a slaughter demon - can be consumed to allow the user to blood crawl -/obj/item/organ/heart/demon - name = "demon heart" - desc = "Still it beats furiously, emanating an aura of utter hate." +/obj/item/weapon/demonheart + name = "demon's heart" + desc = "It's still faintly beating with rage" icon = 'icons/obj/surgery.dmi' - icon_state = "demon_heart" + icon_state = "heart-on" origin_tech = "combat=5;biotech=8" -/obj/item/organ/internal/heart/demon/attack(mob/M, mob/living/carbon/user, obj/target) - if(M != user) - return ..() - user.visible_message("[user] raises [src] to their mouth and tears into it with their teeth!", \ - "An unnatural hunger consumes you. You raise [src] your mouth and devour it!") - playsound(user, 'sound/misc/Demon_consume.ogg', 50, 1) +/obj/item/weapon/demonheart/attack_self(mob/living/user) + visible_message("[user] feasts upon the [src].") if(user.bloodcrawl == 0) - user.visible_message("[user]'s eyes flare a deep crimson!", \ - "You feel a strange power seep into your body... you have absorbed the demon's blood-travelling powers!") + user << "You absorb some of the demon's power!" user.bloodcrawl = BLOODCRAWL else if(user.bloodcrawl == 1) + user << "You absorb some of the demon's power!" user << "You feel diffr- CONSUME THEM! " user.bloodcrawl = BLOODCRAWL_EAT - else - user <<"...and you don't feel any different." qdel(src) diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 1c971f8d3f4..c32e3c508a4 100644 Binary files a/icons/effects/blood.dmi and b/icons/effects/blood.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 011fb04b816..9688bbdccc5 100644 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ