Puppet Knight

Knight on a Crossbar
Regular
Joined
Aug 3, 2022
Messages
644
Reaction score
759
First Language
English
Primarily Uses
RMMZ
So is the idea then to have things like compound skills available based on Learned Skills + an added element/item/armor?

I'm imagining an eval being run on equip to check what skills are known by the actor and adding a state,that grants the "evolved" or compound skills via trait, to the actor. That way it's a temporary add on and compound skills will need the right cocktail of Skills learned and equipment to be present.

Say the Actor knows "Fire" and they equip a heat gem.

Now Fire 2 is available. Can restrict the compounds to only kick in if a skill is actually learned, rather than traited too
 

TheoAllen

Self-proclaimed jack of all trades
Regular
Joined
Mar 16, 2012
Messages
7,489
Reaction score
11,640
First Language
Indonesian
Primarily Uses
N/A
If you ask if someone has done it. I've done it.
But I've done it mostly by choosing perks to modify the skill. The skill remains in the same slot. However, the damage formula and action sequence handle the change. So there's a lot of "if/else" sequences. If you have perk A, then do this extra effect, etc.

There are not that many you can change to the skill. Only a handful of effects. Because I want to keep the iconic usage of the skill. Besides it is harder to balance if you can change many aspects of the skill itself. I mean, I can if I have to (with custom code). But the concept wouldn't fit into my game.
 

NamEtag

Regular
Regular
Joined
Jun 27, 2020
Messages
160
Reaction score
88
First Language
English
Primarily Uses
N/A
Yeah, you can use perks as essentially stat adjustments.

if INT<100, do A effect
else, do B effect

if Perk A equipped, do C effect
else if Perk B equipped, do D effect
 

Maliki79

Regular
Regular
Joined
Mar 13, 2012
Messages
1,034
Reaction score
517
First Language
English
Primarily Uses
RMMV
So is the idea then to have things like compound skills available based on Learned Skills + an added element/item/armor?

I'm imagining an eval being run on equip to check what skills are known by the actor and adding a state,that grants the "evolved" or compound skills via trait, to the actor. That way it's a temporary add on and compound skills will need the right cocktail of Skills learned and equipment to be present.

Say the Actor knows "Fire" and they equip a heat gem.

Now Fire 2 is available. Can restrict the compounds to only kick in if a skill is actually learned, rather than traited too
This is leaning towards where I'm thinking.

What made me first think of this was the fact that my current project had several "upgrade" spells baked in. (Fire 1, 2, 3, group 1, group 2, etc.)
So I wanted to see if I could reduce the number of spells required to cover the bases that these spells handled while allow some flexibility to those spells to make things a bit more fun.

So this is why I wanted to have multiple versions of the base spell available.
So if a player wanted a "Fire 1" spell AND a "Fire 2" spell, they could do it, but if they wanted a Fire spell and a thunder spell, they could choose to do that instead. (Replay value if nothing else.)

If you ask if someone has done it. I've done it.
But I've done it mostly by choosing perks to modify the skill. The skill remains in the same slot. However, the damage formula and action sequence handle the change. So there's a lot of "if/else" sequences. If you have perk A, then do this extra effect, etc.

There are not that many you can change to the skill. Only a handful of effects. Because I want to keep the iconic usage of the skill. Besides it is harder to balance if you can change many aspects of the skill itself. I mean, I can if I have to (with custom code). But the concept wouldn't fit into my game.
Glad someone was able to pull it off.
I'll have to see what I can do myself.
I think if I make a set of skill stats that sit in Game_Actor, I could probably make those editable. Then I'd have to make the skill selectable, which I think can be done via a skill selection plugin I have. Just have to make the skill refer to the new data.
And, of course set up how to make the changes to each spell/skill...
 

Maliki79

Regular
Regular
Joined
Mar 13, 2012
Messages
1,034
Reaction score
517
First Language
English
Primarily Uses
RMMV
Yeah, you can use perks as essentially stat adjustments.

if INT<100, do A effect
else, do B effect

