mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-25 13:07:46 +01:00
Changes
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user