Chanting Animations (MV/MZ)

● ARCHIVED · READ-ONLY
Started by ATT_Turan 59 posts Page 1 of 3 View original ↗
  1. Chanting Animations 1.1
    ATT_Turan

    Introduction
    This plugin was inspired by a request from @Puppet Knight that seemed like it could be found useful by some number of people. Casters can now grow more powerful in visual ways by adding effects to them while queued for an action and chanting.

    I have tested the basic functionality, please let me know if you encounter any errors. I will consider making compatibility patches if the other plugin is free to use (or one I own, such as a Yanfly product) and unobfuscated. Otherwise, other authors are free to modify this code to make it compatible with theirs so long as I am still credited.

    Features
    This plugin allows you to make casters look powered up by playing an animation on them while they are chanting. This animation will loop for as long as the actor is chanting, and will play whenever the actor starts the chanting motion.

    A plugin parameter allows you to define whether the animation stops immediately upon the start of the action, or if it should finish playing the last time.

    Screenshots
    castinganim.gif

    How to Use
    All of this plugin's functionality is via the single notetag.

    Notetags
    Actor, Class, Weapon, Armor, State, and Skill notetag
    Code:
    <chantanim:x>

    This will make animation ID x play while the actor is chanting. The notetag can be placed on multiple objects to override which animation is displayed.

    The default order of priority is:
    Class -> Actor -> Armor -> Weapon -> States -> Skill

    Example:
    Code:
    <chantanim:5>

    Terms and Credits
    Free for non-commercial and commercial use. Credit ATT_Turan.
  2. Oh that's nice!
    I'll certainly test this with Akea2
  3. AH! Thank you for this! It will go great with my Tales of fangame!

    One thing I noticed during a quick test using still database skills that chanting requires the skill's Hit Type set to "Magical Attack". I actually thought it was kind of like "System 2" tab in the database where you need to have a skillset for magic but it turns out it's actually Hit Type-dependant and not skillset-dependant.

    I'm honestly surprised that the animation is dependant on the user and not spell. I was hoping to have chant animations like some of recent Tales games where different elemental spells have different color variations for the same spell-chanting animations, e.g. red for fire-elemental spells, or green for wind-elemental spells. That's not a necessary feature but if perhaps you might be expanding on this plugin in the future it might be something to consider; not sure how difficult it might be in implementing tho.
  4. You're not crediting me for helping you with the animation stopping? For shame, Turan! For Shame! /s

    Great job, hopefully many people will find this useful. :)
  5. Kaimi said:
    One thing I noticed during a quick test using still database skills that chanting requires the skill's Hit Type set to "Magical Attack".
    That should not be the case, unless you have a plugin modifying something. By default, the battle system makes you chant if the skill you've selected is of a skill type listed under Magic Skills. The type of hit should be immaterial.

    Kaimi said:
    I'm honestly surprised that the animation is dependant on the user and not spell. I was hoping to have chant animations like some of recent Tales games where different elemental spells have different color variations for the same spell-chanting animations, e.g. red for fire-elemental spells, or green for wind-elemental spells. That's not a necessary feature but if perhaps you might be expanding on this plugin in the future it might be something to consider; not sure how difficult it might be in implementing tho.
    You can do that by incorporating some free Yanfly plugins.

    Use a Custom Execution notetag from Skill Core to place a state on the user that has the chantanim notetag; then clear it off with a Before Eval. It did occur to me to put it on skills, but the problem with that is determining priority.

    (sorry, just saw you're on MZ, but VisuStella has similar notetags in the Battle Core)

    What takes precedence, Fire 3 having a powered up chant, or the fact that the actor is of the Archmage class, or has learned a skill that grants a Megamagic passive state? I figured it was easier to have an established order of precedence and there are ways for the user to manipulate it in-game.

    Any more suggestions are welcome!

    @Trihan You 'da bomb!
  6. while it works for actors/classes/states etc, will it work on the enemies side too?
    ideal for front view enemies (and sideview ofcourse) that is also visible when
    they cast a skill or has a specific state?

    like parallize state that have an animation around the actor continue when state
    is removed (actor/enemies)?
  7. ShadowDragon said:
    while it works for actors/classes/states etc, will it work on the enemies side too?
    Good question - I did not code it to be compatible with SV enemies (yet). I would only be able to do so for MV, because all of the stuff in the VisuStella battle core is obfuscated. So I'd have no idea how those SV enemies are referred to and what functions/properties they use.

    ShadowDragon said:
    like parallize state that have an animation around the actor continue when state
    is removed (actor/enemies)?
    That's beyond the scope of this plugin - this is only to play an animation when an actor is chanting. You're talking more about state overlays (and I'm 90% sure I've seen plugins to use an animation for the overlay).
  8. enemies can chant too, I though if it has the state, it will also loop like
    a "chanting" like, but if the enemies can work, it would be awesome.

    I can look for the state overlay to loop :)
  9. ShadowDragon said:
    enemies can chant too
    Again, only if you're using a plugin to use SV actor sheets for your enemies. And those plugins make a distinction in their code between actors and SV enemies, so I wouldn't expect this plugin to have any effect on that.

    But I do plan on adding that compatibility, at least for Yanfly's on MV.
  10. I use front view enemies, because I use 1 actor, and use a unique way for
    front view battle system, so I hope it can be used for that.

    if its only side view, its okey though =)
    the plugin looks awesome, and I hope to see it in working in some project ^^
  11. ShadowDragon said:
    I use front view enemies...if its only side view, its okey though =)
    Well...I'm rather confused by what you're talking about at this point :kaoswt2:

    Motions are only used by side-view characters. Now there are plugins (e.g. Yanfly's Sideview Animated Enemies, VisuStella's Battle Core) which allow you to use side-view characters for your enemies.

    And there are a number of ways for you to use side-view characters in front-view (or simulated front-view).

    But, by definition, there's no such thing as a chanting motion (or any motion) for a static enemy sprite. Motions only exist for side-view characters.
  12. I didn't know that, but I use frontview which are semi "animated" by another
    plugin, so if chanting cannot work on those, its okey, I might find a way around.

    keep up the nice work :) still I think its a nice feature for those using sideview.
  13. So I was testing this plugin in RMMZ with Visustella and I think I can point out several issues:
    • If I have an animated SV enemy present, the following error message appears: "TypeError: actor.currentClass is not a function". This is with Visustella; maybe I could work around it with some other plugin that provides animated SV enemies, maybe one of them would be able to cooperate with chanting animations.
    • Regardless if in plugin parameters I have set EndAnim to true or false, the chanting animation always play fully. It actually stops playing with Visustella Battle Core turned off.

    Like you said, with Visustella obscuring their code it's quite impossible to create something compatible with it. If you can't fix those things that's fine; for now people will know what expect when using this plugin with Visustella Battle Core which is still a plus.

    Once again: thanks for such a great plugin! ;)
  14. @Kaimi Thanks for the information. I know the VisuStella plugins are popular, and I would absolutely make this as compatible as possible if it were up to me.

    However, as you noted, it's not :stickytongue:

    I know VS has a process where you can submit a plugin to get a compatibility patch for their plugins. I'm not invested enough for that because I'm not planning to use it on MZ myself, but if you (or someone else) wants to look up and initiate that process, you have my blessing.
  15. Bless you for not obfuscating the code. xD


    SO I'm hitting the same error that was reported above. If I get it to a working state that plays nice with VS then I'll see about creating a standalone patch or setting it up as an if check for the VS plugin thats messing with yours.


    One thing to note that I saw when the animation was playing is that it needs to be flipped for Actors. Is that something you can add as a parameter option?

    1696634587925.png


    granted i may be ok with it that way lol
  16. @Puppet Knight Oh yeah, I suppose it should be mirrored. I didn't notice because I tested with unidirectional circley things.
  17. So, found a pretty simple workaround.

    if (actor.isActor()){

    Nesting all the other 'if' into that did the trick since it will only run the animation . So:

    TUR.getChantAnim = function(actor) { let animId = 0; if (actor.isActor()){ if (!isNaN($dataClasses[actor.currentClass().id].meta.chantanim)) animId = Number($dataClasses[actor.currentClass().id].meta.chantanim); if (!isNaN(actor.actor().meta.chantanim)) animId = Number(actor.actor().meta.chantanim); let obj = actor.armors().find(armor => $dataArmors[armor.id].meta.chantanim); if (obj) animId = Number($dataArmors[obj.id].meta.chantanim); obj = actor.weapons().find(weapon => $dataWeapons[weapon.id].meta.chantanim); if (obj) animId = Number($dataWeapons[obj.id].meta.chantanim); obj = actor.states().find(state => $dataStates[state.id].meta.chantanim); if (obj) animId = Number($dataStates[obj.id].meta.chantanim); } return animId; };

    Caveat obviously being that now you can't have a casting animation showing for enemies unless you build the code out to account for them specifically.


    One thing to note @ATT_Turan , the animation isn't ending at the start of another motion. Granted I'm willing to believe that has more to do with Battler Core Action Sequences than with your plugin. Testing further to verify that now

    TESTED:

    Tee animation keeps running after the casting motion is finished, when the parameter is set to true. This is happening even without an Action Sequence (pure skill use)
  18. Puppet Knight said:
    Tee animation keeps running after the casting motion is finished, when the parameter is set to true. This is happening even without an Action Sequence (pure skill use)
    Huh. Are there any other plugins in play? The cutting off worked for my testing, using both Effekseer and MV animations.

    Edit: It still works with both animation styles in my test project. Can't duplicate the error.
  19. ATT_Turan said:
    Huh. Are there any other plugins in play? The cutting off worked for my testing, using both Effekseer and MV animations.
    None that are obvious conflicts, I'll test further over the weekend to see whats going on. Its likely simply just the presence of battle core though, cause as @Kaimi said:

    Kaimi said:
    It actually stops playing with Visustella Battle Core turned off.


    So might be a dead end there
  20. Yeah. Like I said, if this is the functionality you're looking for and it's worth the effort to you, feel free to try the VisuStella compatibility submission whatever stuff, see if they'll make a patch.