diff --git a/code/modules/mob/living/simple_animal/slaughter/bloodnode.dm b/code/modules/mob/living/simple_animal/slaughter/bloodnode.dm new file mode 100644 index 00000000000..2f9083d1e32 --- /dev/null +++ b/code/modules/mob/living/simple_animal/slaughter/bloodnode.dm @@ -0,0 +1,99 @@ +//yes i did stealfrom blobcode... +/obj/effect/bloodnode + name = "blood pustilue" + icon = 'icons/effects/blood.dmi' + icon_state = "bloodnode" + var/health = 100 + anchored = 1 + density = 1 + var/lastblood = 0 + var/nodecount = 0 + + + + New(loc, var/h = 100) + nodecount +=1 + processing_objects.Add(src) + ..(loc, h) + + Destroy() + nodecount -= 1 + processing_objects.Remove(src) + ..() + return + + process() + if(lastblood == 0 || (world.time - lastblood) > 600) + src.visible_message("pulse!") + 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 + return + + + proc/Delete() + qdel(src) + + 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)) + Delete() + return + return + + ex_act(severity) + var/damage = 150 + health -= ((damage - (severity * 5))) + update_icon() + return + + + bullet_act(var/obj/item/projectile/Proj) + ..() + health -= (Proj.damage) + update_icon() + return 0 + + + 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) + //new /datum/artifact_effect/badfeeling/DoEffectTouch(user) + src.visible_message("\red 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") + damage = (W.force) + + health -= damage + update_icon() + return + + attack_hand(var/mob/user) + user << "You REALLY do not want to touch that bare handed." + return + + + 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() + return diff --git a/code/modules/mob/living/simple_animal/slaughter/slaughter.dm b/code/modules/mob/living/simple_animal/slaughter/slaughter.dm index cf474f5bd6b..72ef79dbdf5 100644 --- a/code/modules/mob/living/simple_animal/slaughter/slaughter.dm +++ b/code/modules/mob/living/simple_animal/slaughter/slaughter.dm @@ -160,7 +160,8 @@ src.pulling = FALSE if (src.devoured == 5) src.mind.current.verbs += /mob/living/simple_animal/slaughter/proc/goreThrow - src << " You have consumed enough to be able to throw Excess Gore." + src.mind.current.verbs += /mob/living/simple_animal/slaughter/proc/bloodSac + src << " You have consumed enough to be able to summon Excess Gore." src.notransform = 0 if(!(src.eating)) new /obj/effect/gibspawner/human(get_turf(src))///Somewhere a janitor weeps.. @@ -292,7 +293,8 @@ //var/mob/living/carbon/human/M = pop(nearby_mortals) if(nearby_mortals.len) playsound(src.loc, pick('sound/hallucinations/wail.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/far_noise.ogg'), 50, 1, -3) - new /datum/artifact_effect/badfeeling/DoEffectPulse() + //new /datum/artifact_effect/badfeeling/DoEffectPulse() + for (var/mob/living/carbon/human/portal in nearby_mortals) 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) @@ -329,6 +331,21 @@ 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.phased) + 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 diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index fb311bf9769..c304abc9bf5 100644 Binary files a/icons/effects/blood.dmi and b/icons/effects/blood.dmi differ diff --git a/paradise.dme b/paradise.dme index fc897103e63..00a87cdbd5b 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1442,6 +1442,7 @@ #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"