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

Defiler tweaks and double attack signals sending fix. #102

Merged
merged 3 commits into from
Aug 22, 2024
Merged
Show file tree
Hide file tree
Changes from all 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
3 changes: 0 additions & 3 deletions code/__DEFINES/dcs/signals.dm
Original file line number Diff line number Diff line change
Expand Up @@ -646,9 +646,6 @@
///from /mob/living/proc/attack_alien_harm(mob/living/carbon/xenomorph/X, dam_bonus, set_location, random_location, no_head, no_crit, force_intent)
#define COMSIG_XENOMORPH_ATTACK_LIVING "xenomorph_attack_living"
#define COMSIG_XENOMORPH_BONUS_APPLIED (1<<0)
///from /mob/living/carbon/xenomorph/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick)
///only on INTENT_HARM, INTENT_DISARM, IF it does damaage
#define COMSIG_XENOMORPH_ATTACK_HOSTILE_XENOMORPH "xenomorph_attack_xenomorph"

///after attacking, accounts for armor
#define COMSIG_XENOMORPH_POSTATTACK_LIVING "xenomorph_postattack_living"
Expand Down
7 changes: 3 additions & 4 deletions code/modules/mob/living/carbon/xenomorph/attack_alien.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,12 @@
/mob/living/proc/attack_alien_grab(mob/living/carbon/xenomorph/X)
if(X == src || anchored || buckled || X.buckled)
return FALSE

if(!Adjacent(X))
return FALSE

X.start_pulling(src)
if(!X.start_pulling(src))
return FALSE
playsound(loc, 'sound/weapons/thudswoosh.ogg', 25, 1, 7)
return TRUE

/mob/living/carbon/human/attack_alien_grab(mob/living/carbon/xenomorph/X)
Expand Down Expand Up @@ -210,8 +211,6 @@
if (xeno_attacker.fortify || xeno_attacker.behemoth_charging)
return FALSE

SEND_SIGNAL(xeno_attacker, COMSIG_XENOMORPH_ATTACK_LIVING, src, damage_amount, xeno_attacker.xeno_caste.melee_damage * xeno_attacker.xeno_melee_damage_modifier)

switch(xeno_attacker.a_intent)
if(INTENT_HELP)
if(on_fire)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@
A.balloon_alert(X, "Cannot reach")
return FALSE


/datum/action/ability/activable/xeno/defile/use_ability(atom/A)
var/mob/living/carbon/xenomorph/X = owner
var/mob/living/carbon/living_target = A
Expand Down Expand Up @@ -229,10 +228,6 @@

if(!emitted_gas)
switch(defiler_owner.selected_reagent)
/*
if(/datum/reagent/toxin/xeno_neurotoxin)
emitted_gas = new /datum/effect_system/smoke_spread/xeno/neuro/medium(defiler_owner)
*/
if(/datum/reagent/toxin/xeno_hemodile)
emitted_gas = new /datum/effect_system/smoke_spread/xeno/hemodile(defiler_owner)
if(/datum/reagent/toxin/xeno_transvitox)
Expand Down Expand Up @@ -270,10 +265,6 @@
return

switch(X.selected_reagent)
/*
if(/datum/reagent/toxin/xeno_neurotoxin)
particle_holder = new(owner, /particles/xeno_smoke/neurotoxin)
*/
if(/datum/reagent/toxin/xeno_hemodile)
particle_holder = new(owner, /particles/xeno_smoke/hemodile)
if(/datum/reagent/toxin/xeno_transvitox)
Expand Down Expand Up @@ -338,10 +329,6 @@