if Perk A equipped, do C effect
else if Perk B equipped, do D effect
The issue there is that you'd have to take the target scope and MP/TP usage into consideration BEFORE the effects would be expressed I think.

EDIT: Sorry for the double post...:LZYugh:
 

TheoAllen

Self-proclaimed jack of all trades
Regular
Joined
Mar 16, 2012
Messages
7,489
Reaction score
11,640
First Language
Indonesian
Primarily Uses
N/A
The issue there is that you'd have to take the target scope and MP/TP usage into consideration BEFORE the effects would be expressed I think.
if I recall correctly, MP/TP is paid before the skill is expressed. So this is impossible. And I don't like this design. I made all my skills paid their cost AFTER the skill is executed and it made my life easier.
 

ATT_Turan

Forewarner of the Black Wind
Regular
Joined
Jul 2, 2014
Messages
11,158
Reaction score
9,109
First Language
English
Primarily Uses
RMMV
The issue there is that you'd have to take the target scope and MP/TP usage into consideration BEFORE the effects would be expressed I think.
if I recall correctly, MP/TP is paid before the skill is expressed. So this is impossible.
That's true, but I don't see how that makes it impossible or even an issue.

It's perfectly possible (see Yanfly's Skill Core and Target Core) to modify a skill's costs and scope on whatever evaluation of code you like.

So I don't see how there's anything you could check in an action sequence or damage formula that you can't check in those places.
 

Maliki79

Regular
Regular
Joined
Mar 13, 2012
Messages
1,034
Reaction score
517
First Language
English
Primarily Uses
RMMV
if I recall correctly, MP/TP is paid before the skill is expressed. So this is impossible. And I don't like this design. I made all my skills paid their cost AFTER the skill is executed and it made my life easier.
How did the player see the adjusted skill costs?
That's true, but I don't see how that makes it impossible or even an issue.

It's perfectly possible (see Yanfly's Skill Core and Target Core) to modify a skill's costs and scope on whatever evaluation of code you like.

So I don't see how there's anything you could check in an action sequence or damage formula that you can't check in those places.

I guess that's how. :D
 

TheoAllen

Self-proclaimed jack of all trades
Regular
Joined
Mar 16, 2012
Messages
7,489
Reaction score
11,640
First Language
Indonesian
Primarily Uses
N/A
It's perfectly possible (see Yanfly's Skill Core and Target Core) to modify a skill's costs and scope on whatever evaluation of code you like.
Maybe I misunderstand something. But I was assuming something like this.

A damage formula where the extra damage is proportionally based on the current MP. In this case, maybe when we have a certain perk (because we are talking about skill modification). Normally, you use the MP first then execute the skill. That way, the damage is lower than the expected damage because the MP is already paid before.

I don't know if YEP handles this, but still, if you have to use a plugin to modify this, I would still say it is impossible without a third-party plugin to modify this behavior :p
 

Maliki79

Regular
Regular
Joined
Mar 13, 2012
Messages
1,034
Reaction score
517
First Language
English
Primarily Uses
RMMV
For now, don't worry about the damage formula itself. That's actually the easiest part of this to modify.

Ok. Let me start over.

What I want is to start off with a spell.
Let's call it Blast and it has a base power of 100 and a MP cost of 100.

Now let's say we have several Runestones that can each be applied to change the effects of the spell like so:

Fire Rune - adds fire element to spell - MP costs +15% - Power +10%
Water Rune - adds water element to spell - MP cost +15% - Power +10%
Wind Rune - adds Thunder Element to spell - MP cost +15% - Power +10%
Earth Rune - adds Earth Element to spell - MP cost +15% - Power +10%
Spread Rune - Adds 1 possible target to spell - MP cost +5% - Power -10%
Circle Rune - Adds "Hit-All" to spell - MP cost +25% - Power -25%
Condenser Rune - No effects - MP cost +50% - Power +100%

And any state causing runes you can think of.

Now imaging if you could only add 5 of these to the spell at a time.
How would you as a dev do that?

Also, I'd add that if you add multiple of an element, the spells name and animation would change to reflect it.
I'd love it if each actor could have multiple spells like this at their disposal and certain combinations could maybe cause different things.
Like putting a fire and water together would cancel the element, but leave the MP and power increases.

