From 745d425cafd58d415f54b6671a178ececddf918e Mon Sep 17 00:00:00 2001 From: Shoddd <148718717+Shoddd@users.noreply.github.com> Date: Tue, 24 Sep 2024 10:46:28 -0400 Subject: [PATCH] Fixes Venus Human Trap Tangle (#3396) ## About The Pull Request Title Fixes https://github.com/Monkestation/Monkestation2.0/issues/2194 ## Why It's Good For The Game Fixes Human Trap powers and makes them more fun ## Changelog :cl: fix: Vine Tangle for Venus Human traps works again /:cl: --- .../living/basic/jungle/venus_human_trap.dm | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/code/modules/mob/living/basic/jungle/venus_human_trap.dm b/code/modules/mob/living/basic/jungle/venus_human_trap.dm index b8959ace2d06..c679153ba7f2 100644 --- a/code/modules/mob/living/basic/jungle/venus_human_trap.dm +++ b/code/modules/mob/living/basic/jungle/venus_human_trap.dm @@ -13,10 +13,9 @@ /obj/structure/alien/resin/flower_bud //inheriting basic attack/damage stuff from alien structures name = "flower bud" desc = "A large pulsating plant..." - icon = 'icons/effects/spacevines.dmi' + icon = 'icons/mob/spacevines.dmi' icon_state = "bud0" layer = SPACEVINE_MOB_LAYER - plane = GAME_PLANE_UPPER_FOV_HIDDEN opacity = FALSE canSmoothWith = null smoothing_flags = NONE @@ -130,12 +129,11 @@ /mob/living/basic/venus_human_trap name = "venus human trap" desc = "Now you know how the fly feels." - icon = 'icons/effects/spacevines.dmi' + icon = 'icons/mob/spacevines.dmi' icon_state = "venus_human_trap" health_doll_icon = "venus_human_trap" mob_biotypes = MOB_ORGANIC | MOB_PLANT layer = SPACEVINE_MOB_LAYER - plane = GAME_PLANE_UPPER_FOV_HIDDEN health = 100 maxHealth = 100 obj_damage = 60 @@ -173,9 +171,11 @@ /mob/living/basic/venus_human_trap/Initialize(mapload) . = ..() - var/datum/action/cooldown/vine_tangle/tangle = new(src) - tangle.Grant(src) - ai_controller.set_blackboard_key(BB_TARGETED_ACTION, tangle) + AddElement(/datum/element/lifesteal, 5) + var/static/list/innate_actions = list( + /datum/action/cooldown/mob_cooldown/projectile_attack/vine_tangle = BB_TARGETED_ACTION, + ) + grant_actions_by_list(innate_actions) /mob/living/basic/venus_human_trap/RangedAttack(atom/victim) if(!(istate & ISTATE_HARM)) @@ -199,14 +199,12 @@ adjustBruteLoss(vines_in_range ? -weed_heal : no_weed_damage) //every life tick take 20 damage if not near vines or heal 10 if near vines, 5 times out of weeds = u ded -/datum/action/cooldown/vine_tangle +/datum/action/cooldown/mob_cooldown/projectile_attack/vine_tangle name = "Tangle" button_icon = 'icons/mob/spacevines.dmi' button_icon_state = "Light1" desc = "Grabs a target with a sticky vine, allowing you to pull it alongside you." cooldown_time = 8 SECONDS - ///how many vines can we handle - var/max_vines = 2 /// An assoc list of all the plant's vines (beam = leash) var/list/datum/beam/vines = list() /// How far away a plant can attach a vine to something @@ -214,17 +212,19 @@ /// how long does a vine attached to something last (and its leash) (lasts twice as long on nonliving things) var/vine_duration = 2 SECONDS -/datum/action/cooldown/vine_tangle/Remove(mob/remove_from) +/datum/action/cooldown/mob_cooldown/projectile_attack/vine_tangle/Remove(mob/remove_from) QDEL_LIST(vines) return ..() -/datum/action/cooldown/vine_tangle/Activate(atom/target_atom) +/datum/action/cooldown/mob_cooldown/projectile_attack/vine_tangle/Activate(atom/target_atom) if(isturf(target_atom) || istype(target_atom, /obj/structure/spacevine)) return - if(length(vines) >= max_vines || get_dist(owner, target_atom) > vine_grab_distance) + if(get_dist(owner, target_atom) > vine_grab_distance) + owner.balloon_alert(owner, "too far!") return for(var/turf/blockage in get_line(owner, target_atom)) if(blockage.is_blocked_turf(exclude_mobs = TRUE)) + owner.balloon_alert(owner, "something's in the way!") return var/datum/beam/new_vine = owner.Beam(target_atom, icon_state = "vine", time = vine_duration * (ismob(target_atom) ? 1 : 2), beam_type = /obj/effect/ebeam/vine, emissive = FALSE) @@ -245,7 +245,7 @@ * Arguments: * * datum/beam/vine - The vine to be removed from the list. */ -/datum/action/cooldown/vine_tangle/proc/remove_vine(datum/beam/vine) +/datum/action/cooldown/mob_cooldown/projectile_attack/vine_tangle/proc/remove_vine(datum/beam/vine) SIGNAL_HANDLER qdel(vines[vine])