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

Sentinel buffs #7197

Merged
merged 13 commits into from
Nov 2, 2024
2 changes: 1 addition & 1 deletion code/__DEFINES/weapon_stats.dm
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ It DOES NOT control where your bullets go, that's scatter and projectile varianc
////SCATTER////
*/

#define SCATTER_AMOUNT_NEURO 60
#define SCATTER_AMOUNT_NEURO 45
#define SCATTER_AMOUNT_TIER_1 15
#define SCATTER_AMOUNT_TIER_2 10
#define SCATTER_AMOUNT_TIER_3 8
Expand Down
2 changes: 1 addition & 1 deletion code/datums/ammo/xeno.dm
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
return

if(ishuman(M))
M.apply_effect(2.5, SUPERSLOW)
M.apply_effect(4, SUPERSLOW)
M.visible_message(SPAN_DANGER("[M]'s movements are slowed."))

var/no_clothes_neuro = FALSE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
macro_path = /datum/action/xeno_action/verb/verb_slowing_spit
action_type = XENO_ACTION_CLICK
ability_primacy = XENO_PRIMARY_ACTION_1
xeno_cooldown = 1.5 SECONDS
xeno_cooldown = 2 SECONDS
plasma_cost = 20

// Scatterspit
Expand All @@ -17,7 +17,7 @@
macro_path = /datum/action/xeno_action/verb/verb_scattered_spit
action_type = XENO_ACTION_CLICK
ability_primacy = XENO_PRIMARY_ACTION_2
xeno_cooldown = 8 SECONDS
xeno_cooldown = 6 SECONDS
plasma_cost = 30

// Paralyzing slash
Expand All @@ -32,3 +32,19 @@
plasma_cost = 50

var/buff_duration = 50

/datum/action/xeno_action/activable/hibernate
name = "hibernate"
action_icon_state = "warden_heal"
ability_name = "hibernate"
macro_path = /datum/action/xeno_action/verb/verb_hibernate
action_type = XENO_ACTION_CLICK
ability_primacy = XENO_PRIMARY_ACTION_4
xeno_cooldown = 50 SECONDS
plasma_cost = 150

var/regeneration_amount_total = 500
var/regeneration_ticks = 10
var/plasma_amount = 400
var/plasma_time = 10
var/time_between_plasmas = 1
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,10 @@
set hidden = TRUE
var/action_name = "Paralyzing Slash"
handle_xeno_macro(src,action_name)

/datum/action/xeno_action/verb/verb_hibernate()
set category = "Alien"
set name = "hibernate"
set hidden = TRUE
var/action_name = "hibernate"
handle_xeno_macro(src,action_name)
Original file line number Diff line number Diff line change
Expand Up @@ -99,3 +99,41 @@

to_chat(xeno, SPAN_XENODANGER("We have waited too long, our slash will no longer apply neurotoxin!"))
button.icon_state = "template"
/datum/action/xeno_action/activable/hibernate/use_ability(atom/target)
var/mob/living/carbon/xenomorph/X = owner
if (!X.check_state() || X.action_busy)
return

var/turf/current_turf = get_turf(X)
if(!current_turf || !istype(current_turf))
return

if (!action_cooldown_check() && check_and_use_plasma_owner())
return

if (!action_cooldown_check())
return

var/obj/effect/alien/weeds/alien_weeds = locate() in current_turf

if(!alien_weeds)
to_chat(X, SPAN_XENOWARNING("You need to be on weeds in order to hibernate."))
return

if(alien_weeds.linked_hive.hivenumber != X.hivenumber)
to_chat(X, SPAN_XENOWARNING("These weeds don't belong to your hive! You can't hibernate here."))
return

new /datum/effects/plasma_over_time(X, plasma_amount, plasma_time, time_between_plasmas)
new /datum/effects/heal_over_time(X, regeneration_amount_total, regeneration_ticks, 1)
X.SetSleeping(5)
addtimer(CALLBACK(src, PROC_REF(sleep_off)), 10 SECONDS, TIMER_UNIQUE)
X.add_filter("sleep_on", 1, list("type" = "outline", "color" = "#17991b80", "size" = 1))

apply_cooldown()
to_chat(X, SPAN_XENONOTICE("You fall into a deep sleep, quickly healing your wounds and restoring your plasma."))
return ..()

/datum/action/xeno_action/activable/hibernate/proc/sleep_off()
var/mob/living/carbon/xenomorph/X = owner
X.remove_filter("sleep_on")
13 changes: 7 additions & 6 deletions code/modules/mob/living/carbon/xenomorph/castes/Sentinel.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@
xeno_explosion_resistance = XENO_EXPLOSIVE_ARMOR_TIER_1
armor_deflection = XENO_NO_ARMOR
evasion = XENO_EVASION_NONE
speed = XENO_SPEED_TIER_7
speed = XENO_SPEED_HELLHOUND

caste_desc = "A weak ranged combat alien."
evolves_to = list(XENO_CASTE_SPITTER)
deevolves_to = list("Larva")
acid_level = 1

tackle_min = 4
tackle_max = 4
tackle_min = 3
tackle_max = 3
tackle_chance = 50
tacklestrength_min = 4
tacklestrength_max = 4
Expand Down Expand Up @@ -49,6 +49,7 @@
/datum/action/xeno_action/activable/slowing_spit, //first macro
/datum/action/xeno_action/activable/scattered_spit, //second macro
/datum/action/xeno_action/onclick/paralyzing_slash, //third macro
/datum/action/xeno_action/activable/hibernate, //fourth macro
/datum/action/xeno_action/onclick/tacmap,
)
inherent_verbs = list(
Expand All @@ -68,7 +69,7 @@
// State
var/next_slash_buffed = FALSE

#define NEURO_TOUCH_DELAY 4 SECONDS
#define NEURO_TOUCH_DELAY 3 SECONDS

/datum/behavior_delegate/sentinel_base/melee_attack_modify_damage(original_damage, mob/living/carbon/carbon_target)
if (!next_slash_buffed)
Expand Down Expand Up @@ -103,6 +104,6 @@
#undef NEURO_TOUCH_DELAY

/datum/behavior_delegate/sentinel_base/proc/paralyzing_slash(mob/living/carbon/human/human_target)
human_target.KnockDown(2)
human_target.Stun(2)
human_target.KnockDown(2.5)
human_target.Stun(2.5)
to_chat(human_target, SPAN_XENOHIGHDANGER("You fall over, paralyzed by the toxin!"))
Loading