mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Colonectomy
Various fixes by feedback Render Item refactor to modular system
This commit is contained in:
@@ -95,7 +95,6 @@
|
||||
var/canmove = 1
|
||||
density = 0
|
||||
anchored = 1
|
||||
invisibility = INVISIBILITY_OBSERVER
|
||||
|
||||
/obj/effect/dummy/spell_jaunt/Destroy()
|
||||
// Eject contents if deleted somehow
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
|
||||
/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)
|
||||
if(user.z != ZLEVEL_STATION)//this is to make sure the wizard does NOT summon a demon from the Den..
|
||||
user << "<span class='notice'>You should probably wait until you reach the station.</span>"
|
||||
return
|
||||
if(!checking)
|
||||
@@ -108,7 +108,7 @@
|
||||
possiblecandidates -= demon_candidates
|
||||
used = 1
|
||||
checking = 0
|
||||
spawn_antag(demon_candidates, get_turf(src.loc), "Slaughter Demon")
|
||||
spawn_antag(demon_candidates, get_turf(src.loc), "Slaughter Demon",user)
|
||||
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)
|
||||
@@ -126,24 +126,25 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/antag_spawner/slaughter_demon/spawn_antag(var/client/C, var/turf/T, var/type = "")
|
||||
/obj/item/weapon/antag_spawner/slaughter_demon/spawn_antag(var/client/C, var/turf/T, var/type = "", mob/user as mob)
|
||||
|
||||
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]"
|
||||
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/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]"
|
||||
@@ -118,143 +118,82 @@
|
||||
force = 15
|
||||
throwforce = 10
|
||||
w_class = 3
|
||||
var/charged = 1
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
var/charged = 1
|
||||
var/spawn_type = /obj/singularity/narsie/wizard
|
||||
var/spawn_amt = 1
|
||||
var/activate_descriptor = "reality"
|
||||
var/rend_desc = "You should run now."
|
||||
|
||||
/obj/item/weapon/veilrender/attack_self(mob/user as mob)
|
||||
if(charged)
|
||||
new /obj/effect/rend(get_turf(user), spawn_type, spawn_amt, rend_desc)
|
||||
charged = 0
|
||||
user.visible_message("<span class='userdanger'>[src] hums with power as [user] deals a blow to [activate_descriptor] itself!</span>")
|
||||
else
|
||||
user << "<span class='danger'>The unearthly energies that powered the blade are now dormant.</span>"
|
||||
|
||||
|
||||
/obj/effect/rend
|
||||
name = "tear in the fabric of reality"
|
||||
desc = "You should run now"
|
||||
desc = "You should run now."
|
||||
icon = 'icons/obj/biomass.dmi'
|
||||
icon_state = "rift"
|
||||
density = 1
|
||||
unacidable = 1
|
||||
anchored = 1.0
|
||||
var/spawn_path = /mob/living/simple_animal/cow //defaulty cows to prevent unintentional narsies
|
||||
var/spawn_amt_left = 20
|
||||
|
||||
/obj/effect/rend/New()
|
||||
spawn(50)
|
||||
new /obj/singularity/narsie/wizard(get_turf(src))
|
||||
/obj/effect/rend/New(loc, var/spawn_type, var/spawn_amt, var/desc)
|
||||
..()
|
||||
src.spawn_path = spawn_type
|
||||
src.spawn_amt_left = spawn_amt
|
||||
src.desc = desc
|
||||
|
||||
processing_objects.Add(src)
|
||||
//return
|
||||
|
||||
/obj/effect/rend/process()
|
||||
for(var/mob/M in loc)
|
||||
return
|
||||
new spawn_path(loc)
|
||||
spawn_amt_left--
|
||||
if(spawn_amt_left <= 0)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/rend/attackby(obj/item/I as obj, mob/user as mob)
|
||||
if(istype(I, /obj/item/weapon/nullrod))
|
||||
user.visible_message("<span class='danger'>[user] seals \the [src] with \the [I].</span>")
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/weapon/veilrender/attack_self(mob/user as mob)
|
||||
if(charged == 1)
|
||||
new /obj/effect/rend(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 unearthly energies that powered the blade are now dormant."
|
||||
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/weapon/veilrender/vealrender
|
||||
name = "veal render"
|
||||
desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast farm."
|
||||
spawn_type = /mob/living/simple_animal/cow
|
||||
spawn_amt = 20
|
||||
activate_descriptor = "hunger"
|
||||
rend_desc = "Reverberates with the sound of ten thousand moos."
|
||||
|
||||
/obj/item/weapon/veilrender/vealrender/attack_self(mob/user as mob)
|
||||
if(charged)
|
||||
new /obj/effect/rend/cow(get_turf(usr))
|
||||
charged = 0
|
||||
visible_message("\red <B>[src] hums with power as [usr] deals a blow to hunger itself!</B>")
|
||||
else
|
||||
user << "\red The unearthly energies that powered the blade are now dormant."
|
||||
|
||||
/obj/effect/rend/cow
|
||||
desc = "Reverberates with the sound of ten thousand moos."
|
||||
var/cowsleft = 20
|
||||
|
||||
/obj/effect/rend/cow/New()
|
||||
processing_objects.Add(src)
|
||||
return
|
||||
|
||||
/obj/effect/rend/cow/process()
|
||||
if(locate(/mob) in loc) return
|
||||
new /mob/living/simple_animal/cow(loc)
|
||||
cowsleft--
|
||||
if(cowsleft <= 0)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/rend/cow/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)
|
||||
qdel(src)
|
||||
return
|
||||
..()
|
||||
//Why did i add this....-Fethas
|
||||
/obj/item/weapon/veilrender/honkrender //HONK!!
|
||||
/obj/item/weapon/veilrender/honkrender
|
||||
name = "honk render"
|
||||
desc = "A wicked curved 'blade' of honk origin, recovered from the ruins of a vast circus."
|
||||
desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast circus."
|
||||
spawn_type = /mob/living/simple_animal/hostile/retaliate/clown
|
||||
spawn_amt = 10
|
||||
activate_descriptor = "depression"
|
||||
rend_desc = "Gently wafting with the sounds of endless laughter."
|
||||
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!!
|
||||
/obj/item/weapon/veilrender/crabrender
|
||||
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
|
||||
// ..()
|
||||
|
||||
spawn_type = /mob/living/simple_animal/crab
|
||||
spawn_amt = 10
|
||||
activate_descriptor = "sea life"
|
||||
rend_desc = "Gently wafting with the sounds of endless clacking."
|
||||
|
||||
/////////////////////////////////////////Scrying///////////////////
|
||||
|
||||
@@ -272,5 +211,5 @@
|
||||
|
||||
/obj/item/weapon/scrying/attack_self(mob/user as mob)
|
||||
user << "\blue You can see...everything!"
|
||||
visible_message("\red <B>[usr] stares into [src], their eyes glazing over.</B>")
|
||||
visible_message("\red <B>[user] stares into [src], their eyes glazing over.</B>")
|
||||
user.ghostize(1)
|
||||
|
||||
@@ -267,7 +267,7 @@
|
||||
user << "\blue The walls suddenly disappear."
|
||||
return 1
|
||||
|
||||
/datum/spellbook_entry/item/scryingorb/CanBuy(var/mob/living/carbon/human/user,var/obj/item/weapon/spellbook/book)
|
||||
/datum/spellbook_entry/item/bloodbottle/CanBuy(var/mob/living/carbon/human/user,var/obj/item/weapon/spellbook/book)
|
||||
return ..() && !limit
|
||||
|
||||
/datum/spellbook_entry/item/soulstones
|
||||
|
||||
@@ -66,5 +66,4 @@
|
||||
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
|
||||
kill()
|
||||
@@ -12,109 +12,106 @@
|
||||
|
||||
|
||||
|
||||
New(loc, var/h = 100)
|
||||
nodecount +=1
|
||||
processing_objects.Add(src)
|
||||
NodeColor()
|
||||
..(loc, h)
|
||||
/obj/effect/bloodnode/New(loc, var/h = 100)
|
||||
nodecount +=1
|
||||
processing_objects.Add(src)
|
||||
NodeColor()
|
||||
..(loc, h)
|
||||
|
||||
Destroy()
|
||||
nodecount -= 1
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
return
|
||||
|
||||
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
|
||||
return
|
||||
/obj/effect/bloodnode/Destroy()
|
||||
nodecount -= 1
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
|
||||
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/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
|
||||
|
||||
proc/Delete()
|
||||
/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()
|
||||
//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
|
||||
|
||||
|
||||
/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()
|
||||
|
||||
ex_act(severity)
|
||||
var/damage = 150
|
||||
health -= ((damage - (severity * 5)))
|
||||
//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()
|
||||
|
||||
|
||||
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)
|
||||
src.visible_message("\red <B>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()
|
||||
return
|
||||
|
||||
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(1,10)
|
||||
if(!damage) // Avoid divide by zero errors
|
||||
return
|
||||
damage = max(damage)
|
||||
health -= damage
|
||||
update_icon()
|
||||
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("<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()
|
||||
return
|
||||
|
||||
@@ -1,12 +1,3 @@
|
||||
///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
|
||||
@@ -27,20 +18,21 @@
|
||||
status_flags = CANPUSH
|
||||
attack_sound = 'sound/misc/demon_attack1.ogg'
|
||||
min_oxy = 0
|
||||
max_oxy = 0
|
||||
max_oxy = INFINITY
|
||||
min_tox = 0
|
||||
max_tox = 0
|
||||
max_tox = INFINITY
|
||||
min_co2 = 0
|
||||
max_co2 = 0
|
||||
max_co2 = INFINITY
|
||||
min_n2 = 0
|
||||
max_n2 = 0
|
||||
max_n2 = INFINITY
|
||||
minbodytemp = 0
|
||||
maxbodytemp = INFINITY
|
||||
faction = list("slaughter")
|
||||
attacktext = "wildly tears into"
|
||||
maxHealth = 250
|
||||
health = 250
|
||||
environment_smash = 1
|
||||
universal_understand = 1
|
||||
//universal_understand = 1
|
||||
melee_damage_lower = 30
|
||||
melee_damage_upper = 30
|
||||
see_in_dark = 8
|
||||
@@ -93,10 +85,9 @@
|
||||
visible_message("<span class='danger'>The [src] screams in anger as its form collapes into a pool of viscera.</span>")
|
||||
ghostize()
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
|
||||
/mob/living/simple_animal/slaughter/say(message)
|
||||
return 0
|
||||
////////////////////The Powers
|
||||
|
||||
/mob/living/simple_animal/slaughter/proc/phaseout(var/obj/effect/decal/cleanable/B)
|
||||
@@ -124,10 +115,10 @@
|
||||
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!")
|
||||
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.visible_message("<span class='danger'><B>\The [src] drags [victim] into [B]!</B></span>")
|
||||
src.kidnapped = victim
|
||||
flick("jaunt",animation)
|
||||
src.loc = holder
|
||||
@@ -161,12 +152,13 @@
|
||||
if (src.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."
|
||||
src << "<span class='notice'> You have consumed enough to be able to summon Excess Gore.</span>"
|
||||
src.notransform = 0
|
||||
if(!(src.eating))
|
||||
new /obj/effect/gibspawner/human(get_turf(src))///Somewhere a janitor weeps..
|
||||
sleep(6)
|
||||
qdel(animation)
|
||||
if(animation)
|
||||
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 )
|
||||
@@ -189,12 +181,14 @@
|
||||
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>")
|
||||
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)
|
||||
if(src.holder)
|
||||
qdel(src.holder)
|
||||
if(animation)
|
||||
qdel(animation)
|
||||
|
||||
/obj/effect/decal/cleanable/blood/CtrlClick(var/mob/user)
|
||||
..()
|
||||
@@ -238,7 +232,7 @@
|
||||
var/canmove = 1
|
||||
density = 0
|
||||
anchored = 1
|
||||
invisibility = INVISIBILITY_OBSERVER
|
||||
//invisibility = INVISIBILITY_OBSERVER
|
||||
|
||||
/obj/effect/dummy/slaughter/relaymove(var/mob/user, direction)
|
||||
if (!src.canmove || !direction) return
|
||||
@@ -268,7 +262,7 @@
|
||||
|
||||
var/list/choices = list()
|
||||
for(var/mob/living/carbon/C in living_mob_list)
|
||||
if(C.stat != 2 && C.mind)
|
||||
if(C.stat != 2 && C.client && C.stat != DEAD)
|
||||
choices += C
|
||||
|
||||
var/mob/living/carbon/M = input(src,"Who do you wish to talk to?") in null|choices
|
||||
@@ -301,7 +295,7 @@
|
||||
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 << "\red The skin on your [parse_zone(targetPart)] feels like it's ripping apart, and a stream of blood flies out."
|
||||
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()
|
||||
@@ -309,7 +303,7 @@
|
||||
portal.vessel.remove_reagent("blood",rand(25,50))
|
||||
cooldown = world.time
|
||||
else
|
||||
usr << "<span class='info'>You cannot Exsanguinate mortals yet!"
|
||||
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"
|
||||
|
||||
Reference in New Issue
Block a user