Battle system overhaul
Posted 24 April 2012 - 05:44 AM
But I'm not a fan of the base combat system. It's not that it's terrible -- it's just that I've played this game before (you know, the basic turn-based RPG), and would like to do something that's a little different. Can anyone tell me how feasible these changes are, and where I ought to go to learn any event management/scripting that I'd need to know to implement them?
What I'd like to do:
1. Most skills aren't tied to a specific class; rather, players can assign nearly any skill to a character. Each character would have a maximum number of skills he / she / it could have assigned at a time.
2. Only certain classes can crit. The critical hit variable would be tied to a parameter and would apply to any skill that class uses. (Each class would have a similar passive skill; the rogue would get multiple hits, one of the spellcasters turns everything into area of effects, etc.)
3. Can I rename parameters such as MDF? Can I create my own parameters?
4. I have a weighted function I'd like to call when determining the benefit of parameters, but writing it into every skill will become problematic. An example: the lowly Attack skill, under my system, would look something like this: "((100-b.def)/100)((X + (X(((a.atk/a.level)-1)^(1/3)) - (X(((b.agi/b.level)-1)^(1/3)))/2)", where X is the damage variable for the skill. You can see the problem, especially since X will typically be a constant multiplied by a. and b. levels. If I could create a set of weighting functions, it'd be much cleaner -- ((100-b.def)/100)(X + X(a.atk'w) - (X(b.agi'w)), for example. (This is all pseudocode, obviously, since I'm not fluent in Ruby. Heck, I'm not _anything_ with Ruby.)
(In case you're wondering, every parameter is sharply constrained by a class, giving base-stat magic-leaning classes significant bonuses for magic skills, ditto for physical abilities. There's significant diminishing returns at higher points of ability, while penalties disappear quickly; theoretically, it presents a situation where players can mix-and-match without too much penalty while still rewarding purists. Also, if that bizarre DEF-based damage reduction is bothering you, DEF will be a pretty rare parameter; it'd max out around 40 with items and most classes won't gain it as they level up.)
I know some of this is pretty ambitious, but I figure I should know what I can and can't do before I invest too much time into a project.
Posted 24 April 2012 - 08:30 AM
3. You can rename any parameter in the terms tab of the database. Attack, defence, magic and magic defence are all params that don't actually do anything unless you use them in a damage formula. There's not a simple way to add more variables per se (that I know of anyway), but you can easily convert one of those.
Edited by Racheal, 24 April 2012 - 08:31 AM.
Posted 24 April 2012 - 10:27 AM
2. Critical rate is a Feature assigned to classes, so it's covered by the default editor.
3. Answered by Racheal.
4. A script is needed. It's fairly simple, although I can't remember it off the top of my head. I'm not a coder either though. xD
Posted 24 April 2012 - 02:36 PM
2. You can already adjust crit rate for classes using the Features section.
3. Check the terms tab to rename parameters. Just keep in mind that by default Agility determines turn order and Luck determines status effect rates, though this is easy to change in the scripts. All other stats have no affect other than what you put in the skill equations.
4. You can do all kinds of crazy stuff with the equation boxes because they just execute in the ruby code. You could probably get someone who is fluent in scripting (not me) to create a method that would let you cut down your equations if they are all going to have the same format.
Also, this goes in support.
Posted 24 April 2012 - 03:13 PM
class Game_Battler def def_p ((100-self.def)/100) end def atk_ (((self.atk / self.level) - 1) ** (1/3)) end def agi_ (((self.agi / self.level) - 1) ** (1/3)) end endHaven't actually tested these, since I'm not at an RGSS interpreter at the moment, but they should be sound. Paste this block into your script materials section and these functions can be referenced in battle formulas like regular stats (i.e. "a.atk_" for a's weighted attack). I didn't make formulas for the other stats, but these can be used as a template without too much extra knowledge of Ruby.
Edited by Lone Wolf, 24 April 2012 - 03:22 PM.
Posted 24 April 2012 - 03:55 PM
Clearly, I'm still learning the ins and outs of the program; glad to see that nearly everything I want to do isn't that difficult.
And Lone Wolf, thanks -- that's exactly what I needed. I'm totally new at this, so seeing an example is a huge help (the in-game Ruby help system is a little too technical for someone as utterly new as me). No worries if it's not perfect -- it's a starting place that I can understand!