diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm
index 1ba84f91ecd..d3b96551e16 100644
--- a/code/game/gamemodes/antag_spawner.dm
+++ b/code/game/gamemodes/antag_spawner.dm
@@ -76,54 +76,24 @@
desc = "A magically infused bottle of blood, distilled from countless murder victims. Used in unholy rituals to attract horrifying creatures."
icon = 'icons/obj/wizard.dmi'
icon_state = "vial"
- var/checking = 0
+
/obj/item/weapon/antag_spawner/slaughter_demon/attack_self(mob/user as mob)
- //var/list/demon_candidates = get_candidates(BE_ALIEN)
+ var/list/demon_candidates = get_candidates(BE_ALIEN)
if(user.z == ZLEVEL_CENTCOMM)//this is to make sure the wizard does NOT summon a demon from the Den..
user << "You should probably wait until you reach the station."
return
- if(!checking)
- user << "You ready yourself to shatter the bottle..."
- get_candidate_answer(user, get_candidates(BE_ALIEN))
+ if(demon_candidates.len > 0)
+ used = 1
+ var/client/C = pick(demon_candidates)
+ spawn_antag(C, get_turf(src.loc), "Slaughter Demon")
+ user << "You shatter the bottle, no turning back now!"
+ user << "You sense a dark presence lurking just beyond the veil..."
+ playsound(user.loc, 'sound/effects/Glassbr1.ogg', 100, 1)
+ qdel(src)
else
- user << "You are already thinking about shattering the bottle."
- return
-
-
-/obj/item/weapon/antag_spawner/slaughter_demon/proc/get_candidate_answer(mob/user as mob, var/list/possiblecandidates = list())
- var/time_passed = world.time
- if(possiblecandidates.len <= 0)
- checking = 0
- user << "You can't seem to work up the nerve to shatter the bottle. Perhaps you should try again later.."
- return
- else
- var/demon_candidates = pick(possiblecandidates)
- spawn(0)
- var/input = alert(demon_candidates,"Do you want to spawn in as a Slaughter Demon?","Please answer in thirty seconds!","Yes","No")
- if(input == "Yes" && used == 0)
- if((world.time-time_passed)>300)
- return
- possiblecandidates -= demon_candidates
- used = 1
- checking = 0
- spawn_antag(demon_candidates, get_turf(src.loc), "Slaughter Demon",user)
- user << "You shatter the bottle, no turning back now!"
- user << "You sense a dark presence lurking just beyond the veil..."
- playsound(user.loc, 'sound/effects/Glassbr1.ogg', 100, 1)
- playsound(user.loc,'sound/hallucinations/im_here1.ogg', 50, -1)//Paradise Port:THIS IS OVERKILL -AB
- qdel(src)
- else
- possiblecandidates -= demon_candidates
- get_candidate_answer(user, possiblecandidates)
- return
-
- sleep(300)
- if(checking)
- possiblecandidates -= demon_candidates
- get_candidate_answer(user, possiblecandidates)
- return
+ user << "You can't seem to work up the nerve to shatter the bottle. Perhaps you should try again later."
/obj/item/weapon/antag_spawner/slaughter_demon/spawn_antag(var/client/C, var/turf/T, var/type = "", mob/user as mob)
@@ -133,20 +103,18 @@
S.vialspawned = TRUE
S.holder = holder
S.key = C.key
- if(S.mind)
- S.mind.assigned_role = "Slaughter Demon"
- S.mind.special_role = "Slaughter Demon"
- ticker.mode.traitors += S.mind
- var/datum/objective/assassinate/KillDaWiz = new /datum/objective/assassinate
- KillDaWiz.owner = S.mind
- KillDaWiz.target = user.mind
- KillDaWiz.explanation_text = "Kill [user.real_name], the one who was foolish enough to summon you."
- S.mind.objectives += KillDaWiz
- var/datum/objective/KillDaCrew = new /datum/objective
- KillDaCrew.owner = S.mind
- KillDaCrew.explanation_text = "Kill everyone else while you're at it."
- S.mind.objectives += KillDaCrew
- //Paradise port:i changed ther verbage..might want to do so on the above kill objective. Maybe save the wizard for last...
- S.mind.objectives += KillDaCrew
- S << "Objective #[1]: [KillDaWiz.explanation_text]"
- S << "Objective #[2]: [KillDaCrew.explanation_text]"
\ No newline at end of file
+ S.mind.assigned_role = "Slaughter Demon"
+ S.mind.special_role = "Slaughter Demon"
+ ticker.mode.traitors += S.mind
+ var/datum/objective/assassinate/KillDaWiz = new /datum/objective/assassinate
+ KillDaWiz.owner = S.mind
+ KillDaWiz.target = user.mind
+ KillDaWiz.explanation_text = "Kill [user.real_name], the one who was foolish enough to summon you."
+ S.mind.objectives += KillDaWiz
+ var/datum/objective/KillDaCrew = new /datum/objective
+ KillDaCrew.owner = S.mind
+ KillDaCrew.explanation_text = "Kill everyone else while you're at it."
+ S.mind.objectives += KillDaCrew
+ S.mind.objectives += KillDaCrew
+ S << "Objective #[1]: [KillDaWiz.explanation_text]"
+ S << "Objective #[2]: [KillDaCrew.explanation_text]"
\ No newline at end of file
diff --git a/code/modules/events/slaughterevent.dm b/code/modules/events/slaughterevent.dm
index 5d0c5304be2..7b39f035010 100644
--- a/code/modules/events/slaughterevent.dm
+++ b/code/modules/events/slaughterevent.dm
@@ -1,24 +1,19 @@
-/datum/event/spawn_slaughter//Paradise port:Changed from round_event to event, i was getting errors
+/datum/event/spawn_slaughter
var/key_of_slaughter
/datum/event/spawn_slaughter/proc/get_slaughter(var/end_if_fail = 0)
- var/time_passed = world.time
key_of_slaughter = null
- if(!key_of_slaughter)//Paradise port change:I added in the whole do you want to be this question
+ if(!key_of_slaughter)
var/list/candidates = get_candidates(BE_ALIEN)
if(!candidates.len)
if(end_if_fail)
return 0
return find_slaughter()
var/client/C = pick(candidates)
- var/input = alert(C,"Do you want to spawn in as a Slaughter Demon?","Please answer in thirty seconds!","Yes","No")
- if(input == "Yes")
- if((world.time-time_passed)>300)
- return
- key_of_slaughter = C.key
+ key_of_slaughter = C.key
if(!key_of_slaughter)
if(end_if_fail)
return 0
diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm
index eaaa2ab23e7..76c71cfeb87 100644
--- a/code/modules/mob/living/bloodcrawl.dm
+++ b/code/modules/mob/living/bloodcrawl.dm
@@ -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 << "You begin to feast on [kidnapped]. You can not move while you are doing this."
src.visible_message("Loud eating sounds come from the blood...")
- 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 << "You devour [kidnapped]. Your health is fully restored."
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 << " You have consumed enough to be able to summon Excess Gore."
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
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/slaughter/bloodnode.dm b/code/modules/mob/living/simple_animal/slaughter/bloodnode.dm
deleted file mode 100644
index 15825362eff..00000000000
--- a/code/modules/mob/living/simple_animal/slaughter/bloodnode.dm
+++ /dev/null
@@ -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("The [src.name] has been attacked with \the [W][(user ? " by [user]." : ".")]")
- 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("\The [src.name] has been punched by [user]!")
- 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("\The [src.name] has been attacked by \the [M]!")
- 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()
-
diff --git a/code/modules/mob/living/simple_animal/slaughter/slaughter.dm b/code/modules/mob/living/simple_animal/slaughter/slaughter.dm
index 02af98027c3..1332d75b1bf 100644
--- a/code/modules/mob/living/simple_animal/slaughter/slaughter.dm
+++ b/code/modules/mob/living/simple_animal/slaughter/slaughter.dm
@@ -47,7 +47,7 @@
var/cooldown = 0
var/gorecooldown = 0
var/vialspawned = FALSE
- var/playstyle_string = "You are the Slaughter Demon, a terible creature from another existence. You have a single desire: To kill. \
+ var/playstyle_string = "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. "
@@ -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 << "You are not currently in the same plane of existence as the station. Ctrl+Click a blood pool to manifest."
@@ -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 << "You whisper to [M]: [msg]"
M << "Suddenly a strange,demonic,voice resonates in your head... [msg]"
-
-/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 << "\The skin on your [parse_zone(targetPart)] feels like it's ripping apart, and a stream of blood flies out."
- 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 << "You cannot Exsanguinate mortals yet!"
-
-/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("[src] throws gore at [target]!")
- H.bloody_body(target)
- H.bloody_hands(target)
- gorecooldown = world.time
-
- else
- usr << "You need more time to do that again!"
- else
- usr << " you can only do that from the material plane!"
-
-
-//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 << "You need more time to do that again!"
- else
- usr << " you can only do that from outside the material plane!"
-
//////////The Loot
/obj/item/weapon/demonheart
diff --git a/paradise.dme b/paradise.dme
index 4e0226eb9c1..765e546ef36 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -1455,7 +1455,6 @@
#include "code\modules\mob\living\simple_animal\revenant\revenant.dm"
#include "code\modules\mob\living\simple_animal\revenant\revenant_abilities.dm"
#include "code\modules\mob\living\simple_animal\revenant\revenant_spawn_event.dm"
-#include "code\modules\mob\living\simple_animal\slaughter\bloodnode.dm"
#include "code\modules\mob\living\simple_animal\slaughter\slaughter.dm"
#include "code\modules\mob\new_player\login.dm"
#include "code\modules\mob\new_player\logout.dm"