From 95565847b7ad4acbfdd5228858e210915928d679 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Thu, 6 Aug 2015 01:56:59 -0400 Subject: [PATCH] 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... --- code/game/gamemodes/antag_spawner.dm | 84 ++++--------- code/modules/events/slaughterevent.dm | 11 +- code/modules/mob/living/bloodcrawl.dm | 51 +------- .../simple_animal/slaughter/bloodnode.dm | 117 ------------------ .../simple_animal/slaughter/slaughter.dm | 78 +----------- paradise.dme | 1 - 6 files changed, 37 insertions(+), 305 deletions(-) delete mode 100644 code/modules/mob/living/simple_animal/slaughter/bloodnode.dm 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"