var/obj/alien/egg/gas/newegg = new(A.loc, X.hivenumber)
switch(X.selected_reagent)
/*
if(/datum/reagent/toxin/xeno_neurotoxin)
newegg.gas_type = /datum/effect_system/smoke_spread/xeno/neuro/medium
*/
if(/datum/reagent/toxin/xeno_ozelomelyn)
newegg.gas_type = /datum/effect_system/smoke_spread/xeno/ozelomelyn
if(/datum/reagent/toxin/xeno_hemodile)
Expand Down Expand Up @@ -404,12 +391,11 @@
// This is cursed, don't copy this code its the WRONG way to do this.
// TODO: generate this from GLOB.defiler_toxin_type_list
var/static/list/defiler_toxin_images_list = list(
// DEFILER_NEUROTOXIN = image('icons/Xeno/actions.dmi', icon_state = DEFILER_NEUROTOXIN), //RUTGMC edit - icon change //NEURO REMOVAL
DEFILER_HEMODILE = image('icons/Xeno/actions.dmi', icon_state = DEFILER_HEMODILE), //RUTGMC edit - icon change
DEFILER_TRANSVITOX = image('icons/Xeno/actions.dmi', icon_state = DEFILER_TRANSVITOX), //RUTGMC edit - icon change
DEFILER_OZELOMELYN = image('icons/Xeno/actions.dmi', icon_state = DEFILER_OZELOMELYN), //RUTGMC edit - icon change
DEFILER_ACID = image('icons/Xeno/actions.dmi', icon_state = DEFILER_ACID), //RUTGMC edit - icon change
)
DEFILER_HEMODILE = image('icons/Xeno/actions.dmi', icon_state = DEFILER_HEMODILE),
DEFILER_TRANSVITOX = image('icons/Xeno/actions.dmi', icon_state = DEFILER_TRANSVITOX),
DEFILER_OZELOMELYN = image('icons/Xeno/actions.dmi', icon_state = DEFILER_OZELOMELYN),
DEFILER_ACID = image('icons/Xeno/actions.dmi', icon_state = DEFILER_ACID),
)
var/toxin_choice = show_radial_menu(owner, owner, defiler_toxin_images_list, radius = 48)
if(!toxin_choice)
return
Expand Down Expand Up @@ -475,7 +461,6 @@
X.balloon_alert(X, "Reagent slash over") //Let the user know
X.playsound_local(X, 'sound/voice/alien/hiss8.ogg', 25)


///Called when we slash while reagent slash is active
/datum/action/ability/xeno_action/reagent_slash/proc/reagent_slash(datum/source, mob/living/target, damage, list/damage_mod, list/armor_mod)
SIGNAL_HANDLER
Expand All @@ -491,16 +476,15 @@
carbon_target.balloon_alert(xeno_owner, "Immune to Intoxication")
return

playsound(carbon_target, 'sound/effects/spray3.ogg', 20, TRUE)
if(carbon_target.has_status_effect(STATUS_EFFECT_INTOXICATED))
var/datum/status_effect/stacking/intoxicated/debuff = carbon_target.has_status_effect(STATUS_EFFECT_INTOXICATED)
debuff.add_stacks(SENTINEL_TOXIC_SLASH_STACKS_PER + xeno_owner.xeno_caste.additional_stacks)
else
carbon_target.apply_status_effect(STATUS_EFFECT_INTOXICATED, SENTINEL_TOXIC_SLASH_STACKS_PER + xeno_owner.xeno_caste.additional_stacks)
else
carbon_target.reagents.add_reagent(reagent_slash_reagent, DEFILER_REAGENT_SLASH_INJECT_AMOUNT)
playsound(carbon_target, 'sound/effects/spray3.ogg', 15, TRUE)
xeno_owner.visible_message(carbon_target, span_danger("[carbon_target] is pricked by [xeno_owner]'s spines!"))
playsound(carbon_target, 'sound/effects/spray3.ogg', 15, TRUE)

GLOB.round_statistics.defiler_reagent_slashes++ //Statistics
SSblackbox.record_feedback("tally", "round_statistics", 1, "defiler_reagent_slashes")
Expand All @@ -510,7 +494,6 @@
if(!reagent_slash_count) //Deactivate if we have no reagent slashes remaining
reagent_slash_deactivate(xeno_owner)


/datum/action/ability/xeno_action/reagent_slash/on_cooldown_finish()
to_chat(owner, span_xenodanger("We are able to infuse our spines with toxins again."))
owner.playsound_local(owner, 'sound/effects/alien/newlarva.ogg', 25, 0, 1)
Expand Down Expand Up @@ -589,7 +572,6 @@
return FALSE
current = get_step_towards(current, target_turf)


/datum/action/ability/activable/xeno/tentacle/use_ability(atom/movable/target)
var/atom/movable/tentacle_end/tentacle_end = new (get_turf(owner))
tentacle = owner.beam(tentacle_end,"curse0",'icons/effects/beam.dmi')
Expand All @@ -612,7 +594,7 @@
to_chat(owner, span_warning("We grab [target] with a tentacle!"))
target.balloon_alert_to_viewers("Grabbed!")
RegisterSignal(target, COMSIG_MOVABLE_POST_THROW, PROC_REF(delete_beam))
target.throw_at(owner, TENTACLE_ABILITY_RANGE, 1, owner, FALSE)
target.throw_at(get_step(owner, owner.dir), TENTACLE_ABILITY_RANGE, 1, owner, FALSE)
if(isliving(target))
var/mob/living/loser = target
loser.ImmobilizeNoChain(1 SECONDS) //RuTGMC Edit
Expand All @@ -632,37 +614,3 @@
#undef DEFILER_HEMODILE
#undef DEFILER_TRANSVITOX
#undef DEFILER_OZELOMELYN

