Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Yet Another Attempt To Fix Vamp #7650

Open
wants to merge 18 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -49,17 +49,19 @@
plasma_cost = 0

// Config options
distance = 4
distance = 5
knockdown = FALSE
freeze_self = FALSE

var/click_miss_cooldown = 15

/datum/action/xeno_action/activable/flurry
name = "Flurry"
action_icon_state = "rav_spike"
macro_path = /datum/action/xeno_action/verb/verb_flurry
ability_primacy = XENO_PRIMARY_ACTION_2
action_type = XENO_ACTION_CLICK
xeno_cooldown = 3 SECONDS
xeno_cooldown = 4 SECONDS

/datum/action/xeno_action/activable/tail_jab
name = "Tail Jab"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,37 @@

// VAMPIRE LURKER

/datum/action/xeno_action/activable/pounce/rush/use_ability(atom/target)
var/mob/living/carbon/xenomorph/xeno = owner
if(!action_cooldown_check())
return

if(!isturf(xeno.loc))
to_chat(xeno, SPAN_XENOWARNING("We can't [action_text] from here!"))
return

if(!xeno.check_state())
return

var/mob/living/carbon/carbon_target = target
if(get_dist(xeno, target) > distance)
to_chat(xeno, SPAN_XENOWARNING("This is too far, find a closer target."))
return FALSE
if(!iscarbon(target) || carbon_target.stat == DEAD)
for(var/mob/living/carbon/carbon in get_turf(target))
carbon_target = carbon
if(carbon_target.stat != DEAD)
break
if(!iscarbon(carbon_target) || carbon_target.stat == DEAD)
owner.visible_message(SPAN_XENOWARNING("[xeno]'s claws twitch."), SPAN_XENOWARNING("Our claws twitch as we lack the target to rush at. Wait a moment to try again."))
apply_cooldown_override(click_miss_cooldown)
return FALSE
. = ..(carbon_target)
if(!.)
return
if(xeno.can_not_harm(carbon_target))
xeno.emote("needshelp")

/datum/action/xeno_action/activable/pounce/rush/additional_effects(mob/living/living_target) //pounce effects
var/mob/living/carbon/target = living_target
var/mob/living/carbon/xenomorph/xeno = owner
Expand Down Expand Up @@ -214,9 +245,10 @@
log_attack("[key_name(xeno)] attacked [key_name(target)] with Flurry")
target.apply_armoured_damage(get_xeno_damage_slash(target, xeno.caste.melee_damage_upper), ARMOR_MELEE, BRUTE, rand_zone())
playsound(get_turf(target), 'sound/weapons/alien_claw_flesh4.ogg', 30, TRUE)
xeno.flick_heal_overlay(1 SECONDS, "#00B800")
xeno.gain_health(30)
xeno.animation_attack_on(target)
if (!xeno.on_fire)
xeno.flick_heal_overlay(1 SECONDS, "#00B800")
xeno.gain_health(30)

xeno.emote("roar")
return ..()
Expand Down Expand Up @@ -266,11 +298,7 @@
break

if(iscarbon(hit_target) && !xeno.can_not_harm(hit_target) && hit_target.stat != DEAD)
if(targeted_atom == hit_target) //reward for a direct hit
to_chat(xeno, SPAN_XENOHIGHDANGER("We attack [hit_target], with our tail, piercing their body!"))
hit_target.apply_armoured_damage(15, ARMOR_MELEE, BRUTE, "chest")
else
to_chat(xeno, SPAN_XENODANGER("We attack [hit_target], slashing them with our tail!"))
to_chat(xeno, SPAN_XENODANGER("We slam [hit_target], throwing them back with our tail!"))
else
xeno.visible_message(SPAN_XENOWARNING("\The [xeno] swipes their tail through the air!"), SPAN_XENOWARNING("We swipe our tail through the air!"))
apply_cooldown(cooldown_modifier = 0.2)
Expand All @@ -281,7 +309,10 @@
var/stab_direction

stab_direction = turn(get_dir(xeno, targeted_atom), 180)
playsound(hit_target,'sound/weapons/alien_tail_attack.ogg', 50, TRUE)
if(prob(1))
playsound(hit_target, 'sound/effects/comical_bonk.ogg', 50, TRUE)
else
playsound(hit_target, "punch", 50, TRUE)

var/direction = Get_Compass_Dir(xeno, targeted_atom) //More precise than get_dir.

Expand All @@ -290,10 +321,16 @@
hit_target.visible_message(SPAN_DANGER("[hit_target] slams into an obstacle!"),
isxeno(hit_target) ? SPAN_XENODANGER("We slam into an obstacle!") : SPAN_HIGHDANGER("You slam into an obstacle!"), null, 4, CHAT_TYPE_TAKING_HIT)
hit_target.apply_damage(MELEE_FORCE_TIER_2)
if (hit_target.mob_size < MOB_SIZE_BIG)
if(hit_target.mob_size < MOB_SIZE_BIG)
hit_target.KnockDown(1)
else
hit_target.Slow(1)
else
if(hit_target.mob_size < MOB_SIZE_BIG)
hit_target.KnockDown(0.5)
else
hit_target.Slow(0.5)

/// To reset the direction if they haven't moved since then in below callback.
var/last_dir = xeno.dir

Expand All @@ -304,8 +341,6 @@
var/new_dir = xeno.dir
addtimer(CALLBACK(src, PROC_REF(reset_direction), xeno, last_dir, new_dir), 0.5 SECONDS)

hit_target.apply_armoured_damage(get_xeno_damage_slash(hit_target, xeno.caste.melee_damage_upper), ARMOR_MELEE, BRUTE, "chest")
hit_target.Slow(0.5)

hit_target.last_damage_data = create_cause_data(xeno.caste_type, xeno)
log_attack("[key_name(xeno)] attacked [key_name(hit_target)] with Tail Jab")
Expand Down Expand Up @@ -374,10 +409,11 @@
xeno.animation_attack_on(target_carbon, pixel_offset = 16)
target_carbon.apply_armoured_damage(60, ARMOR_MELEE, BRUTE, "head", 5) //DIE
target_carbon.death(create_cause_data("headbite execution", xeno), FALSE)
xeno.gain_health(150)
xeno.xeno_jitter(1 SECONDS)
xeno.flick_heal_overlay(3 SECONDS, "#00B800")
xeno.emote("roar")
if (!xeno.on_fire)
xeno.gain_health(150)
xeno.xeno_jitter(1 SECONDS)
xeno.flick_heal_overlay(3 SECONDS, "#00B800")
xeno.emote("roar")
log_attack("[key_name(xeno)] was executed by [key_name(target_carbon)] with a headbite!")
apply_cooldown()
return ..()
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,7 @@
if(target.health < 0)
target.gain_health(abs(target.health)) // gets them out of crit first

target.ExtinguishMob()
target.gain_health(xeno.health * transfer_mod)
target.updatehealth()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
lurker.plasmapool_modifier = 0
lurker.health_modifier -= XENO_HEALTH_MOD_MED
lurker.speed_modifier += XENO_SPEED_FASTMOD_TIER_1
lurker.armor_modifier += XENO_ARMOR_MOD_LARGE
lurker.armor_modifier += XENO_ARMOR_MOD_MED
lurker.damage_modifier -= XENO_DAMAGE_MOD_VERY_SMALL
lurker.attack_speed_modifier -= 2

Expand Down
Loading