Ramza's State Workshop OPEN (current states: 26 LATEST: Overpower + Darkness Burst)

Discussion in 'Resource Workshops' started by ramza, Aug 2, 2016.

  1. Iqus

    Iqus inVictor Member

    Messages:
    27
    Likes Received:
    11
    Location:
    England
    First Language:
    Spanish
    Primarily Uses:
    RMMV
    I wasn't concerned about the magical check but the stype check, without it, any character could use it for it's spells no matter what skill type they have. But that was just a thought :)


    Dizziness: Yeah I thought of that after I post it, it's definetely not worth the pain.


    Lock:


    This is the skill's full code:

    Code:
    <Custom Select Effect>
    // Check if this action is a skill and targets an opponent.
    if (this.item() && DataManager.isSkill(this.item()) && this.isForOpponent()) {
      // Create a pool of blocked Skill TYPES.
      var blockedtypes = [];
      // Add the skill type ID's to that pool.
      blockedtypes.push(7, 8, 9);
      // Create a pool of blocked individual skills.
      var blockedskills = [];
      // Add the individual skill ID's to that pool.
      blockedskills.push(249, 250, 251, 252);
      blockedskills.push(253, 254, 255, 256);
      // Check if the skill type or skill ID matches.
      if (blockedtypes.contains(this.item().stypeId) || blockedskills.contains(this.item().id)) {
        // If it does, then store the skill's original success rate.
        this._formerItemSuccessRate = this.item().successRate;
        // Now drop the skill's success rate to 0.
        this.item().successRate = 0;
        // Start an animation to show the spell shield occurred.
        target.startAnimation(53);
      }
    }
    </Custom Select Effect>
    
    <Custom Deselect Effect>
    // Check if there is a success rate stored.
    if (this._formerItemSuccessRate !== undefined) {
      // Restore the skill's success rate.
      this.item().successRate = this._formerItemSuccessRate;
      // Remove this spell shield state.
      target.removeState(stateId);
    }
    </Custom Deselect Effect>
     
    #61
  2. ramza

    ramza Lunatic Coder Veteran

    Messages:
    558
    Likes Received:
    308
    Location:
    Nova Scotia, Canada
    First Language:
    English
    Primarily Uses:
    RMMV
    Sorry it's been so long since I was active here, I worked this week and got busy. XD


    I designed that overload skill to target one stype specifically, but if you remove that check it will affect all skills the actor has. That was merely part of the flavor of my interpretation of it, of course.


    I went ahead and made virus, and in the process, I think I figured out how to permanently affect primary attributes using a state. In making this I discovered that things like mhp and mmp and atk, will snap back to their original values immediately after being set to something different, so I had to use a different function to set them. I know this is the same for params like crit as well, as I was trying to change them and couldn't find a function to do so in the past.


    Anyways, here's virus.


    VirusState.png


    Code:
    <Custom Apply Effect>
    this.virusHp = this.mhp - this._hp
    this.virusRemove = this.virusHp
    this.addParam(0, -this.virusRemove)
    </Custom Apply Effect>
    <Custom Deselect Effect>
    target.virusHp = target.virusHp + (target.mhp - target._hp)
    target.virusRemove = (target.mhp - target._hp)
    target.addParam(0, -target.virusRemove)
    </Custom Deselect Effect>
    <Custom Remove Effect>
    target.addParam(0, target.virusHp)
    target.virusHp = undefined
    target.virusRemove = undefined
    </Custom Remove Effect>

    When first applied, it sets the targets mhp to it's current hp, and stores the value of this in a value on the affected battler. When the battler is the target of an attack, it does this check again and adds the change to the virusHp value, to continue to keep track of the change. When the state expires, or is removed, it adds the virusHp value back to the mhp of the target, effectively giving back what was lost.
     
    Last edited: Mar 20, 2017
    #62
  3. Iqus

    Iqus inVictor Member

    Messages:
    27
    Likes Received:
    11
    Location:
    England
    First Language:
    Spanish
    Primarily Uses:
    RMMV
    Excelent job, as always!


    I was trying to do a MP version but it doesn't seem to work, maybe because it's not the same receiving HP damage than spending MP. I tried this:


    <Custom Apply Effect>
    this.virusMp = this.mmp - this._mp
    this.virusRemove = this.virusMp
    this.addParam(1, -this.virusRemove)
    </Custom Apply Effect>

    <Custom Deselect Effect>
    target.virusMp = target.virusMp + (target.mmp - target._mp)
    target.virusRemove = (target.mmp - target._mp)
    target.addParam(1, -target.virusRemove)
    </Custom Deselect Effect>

    <Custom Remove Effect>
    target.addParam(1, target.virusMp)
    target.virusMp = undefined
    target.virusRemove = undefined
    </Custom Remove Effect>





    While you were gone I tried to develop a Float state with a simple:


    <Custom Apply Effect>


    target.spriteFloat(0.2,200)


    </Custom Apply Effect>


    It is also supposed to give an increased evasion rate against an especific element/category of skill (close combat). For the floating, and I had the same problem with the Stealth state, anytime you change rows it seems like oppacity and floating are resetted, also, when an action sequence that changes the allies oppacity triggers and then restores it, Stealth loses the oppacity properties. I was wondering if there's a restore oppacity option. 


    I had another problem with the Opportunism state since forced actions consume the battler's turn, not only resetting the ATB bar (in my case) but also triggering all Turn End states (I think Yanfly was trying to fix this on the last update though).
     
    #63
  4. Lnik3500

    Lnik3500 Master Troll Veteran

    Messages:
    303
    Likes Received:
    47
    Location:
    Somewhere you will less expect me to be.
    First Language:
    French
    Primarily Uses:
    RMMV
    Hi! I came back after some time and your states is really useful :p  


    Anyway I came back with a new request hat I don't know if it's possible but we'll see.


    I'm requesting some options with my Auto-Battle State. I'm asking if it's possible:


    - to remove that state at the end of the turn if a button is pressed in that turn


    - to show an image so the player can see he can press a button to cancel? (optional)


    My goal is to ultimately create with an Auto-Battle feature.


    Please tell me if it requires a plugin to use


    Cheers :p  
     
    #64
  5. ramza

    ramza Lunatic Coder Veteran

    Messages:
    558
    Likes Received:
    308
    Location:
    Nova Scotia, Canada
    First Language:
    English
    Primarily Uses:
    RMMV
    I'm not sure if autobattling can be turned on using a state, but pressing a button to cancel it is definitely outside the realm of something a state can do. You'll be needing a plugin for that, unfortunately.


    Speaking of plugins, I released one yesterday on my blog. The RamzaStateAnimationDmg plugin makes added effect states a lot easier to read, by adding in some easy functions to the engine, to handle the waiting for damage popups between animations for you. I have used it in this week's state, and will continue to use it in all added-effect style states from this point forward. As with all my plugins (and states) free to use for commercial and non-commercial purposes.


    So lets hop into the state for this week, Lightning Shield. This is an active buff state that causes the affected battler to discharge lightning on all enemies when struck by a physical attack.This effect will happen multiple times per turn, but not multiple times per attack (as in a multi-strike attack will not trigger it twice). While this is designed as an active skill, it could also be rolled into a passive buff as well. This is one of several 'shield' effects in my project, of which, only one can be active at a given time.

    What you need:
    Our first state is the shield state. This is the state that is applied to the target when the lightning shield spell is cast on them. It has a turn duration, and some info in the note box.


    [​IMG]


    Here is the copy-paste code for this state:


    Code:
    <Custom React Effect>
    if (this.isHpEffect() && this.isPhysical() && !target.isStateAffected(224)){
     var units = target.opponentsUnit().aliveMembers()
     user.addState(224)
     target.startAnimation(191, false, 0)
      for (i = 0; i < units.length; i++){
       if (!units[i].isDead()){
        units[i].shddmg = origin.mat * 2
        target.addState(224)
        performStateAnimationDmg2(76, units[i], (Math.floor((units[i].shddmg) * ((Math.random()*40)+80)/100)), 4);
        units[i].shddmg = undefined
       }
      }
    }
    </Custom React Effect>
    <Custom Deselect Effect>
    target.removeState(224)
    </Custom Deselect Effect>
    

    StateId 27 is used as a fail safe to make sure that a lightning shield doesn’t trigger multiple times on the same action. Without it being applied and checked for, an attack that hit’s three times would trigger the shield three times as well.


    The results?:



    Have a look for yourself.


    Note: While testing the copy-paste state, I noticed that the lightning shield would trigger twice if the affected battler was guarding. This was in the default battle system, with battle engine core. When I updated my yanfly plugins, the issue went away.



    The deselect effect would only play if something hit the battler, or otherwise targeted it in combat. For casting a spell, you'd need to use an Action end effect instead, so that it would update everytime the affected battler took an action.


    You could keep the deselect effect in there was well, for the instance of an enemy battler hitting you with an MP drain skill, though.

    I suspect for this to keep working, you'd need to have an action end effect that re-applied the float effect at the end of every action by the battler, and a deselect for every action used on the battler. The stealth opacity issue is probably the same thing, but it would definitely cause obvious blinking in and out in the case where opacity is changed during an action sequence and then not restored until the action is over.


    There isn't a restore opacity function that I am aware of at this time, I suspect that would be plugin territory.
     
    Last edited: Mar 20, 2017
    #65
    ashikai likes this.
  6. Iqus

    Iqus inVictor Member

    Messages:
    27
    Likes Received:
    11
    Location:
    England
    First Language:
    Spanish
    Primarily Uses:
    RMMV
    @ramza Awesome! Action End seems to work perfectly!

    The Float state is gonna be a problem though, it might need a new script or something.


    I dealt with the Hell Power state and I ended up manipulating the resurrection skill instead of the state itself. I use this code for the skill:

     


    <Before Eval>
    var recovery = Math.ceil(target.mhp * 0.1);
    if ((target.isStateAffected(1)) && (!target.isStateAffected(36))){
    target.removeState(1);
    target.gainHp(recovery);
    target.startDamagePopup();
    target.clearResult();
    }
    </Before Eval>


    It's quite simple but it seems to work. However, it has two problems:


    1. If the Damage Popup is added, it will crash the game when using the skill on the menu.


    2. Turns don't run out while the battler is dead.


    Any ideas on how to fix that? Did you had the time to think of any other state? I have seen your new plugin, I'm going to try it next thing on my list :)


    EDIT:


    Yanfly helped me and he made a state that totally works, the only problem is that still turns cannot run when the battler is dead.

    I checked your plugin and it's actually pretty cool :D Any chance you would do the same for Skills?
     
    Last edited by a moderator: Oct 5, 2016
    #66
  7. ramza

    ramza Lunatic Coder Veteran

    Messages:
    558
    Likes Received:
    308
    Location:
    Nova Scotia, Canada
    First Language:
    English
    Primarily Uses:
    RMMV
    I'm feeling... friendly this morning, so I'll share a bonus shield state. Like Lightning Shield above, Fire Shield is a reaction style skill that deals damage, but only to the battler that hit the affected battler. Obviously the skill looks better if you have more fitting animations to use, but that's up to you guys to find :)


    Code:
    <Custom React Effect>
    if (this.isHpEffect() && this.isPhysical() && !user.isStateAffected(27)){
     user.shddmg = origin.mat * 4
     user.addState(27)
     performStateAnimationDmg(66, user, (Math.floor((user.shddmg) * ((Math.random()*40)+80)/100)), 2);
     user.shddmg = undefined
     target.startAnimation(67, false, 0)
    }
    </Custom React Effect>

    Oddly enough, I don't find that a check to see if the enemy has died was necessary with this state. I'm not 100% sure why. Note that this shield spell causes damage to the battler roughly double what Lightning Shield did. This is a balancing mechanic, a multi-target skill should deal less damage to each battler than a single target one would.
     
    Last edited: Mar 20, 2017
    #67
    ashikai, Lnik3500 and kovak like this.
  8. Crysillion

    Crysillion Veteran Veteran

    Messages:
    137
    Likes Received:
    20
    Wanted to let you know that I have this page bookmarked and check it actively. I just don't have much to contribute so I don't say much, but these are really cool and deserve a lot more notice. I'll probably post it on the RPG Maker subreddit for exposure, actually.
     
    #68
  9. ramza

    ramza Lunatic Coder Veteran

    Messages:
    558
    Likes Received:
    308
    Location:
    Nova Scotia, Canada
    First Language:
    English
    Primarily Uses:
    RMMV
    Hey, thanks for that. I'm sorry I missed an update last weekend, I was at a wedding, and then had a rather painful medical problem after, so I completely forgot about it. Definitely didn't have anything to do with lack of interest on the thread or anything ;).


    Let's talk states. This week I'm bringing a damage over time state to the table that does increasing damage over time, as it stays on the target. Touch of Death is inspired by the skill of the same name in Final Fantasy XIV, and functions similar to many skills from other MMOs. A affected target takes a small amount of damage on turn 1 - which ramps up to be a lot of damage by the final turn of the state. In this case, we are using turn counters to keep track of the number of turns the state has been on the target, to use in the damage formula.


    What You Need:

    • The usual Plugins

    • a skill to apply the state with

    • the state

    First, here’s a screen grab of our state. Note the turn duration, and remove at battle end.


    [​IMG]


    Now, to keep with our other damage over time states, this state will also take into account the element of it when it deals damage. In my example, I have created a variable to reduce the damage from the state as if it were a physical attack. This is the default formula that Yanfly’s Armor Scaling plugin uses. You can also change this to just about anything to make it work in your project, but remember that damage reduction from the armor scaling plugin doesn’t take effect on damage dealt by states in this way. It is also important to note, that because by the last turn of this state, it will be doing 12x more damage than it did on the first turn, the base damage of the state should be very low. In this example, the state deals damage equal to the actor’s attack parameter.


    Here is the paste code:


    Code:
    <Custom Turn End Effect>
    this.addStateCounter(29, 1);
    if (this.getStateCounter(29) > 12) {
     this.setStateCounter(29, 12)
    }
    var ele = 1
    var reduction = (100 / (100 + (this.def / 2)))
    var formula = Math.round((origin.atk * this.getStateCounter(29)) * reduction);
    var total = (Math.floor(formula * ((Math.random()*40)+80)/100) * this.elementRate(ele))
    this.gainHp(-total);
    this.startDamagePopup();
    if (this.isDead()) {
     this.performCollapse();
    }
    </Custom Turn End Effect>
    <Custom Leave Effect>
    var ele = 1
    var reduction = (100 / (100 + (this.def / 2)))
    var formula = Math.round((origin.atk * 12) * reduction);
    var total = (Math.floor(formula * ((Math.random()*40)+80)/100) * this.elementRate(ele))
    this.gainHp(-total);
    this.startDamagePopup();
    if (this.isDead()) {
     this.performCollapse();
    }
    </Custom Leave Effect>

    Note that the state Id we’re working with is 29, and this will need to updated in your own project. Also note the Math.random function is being used to add variance to the damage of the skill, in this case, 20%. When the state first does damage, it is at one stack, so it will deal 1x damage. Every turn end after, it gains one more stack, dealing more damage each turn, until it falls off on the 12th turn, dealing 12x damage. The state is designed to never exceed twelve stacks, but you can adjust that to your liking. See below for a possible strategy tip regarding this state, and others like it.


    Bonus: Strategy:



    This effect is mostly only useful for the start of a fight, as if the enemy dies early after receiving it, it will not have done much damage. However, as scripted, if someone re-applies the state, the turn counter will remain where it was when the state is re-applied, allowing someone to refresh the highly stacked state with a fresh 12 turn duration. This results in a Damage over time type strategy, where applying this state, and keeping it on the target becomes a very high source of damage.


    If you don’t want this to happen in your project, you can add the line <Reapply Ignore Turns>, which will causes a skill that re-applies this state to have no effect on it. This would prevent the damage stacking of the above tip.


    That’s all for this update folks.


    ~Ramza
     
    Last edited: Mar 20, 2017
    #69
    waynee95 likes this.
  10. ramza

    ramza Lunatic Coder Veteran

    Messages:
    558
    Likes Received:
    308
    Location:
    Nova Scotia, Canada
    First Language:
    English
    Primarily Uses:
    RMMV
    This week is a double feature. I'm starting to run out of awesome states from my own project to share, so this week I'm going to share a modification of a state that my good pal* Yanfly came up with for a tips and tricks video a long time ago (at least I think that's where I got it from).


    *(Disclaimer: I don't think Yanfly considers me a pal)


    Prayer of Mending is an active buff spell that causes a small amount of healing when the affected target is hit. After healing, the state 'jumps' to another ally. The buff will bounce a number of times before running out. Naturally, given the name, and effect, this is lifted almost entirely from World of Warcraft, where this used to be a staple spell of the Discipline Priest. I'm not even sure if this spell is even still in the game now, mind you.


    As a bonus this week, though, I am going to share a second spell, one that consumes the number of 'jumps' the state has left on it to cause an active healing effect on the target. This allows the players healer character to give up random, mostly passive healing effects on her allies to cast a giant emergency heal instead.


    So let's get to it.


    What You Need:

    Here is our state. Note that the turn duration can be anything you want it to be, it will reset when it hops to another actor.


    [​IMG]


    Here is the copy paste code for this effect:


    Code:
    <Custom Apply Effect>
    this._mendingCharges = 6;
    this._mendingHeal = origin.mat * 4;
    this._origin = origin
    this.setStateCounter(236, 'x' + 6);
    </Custom Apply Effect>
    <Custom Remove Effect>
    this._mendingCharges = undefined;
    this._mendingHeal = undefined;
    this._origin = undefined;
    </Custom Remove Effect>
    <Custom React Effect>
    if (this.isHpEffect() && this.isDamage() && target.hp > 0) {
     var heal = Math.floor(target._mendingHeal * (((Math.random()*40)+80)/100)) * target.elementRate(11) || 1;
     target.startAnimation(193);
     target.gainHp(heal);
     target.startDamagePopup();
     target.clearResult();
     var charges = target._mendingCharges - 1;
     var caster = target._origin
     target.removeState(236);
     if (charges > 0) {
      var members = [];
      for (var i = 0; i < target.friendsUnit().aliveMembers().length; ++i) {
       var potential = target.friendsUnit().aliveMembers()[i];
       if (!potential) continue;
       if (potential === target) continue;
       if (potential.isStateAffected(236)) continue;
       if (potential.hp <= 0) continue;
       members.push(potential);
      }
     var member = members[Math.floor(Math.random() * members.length)];
      if (member) {
       member.addState(236);
       member._mendingCharges = charges;
       member._mendingHeal = heal;
       member._origin = caster
       member.setStateCounter(236, 'x' + charges);
      }
     }
    }
    </Custom React Effect>
    Make note that where this state is determining damage, it is using the target's elementrate for element Id 11. In my project, this element is a healing element. For your own project, you can remove this section, if needed.

    The flow for this ability goes as follows:


    • State is applied to target
      • _mendingCharges set to 6
      • _mendingHeal set to 4 * the caster's mat
      • _origin set to the caster of the state
      • state counter is set to 'x6'
      • icon looks like this: [​IMG]
    • Target is hit by an attack of some sort
      • heal is set to 80%-120% of _mendingHeal, and then put through the element resistance of the target
      • animation 193 is shown
      • targeted battler gains hp equal to heal
      • if there is more than 0 charges remaining after this heal, it bounces to another valid target
      • the new target is given a _mendingHeal and _mendingCharge equal to what the current target had (subtracted one charge from this hit)
      • the statecounter is set to 'x + charges' to show that the number of charges has gone down on the icon.
    • The state is removed
      • _mendingCharge, _mendingHeal and _origin are all cleared up for future use.
    There is a tiny mechanic built into this ability, in that the heal from each charge has been randomized for each charge before it. This is difficult to convey properly, so I will try to explain in point form.


    • The caster of the spell has mat = 25
      • The first charge of this mending effect will heal 80-120 HP to the battler, as the effect is randomized with a variance of 20%.
      • The second charge can heal anywhere from 64 to 144, depending on what the value from the first heal was. if it was 80, this would do anywhere from 64 - 96.
      • The third charge does this again, and can vary from 51 to 172, again depending on the previous two charges.
      • This effect is compounded for each additional charge
      • The element rate in the 'heal' formula also comes into play. If the initial charge is on someone who has a 'weakness' to healing element, the heal will be much stronger on all subsequent charges, as well as the initial charge. If the initial target has an immunity to heal spells, all charges will deal no healing, no matter who they hit after the first one.
    You can remove this problem by removing the healing element from the formula above, mind you.

    Alright, so now that we've got that finished, let's cover Swiftmend. This is an active spell that removes all remaining charges of Prayer of Mending from the target and heals them for the equivalent of the remaining charges. This skill makes use of Yanfly's target core and selection control plugins to make sure you can only ever use this spell on a target affected with Prayer of Mending.


    [​IMG]


    This skill is an instant cast, which has a cooldown of three turns (which both require those plugins from Yanfly if you want to make use of that), preventing the caster from using this emergency heal multiple times in a row. The the damage formula for this spell is where we get the entire effect from. b._mendingCharges is where the charges from the state are stored. You can also modify the formula to make the ffect stronger or weaker than the individual charges would be. In this case, this will do healing as if each remaining charge had been used, but you can also make it slightly stronger or weaker by changing the first part of the formula. By removing the state afterward, the charges, and healing are also cleared, so the effect is gone. Also worth noting, the extra variance effect from the actual state doesn't apply to this skill, as it only goes through random variance once.


    That's all for today's update.


    ~Ramza
     
    Last edited: Mar 20, 2017
    #70
    ashikai and Bonkers like this.
  11. Iqus

    Iqus inVictor Member

    Messages:
    27
    Likes Received:
    11
    Location:
    England
    First Language:
    Spanish
    Primarily Uses:
    RMMV
    Hey Ramza! Good to see you are back. I'm glad you brought this up because I myself was checking the Roaming Mend effect last night, but in my game it has another effect (but still there's the roaming effect to it).


    However I have been having some questions and I tried to edit the state myself without any subject. My problem is as follows:


    The state jumps everytime the affected target is hit, however, if there is only 1 battler on the target party the state has nowhere to jump and since the remove target happens at the beginning, the state just disappears. What about having a special effect when the state has nowhere to jump or just making it remain while still losing charges?
     
    #71
  12. ramza

    ramza Lunatic Coder Veteran

    Messages:
    558
    Likes Received:
    308
    Location:
    Nova Scotia, Canada
    First Language:
    English
    Primarily Uses:
    RMMV
    There is a section where the state is adding valid targets to the pool of possible jump members. In this section, it is going down through various conditions that would prevent the state from hopping to that members, one of these is if the potential is the target (ie the one who just got hit). If you take that out, it'd be possible for the state to hop back to the target, but it'd be able to do that even if he had valid allies.


    A check near the end to see if members[0] is null could be used to see if any value had been given to that array, and then add the target if found to be true.
     
    Last edited by a moderator: Oct 25, 2016
    #72
  13. Iqus

    Iqus inVictor Member

    Messages:
    27
    Likes Received:
    11
    Location:
    England
    First Language:
    Spanish
    Primarily Uses:
    RMMV
    Something like this?

     

    Code:
    var members = [];
        for (var i = 0; i < target.friendsUnit().aliveMembers().length; ++i) {
          var potential = target.friendsUnit().aliveMembers()[i];
          if (!potential) continue;
          if (potential === target) continue;
          if (potential.isStateAffected(stateId)) continue;
          if (potential.hp <= 0) continue;
          members.push(potential);
    	  if (members[0] === null)
    		  members.push(target);
    	}
        }
     
    #73
  14. ramza

    ramza Lunatic Coder Veteran

    Messages:
    558
    Likes Received:
    308
    Location:
    Nova Scotia, Canada
    First Language:
    English
    Primarily Uses:
    RMMV


    More like this, where you've got it, it will add the caster to the pool each time it checks one of his allies.


    if (charges > 0) {
    var members = [];
    for (var i = 0; i < target.friendsUnit().aliveMembers().length; ++i) {
    var potential = target.friendsUnit().aliveMembers();
    if (!potential) continue;
    if (potential === target) continue;
    if (potential.isStateAffected(236)) continue;
    if (potential.hp <= 0) continue;
    members.push(potential);
    }
    if (members[0] === null) {
    members.push(target)
    }
    var member = members[Math.floor(Math.random() * members.length)];
    if (member) {
    member.addState(236);
    member._mendingCharges = charges;
    member._mendingHeal = heal;
    member._origin = caster
    member.setStateCounter(236, 'x' + charges);
    }
    }


    This would make sure that all potential members of the pool have already been added before adding the target to the pool. This way, if the pool is empty, the target will be the only member of it, and if the pool has any other valid member of the group in it, this will not happen.
     
    #74
  15. Michael Caiola

    Michael Caiola The Stone Bull Veteran

    Messages:
    392
    Likes Received:
    74
    Location:
    Albany/Saratoga, NY
    First Language:
    English
    I love your states. I will probably end up using most of them.


    I have two requests. The first one is actually a modification of your Block Chance state. Is there a way to make the shield appear whenever the actor guards? Right now I have the sv battler sheet edited to add the shield on guard, but the actor has three different types of armor that change his appearance, so the if statements are pretty long. If I could remove the shield from the sprite sheet I would go from 21 sprite sheets to 9. I would swap the shield image based on the current shield, as you stated in your state description. This would also allow me to have enemies use shield break type skills that could remove the state and make it so he can't use his shield.


    The next one is a custom request.


    State Name:


    Time Lock


    State Description:


    I have a skill called Time Freeze that locks an enemy in time for a few turns. I want, for those few turns, for everything to stop for that enemy. He can't move, can't take damage, can't heal, can't switch out, can't do anything. I'd also like to essentially "pause" any state effects the enemy might have. So, for example, say on turn 1 the enemy is burned for 5 turns. On turn 2, he's hurt by his burn. On turn 3, he's inflicted with Time Lock for 3 turns. Normally, he would have 4 burn turns left. But Time Lock should pause the burn effect for 3 turns. For those 3 turns, burn has no effect. And once the Time Lock ends, the burn resumes.


    Plugin Requirement: None


    Required Compatibility:


    I plan to use Yanfly CTB eventually, but I'm not currently using it at this point in development and I don't fully understand it. But after researching different battle systems I am 100% sure I will use CTB. I understand that will affect turns and states, and I'm not sure how that translates. So the turns I was referring to in the description refer to the standard turn based battle. I would like the turns for this state to be whatever the typical equivalent is in the CTB so when I switch to that, it will work properly.


    If this state is not possible, can you create a state that gets as close as possible?


    Thanks in advance!
     
    #75
  16. ramza

    ramza Lunatic Coder Veteran

    Messages:
    558
    Likes Received:
    308
    Location:
    Nova Scotia, Canada
    First Language:
    English
    Primarily Uses:
    RMMV
    Alright, so for this first one, I don't think there's a built in way to help you out here, however, Yanfly has a plugin that let's you overlay a repeating battle animation on the battler affected by a state. Visual State Effects. You could make the shield block animation and attach it to your guard skill, by making guard add states. You could make it add as many states as shields you have, and have all shields resist the states that don't correspond to your visual for that shield. That's a coding light way to do it, or course. You could also make the block skill add all the states, but make each state check for the proper shield when applied and remove itself after, if the wrong shield is equipped. That's probably more work, though.


    As for your request, at first I thought this wouldn't be possible, but I came up with a way to try it out. If I succeed, I'll make it the workshop state this week. Using the CTB makes this a bit more involved, though, which is a shame, as I also personally use it. The problem with stunned-type states in the CTB system is that they don't count turns the same when stunned. If you're using it full-turn based like I am, a battler that gets stunned, or otherwise can't act, has his turns calculated by ticks, even if nothing else is tick based. In my experience, this causes a three turn stun to often last only one turn, due to tick timing. I might be able to use a state on the caster to track the duration of the state on the target though. We'll see how that works out.


    I had reported the CTB issue to yanfly, but that was shortly before support for that plugin was discontinued. I suspect it's not an easy thing to fix, and that plugin is way too over my head for me to take a look at it.
     
    #76
  17. Michael Caiola

    Michael Caiola The Stone Bull Veteran

    Messages:
    392
    Likes Received:
    74
    Location:
    Albany/Saratoga, NY
    First Language:
    English
    Alrighty, I will not be using CTB, then. I'm early in development and don't want to make my game rely on a complex battle system that is no loner supported. Thanks for telling me that.


    I will most likely be using this battle system. It's turn based.





    Thanks for working on the state! And thanks for the tips on the battle shield. That's an amazing help.


    I also just realized that outside of the standard turn based battle system, the guard skill is basically useless...
     
    Last edited by a moderator: Oct 30, 2016
    #77
  18. Iqus

    Iqus inVictor Member

    Messages:
    27
    Likes Received:
    11
    Location:
    England
    First Language:
    Spanish
    Primarily Uses:
    RMMV
    Hi Ramza, me again! =)

    I was trying to make something different based on the Mending state. The idea is having a Regenerative state that jumps into another ally when the affected has full HP, and if possible, make it jump to the ally with the lowest HP rate. Do you think it possible?


    Thanks again!
     
    #78
  19. Michael Caiola

    Michael Caiola The Stone Bull Veteran

    Messages:
    392
    Likes Received:
    74
    Location:
    Albany/Saratoga, NY
    First Language:
    English
    I just wanted to give you a poke. I'm not using CTB at all, so don't worry about making that state work with it for me. I'm using DreamX's ITB system. It's like CTB, but it's still turn based. Each actor's turn counts as a full turn. So no tick issues.
     
    #79
  20. Past Midnight Gaming

    Past Midnight Gaming The Midnight Dragon Veteran

    Messages:
    93
    Likes Received:
    30
    Location:
    The Milky Way
    First Language:
    English
    I'm back again :p  This time im looking to make a possession type state, sorta similar to the megaman series. in this state the user's appearance and available skills will change and gain a temporary stat boost. i also want to limit it so only one Possession (in cases where the actor has more than one available Possession choices) can be used once during a battle 
     
    #80

Share This Page