///Called when we slash while reagent slash is active
/datum/action/ability/xeno_action/reagent_slash/reagent_slash(datum/source, mob/living/target, damage, list/damage_mod, list/armor_mod)
var/mob/living/carbon/xenomorph/xeno_owner = owner
if(xeno_owner.selected_reagent == /datum/reagent/toxin/acid)

if(!target?.can_sting()) //We only care about targets that we can actually sting
return

var/mob/living/carbon/xeno_target = target

if(HAS_TRAIT(xeno_target, TRAIT_INTOXICATION_IMMUNE))
xeno_target.balloon_alert(xeno_owner, "Immune to Intoxication")
return

playsound(xeno_target, 'sound/effects/spray3.ogg', 20, TRUE)
if(xeno_target.has_status_effect(STATUS_EFFECT_INTOXICATED))
var/datum/status_effect/stacking/intoxicated/debuff = xeno_target.has_status_effect(STATUS_EFFECT_INTOXICATED)
debuff.add_stacks(SENTINEL_TOXIC_SLASH_STACKS_PER + xeno_owner.xeno_caste.additional_stacks)
else
xeno_target.apply_status_effect(STATUS_EFFECT_INTOXICATED, SENTINEL_TOXIC_SLASH_STACKS_PER + xeno_owner.xeno_caste.additional_stacks)

GLOB.round_statistics.defiler_reagent_slashes++ //Statistics
SSblackbox.record_feedback("tally", "round_statistics", 1, "defiler_reagent_slashes")

reagent_slash_count-- //Decrement the toxic slash count

if(!reagent_slash_count) //Deactivate if we have no reagent slashes remaining
reagent_slash_deactivate(xeno_owner)

return

return ..()

Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,7 @@
var/emitting_gas = FALSE
life_value = 0
default_honor_value = 0
mob_size = MOB_SIZE_BIG
mob_size = MOB_SIZE_XENO
inherent_verbs = list(
/mob/living/carbon/xenomorph/proc/vent_crawl,
)
41 changes: 4 additions & 37 deletions code/modules/mob/living/carbon/xenomorph/xenoattacks.dm
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,6 @@

if(src == xeno_attacker)
return TRUE
if(isxenolarva(xeno_attacker)) //Larvas can't eat people
xeno_attacker.visible_message(span_danger("[xeno_attacker] nudges its head against \the [src]."), \
span_danger("We nudge our head against \the [src]."))
return FALSE

switch(xeno_attacker.a_intent)
if(INTENT_HELP)
Expand All @@ -92,6 +88,7 @@
return TRUE
xeno_attacker.visible_message(span_notice("\The [xeno_attacker] caresses \the [src] with its scythe-like arm."), \
span_notice("We caress \the [src] with our scythe-like arm."), null, 5)
return TRUE

if(INTENT_DISARM)
xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_DISARM)
Expand All @@ -111,36 +108,6 @@
return TRUE

if(INTENT_GRAB)
if(anchored)
return FALSE
if(!xeno_attacker.start_pulling(src))
return FALSE
xeno_attacker.visible_message(span_warning("[xeno_attacker] grabs \the [src]!"), \
span_warning("We grab \the [src]!"), null, 5)
playsound(loc, 'sound/weapons/thudswoosh.ogg', 25, 1, 7)

if(INTENT_HARM)//Can't slash other xenos for now. SORRY // You can now! --spookydonut
if(issamexenohive(xeno_attacker) && !HAS_TRAIT(src, TRAIT_BANISHED))
xeno_attacker.do_attack_animation(src)
xeno_attacker.visible_message(span_warning("\The [xeno_attacker] nibbles \the [src]."), \
span_warning("We nibble \the [src]."), null, 5)
return TRUE
// copypasted from attack_alien.dm
//From this point, we are certain a full attack will go out. Calculate damage and modifiers
var/damage = xeno_attacker.xeno_caste.melee_damage

//Somehow we will deal no damage on this attack
if(!damage)
xeno_attacker.do_attack_animation(src)
playsound(xeno_attacker.loc, 'sound/weapons/alien_claw_swipe.ogg', 25, 1)
xeno_attacker.visible_message(span_danger("\The [xeno_attacker] lunges at [src]!"), \
span_danger("We lunge at [src]!"), null, 5)
return FALSE

xeno_attacker.visible_message(span_danger("\The [xeno_attacker] slashes [src]!"), \
span_danger("We slash [src]!"), null, 5)
log_combat(xeno_attacker, src, "slashed")

xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_REDSLASH)
playsound(loc, "alien_claw_flesh", 25, 1)
apply_damage(damage, BRUTE, blocked = MELEE, updating_health = TRUE)
return attack_alien_grab(xeno_attacker)
if(INTENT_HARM)
return attack_alien_harm(xeno_attacker)
Loading