sagebrushfire

Villager
Member
Joined
Jun 12, 2016
Messages
25
Reaction score
12
First Language
English
Primarily Uses
I just got into RMMV but I've been a JavaScript developer for some time and an RPG maker fan since 2000. When I found out they finally made the program use a language I was really proficient with, I immediately wanted to start working on plugins. 

Here is a link to download the source code for the plugins: https://gist.github.com/StevenLeonCooper/b00c63d798a10ce6d94d1edaecc3ee1f


This is still very early in development. There are several bugs I'm already aware of and probably many I'm not. 


The Core Plugin


This is 2 separate plugins, a Core plugin and the actual BattleMath plugin. The Core plugin is boring, it's only real user-centric feature is the ability to dynamically disable/enable touch input. You can disable/enable it in the Plugin Manager and then you can re-enable/disable it in-game simply by calling a simple JavaScript function.  Aside from that it has utility functions for the BattleMath plugin (and any other plugin I make). It also has 2 useful functions for extending the core RMMV prototypes without actually having to paste the native code into yours (which is good to do when you can, if there's ever an update to the core JS files it won't break your code). 


The BattleMath Plugin


I probably spent 6+ hours just doing and redoing the Help info on this. It's hard to explain and I can't exactly just copy/paste my help doc in here so I'll be brief. Here's some of the stuff you can do with my plugin: 

  • A Final Fantasy Tactics style Zodiac system. Just give Actors and enemies tags like <zodiac: scorpio> and then enable the feature in the Plugin Manager. They'll get damage bonuses/nerfs based on their sign. Also, for fun, I implemented the Chinese zodiac animals so you can enable that system instead. 
     
  • Elemental Damage Bonuses via Map Notes: You can add tags to your map like <supress: fire> to cut fire damage by 25% or <boost: ice> to boost ice attacks by 25%. You can also use the nullify tag (<nullify: earth>) to reduce a specific element's damage to 0. 
     
  • Innate Elemental Bonuses for Classes: Have a shared skill pool but a class with an elemental affinity? Give your class a tag like <CustomStat: element=3> and that class will get a damage bonus when using Element #3. 
     
  • D&D Style Dice Roll for Damage: Instead of using a more traditional damage formula, you can use D&D/Pathfinder style dice rolls. Just call the special method inside your Damage Formula box (in the Skills window) like this: DiceRoll("3d6+5"); or use the advanced roll & add your stats or custom stats as a bonus: SuperDiceRoll(a, b, "2d4+4 + <a.atk>");
     
  • 4 Reusable Damage Functions: The biggest feature is actually the set of custom damage functions I've implemented. Instead of putting formulas in every Damage Formula box in your skills, you can simply use one of these 4 functions and an attack power. You can also adjust which stats are used for offense and defense in the parameters in the Plugin Manager. And you can also do custom functions with some of the extra new things I've made available during Damage Eval. The formulas are formatted like so:

    PhysicalDamage(dmg, 100, true);

    That would use the Physical Damage formula (which uses a.atk and b.def for offense/defense by default) with a power level of 100 and the "true" allows it to use the map notes to boost elemental damage.



Known Issues

  • The "Innate Elemental Bonus" feature kind of sucks because you HAVE to install BOB_CustomStats.js and use the Element ID. It's actually a great plugin so you should install it anyway but it totally shouldn't be necessary. I just have not yet implemented a solution for using a regex to check the class or actor note and find an element ID. So consider this something I plan on making easier later. 
     
  • The damage is a tad high. I need to refine the formulas a little bit. With these numbers you do pretty insane damage at level 99, like abnormally large amounts. The multipliers also get pretty hectic when you use every one of them. 
     



Here's What I'd Like From You


For one I hope the plugin is useful for someone, even thought it's in a fairly early stage of testing. I'd like as much feedback as possible and maybe some help on the following topics: 


* What kind of bugs does it have or how can the default damage formulas be better out-of-the-box? 

* How easy is it to use and understand? Is it obvious how this could add value to a game? Does it add any value? 


* How can I improve the documentation to make it easier to use? 


* What kind of other features should I consider developing and adding to this plugin? 


Thanks in advance if you read this far, I know I can be extremely verbose! I'd like to thank Yanfly and BOB for developing really nice plugins, I totally borrowed their formatting for the help file to make it easier to read. I have another plugin that's on the back burner called Z_EventWizard. It's fairly simple, it's just meant to use regular HTML event triggers for various in-game actions. You can then set up event handlers inside your game via common events and they will react instantly to the event triggers. I mainly started working on it because I thought maybe I could use it for some really advanced boss ai (like the boss counts how many times you use a magic attack and after 10 times he nukes you, etc.). 

