Buffs/hugboxes slaughter demons
This commit is contained in:
@@ -538,7 +538,7 @@
|
|||||||
name = "Slaughter Demon"
|
name = "Slaughter Demon"
|
||||||
config_tag = "slaughter_demon"
|
config_tag = "slaughter_demon"
|
||||||
antag_flag = ROLE_ALIEN
|
antag_flag = ROLE_ALIEN
|
||||||
enemy_roles = list("Security Officer","Shaft Miner","Head of Security","Captain","Janitor","AI","Cyborg")
|
enemy_roles = list("Security Officer","Shaft Miner","Head of Security","Captain","Janitor","AI","Cyborg","Bartender")
|
||||||
required_enemies = list(3,2,2,2,2,1,1,1,1,0)
|
required_enemies = list(3,2,2,2,2,1,1,1,1,0)
|
||||||
required_candidates = 1
|
required_candidates = 1
|
||||||
weight = 4
|
weight = 4
|
||||||
|
|||||||
@@ -65,6 +65,10 @@
|
|||||||
var/wound_bonus_per_hit = 5
|
var/wound_bonus_per_hit = 5
|
||||||
// How much our wound_bonus hitstreak bonus caps at (peak demonry)
|
// How much our wound_bonus hitstreak bonus caps at (peak demonry)
|
||||||
var/wound_bonus_hitstreak_max = 12
|
var/wound_bonus_hitstreak_max = 12
|
||||||
|
// Keep the people we eat
|
||||||
|
var/list/consumed_mobs = list()
|
||||||
|
//buffs only happen when hearts are eaten, so this needs to be kept track separately
|
||||||
|
var/consumed_buff = 0
|
||||||
|
|
||||||
/mob/living/simple_animal/slaughter/Initialize()
|
/mob/living/simple_animal/slaughter/Initialize()
|
||||||
..()
|
..()
|
||||||
@@ -111,8 +115,44 @@
|
|||||||
/mob/living/simple_animal/slaughter/phasein()
|
/mob/living/simple_animal/slaughter/phasein()
|
||||||
. = ..()
|
. = ..()
|
||||||
add_movespeed_modifier(/datum/movespeed_modifier/slaughter)
|
add_movespeed_modifier(/datum/movespeed_modifier/slaughter)
|
||||||
addtimer(CALLBACK(src, .proc/remove_movespeed_modifier, /datum/movespeed_modifier/slaughter), 6 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
|
var/slowdown_time = 6 SECONDS + (0.5 * consumed_buff)
|
||||||
|
addtimer(CALLBACK(src, .proc/remove_movespeed_modifier, /datum/movespeed_modifier/slaughter), slowdown_time, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||||
|
|
||||||
|
/mob/living/simple_animal/slaughter/Destroy()
|
||||||
|
release_victims()
|
||||||
|
. = ..()
|
||||||
|
|
||||||
|
/mob/living/simple_animal/slaughter/proc/release_victims()
|
||||||
|
if(!consumed_mobs)
|
||||||
|
return
|
||||||
|
|
||||||
|
for(var/mob/living/M in consumed_mobs)
|
||||||
|
if(!M)
|
||||||
|
continue
|
||||||
|
var/turf/T = find_safe_turf()
|
||||||
|
if(!T)
|
||||||
|
T = get_turf(src)
|
||||||
|
M.forceMove(T)
|
||||||
|
|
||||||
|
/mob/living/simple_animal/slaughter/proc/refresh_consumed_buff()
|
||||||
|
melee_damage_lower = 22.5 + (0.5 * consumed_buff)
|
||||||
|
melee_damage_upper = 22.5 + (1 * consumed_buff)
|
||||||
|
|
||||||
|
/mob/living/simple_animal/slaughter/bloodcrawl_swallow(var/mob/living/victim)
|
||||||
|
if(consumed_mobs)
|
||||||
|
// Keep their corpse so rescue is possible
|
||||||
|
consumed_mobs += victim
|
||||||
|
victim.reagents?.add_reagent(/datum/reagent/preservahyde,3) // make it so that they don't decay in there
|
||||||
|
var/obj/item/organ/heart/heart = victim.getorganslot(ORGAN_SLOT_HEART)
|
||||||
|
if(heart)
|
||||||
|
qdel(heart)
|
||||||
|
consumed_buff++
|
||||||
|
refresh_consumed_buff()
|
||||||
|
else
|
||||||
|
// Be safe and just eject the corpse
|
||||||
|
victim.forceMove(get_turf(victim))
|
||||||
|
victim.exit_blood_effect()
|
||||||
|
victim.visible_message("[victim] falls out of the air, covered in blood, looking highly confused. And dead.")
|
||||||
|
|
||||||
//The loot from killing a slaughter demon - can be consumed to allow the user to blood crawl
|
//The loot from killing a slaughter demon - can be consumed to allow the user to blood crawl
|
||||||
/obj/item/organ/heart/demon
|
/obj/item/organ/heart/demon
|
||||||
@@ -177,9 +217,6 @@
|
|||||||
prison of hugs."
|
prison of hugs."
|
||||||
loot = list(/mob/living/simple_animal/pet/cat/kitten{name = "Laughter"})
|
loot = list(/mob/living/simple_animal/pet/cat/kitten{name = "Laughter"})
|
||||||
|
|
||||||
// Keep the people we hug!
|
|
||||||
var/list/consumed_mobs = list()
|
|
||||||
|
|
||||||
playstyle_string = "<span class='big bold'>You are a laughter \
|
playstyle_string = "<span class='big bold'>You are a laughter \
|
||||||
demon,</span><B> a wonderful creature from another realm. You have a single \
|
demon,</span><B> a wonderful creature from another realm. You have a single \
|
||||||
desire: <span class='clown'>To hug and tickle.</span><BR>\
|
desire: <span class='clown'>To hug and tickle.</span><BR>\
|
||||||
@@ -194,10 +231,6 @@
|
|||||||
released and fully healed, because in the end it's just a jape, \
|
released and fully healed, because in the end it's just a jape, \
|
||||||
sibling!</B>"
|
sibling!</B>"
|
||||||
|
|
||||||
/mob/living/simple_animal/slaughter/laughter/Destroy()
|
|
||||||
release_friends()
|
|
||||||
. = ..()
|
|
||||||
|
|
||||||
/mob/living/simple_animal/slaughter/laughter/ex_act(severity)
|
/mob/living/simple_animal/slaughter/laughter/ex_act(severity)
|
||||||
switch(severity)
|
switch(severity)
|
||||||
if(1)
|
if(1)
|
||||||
@@ -207,7 +240,22 @@
|
|||||||
if(3)
|
if(3)
|
||||||
adjustBruteLoss(30)
|
adjustBruteLoss(30)
|
||||||
|
|
||||||
/mob/living/simple_animal/slaughter/laughter/proc/release_friends()
|
/mob/living/simple_animal/slaughter/laughter/refresh_consumed_buff()
|
||||||
|
melee_damage_lower -= 0.5 // JAPES
|
||||||
|
melee_damage_upper += 1
|
||||||
|
|
||||||
|
/mob/living/simple_animal/slaughter/laughter/bloodcrawl_swallow(var/mob/living/victim)
|
||||||
|
if(consumed_mobs)
|
||||||
|
// Keep their corpse so rescue is possible
|
||||||
|
consumed_mobs += victim
|
||||||
|
refresh_consumed_buff()
|
||||||
|
else
|
||||||
|
// Be safe and just eject the corpse
|
||||||
|
victim.forceMove(get_turf(victim))
|
||||||
|
victim.exit_blood_effect()
|
||||||
|
victim.visible_message("[victim] falls out of the air, covered in blood, looking highly confused. And dead.")
|
||||||
|
|
||||||
|
/mob/living/simple_animal/slaughter/laughter/release_victims()
|
||||||
if(!consumed_mobs)
|
if(!consumed_mobs)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -222,13 +270,3 @@
|
|||||||
M.grab_ghost(force = TRUE)
|
M.grab_ghost(force = TRUE)
|
||||||
playsound(T, feast_sound, 50, 1, -1)
|
playsound(T, feast_sound, 50, 1, -1)
|
||||||
to_chat(M, "<span class='clown'>You leave [src]'s warm embrace, and feel ready to take on the world.</span>")
|
to_chat(M, "<span class='clown'>You leave [src]'s warm embrace, and feel ready to take on the world.</span>")
|
||||||
|
|
||||||
/mob/living/simple_animal/slaughter/laughter/bloodcrawl_swallow(var/mob/living/victim)
|
|
||||||
if(consumed_mobs)
|
|
||||||
// Keep their corpse so rescue is possible
|
|
||||||
consumed_mobs += victim
|
|
||||||
else
|
|
||||||
// Be safe and just eject the corpse
|
|
||||||
victim.forceMove(get_turf(victim))
|
|
||||||
victim.exit_blood_effect()
|
|
||||||
victim.visible_message("[victim] falls out of the air, covered in blood, looking highly confused. And dead.")
|
|
||||||
|
|||||||
Reference in New Issue
Block a user