This would be how spell skill sets would be built. (Physical skills couls also be done this way, but right now, I'm more interested in the concept.)

Does this paint a better picture?
 

ATT_Turan

Forewarner of the Black Wind
Regular
Joined
Jul 2, 2014
Messages
11,158
Reaction score
9,109
First Language
English
Primarily Uses
RMMV
I don't know if YEP handles this, but still, if you have to use a plugin to modify this, I would still say it is impossible without a third-party plugin to modify this behavior :p
That's fair enough, but I think everything we're discussing here would require plugins to implement, so that's why I raised the query at "impossible" :wink:

You'd just use Skill Core to put a Cost Display Eval notetag on the skill and set a variable on the actor, e.g.
Code:
user.currMp=user.mp;
That will execute when the player mouses over the skill, so definitely before it gets chosen and performed. Then you can just reference the value later in your damage formula or action sequence.

Now imaging if you could only add 5 of these to the spell at a time.
How would you as a dev do that?
For me, I'd do it as was described earlier - everything you describe there can be done using the Yanfly Engine.

The Skill Core has cost evals to handle that portion. Action Sequences and the Element Core can add elements and states in conditionals, as well as display whatever animation you like. The only part of it you'd need to write anything separately for are:
- Modifying the skill's displayed name, and that isn't terribly difficult
- The actual interface for how you're applying the runes, unless you can shoehorn an existing plugin (like the Materia suggestion above) into it. I think the Materia system explicitly works by giving new skills, though, so you'd have to look into that in more detail.

I'd love it if each actor could have multiple spells like this at their disposal
This is the only real trick. If you want them to have multiples of this, you're going to have to make this all more complex in some way.

Either by taking the conditional stuff out of the skill and splitting it into tons of skills in your database to reflect all possible permutations, or by creating some kind of independent item version of skills to allow and handle actors knowing the same ID more than once and coding the framework and interface for that.

Or at least you choose a particular degree to implement with different IDs and do the rest as described above. So maybe you can have both a fire blast and a water blast, but that's it - all other modifications to a fire blast are still a fire blast and an actor can only know one. That way they'd be able to learn multiple blasts but you only have to take up a few different database entries.

Everything else you describe is potentially a fair amount of time to create, but fairly straightforward in its implementation.
 

TheoAllen

Self-proclaimed jack of all trades
Regular
Joined
Mar 16, 2012
Messages
7,489
Reaction score
11,640
First Language
Indonesian
Primarily Uses
N/A
In VXA, I can already do this. My script can modify the skill on the fly. Changing the element, changing the damage scale, changing the entire formula, and changing the animation. Technically, the way I do this is to duplicate the skill instance object for modification during the action sequence. And then modify the skill in the sequence. That way, the actual skill is unchanged.

As ATT_Turan said, what you need to do is the interface to assign the mod to the skill. If I were going to make such a system, I would make a new variable that modify the skill and left the actual skill unchanged. That way you can plug and unplug the mod. Then use this variable mod to change the skill during the sequence.

A pseudo example of the variable mod would be like this in the Game_Actor
Code:
mod = {
  "skill_id": [ {"element_id": 0, "scale": 1.0, etc ...}, {"element_id": 0, "scale": 1.0, etc ...}]
}
During the sequence, make a query if the skill has a modification, mod the skill accordingly, then proceed to do the sequence.

Of course, this requires coding knowledge.

EDIT:
The problem with the "skill instance" concept where you saved the modified skill in the actor object, aside from the fact it might be harder to track the modification (to plug and unplug the mod) if you make a change to the skill database, it won't be reflected. Causing you to require a new game. As much as possible, refers to the $dataSkills.
 
Last edited:

Lord Vectra

Master Eventer
Regular
Joined
Dec 6, 2015
Messages
337
Reaction score
421
First Language
English
Primarily Uses
RMVXA
This thread interests me. I have something similar in my game but through script calls. There are certain things you can change about a skill through default script calls. Through them, you can change things like MP cost, damage (whether it be XP or the newer ones), what states they inflict (idk if this is possiblee in VXA but can be done via script call via XP), what element the attack is, and in VXA's case, I'm 75% sure you can change how many hits a skill does and the priority (magic, physical, certain hit).

In my project (using RMXP for it), I use script calls to deal with MP costs. This is mostly because the MP costs are formulaic. First 4 skills costs X amount, next 4 costs Y amount, and last 4 costs Z amount. Then next 4 cost X amount, and so on and so forth. Another benefit is you could make stronger versions of spells that are supposed to replace the old version. Maybe you have a spell that does 100 fire damage but increases to 200 fire damage. If enough spells do this, you could clog up the spell list, so you could simply just use script calls and/or variables to change the spell without making a new one.

I don't have a Spell-altering system nor plan to but for the sake of this convo, let's say that I do. Things one should be worried about is who also shares those same skills. With my system, it gets clunky if you altering a spell also alters everyone else (esp enemies) who also has that spell. This would mean you'd need a duplicate for each person who shares a skill that you plan on adding to the "can be altered" list.

I have been wanting to try this idea, but it wouldn't work for my current project, and I don't want to start changing lore all around just for it to fit in (bruteforcing mechanics is never a good idea). I also have enough mechanics as-is.

TLDR: It's doable. Just gonna be careful balance-wise and gameplay-wise.
 

Maliki79

Regular
Regular
Joined
Mar 13, 2012
Messages
1,034
Reaction score
517
First Language
English
Primarily Uses
RMMV
@TheoAllen, Yeah. I would probably need to make a dummy skill for each Blank Skill an actor would be able to have max. Then make an object array copy for those skills stored in Game_Actor. Those objects can then be altered to show the changes in the blank skill.
The catch then would be to make the game reference those skills which probably wouldn't be too difficult.

Again, in this case, the issue would be more how to convey this to the player (ie - UI)

I wouldn't want to refer to $dataSkills because you wouldn't be able to edit it without messing things up big time elsewhere.

So as it stands now, it seems the best way to pull this off would be to have say 10 versions of the blank skill in the database, each one referring to an object array held in Game_Actor, and then editing that array to show the effects.

(I also would need to look into Action Sequences paired with the Buff and States core to see if they can pull this off as well. I admittedly steer away from the B&S Core due to it not playing well my my plugins, but if I do this in a fresh project, I could figure things out before going too deep into the coding there.)

@Lord Vectra I hear you. This would probably not go into my current project either.
But I have an idea for a second project that I could build this idea right into.
 

ArcaneEli

Mage of Thunder
Regular
Joined
Mar 24, 2012
Messages
255
Reaction score
76
First Language
English
Primarily Uses

Puppet Knight

Knight on a Crossbar
Regular
Joined
Aug 3, 2022
Messages
644
Reaction score
759
First Language
English
Primarily Uses
RMMZ
Last edited:

Maliki79

Regular
Regular
Joined
Mar 13, 2012
Messages
1,034
Reaction score
517
First Language
English
Primarily Uses
RMMV
I'll have to check more intently but I actually think it's missing a few things I was looking for. Plus the paywall isn't helping me any, tho I respect the author's decision to do it.
 

Latest Threads

Latest Profile Posts

I'm just gonna remove the Dark Spells from my game. They wouldn't be fighting Gods or Angels. So why have it?
Every day I'm getting rough-outs of another sprite sheet or two. Getting real close to just needing to make new original stuff and editing my tables and chairs to look correct for the taller sprites is among the top of the revisions list.
Eye_Guys.gif
Some eyew guys! One is absent for... reasons of taste
Eeee! X3 Ever since I started doing 3d Art ,my Pixel Art got sooo much better! I cant wait till im done with the tileset!
Crystal Shock Devlog #5 yay!



This week was super fun as I got to work on my favorite thing: Combat! A new boss has been added and some new mechanics on top of that. I also made some improvements to the first town.

Forum statistics

Threads
134,916
Messages
1,251,899
Members
177,754
Latest member
thelankystank
Top