$D13x Elemental Control

# ☆ Introduction
# This script is the Elemental Equivalent of my Statistic Control Script
# This script ‘fixes’ elements, ie. differentiates between attack and defence
# element types.
# This script also allows Dev’s control over elements that would not normally
# be available, such as various script calls to modify the element value
# using simple arithmatic (add/subtract/divide/multiply/modulo),
# As well as actors/classes/enemies/weapons/armors/states/skills notetags.
# It also adds Max and Min limits for all elements and gives control over these
# new limitations for both attack and defence.
# It also provides new ways of handling the elemental damage modification.
# ie, allows for multiple element damage variances, rather than 1.


27 thoughts on “$D13x Elemental Control

  1. Dekita-RPG says:

    use this notetag on an enemies notebox to decrease resistance..

     <def ele: element_id, value>

    replace element id with the i of your preffered element.
    repalce value with something like -0.10 or whatever you want to lower it by. -0.10 will equal -10%

  2. Nyne says:

    Hey Dekita, I’m having trouble with this script for some reason any I’m not sure why. I’m trying to increase the output damage done by an element but it isn’t working.

    I’ve put this notetag in the comment box of a state to increase the damage. In the status menu I see that the outbound damage has gone up. The issue is that when I actually use a skill of that element the damage isn’t change at all. Any help would be much appreciated.

  3. Dekita-RPG says:

    Ok, thats very strange.. I done a quick test there and it seems to be working 100% for me..

    Lets say for example you give yourself 50% fire attack damage. It should’nt even matter if you are using a ‘fire’ skill or not, you still get your fire attack added on to the damage modifier.

    In order to find out whats up, I ask that you ensure your console is visible ( Game -> Show Console ). Then if you go to line 526 within the script and un-hash the line…
    it currently looks like this…

    #    p "[ #{user.name} ] << attacker | element rate is = #{var}"

    Once this line has been un-hashed, when you are doing an attack and the element values are being calculated. It will print a result of the elemental modifier value to the console.

    It should look something like…
    “[ Eric ] << attacker | element rate is = 1.5"

    That means that Eric is attacking with 150% damage. 100% is normal damage, 50% is additional damage from his elemental mods. Also, if he was -50% on another element, it would be reduced back down to around 100% damage. This is also something to keep in mind.

    Let me know how you get on with that.

  4. Nyne says:

    Thanks for the help. I realised that I wan’t fully understanding the script before there is no problem now. I appreciate it.

  5. simplestchaos says:

    Ok, so I tested out the latest version of it. I set abilities to do 100 damage so that I could try to keep track of how much effect the elements are having.

    Every attack seems to be doing more damage than it should. The enemy has no alterations to their default defense element, and an attack that should be doing 100 damage is doing 200 damage. When I change their defense element, it does not change the damage unless I increase attack element, but then it doesn’t seem to be doing the math properly.

    I increase the actor’s ice Attack element by 50%, and the attack should do 100 damage. The enemy has 50% ice defense element. The damage was 200 without either of those, but it goes down to 175.

    Damage of skills seems to be doubled, even when I change the number. Any idea what happened?

  6. Dekita-RPG says:

    I may have..

    As you probably noticed, I have ALOT of scripts that modify damage.
    When I was conducting the tests I had to disable them all to properly test. Mainly, the weapon attack variance script.

    Are you testing in a project with only this script ?

    Additionally, you may /may not have noticed, but I added an option in the script….

      # Make true if you want all damage to increase based on element atk value
      # - if false, damage will only increase if you use a skill with that element
      Atk_Ele_Inc_All_Dmg = false

    I should also state, for some reason – I think due to all the damage mods happening, damage seems to be reduced slightly – all the time. So 100 usually ends up 97-99.

    Dunno if any of that helps really? …

  7. simplestchaos says:

    Yeah, I wanted a clean test of it so I put it in a program with only the core, elemental control, and status screen scripts. (I have the screen so I can keep track if the elements are actually changing for the actor)

    I did notice that option, leaving it false makes the damage act the way I said above, but making it true makes the damage act as it did with the previous versions of the script. For some reason, setting it to false is just making all attacks do double damage regardless of element, and then I don’t really know what it’s doing once you add attack elements and defense elements.

  8. Dekita-RPG says:

    Thats very strange.
    I will investigate it some more after I catch up on my new scripts.
    I’ve been set back a little due to making icons and fixing bugs and incompatibilities lol

  9. Dekita-RPG says:

    Ok, so I seperated everything and done some more tests.

    It would seem that, if you do a skill with an element that you have atk level in, the damage is calculated properly. Otherwise, the slightest atk element mod will count as 100% atk element.

    Dont have a clue why this is, but I will find out…

  10. Dekita-RPG says:

    I found out…

    Fixed the script completely.

    Example Scenario::
    – Slime Has 50% Fire Def (only takes 50% dmg)
    – Eric Has 0% Fire Atk
    – Eric Uses Skill (no element – 100 dmg)
    – Slime Takes 50 dmg

    – Give Eric 25% Fire Atk
    – Slime Then Takes 62.5 Dmg (rounded to 62)

    Scenario II::
    – Slime Has 25% Fire Def (only takes 25% dmg)
    – Eric Has 50% Fire Atk
    – Eric Uses Skill (no element – 100 dmg)
    – Slime Takes 37.5 dmg (rounded to 37)

    Scenario III::
    – Slime Has 100% Fire Def (takes all dmg)
    – Eric Has 50% Fire Atk
    – Eric Uses Skill (no element – 100 dmg)
    – Slime Takes 150 dmg

    The calculation is as follows…
    Fomula DMG * Target Element Defence * User Element Attack

    Remember, the defence element shows the percentage of that elements damage you take, not your resistance to the element.

    Anyway, I took these calculations from my test print data, so it should all be working fine for you 🙂

  11. simplestchaos says:

    AHA! I think it works the way I was originally wanting it to work! =O Attack elements are only increasing the damage of attacks of the same element instead of all attacks, and they aren’t changing the elements of any attacks! I’ll have to keep testing things out as I go but I think you have this script working perfectly now. Excellent! Thank you so much. 😀

    I will keep you informed if I find anything amiss as I go, but I am once again excited for this script. I have an elementalist mage that’s going to love this~

    1. simplestchaos says:

      Oops, I already came across a tiny snag actually. If I use “Normal Attack” for the skill’s element, then I get an error:

      Scrip ‘Elemental_Control’ line 406: NoMethodError occurred.

      undefined method ‘[]’ for nil:NilClass

      So far, this has ONLY happened when I used any skill that has the “Normal Attack” for element. It occurs after the animation, when the damage should be applied.

  12. Dekita-RPG says:


    I completely forgot that there was a -1 element id… Near the top of the script, just after the customization module begins
    change the data there so it looks like this…

    Element={ -1 => {:atk_ele=>[0,1],:def_ele=>[0,1]},# << KEEP !!
    0=>{:atk_ele=>[0,1],:def_ele=>[0,1]}}# << KEEP !!
    Notes={}# << Keep

    Fixxed 🙂

    This also triggers error for param formula script. So a -1 element has to be added there as well. I will update that some time this week. Pretty busy atm :/

  13. Ernest says:

    And lastly more or less all his encouragement arises from enjoying an Washington Capitals icehockey game in real life.
    Even the second-hand market, such as e – Bay and flea
    markets, tends to have a lot more modern-era items available.
    The strange part is that on the belly of the calabash, there
    is a ten-meter long light blue design which looks like the leg of a deer.

  14. Nyne says:

    Hey Dekita I’ve got a no method error coming up every time I use the a skill with normal attack. I’ve changed the part at the start of the module which stopped the error mentioned before in the post but this one still comes up.

    return Ele_Fixx::Element[element_id][:atk_ele][1]

  15. Bearpigman says:

    Hello , its me again.
    Had no idea where to post this. My problem , if i set a skill to Normal attack type , in the skill scene at the skill desription it shows : Element …… Dark. I added the fix you wrote in the comments. If i add another type ( fire,earth,dark,etc) they are okey. Only the normal is dark.

    1. Bearpigman says:

      Oh and one more..and swear i give you holy break in this summer 😀
      Can i just drop the normal type/element and add blunt,piercing,slash… and idk. skeleton is resistent vs piercing but fragila vs blunt.This script is for things like that right? Not only magic elements. Maybe this is silly question,sorry 😀

      1. Dekita-RPG says:

        you could do that will normal database elements as well.

        With regards to the normal attack issue. I am aware of a few issues relating to that, i will have a look at it next month after I done my IGMC event and update it :p

  16. S.Court says:

    Hi, I have a small trouble…

    I’m trying to configurate the elements to make the max they can resist is 90% (that means, they’ll only receive then percent of damage in their maximun resistance) I tried with the fire element, I guess it’d be something like that in your script

    Element[3] = { :atk_ele => [ -2.0 , 2.0 ], :def_ele => [ -2.0 , 0.1 ]}


    Element[3] = { :atk_ele => [ -2.0 , 2.0 ], :def_ele => [ -0.1 , 2.0 ]}

    I tried both ways and both show the same result: They resist the element fully, instead just taking the 10% of damage when they have the maximun resistance

    I put some resistance tags in armors, weapons and in a state, when all are together, it’s a 100% of resistance (in other words, they do not receive damage) but, I want when all is stocked like that, the resistance limit is of 90% (in other words, only taking 10% of the damage)

    Can you help me with this one? Thank you

  17. eko obrzegowanie says:

    Thank you for every other wonderful article. Where else may anybody get that kind of information in such a perfect manner of writing?
    I’ve a presentation next week, and I am at the look for such information.

  18. Sebastian Lucas says:

    script element control line 692: no method error occurred
    undefined method ‘+’ nil:nil class
    occurred after attacking with a physical attack.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s