LETS DO THE GIT WARP AGAIN! LETS DO THE GIT WARP AGAIN!

So i did a thing..and it messed up alot of other things..so i remade the
thing..
Adjusted some spans and redid the spawn locs based on the ghostie antag
This commit is contained in:
Aurorablade
2015-06-24 21:42:35 -04:00
parent c28f9bb8ca
commit b6429486eb
12 changed files with 652 additions and 8 deletions
+83 -6
View File
@@ -9,7 +9,7 @@
/obj/item/weapon/antag_spawner/proc/equip_antag(mob/target as mob)
return
/obj/item/weapon/antag_spawner/borg_tele
name = "Syndicate Cyborg Teleporter"
@@ -49,16 +49,16 @@
checking = 0
spawn_antag(possibleborg, get_turf(src.loc), "syndieborg")
else
possiblecandidates -= possibleborg
possiblecandidates -= possibleborg
get_candidate_answer(user, possiblecandidates)
return
sleep(300)
if(checking)
possiblecandidates -= possibleborg
possiblecandidates -= possibleborg
get_candidate_answer(user, possiblecandidates)
return
return
/obj/item/weapon/antag_spawner/borg_tele/spawn_antag(var/client/C, var/turf/T, var/type = "")
var/datum/effect/effect/system/spark_spread/S = new /datum/effect/effect/system/spark_spread
@@ -70,3 +70,80 @@
ticker.mode.update_synd_icons_added(R.mind)
R.mind.special_role = "syndicate"
R.faction = list("syndicate")
/obj/item/weapon/antag_spawner/slaughter_demon //Warning edgiest item in the game
name = "vial of blood"
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)
if(user.z != 1)
user << "<span class='notice'>You should probably wait until you reach the station.</span>"
return
if(!checking)
user << "<span class='notice'>You ready yourself to shatter the bottle...</span>"
get_candidate_answer(user, get_candidates(BE_ALIEN))
else
user << "<span class='notice'>You are already thinking about shattering the bottle.</span>"
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 << "<span class='notice'>You can't seem to work up the nerve to shatter the bottle. Perhaps you should try again later..</span>"
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 << "<span class='notice'>You shatter the bottle, no turning back now!</span>"
user << "<span class='notice'>You sense a dark presence lurking just beyond the veil...</span>"
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
/obj/item/weapon/antag_spawner/slaughter_demon/spawn_antag(var/client/C, var/turf/T, var/type = "")
var /obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(T)
var/mob/living/simple_animal/slaughter/S = new /mob/living/simple_animal/slaughter/(holder)
S.vialspawned = TRUE
S.phased = TRUE
S.key = C.key
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 = usr:mind
KillDaWiz.explanation_text = "Kill [usr.real_name], the one who was foolish enough to summon you."
S.mind.objectives += KillDaWiz
var/datum/objective/slaughter/objective = new
objective.owner = S:mind
//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 += objective
S << "<B>Objective #[1]</B>: [KillDaWiz.explanation_text]"
S << "<B>Objective #[2]</B>: [objective.explanation_text]"
+73
View File
@@ -181,6 +181,79 @@
del src
return
..()
//Why did i add this....-Fethas
/obj/item/weapon/veilrender/honkrender //HONK!!
name = "honk render"
desc = "A wicked curved 'blade' of honk origin, recovered from the ruins of a vast circus."
icon_state = "clownrender"
/obj/item/weapon/veilrender/honkrender/attack_self(mob/user as mob)
if(charged)
new /obj/effect/rend/honk(get_turf(usr))
charged = 0
visible_message("\red <B>[src] hums with power as [usr] deals a blow to depression itself!</B>")
playsound(get_turf(usr),"sound/items/bikehorn.ogg",50,10,1)
else
user << "\red The honk energies that powered the blade are now dormant."
/obj/effect/rend/honk
desc = "Gently wafting with the sounds of endless laughter."
var/honkleft = 10
/obj/effect/rend/honk/New()
processing_objects.Add(src)
return
/obj/effect/rend/honk/process()
if(locate(/mob) in loc) return
new /mob/living/simple_animal/hostile/retaliate/clown(loc)
honkleft--
if(honkleft <= 0)
del src
/obj/effect/rend/honk/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I, /obj/item/weapon/nullrod))
visible_message("\red <b>[I] strikes a blow against \the [src], banishing it!</b>")
spawn(1)
del src
return
..()
/obj/item/weapon/veilrender/crabrender //HONK!!
name = "crab render"
desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast aquarium."
/obj/item/weapon/veilrender/crabrender/attack_self(mob/user as mob)
if(charged)
new /obj/effect/rend/crab(get_turf(usr))
charged = 0
visible_message("\red <B>[src] hums with power as [usr] deals a blow to reality itself!</B>")
else
user << "\red The energies that powered the blade are now dormant."
/obj/effect/rend/crab
desc = "Gently wafting with the sounds of endless clacking."
var/crableft = 10
/obj/effect/rend/crab/New()
processing_objects.Add(src)
return
/obj/effect/rend/crab/process()
if(locate(/mob) in loc) return
new /mob/living/simple_animal/crab(loc)
crableft--
if(crableft <= 0)
del src
///obj/effect/rend/crab/attackby(obj/item/I as obj, mob/user as mob, params)
// if(istype(I, /obj/item/weapon/nullrod))
// visible_message("\red <b>[I] strikes a blow against \the [src], banishing it!</b>")
// spawn(1)
// del src
// return
// ..()
/////////////////////////////////////////Scrying///////////////////
+13 -2
View File
@@ -249,6 +249,12 @@
item_path = /obj/item/weapon/scrying
log_name = "SO"
/datum/spellbook_entry/item/bloodbottle
name = "Bottle of Blood"
desc = "A bottle of magically infused blood, the smell of which will attract extradimensional beings when broken. Be careful though, the kinds of creatures summoned by blood magic are indiscriminate in their killing, and you yourself may become a victim."
item_path = /obj/item/weapon/antag_spawner/slaughter_demon
log_name = "BB"
/datum/spellbook_entry/item/scryingorb/Buy(var/mob/living/carbon/human/user,var/obj/item/weapon/spellbook/book)
if(..())
if (!(XRAY in user.mutations))
@@ -386,6 +392,11 @@
src.uses++
qdel(O)
if(istype(O, /obj/item/weapon/antag_spawner/slaughter_demon))
user << "<span class='notice'>On second thought, maybe summoning a demon is a bad idea. You refund your points.</span>"
src.uses++
qdel(O)
/obj/item/weapon/spellbook/proc/GetCategoryHeader(var/category)
var/dat = ""
switch(category)
@@ -555,8 +566,8 @@
/obj/item/weapon/spellbook/oneuse/fireball/recoil(mob/user as mob)
..()
explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2)
qdel(src)
explosion(user.loc, -1, 0, 2, 3, 0)
del(src)
/obj/item/weapon/spellbook/oneuse/smoke
spell = /obj/effect/proc_holder/spell/wizard/targeted/smoke
+70
View File
@@ -0,0 +1,70 @@
/datum/event/spawn_slaughter//Paradise port:Changed from round_event to event, i was getting errors
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
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
if(!key_of_slaughter)
if(end_if_fail)
return 0
return find_slaughter()
var/datum/mind/player_mind = new /datum/mind(key_of_slaughter)
player_mind.active = 1
var/list/spawn_locs = list()
for(var/obj/effect/landmark/L in landmarks_list)
if(isturf(L.loc))
switch(L.name)
if("revenantspawn")
spawn_locs += L.loc
if(!spawn_locs) //If we can't find any revenant spawns, try the carp spawns
for(var/obj/effect/landmark/L in landmarks_list)
if(isturf(L.loc))
switch(L.name)
if("carpspawn")
spawn_locs += L.loc
if(!spawn_locs) //If we can't find either, just spawn the revenant at the player's location
spawn_locs += get_turf(player_mind.current)
if(!spawn_locs) //If we can't find THAT, then just retry
return find_slaughter()
var /obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(pick(spawn_locs))
var/mob/living/simple_animal/slaughter/S = new /mob/living/simple_animal/slaughter/(holder)
S.phased = TRUE
player_mind.transfer_to(S)
player_mind.assigned_role = "Slaughter Demon"
player_mind.special_role = "Slaughter Demon"
message_admins("[key_of_slaughter] has been made into a Slaughter Demon by an event.")
log_game("[key_of_slaughter] was spawned as a Slaughter Demon by an event.")
return 1
/datum/event/spawn_slaughter/start()
get_slaughter()
/datum/event/spawn_slaughter/proc/find_slaughter()
message_admins("Attempted to spawn a Slaughter Demon but there was no players available. Will try again momentarily.")
spawn(50)
if(get_slaughter(1))
message_admins("Situation has been resolved, [key_of_slaughter] has been spawned as a Slaughter Demon.")
log_game("[key_of_slaughter] was spawned as a Slaughter Demon by an event.")
return 0
message_admins("Unfortunately, no candidates were available for becoming a Slaugter Demon. Shutting down.")
kill()
return
@@ -0,0 +1,413 @@
///The following mini-antag was coded by KorPhaeron for TG Station
//Credits: Concept: KorPhaeron, Sprite:Ausops, Sounds:Cuboos
///Ported for paradise by Aurorablade/Fethas
///Things added for port:
//Various tweeks
//Blood...
/// Made the message tell you waht the demon is sinking into(gibs/blood etc)
///Alot of blood...Alot..Of blood..
//////////////////The Monster
/mob/living/simple_animal/slaughter
name = "Slaughter Demon"
real_name = "Slaughter Demon"
desc = "You should run."
speak_emote = list("gurgles")
emote_hear = list("wails","screeches")
response_help = "thinks better of touching"
response_disarm = "flails at"
response_harm = "punches"
icon = 'icons/mob/mob.dmi'
icon_state = "daemon"
speed = 0
a_intent = "harm"
stop_automated_movement = 1
status_flags = CANPUSH
attack_sound = 'sound/misc/demon_attack1.ogg'
min_oxy = 0
max_oxy = 0
min_tox = 0
max_tox = 0
min_co2 = 0
max_co2 = 0
min_n2 = 0
max_n2 = 0
minbodytemp = 0
faction = list("slaughter")
attacktext = "wildly tears into"
maxHealth = 250
health = 250
environment_smash = 1
universal_understand = 1
melee_damage_lower = 30
melee_damage_upper = 30
see_in_dark = 8
see_invisible = SEE_INVISIBLE_MINIMUM
var/devoured = 0
var/phased = FALSE
var/holder = null
var/eating = FALSE
var/mob/living/kidnapped = null
var/list/nearby_mortals = list()
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. \
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. </B>"
//Paradise todo:change to altclick,add objectives. need ideas as i want people to be creative, not just RAWR KILL
/mob/living/simple_animal/slaughter/New()
..()
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>"
if(!(vialspawned))
var/datum/objective/slaughter/objective = new
var/datum/objective/demonFluff/fluffObjective = new
ticker.mode.traitors |= src.mind
objective.owner = src.mind
fluffObjective.owner = src.mind
//Paradise Port:I added the objective for one spawned like this
src.mind.objectives += objective
src.mind.objectives += fluffObjective
src << "<B>Objective #[1]</B>: [objective.explanation_text]"
src << "<B>Objective #[2]</B>: [fluffObjective.explanation_text]"
/mob/living/simple_animal/slaughter/death()
..(1)
new /obj/effect/decal/cleanable/blood (src.loc)
new /obj/effect/gibspawner/generic(get_turf(src))
new /obj/effect/gibspawner/generic(get_turf(src))
playsound(get_turf(src),'sound/misc/demon_dies.ogg', 200, 1)
new /obj/item/weapon/demonheart (src.loc)
visible_message("<span class='danger'>The [src] screams in anger as its form collapes into a pool of viscera.</span>")
ghostize()
qdel(src)
return
////////////////////The Powers
/mob/living/simple_animal/slaughter/proc/phaseout(var/obj/effect/decal/cleanable/B)
var/turf/mobloc = get_turf(src.loc)
var/turf/bloodloc = get_turf(B.loc)
if(Adjacent(bloodloc))
src.notransform = TRUE
spawn(0)
src.visible_message("<span class='danger'>The [src] sinks into [B].</span>")
playsound(get_turf(src), 'sound/misc/enter_blood.ogg', 100, 1, -1)
var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter( mobloc )
var/atom/movable/overlay/animation = new /atom/movable/overlay( mobloc )
animation.name = "odd blood"
animation.density = 0
animation.anchored = 1
animation.icon = 'icons/mob/mob.dmi'
animation.icon_state = "jaunt"
animation.layer = 5
animation.master = holder
animation.dir = src.dir
src.ExtinguishMob()
if(src.buckled)
src.buckled.unbuckle()
if(src.pulling)
if(istype(src.pulling, /mob/living/))
var/mob/living/victim = src.pulling
if(victim.stat == CONSCIOUS)
src.visible_message("[victim] kicks free of the [src] at the last second!")
else
victim.loc = holder///holder
src.visible_message("<span class='danger'><B>The [src] drags [victim] into [B]!</B></span>")
src.kidnapped = victim
flick("jaunt",animation)
src.loc = holder
src.phased = TRUE
src.holder = holder
if(src.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>")
src.eating = TRUE
sleep(6)
qdel(animation)
src.GibEat()
playsound(get_turf(src),'sound/misc/Demon_consume.ogg', 100, 1)
sleep(30)
src.GibEat()
playsound(get_turf(src),'sound/misc/Demon_consume.ogg', 100, 1)
sleep(30)
src.GibEat()
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)
kidnapped.ghostize()
qdel(kidnapped)
src.devoured++
//src << "<B> [src.devoured] [src.kidnapped] [src.eating]<B>"//Debug for tracking how many is devoured, use in objective?
src.kidnapped = null
src.eating = FALSE
src.pulling = FALSE
if (src.devoured == 5)
src.mind.current.verbs += /mob/living/simple_animal/slaughter/proc/goreThrow
src << "<span class='notice'> You have consumed enough to be able to throw Excess Gore."
src.notransform = 0
if(!(src.eating))
new /obj/effect/gibspawner/human(get_turf(src))///Somewhere a janitor weeps..
sleep(6)
qdel(animation)
/mob/living/simple_animal/slaughter/proc/phasein(var/obj/effect/decal/cleanable/B)
var/atom/movable/overlay/animation = new /atom/movable/overlay( B.loc )
animation.name = "odd blood"
animation.density = 0
animation.anchored = 1
animation.icon = 'icons/mob/mob.dmi'
animation.icon_state = "jauntup" //Paradise Port:I reversed the jaunt animation so it looks like its rising up
animation.layer = 5
animation.master = B.loc
animation.dir = src.dir
if(src.eating)
src << "<B>Finish eating first!</B>"
else
flick("jauntup",animation)
src.client.eye = src
src.loc = B.loc
src.phased = FALSE
//Paradise port:The hallucination sounds removed from the demon as of a recent commit..i liked it though..
if (prob(25))
var/list/voice = list('sound/hallucinations/behind_you1.ogg','sound/hallucinations/im_here1.ogg','sound/hallucinations/turn_around1.ogg','sound/hallucinations/i_see_you1.ogg')
playsound(get_turf(src), pick(voice),50, 1, -1)
src.visible_message("<span class='danger'><B>The [src] rises out of [B]!</B></span>")
new /obj/effect/gibspawner/human(get_turf(src))
playsound(get_turf(src), 'sound/misc/exit_blood.ogg', 100, 1, -1)
sleep(6)
qdel(src.holder)
qdel(animation)
/obj/effect/decal/cleanable/blood/CtrlClick(var/mob/user)
..()
if(istype(user, /mob/living/simple_animal/slaughter))
var/mob/living/simple_animal/slaughter/S = user
if(S.phased)
S.phasein(src)
else
S.phaseout(src)
/obj/effect/decal/cleanable/trail_holder/CtrlClick(var/mob/user)
..()
if(istype(user, /mob/living/simple_animal/slaughter))
var/mob/living/simple_animal/slaughter/S = user
//5 second cooldown
if(S.phased)
S.phasein(src)
else
S.phaseout(src)
/turf/CtrlClick(var/mob/user)
..()
if(istype(user, /mob/living/simple_animal/slaughter))
var/mob/living/simple_animal/slaughter/S = user
for(var/obj/effect/decal/cleanable/B in src.contents)
if((istype(B, /obj/effect/decal/cleanable/blood) || istype(B, /obj/effect/decal/cleanable/trail_holder))&& !istype(B,/obj/effect/decal/cleanable/blood/gibs/robot))
if(S.phased)
S.phasein(B)
break
else
S.phaseout(B)
break
/obj/effect/dummy/slaughter //Can't use the wizard one, blocked by jaunt/slow
name = "odd blood"
icon = 'icons/effects/effects.dmi'
icon_state = "nothing"
var/canmove = 1
density = 0
anchored = 1
/obj/effect/dummy/slaughter/relaymove(var/mob/user, direction)
if (!src.canmove || !direction) return
var/turf/newLoc = get_step(src,direction)
loc = newLoc
src.canmove = 0
spawn(1)
src.canmove = 1
/obj/effect/dummy/slaughter/ex_act(severity)
return 1
/obj/effect/dummy/slaughter/bullet_act(blah)
return
/obj/effect/dummy/slaughter/singularity_act(blah)
return
//Paradise Port:I added this cuase..SPOOPY DEMON IN YOUR BRAIN
/mob/living/simple_animal/slaughter/proc/slaughterWhisper()
set name = "Whisper"
set desc = "Whisper to a mortal"
set category = "Daemon"
var/list/choices = list()
for(var/mob/living/carbon/C in living_mob_list)
if(C.stat != 2 && C.mind)
choices += C
var/mob/living/carbon/M = input(src,"Who do you wish to talk to?") in null|choices
spawn(0)
var/msg = stripped_input(usr, "What do you wish to tell [M]?", null, "")
if(!(msg))
return
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 our 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/hallucinations/wail.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/far_noise.ogg'), 50, 1, -3)
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)
portal << "\red 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 << "<span class='info'>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.phased))
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>"
//////////The Loot
/obj/item/weapon/demonheart
name = "demon's heart"
desc = "It's still faintly beating with rage"
icon = 'icons/obj/surgery.dmi'
icon_state = "heart-on"
origin_tech = "combat=5;biotech=8"
/obj/item/weapon/guts
name = "guts"
desc = "Ewwwwwwwwwwww"
icon = 'icons/obj/surgery.dmi'
icon_state = "innards"
//Event
//Gib helperfunc
/mob/living/simple_animal/slaughter/proc/GibEat()
//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(src.kidnapped,/mob/living/carbon/human))
var/mob/living/carbon/human/victimType = src.kidnapped
var/obj/effect/decal/cleanable/blood/gibs/gore = new victimType.species.single_gib_type(get_turf(src))
src << "[victimType.species]"//debug
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)
//Objective info, Based on Reverent mini Atang
/datum/objective/slaughter
var/targetKill = 10
/datum/objective/slaughter/New()
targetKill = rand(10,20)
explanation_text = "Devour [targetKill] mortals."
..()
/datum/objective/slaughter/check_completion()
if(!istype(owner.current, /mob/living/simple_animal/slaughter) || !owner.current)
return 0
var/mob/living/simple_animal/slaughter/R = owner.current
if(!R || R.stat == DEAD)
return 0
var/deathCount = R.devoured
if(deathCount < targetKill)
return 0
return 1
/datum/objective/demonFluff
/datum/objective/demonFluff/New()
find_target()
var/targetname = "someone"
if(target && target.current)
targetname = target.current.real_name
var/list/explanationTexts = list("Attempt to make your presence unknown to the crew.", \
"Kill or Dystroy all Janitors or Sanitation bots.", \
"Drive [targetname] insane."
)
explanation_text = pick(explanationTexts)
..()
/datum/objective/demonFluff/check_completion()
return 1
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 203 KiB

After

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.