Announcement

Collapse
No announcement yet.

Able Ability System Info and Support Thread

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • replied
    How would I use this as a passive timer that increases hunger over time?

    Leave a comment:


  • replied
    Originally posted by fernmerc View Post
    Hello,

    I'm trying to create a blueprint function library to apply a passive ability for status effects. In C++ I already created my function that decides whether or not the proc occured, but in order to avoid having to strictly say where the blueprint ability is located, I made another proc function in blueprint that branches out depending on what tag (fire, ice, poison, etc.) was applied and gives the target actor that passive ability. Unfortunately, in the "CalculateDamageForActor" function (or anywhere that derives from any able ability) my function does not show up. The C++ blueprint function library one does, but the blueprint-only function library one does not, even though it shows up everywhere else in the editor that's not Able-related.

    How should I be handling this? Is there any way of applying my passive status effects from within C++ without having to set the Ability's physical location? I'm using GameplayTags if that helps.

    Thanks!
    To be honest, I've never dug into Blueprint Function Libraries (I simply make C++ versions). I'm not sure how you would reference one blueprint to a BP library function. Also I'm not sure what you mean by "having to set the Ability's physical location".
    Originally posted by fernmerc View Post
    Sorry for bothering you again, but how exactly do stacks work? I have a passive burn ability and if it's triggered twice I want it to last twice as long (loop twice the number of iterations). I tried enabling stacks and messing with the settings but I couldn't get it to work. Thanks again!
    Right now Stacks have 3 different rules:

    - Refresh Duration (resets the Ability time back to 0, effectively playing it again).
    - Increase Stack Count (increases an internal counter for that Ability. You can get that value when calculating damage via GetCurrentStackCountForPassiveAbility on the Ability Component).
    - Refresh Duration and Increase Stack Count (does both of the previous options).

    There is no way to dynamically increase the iterations in a exponential (or whatever) way, if you wanted that you'd need to cancel the current passive Ability and apply a new one with the loop count you want.

    I can see about adding a more dynamic loop count that lets you script how many loops you want an Ability to play for. That's an easy add.
    Originally posted by jfaztk View Post
    Hey again,

    How do I go about deactivating an ability? I couldn't find any functions related to it. I tried disabling the component but that didn't work. When my character dies I want to stop/deactivate all abilities (passives, and the active one); how can I do this?

    Thank you!
    CancelAbility on the Ability Component. You can ask the Ability Component for the Current Active as well as all Passives and just loop through and cancel them all. I'll make a note to add a "CancelAllPassiveAbilities" or some such to make it a bit easier.

    Leave a comment:


  • replied
    Hey again,

    How do I go about deactivating an ability? I couldn't find any functions related to it. I tried disabling the component but that didn't work. When my character dies I want to stop/deactivate all abilities (passives, and the active one); how can I do this?

    Thank you!

    Leave a comment:


  • replied
    Sorry for bothering you again, but how exactly do stacks work? I have a passive burn ability and if it's triggered twice I want it to last twice as long (loop twice the number of iterations). I tried enabling stacks and messing with the settings but I couldn't get it to work. Thanks again!

    Leave a comment:


  • replied
    Hello,

    I'm trying to create a blueprint function library to apply a passive ability for status effects. In C++ I already created my function that decides whether or not the proc occured, but in order to avoid having to strictly say where the blueprint ability is located, I made another proc function in blueprint that branches out depending on what tag (fire, ice, poison, etc.) was applied and gives the target actor that passive ability. Unfortunately, in the "CalculateDamageForActor" function (or anywhere that derives from any able ability) my function does not show up. The C++ blueprint function library one does, but the blueprint-only function library one does not, even though it shows up everywhere else in the editor that's not Able-related.

    How should I be handling this? Is there any way of applying my passive status effects from within C++ without having to set the Ability's physical location? I'm using GameplayTags if that helps.

    Thanks!

    Leave a comment:


  • replied
    Originally posted by ExtraLifeMatt View Post

    Can you elaborate? You mean Dynamic Montage blending?
    yes.. please. using montages for abilities is essential. as montages can have additional level of complexity and can be made with more then one animation, have internal loops etc.
    Also I had problems with detecting "ability use animation" and "is playing animation" inside the anim graph.

    Leave a comment:


  • replied
    spawning the invisible actor is what I was going to try to do, it was the threadsafe getting of the mouse position that I ran into a snafu with. I can do it in a regular blueprint so I'll see what I can come up with.

    Leave a comment:


  • replied
    Originally posted by brian.boettger View Post
    Ok, so I've tried to read through all the posts, all the documentation (which the activity level of everything is part of the reason why I bought able) and maybe I missed something but, what would be the best way to have an ability spawn at the current mouse position? (Think flamestrike from WoW?)
    Matt, this plug in is by far the very best i've bought. Thank you for all of the time you saved me!
    Thanks for the kind words.

    For something like that, you'd need to write some code that does a raytrace to the world using the mouse position (pretty sure there's a method for that somewhere in UE4), and then you could spawn some invisible dummy actor that just plays the Ability.

    That's probably the easiest way.

    Leave a comment:


  • replied
    Ok, so I've tried to read through all the posts, all the documentation (which the activity level of everything is part of the reason why I bought able) and maybe I missed something but, what would be the best way to have an ability spawn at the current mouse position? (Think flamestrike from WoW?)
    Matt, this plug in is by far the very best i've bought. Thank you for all of the time you saved me!

    Leave a comment:


  • replied
    Originally posted by fernmerc View Post

    Ahh so you mean like a separate line trace from the tip of the sword to the hit actor, and then spawn it on that location?
    Correct. Or you could just fake it easily by something like:

    - Create a Vector going from the Actor who caused our damage, to the Actor who was hit by the damage.
    - Normalize that vector then scale it by our Hit Actor's bounds size (XY).
    - Set the Z to whatever the Component who hit us Z is.
    - Spawn the particle at that location.

    Something like that. The trace is probably easier, at the cost of a bit more performance (but again, it's not even fired unless you know the trace will hit something so that will help).
    Originally posted by duke22 View Post
    Sorry if this has already been asked, but can you do damage over time effects?
    Sure. I actually do that in the Burning Man video. Basically I just create a passive with a damage task and set it to loop X times. The length of the passive Ability is the length of a single damage "tick".

    Leave a comment:


  • replied
    Sorry if this has already been asked, but can you do damage over time effects?

    Leave a comment:


  • replied
    Originally posted by ExtraLifeMatt View Post

    Yea, Sweeps don't contain hit info, you could have it so when the enemy is hit, it does a trace between itself and the component that hit it - which would give you accurate info. That way you're only doing the more indepth/costly trace when you know for sure the attack was a success.
    Ahh so you mean like a separate line trace from the tip of the sword to the hit actor, and then spawn it on that location?

    Leave a comment:


  • replied
    Originally posted by fernmerc View Post
    How would you recommend I approach spawning hit particles for a melee attack? Since I'm doing a shape sweep, I don't really have hit-location information, so I'm kind of lost as to where (and when) I should spawn my emitter. I don't think a fixed position is a good idea, because for instance, If it's a horizontal slash, and the enemy is all the way to the side, I don't want the particle effect to be right in the center as it will seem off. Do I just get the location of the hit actor and spawn it at the same z-location of the sword or something? I can't really figure out how to make it responsive... I realize it's not exactly related to this plugin, but some help is appreciated
    Yea, Sweeps don't contain hit info, you could have it so when the enemy is hit, it does a trace between itself and the component that hit it - which would give you accurate info. That way you're only doing the more indepth/costly trace when you know for sure the attack was a success.

    Leave a comment:


  • replied
    How would you recommend I approach spawning hit particles for a melee attack? Since I'm doing a shape sweep, I don't really have hit-location information, so I'm kind of lost as to where (and when) I should spawn my emitter. I don't think a fixed position is a good idea, because for instance, If it's a horizontal slash, and the enemy is all the way to the side, I don't want the particle effect to be right in the center as it will seem off. Do I just get the location of the hit actor and spawn it at the same z-location of the sword or something? I can't really figure out how to make it responsive... I realize it's not exactly related to this plugin, but some help is appreciated

    Leave a comment:


  • replied
    Yes, but you cant put it to event graph. Just try to put Trace or SphereOverlapingActors nodes. Event graph won't let you put these nodes.

    Leave a comment:

Working...
X