Revert to the orignal TG method of just shoving a player into the daemon
on vial break.

did the same for the event (i still like using the revenant spawns
rather then carp spawns for that, not as disoriniting to me)

Added reference to BLOODCRAWL_EAT i missed

Devouring now heals more types of damage

Removes some gore abilitys...I got overzealous in wanting
blood....Keeping the spooky demon head whisper...
No don't ask why i called it Pustle...My brain frightens me...
This commit is contained in:
Aurorablade
2015-08-06 01:56:59 -04:00
parent 79f3bf810f
commit 95565847b7
6 changed files with 37 additions and 305 deletions
+5 -46
View File
@@ -25,7 +25,7 @@
src.ExtinguishMob()
if(src.buckled)
src.buckled.unbuckle()
if(src.pulling && src.bloodcrawl == 2)
if(src.pulling && src.bloodcrawl == BLOODCRAWL_EAT)
if(istype(src.pulling, /mob/living/))
var/mob/living/victim = src.pulling
if(victim.stat == CONSCIOUS)
@@ -41,33 +41,26 @@
if(kidnapped)
src << "<B>You begin to feast on [kidnapped]. You can not move while you are doing this.</B>"
src.visible_message("<span class='warning'><B>Loud eating sounds come from the blood...</B></span>")
GibEat(kidnapped)
sleep(6)
if (animation)
qdel(animation)
playsound(get_turf(src),'sound/misc/Demon_consume.ogg', 100, 1)
sleep(30)
GibEat(kidnapped)
playsound(get_turf(src),'sound/misc/Demon_consume.ogg', 100, 1)
sleep(30)
GibEat(kidnapped)
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)
new /obj/effect/gibspawner/human(get_turf(src))///Somewhere a janitor weeps.
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++
//src.kidnapped = null
if (demon.devoured == 5)
src.mind.current.verbs += /mob/living/simple_animal/slaughter/proc/goreThrow
src.mind.current.verbs += /mob/living/simple_animal/slaughter/proc/bloodSac
src << "<span class='notice'> You have consumed enough to be able to summon Excess Gore.</span>"
else
sleep(6)
if (animation)
@@ -140,7 +133,6 @@
var/canmove = 1
density = 0
anchored = 1
//invisibility = INVISIBILITY_OBSERVER
/obj/effect/dummy/slaughter/relaymove(var/mob/user, direction)
if (!src.canmove || !direction) return
@@ -157,37 +149,4 @@
return
/obj/effect/dummy/slaughter/singularity_act(blah)
return
/obj/item/weapon/guts
name = "guts"
desc = "Ewwwwwwwwwwww"
icon = 'icons/obj/surgery.dmi'
icon_state = "innards"
//Gib helperfunc
/mob/living/proc/GibEat(var/napped)
//at some point we may eat a robot..and its gonna throw out gibs..
//don't question...When a demon drags you into a blood portal you have no idea whos gibs you are actually seeing
//...Or we can just blame bluespace.
var/atom/throwtarget = get_edge_target_turf(src.holder, get_dir(src.holder, get_step_away(src.holder, src.holder)))
if(istype(napped,/mob/living/carbon/human))
var/mob/living/carbon/human/victimType = napped
var/obj/effect/decal/cleanable/blood/gibs/gore = new victimType.species.single_gib_type(get_turf(src))
if(victimType.species.flesh_color)
gore.fleshcolor = victimType.species.flesh_color
if(victimType.species.blood_color)
gore.basecolor = victimType.species.blood_color
gore.update_icon()
spawn()//Wait for itt....
gore.throw_at(get_edge_target_turf(throwtarget,pick(alldirs)),rand(10,20),10)
else//in case we eat ian.
new /obj/effect/gibspawner/human(get_turf(src))
var/obj/tossGuts = new /obj/item/weapon/guts(get_turf(src.holder))
tossGuts.throw_at(get_edge_target_turf(throwtarget,pick(alldirs)),rand(10,20),5)
return
@@ -1,117 +0,0 @@
//yes i did stealfrom blobcode...
/obj/effect/bloodnode
name = "blood pustilue"
icon = 'icons/mob/blob.dmi'
icon_state = "blank_blob"
var/health = 100
anchored = 1
density = 1
var/lastblood = 0
var/nodecount = 0
var/datum/artifact_effect/paranoia = new /datum/artifact_effect/badfeeling
/obj/effect/bloodnode/New(loc, var/h = 100)
nodecount +=1
processing_objects.Add(src)
NodeColor()
..(loc, h)
/obj/effect/bloodnode/Destroy()
nodecount -= 1
processing_objects.Remove(src)
..()
/obj/effect/bloodnode/process()
if(lastblood == 0 || (world.time - lastblood) > 600)
//src.visible_message("pulse!")//debug
var/obj/effect/decal/cleanable/blood/splatter/blooddecal = new (src.loc)
playsound(get_turf(src), 'sound/effects/splat.ogg', 50, 1)
//throw that then use a gibspawner
new /obj/effect/gibspawner/human(get_turf(src))
var/atom/bloodtarget = get_edge_target_turf(src, get_dir(src, get_step_away(src, src)))
blooddecal.throw_at(get_edge_target_turf(bloodtarget,pick(alldirs)),rand(5,15),5)
lastblood += world.time
/obj/effect/bloodnode/proc/NodeColor()//Stealing from NEW blob code...
overlays.Cut()
var/image/I = new('icons/mob/blob.dmi', "blob")
I.color = "#7F0000"
overlays += I
var/image/C = new('icons/mob/blob.dmi', "blob_node_overlay")
C.color = "#FF4C4C"
overlays += C
/obj/effect/bloodnode/update_icon()
//src.visible_message("[health]")
if(health <= 0)
playsound(get_turf(src), 'sound/effects/gib.ogg', 50, 1)
new /obj/effect/gibspawner/human(get_turf(src))
qdel(src)
/obj/effect/bloodnode/ex_act(severity)
var/damage = 150
health -= ((damage - (severity * 5)))
update_icon()
/obj/effect/bloodnode/bullet_act(var/obj/item/projectile/Proj)
..()
health -= (Proj.damage)
update_icon()
return 0
/obj/effect/bloodnode/attackby(var/obj/item/weapon/W, var/mob/living/user, params)
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
playsound(get_turf(src), 'sound/effects/attackblob.ogg', 50, 1)
src.visible_message("<span class='danger'>The [src.name] has been attacked with \the [W][(user ? " by [user]." : ".")]</span>")
var/damage = 0
switch(W.damtype)
if("fire")
damage = (W.force)
if(istype(W, /obj/item/weapon/weldingtool))
playsound(get_turf(src), 'sound/items/Welder.ogg', 100, 1)
if("brute")
if(prob(25))
paranoia.DoEffectTouch(user)
damage = (W.force)
health -= damage
update_icon()
/obj/effect/bloodnode/attack_hand(var/mob/user)
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
if(prob(25))
paranoia.DoEffectTouch(user)
playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
var/damage = rand(5,10)
if(!damage) // Avoid divide by zero errors
return
src.visible_message("<span class='danger'>\The [src.name] has been punched by [user]!</span>")
damage = max(damage)
health -= damage
update_icon()
/obj/effect/bloodnode/attack_animal(mob/living/simple_animal/M as mob)
M.changeNext_move(CLICK_CD_MELEE)
M.do_attack_animation(src)
playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
src.visible_message("<span class='danger'>\The [src.name] has been attacked by \the [M]!</span>")
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
if(!damage) // Avoid divide by zero errors
return
damage = max(damage)
health -= damage
update_icon()
@@ -47,7 +47,7 @@
var/cooldown = 0
var/gorecooldown = 0
var/vialspawned = FALSE
var/playstyle_string = "<B>You are the Slaughter Demon, a terible creature from another existence. You have a single desire: To kill. \
var/playstyle_string = "<B>You are the Slaughter Demon, a terrible creature from another existence. You have a single desire: To kill. \
You may Ctrl+Click on blood pools to travel through them, appearing and dissaapearing from the station at will. \
Pulling a dead or critical mob while you enter a pool will pull them in with you, allowing you to feast. \
You move quickly upon leaving a pool of blood, but the material world will soon sap your strength and leave you sluggish. </B>"
@@ -57,7 +57,6 @@
..()
spawn()
if(src.mind)
src.mind.current.verbs += /mob/living/simple_animal/slaughter/proc/bloodPull
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>"
@@ -81,8 +80,8 @@
else
speed = 0
/mob/living/simple_animal/slaughter/death()
..(1)
/mob/living/simple_animal/slaughter/Die()
..()
new /obj/effect/decal/cleanable/blood (src.loc)
new /obj/effect/gibspawner/generic(get_turf(src))
new /obj/effect/gibspawner/generic(get_turf(src))
@@ -124,77 +123,6 @@
usr << "<span class='info'><b>You whisper to [M]:</b> [msg]</span>"
M << "<span class='deadsay'><b>Suddenly a strange,demonic,voice resonates in your head...</b></span><i><span class='danger'> [msg]</span></I>"
/mob/living/simple_animal/slaughter/proc/bloodPull()
set name = "Exsanguinate"
set desc = "Cuase blood to be torn out of mortals to help acess the plane.."
set category = "Daemon"
for(var/mob/living/carbon/human/H in view(10,(src.holder || src.loc)))
nearby_mortals.Add(H)
if (cooldown == 0 || world.time - cooldown > 1800)
for(var/mob/living/carbon/human/H in view(7,(src.holder || src.loc)))
nearby_mortals.Add(H)
//var/mob/living/carbon/human/M = pop(nearby_mortals)
if(nearby_mortals.len)
playsound(src.loc, pick('sound/effects/ghost.ogg','sound/effects/ghost2.ogg'), 50, 1, -3)
var/datum/artifact_effect/paranoia = new /datum/artifact_effect/badfeeling
for (var/mob/living/carbon/human/portal in nearby_mortals)
if(prob(25))
paranoia.DoEffectPulse()
var/targetPart = pick("chest","groin","head","l_arm","r_arm","r_leg","l_leg","l_hand","r_hand","l_foot","r_foot")
portal.apply_damage(rand(5, 10), BRUTE, targetPart)
portal << "<span class='notice'>\The skin on your [parse_zone(targetPart)] feels like it's ripping apart, and a stream of blood flies out.</span>"
var/obj/effect/decal/cleanable/blood/splatter/animated/aniBlood = new(portal.loc)
aniBlood.target_turf = pick(range(1, src))
aniBlood.blood_DNA = list()
aniBlood.blood_DNA[portal.dna.unique_enzymes] = portal.dna.b_type
portal.vessel.remove_reagent("blood",rand(25,50))
cooldown = world.time
else
usr << "<span class='info'>You cannot Exsanguinate mortals yet!</span>"
/mob/living/simple_animal/slaughter/proc/goreThrow(mob/target as mob in oview())
set name = "Gore Throw"
set desc = "Launch blood at some poor unsuspecting person..."
set category = "Daemon"
if (!(src.notransform))
if (gorecooldown == 0 || world.time - gorecooldown > 600)
var/obj/effect/decal/cleanable/blood/gibs/gore = new(src.loc)
gore.throw_at(target,10,5,src)
if(ishuman(target))
var/mob/living/carbon/human/H = target
//src << "[target]"//debug
src.visible_message("<span class='warning'>[src] throws gore at [target]!</span>")
H.bloody_body(target)
H.bloody_hands(target)
gorecooldown = world.time
else
usr << "<span class='info'>You need more time to do that again!</span>"
else
usr << "<span class='info'> you can only do that from the material plane!</span>"
//inverse of gore throw, can only use while phased OUT
/mob/living/simple_animal/slaughter/proc/bloodSac()
set name = "Blood Pustile"
set desc = "Summon a blood filled that expels blood."
set category = "Daemon"
if (src.notransform)
if (gorecooldown == 0 || world.time - gorecooldown > 1200)
new /obj/effect/bloodnode(src.holder)
gorecooldown = world.time
else
usr << "<span class='info'>You need more time to do that again!</span>"
else
usr << "<span class='info'> you can only do that from outside the material plane!</span>"
//////////The Loot
/obj/item/weapon/demonheart