Thanks. 


----


EDITS: 

  1. A new version will be coming out soon and I have added the following features:  These Features are Live Now


    Use a dummy actor's note tag for a complete settings customization, including your own Zodiac system


    You can specify an actor ID and just use that actor's note tag to implement your own version of the ZBM.Settings object. 
  2. This is nice if you want to really customize the plugin without touching any of the code on the .JS file. 
  3. Your custom settings are merged into and overwrite the standard settings. You can also use this for your own custom Zodiac system. 
  4. It doesn't even have to be "Zodiac"  themed. It would be useful for a pokemon typing system as well. 

[*]I will be optimizing certain parts of the code. Apparently there is a "meta" property for the major Data Classes that already makes simple tags from the notes property available. 

  1. This means I don't have to use my own regex for the zodiac or element stuff, it's already a part of the object.
  2. As a user you won't notice the difference but know that the code is running more efficiently!

[*]Major Change: This version may need my upcoming HtmlEvenWizard plugin as a dependency. The $dataActors variable is loaded asynchronously so I had to extend the AJAX functionality of RMMV so that it triggered an event when the proper file was loaded. This is what allows you to specify settings in an Actor's note tag, which normally wouldn't be loaded in time. Luckily  that plugin is fairly small and you should find it useful as well. 


[*]I'm considering separating some of these features out into multiple plugins instead of one big plugin. What does everything think? Is it better to have fewer JS files but a really big "Help" section and lots and lots of Plugin Parameters or is it better to have many JS files for each little component but each one is its own plugin with just a few parameters and a small help file? 




UPDATE: Section 1 of Edits has been implemented. 


Thanks.
 
Last edited by a moderator:

meccagodzillla

Villager
Member
Joined
Feb 17, 2014
Messages
12
Reaction score
1
First Language
English
Primarily Uses
dude, I love this. I would like to see more of the DND style AC, WILL etc and maybe dice rolls for weapons
 

Arkaik

Veteran
Veteran
Joined
Apr 25, 2015
Messages
78
Reaction score
13
First Language
Portuguese
Primarily Uses
RMMV
I just got into RMMV but I've been a JavaScript developer for some time and an RPG maker fan since 2000. When I found out they finally made the program use a language I was really proficient with, I immediately wanted to start working on plugins.

Here is a link to download the source code for the plugins:

This is still very early in development. There are several bugs I'm already aware of and probably many I'm not.


The Core Plugin


This is 2 separate plugins, a Core plugin and the actual BattleMath plugin. The Core plugin is boring, it's only real user-centric feature is the ability to dynamically disable/enable touch input. You can disable/enable it in the Plugin Manager and then you can re-enable/disable it in-game simply by calling a simple JavaScript function. Aside from that it has utility functions for the BattleMath plugin (and any other plugin I make). It also has 2 useful functions for extending the core RMMV prototypes without actually having to paste the native code into yours (which is good to do when you can, if there's ever an update to the core JS files it won't break your code).


The BattleMath Plugin


I probably spent 6+ hours just doing and redoing the Help info on this. It's hard to explain and I can't exactly just copy/paste my help doc in here so I'll be brief. Here's some of the stuff you can do with my plugin:

  • A Final Fantasy Tactics style Zodiac system. Just give Actors and enemies tags like <zodiac: scorpio> and then enable the feature in the Plugin Manager. They'll get damage bonuses/nerfs based on their sign. Also, for fun, I implemented the Chinese zodiac animals so you can enable that system instead.


  • Elemental Damage Bonuses via Map Notes: You can add tags to your map like <supress: fire> to cut fire damage by 25% or <boost: ice> to boost ice attacks by 25%. You can also use the nullify tag (<nullify: earth>) to reduce a specific element's damage to 0.


  • Innate Elemental Bonuses for Classes: Have a shared skill pool but a class with an elemental affinity? Give your class a tag like <CustomStat: element=3> and that class will get a damage bonus when using Element #3.


  • D&D Style Dice Roll for Damage: Instead of using a more traditional damage formula, you can use D&D/Pathfinder style dice rolls. Just call the special method inside your Damage Formula box (in the Skills window) like this: DiceRoll("3d6+5"); or use the advanced roll & add your stats or custom stats as a bonus: SuperDiceRoll(a, b, "2d4+4 + <a.atk>");


  • 4 Reusable Damage Functions: The biggest feature is actually the set of custom damage functions I've implemented. Instead of putting formulas in every Damage Formula box in your skills, you can simply use one of these 4 functions and an attack power. You can also adjust which stats are used for offense and defense in the parameters in the Plugin Manager. And you can also do custom functions with some of the extra new things I've made available during Damage Eval. The formulas are formatted like so:

    PhysicalDamage(dmg, 100, true);

    That would use the Physical Damage formula (which uses a.atk and b.def for offense/defense by default) with a power level of 100 and the "true" allows it to use the map notes to boost elemental damage.



