mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-16 17:43:35 +01:00
@@ -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 << "<span class='warning'>You may not hold items while blood crawling!</span>"
|
||||
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("<span class='warning'>[victim] kicks free of [B] just before entering it!</span>")
|
||||
src.visible_message("[victim] kicks free of \the [src] at the last second!")
|
||||
else
|
||||
victim.loc = holder///holder
|
||||
victim.emote("scream")
|
||||
src.visible_message("<span class='warning'><b>[src] drags [victim] into [B]!</b></span>")
|
||||
src.visible_message("<span class='danger'><B>\The [src] drags [victim] into [B]!</B></span>")
|
||||
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 << "<B>You devour [kidnapped]. Your health is fully restored.</B>"
|
||||
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 << "<B>You devour [kidnapped]. Your health is fully restored.</B>"
|
||||
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 << "<span class='userdanger'>You feel teeth sink into your flesh, and the--</span>"
|
||||
kidnapped.adjustBruteLoss(1000)
|
||||
kidnapped.loc = src
|
||||
demon.consumed_mobs.Add(kidnapped)
|
||||
else
|
||||
kidnapped.ghostize()
|
||||
qdel(kidnapped)
|
||||
else
|
||||
src << "<span class='danger'>You happily devour... nothing? Your meal vanished at some point!</span>"
|
||||
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 << "<span class='warning'>Finish eating first!</span>"
|
||||
src << "<B>Finish eating first!</B>"
|
||||
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("<span class='warning'>[B] starts to bubble...</span>")
|
||||
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("<span class='warning'><B>\The [src] rises out of \the [B]!</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)
|
||||
..()
|
||||
|
||||
@@ -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 << "<B><span class ='notice'>You are not currently in the same plane of existence as the station. Ctrl+Click a blood pool to manifest.</span></B>"
|
||||
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("<span class='danger'>[src] screams in anger as it collapses into a puddle of viscera, its most recent meals spilling out of it.</span>")
|
||||
for(var/mob/living/M in consumed_mobs)
|
||||
M.loc = get_turf(src)
|
||||
new /obj/item/weapon/demonheart (src.loc)
|
||||
visible_message("<span class='danger'>The [src] screams in anger as its form collapes into a pool of viscera.</span>")
|
||||
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("<span class='warning'>[user] raises [src] to their mouth and tears into it with their teeth!</span>", \
|
||||
"<span class='danger'>An unnatural hunger consumes you. You raise [src] your mouth and devour it!</span>")
|
||||
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("<span class='warning'>[user]'s eyes flare a deep crimson!</span>", \
|
||||
"<span class='userdanger'>You feel a strange power seep into your body... you have absorbed the demon's blood-travelling powers!</span>")
|
||||
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-<span class = 'danger'> CONSUME THEM! </span>"
|
||||
user.bloodcrawl = BLOODCRAWL_EAT
|
||||
else
|
||||
user <<"<span class='warning'>...and you don't feel any different.</span>"
|
||||
qdel(src)
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 60 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 22 KiB |
Reference in New Issue
Block a user