Known Issues

  • The "Innate Elemental Bonus" feature kind of sucks because you HAVE to install BOB_CustomStats.js and use the Element ID. It's actually a great plugin so you should install it anyway but it totally shouldn't be necessary. I just have not yet implemented a solution for using a regex to check the class or actor note and find an element ID. So consider this something I plan on making easier later.


  • The damage is a tad high. I need to refine the formulas a little bit. With these numbers you do pretty insane damage at level 99, like abnormally large amounts. The multipliers also get pretty hectic when you use every one of them.




Here's What I'd Like From You


For one I hope the plugin is useful for someone, even thought it's in a fairly early stage of testing. I'd like as much feedback as possible and maybe some help on the following topics:


* What kind of bugs does it have or how can the default damage formulas be better out-of-the-box?

* How easy is it to use and understand? Is it obvious how this could add value to a game? Does it add any value?


* How can I improve the documentation to make it easier to use?


* What kind of other features should I consider developing and adding to this plugin?


Thanks in advance if you read this far, I know I can be extremely verbose! I'd like to thank Yanfly and BOB for developing really nice plugins, I totally borrowed their formatting for the help file to make it easier to read. I have another plugin that's on the back burner called Z_EventWizard. It's fairly simple, it's just meant to use regular HTML event triggers for various in-game actions. You can then set up event handlers inside your game via common events and they will react instantly to the event triggers. I mainly started working on it because I thought maybe I could use it for some really advanced boss ai (like the boss counts how many times you use a magic attack and after 10 times he nukes you, etc.).

Thanks.


----


EDITS:

  1. A new version will be coming out soon and I have added the following features: These Features are Live Now


    Use a dummy actor's note tag for a complete settings customization, including your own Zodiac system.


    You can specify an actor ID and just use that actor's note tag to implement your own version of the ZBM.Settings object.

  2. This is nice if you want to really customize the plugin without touching any of the code on the .JS file.

  3. Your custom settings are merged into and overwrite the standard settings. You can also use this for your own custom Zodiac system.

  4. It doesn't even have to be "Zodiac" themed. It would be useful for a pokemon typing system as well.


[*]I will be optimizing certain parts of the code. Apparently there is a "meta" property for the major Data Classes that already makes simple tags from the notes property available.


  1. This means I don't have to use my own regex for the zodiac or element stuff, it's already a part of the object.

  2. As a user you won't notice the difference but know that the code is running more efficiently!

[*]Major Change: This version may need my upcoming HtmlEvenWizard plugin as a dependency. The $dataActors variable is loaded asynchronously so I had to extend the AJAX functionality of RMMV so that it triggered an event when the proper file was loaded. This is what allows you to specify settings in an Actor's note tag, which normally wouldn't be loaded in time. Luckily that plugin is fairly small and you should find it useful as well.


[*]I'm considering separating some of these features out into multiple plugins instead of one big plugin. What does everything think? Is it better to have fewer JS files but a really big "Help" section and lots and lots of Plugin Parameters or is it better to have many JS files for each little component but each one is its own plugin with just a few parameters and a small help file?




UPDATE: Section 1 of Edits has been implemented.


Thanks.

What a piece of art, bro!
I'll surely test it in my project. Thanks! :kaothx:
Btw, do you still work in it?
 

Latest Threads

Latest Posts

Latest Profile Posts

Feeling cute, might make an essay on the presence of Malaise in the gaming industry. idk
Just went to Metrocon here in Tampa Florida. My first anime convention. They had an anime chess battle and some funny impromtu comedy. The comedy was my favorite part. How is everyone?
I'm thinking about opening a "game in development" thread, though i'm not entirely sure yet. It's still really early in development, and most i have to show are assets or really chaotic map WIPs. There is a lot of story +the world itself though, and i struggle with converting all of my notes into readable text, and a thread might help...?
I see a button in a game, I press it. Cannot resist the temptation even if I know it's a trap.

Forum statistics

Threads
113,591
Messages
1,076,069
Members
147,589
Latest member
daldantas
Top