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

Dankovsky

Veteran
Veteran
Joined
Nov 26, 2017
Messages
200
Reaction score
151
First Language
RU
Primarily Uses
RMMV
State Name:
Haven't really thought of a name, but for now let's just call it "Summon".
State Description:
A skill that calls forth an actor or enemy to fight alongside with you in the current battle, lasting only a couple of turns.
Plugin Requirement:
Not too sure if this may require something.
Required Compatibility:
I'm currently using Yanfly's ctb
I don't think it's something that can be coded so easily. I suggest you use SRD Summon Core though, it works like a charm mostly.
 

Mihe

Veteran
Veteran
Joined
Apr 16, 2014
Messages
193
Reaction score
71
First Language
English
Primarily Uses
RMMV
I don't think it's something that can be coded so easily. I suggest you use SRD Summon Core though, it works like a charm mostly.
Thank you, friend. :cutesmile:
 

ramza

Lunatic Coder
Veteran
Joined
Jan 28, 2013
Messages
773
Reaction score
483
First Language
English
Primarily Uses
RMMV
I actually had a summon state in here all the way back on page 3. It was linked in the OP, but the link doesn't seem to work anymore? Possibly due to the forum changing or something.

Anyways, not sure what you can make of it, but SRD summon core is definitely the better option here... It didn't exist back then. Just in case though, I have quoted the original summon skill I made below:

I have a summon skill that calls an actor into the party. The actor is given a timed state that, once expired, removes him from the group. The actor also gives an aura buff, which is also removed when they are removed from the group. In the event of the summon dying, They are removed from the group at the end of the turn they died in. The state and aura are removed as well.


The skill:


View attachment 47916


The action sequence for the skill:


Code:
<setup action>
camera clamp on
display action
immortal: targets, true
perform start
zoom: 300%
camera focus: user
wait for zoom
motion chant: user
cast animation
wait for animation
</setup action>
<target action>
motion spell: user
camera focus: target
zoom: 250%
wait for camera
eval: $gameParty.addActor(5);
wait: 15
camera focus: character 5, 20
wait: 20
action animation: character 5
animation wait: 10
eval: $gameActors.actor(5).setBattlerImage('Actor2_6');
wait for animation
action effect: character 5
</target action>
<finish action>
perform finish
clear battle log
immortal: targets, false
reset camera
reset zoom
wait for camera
camera clamp on
</finish action>

During this sequence, we change the battler graphic of actor 5, our summon. By default, this actor will have no battler graphic, to make the summon animation more... pretty.


We are also going to prevent the caster from trying to summon the same summon more than once, so while the summon's aura state is active on the caster, we will prevent the use of that skill using the following tags:


Code:
<Custom Requirement>
 if (user.isStateAffected(25)) {
  value = false
 }else{
  value = true
 }
</Custom Requirement>

The summoned elf actor:


View attachment 47917


Note that the battler graphic is blank.


Here's our timer state, applied to the battler as soon as it is summoned:


View attachment 47918


And here is the notetag code for this state:


EDIT: I forgot to mention that this state requires yanfly's state categories plugin to function.


Code:
<Category: Bypass Death Removal>
<Custom Apply Effect>
for (i = 0; i < $gameParty.members().length; i++){
 $gameParty.members()[i].addState(25)
}
target.removeState(25)
</Custom Apply Effect>
<Custom Remove Effect>
for (i = 0; i < $gameParty.members().length; i++){
 $gameParty.members()[i].removeState(25)
}
  var extraFramesToWaitFor = 15;
  var animFrames = ($dataAnimations[102].frames.length * 4) + 1 + extraFramesToWaitFor;
  var waitSeconds = (animFrames/45) * 1000;
  target.startAnimation(102, false, 0);
  setTimeout(function () {
  $gameActors.actor(5).setBattlerImage('');
  }, waitSeconds);
  BattleManager._logWindow._waitCount += (animFrames + 30);
$gameParty.removeActor(5);
target.removeState(24)
target.recoverAll()
</Custom Remove Effect>
<Custom Turn End Effect>
if (this.isDead()) {
 this.removeState(24)
}
</Custom Turn End Effect>

And lastly, here is our aura state - the buff provided to all other battlers when this summon is out:


View attachment 47920


How does it look?


See for yourself :)
 

Recruit

Villager
Member
Joined
Sep 14, 2015
Messages
20
Reaction score
5
First Language
English
Primarily Uses
State Name:
Infected
State Description:
A state that can spread the infection if attacked, or when attacking (preferably melee), and every start of a turn, has a chance to apply infection to close by allies maybe 10-25% chance, as well as a 25% chance to attack allies too with a specific skill.
Plugin Requirement:
Basic Yanfly + Aura Effects
Required Compatibility:
Any Yanfly Battle Systems

I was gonna use this with some other cool effects like someone burning, but i think infected makes a better name for it.. Hopefully this isnt too challenging, thanks in advance
 

Dobberman

The dog.
Member
Joined
Nov 29, 2017
Messages
9
Reaction score
27
First Language
Portuguese
Primarily Uses
RMMV
Dear friends, hello there!


I'm just trying to make a DoT - damage over turn - and HoT - healing over turn - effects that can hit critically, using the critical chance and the critical modifier of the user (and critical resistance from target), but i have no idea where to start.

State Name: DoT/Regen Critical!
State Description: when the user use a bleed/poison/regen effect, the effect need a chance do critical hit in every DoT effect/turn. Like World of Warcraft and some other MMOs.
Plugin Requirement: I'm think you will need the Battle Engine of Yanfly, the buffs and States Cores, Extended Damage over Time and Critical Control.
Required Compatibility: I'm just using Yanfly's plugins, soo need compatibility with Yanfly plugins in Maker's default battle system.


Anyone have some idea?
Hugs.
 

ramza

Lunatic Coder
Veteran
Joined
Jan 28, 2013
Messages
773
Reaction score
483
First Language
English
Primarily Uses
RMMV
State Name:
Infected
State Description:
A state that can spread the infection if attacked, or when attacking (preferably melee), and every start of a turn, has a chance to apply infection to close by allies maybe 10-25% chance, as well as a 25% chance to attack allies too with a specific skill.
Plugin Requirement:
Basic Yanfly + Aura Effects
Required Compatibility:
Any Yanfly Battle Systems

I was gonna use this with some other cool effects like someone burning, but i think infected makes a better name for it.. Hopefully this isnt too challenging, thanks in advance
Sorry it took so long to get back to you on this one. I'd hope by now you've found an answer to this, but if not, I will write up a brief explanation which you can modify a bit to fit into whatever state you want.

So this state has multiple parts, so it will need to be handled in multiple lunatic codes. The first part, being attacked, will be handled in a <Custom React Effect> tag:

Code:
<Custom React Effect>
if (this.isHpEffect() && this.isPhysical()){
 var rnd = VARIANCE VALUE HERE
 var formula = DAMAGE FORMULA HERE
 var total = MULTIPLY FORMULA BY RND
user.gainHp(-total);
user.startAnimation(x);
user.startDamagePopup();
if (user.isDead())
  {
     user.performCollapse();
  }
}
</Custom React Effect>
Likewise, the section where it deals extra damage when the infected target makes a physical attack is handled through a <Custom Confirm Effect>
Code:
<Custom Confirm Effect>
if (this.isHpEffect() && this.isPhysical()){
 var rnd = VARIANCE VALUE HERE
 var formula = DAMAGE FORMULA HERE
 var total = MULTIPLY FORMULA BY RND
target.gainHp(-total);
target.startAnimation(x);
target.startDamagePopup();
if (target.isDead())
  {
     target.performCollapse();
  }
}
</Custom Confirm Effect>
The second half of your request needs to be on a <Custom Turn Start Effect>
Code:
<Custom Turn Start Effect>
var units = user.friendsUnit().aliveMembers()
for (var i = 0; i < units.length; i++){
 if (Math.randomInt(100) > 25){
 //this unit is infected now
 units[i].addState(stateId)
 units[i].startAnimation(x)
 }
}
</Custom Turn Start Effect>
This checks all alive allies of the infected against a 25% check, and if it fails the check, inflicts them with the infected state, and plays an animation. In this section you could also force an action to use a specific skill on them, but the system doesn't play well with forced actions from inside a state, so showing an animation may be the best you can do here.


Dear friends, hello there!


I'm just trying to make a DoT - damage over turn - and HoT - healing over turn - effects that can hit critically, using the critical chance and the critical modifier of the user (and critical resistance from target), but i have no idea where to start.

State Name: DoT/Regen Critical!
State Description: when the user use a bleed/poison/regen effect, the effect need a chance do critical hit in every DoT effect/turn. Like World of Warcraft and some other MMOs.
Plugin Requirement: I'm think you will need the Battle Engine of Yanfly, the buffs and States Cores, Extended Damage over Time and Critical Control.
Required Compatibility: I'm just using Yanfly's plugins, soo need compatibility with Yanfly plugins in Maker's default battle system.


Anyone have some idea?
Hugs.
As above, I'm sorry it took so long to get to this request. YEP_X_ExtDot is sort of capable of this on it's own, and I can't think of a better way to pull this off without making an extension to that plugin (which I may do at some point though). Because the damage of the dot state is determined by the note tags on that state, the easiest way to do this is work the critical chance into the original damage formula. INstead of the following:
Code:
<Custom DoT Formula>
     value = Math.max(a.mat, a.atk)
     variance = 20;
     element = 10;
</Custom Dot Formula>
You would use something more like this:
Code:
<Custom DoT Formula>
if (user.isStateAffected(x)){
    var critchance = Math.max(user.cri - target.cev, 0)
    var critmultiplier = 2.0
    if (Math.random() < critchance){
    //a crit has happened
    value = Math.max(a.mat, a.atk) * critmultiplier
    } else {
    //crit failed
    value = Math.max(a.mat, a.atk)
   }
} else {
     value = Math.max(a.mat, a.atk)
}
     variance = 20;
     element = 10;
</Custom Dot Formula>
Where the user is checked for the critically enabling dot state first, then his crit rate is checked against the target's cev rate, and then a random check is used to determine if this dot has critically hit, which doubles the damage of the tick.

Like I said, this could be shorted dramatically by making a change to the actual ExtDot plugin, and I might make one at some point in the future.
 
Last edited:

Dobberman

The dog.
Member
Joined
Nov 29, 2017
Messages
9
Reaction score
27
First Language
Portuguese
Primarily Uses
RMMV
Sorry it took so long to get back to you on this one. I'd hope by now you've found an answer to this, but if not, I will write up a brief explanation which you can modify a bit to fit into whatever state you want.
[...]
As above, I'm sorry it took so long to get to this request. YEP_X_ExtDot is sort of capable of this on it's own, and I can't think of a better way to pull this off without making an extension to that plugin (which I may do at some point though). Because the damage of the dot state is determined by the note tags on that state, the easiest way to do this is work the critical chance into the original damage formula. INstead of the following:
Code:
<Custom DoT Formula>
     value = Math.max(a.mat, a.atk)
     variance = 20;
     element = 10;
</Custom Dot Formula>
You would use something more like this:
Code:
<Custom DoT Formula>
if (user.isStateAffected(x)){
    var critchance = Math.max(user.cri - target.cev, 0)
    var critmultiplier = 2.0
    if (Math.random() < critchance){
    //a crit has happened
    value = Math.max(a.mat, a.atk) * critmultiplier
    } else {
    //crit failed
    value = Math.max(a.mat, a.atk)
   }
} else {
     value = Math.max(a.mat, a.atk)
}
     variance = 20;
     element = 10;
</Custom Dot Formula>
Where the user is checked for the critically enabling dot state first, then his crit rate is checked against the target's cev rate, and then a random check is used to determine if this dot has critically hit, which doubles the damage of the tick.

Like I said, this could be shorted dramatically by making a change to the actual ExtDot plugin, and I might make one at some point in the future.
Thank you mate!

With this formula i can made a critical damage occur in every situation, this was a tremendous help.
But this is a "fake critical", right? because count only for damage proposities and don't count for "if(critical)" checks and another fancy things (colorful numbers, etc...).
There's a way to make a FORCE CRITICAL like in the Yanfly Action Sequence?

Anyway, thank you soo much!
Hugs!
 

ramza

Lunatic Coder
Veteran
Joined
Jan 28, 2013
Messages
773
Reaction score
483
First Language
English
Primarily Uses
RMMV
That is correct, this is a 'fake' critical.
Since it isn't an action causing the damage, tags like force critical that work on skills or action sequences have no effect here. I looked briefly at a way to reverse engineer the crit control plugin to see if I couldn't push that in there too, but it needs a bit more of a deep dive than I have time for. I was hoping for a function to call right before the damage popup that denoted a critical hit, which I didn't find.

On the other hand, you must be using a different plugin entirely if you can change the color of the text of a critical hit, so there might still be a function that can be tweaked a little bit to at least cause the damage popup from these dot effects to look the same as a critical hit, even if it doesn't end up doing any of the other fancy effects.

The main thing is that it won't work for other states that do effects on action results, like a state that restores your MP if you critically hit, because this isn't an action, and therefore can't trigger action effects. Also, changing it so that it could, would likely lead to causing an endless loop of state effects triggering off each other constantly.
 

Chaos17

Dreamer
Veteran
Joined
Mar 13, 2012
Messages
1,311
Reaction score
485
First Language
French
Hello,

I'm looking for a lunatic code that will:
- check if the user as the required tp
- check if he has a stated applied
If those conditions are meet, skill will add a (secondary) bonus effect

For example, when I will attack an enemy with shield bash, it will apply stun only has a bonus effect only if the requirement above is triggered.
Another example would be while using heal on an ally; it will also give a debuff to a random enemy like decrease atk but only if conditions are met.


State Name: Trance
State Description: enter a state if some condittions are meet if meet do X skill.
Plugin Requirement: I'm using all yanflybattle plugins so do what you can.
 

ramza

Lunatic Coder
Veteran
Joined
Jan 28, 2013
Messages
773
Reaction score
483
First Language
English
Primarily Uses
RMMV
Hello,

I'm looking for a lunatic code that will:
- check if the user as the required tp
- check if he has a stated applied
If those conditions are meet, skill will add a (secondary) bonus effect

For example, when I will attack an enemy with shield bash, it will apply stun only has a bonus effect only if the requirement above is triggered.
Another example would be while using heal on an ally; it will also give a debuff to a random enemy like decrease atk but only if conditions are met.


State Name: Trance
State Description: enter a state if some condittions are meet if meet do X skill.
Plugin Requirement: I'm using all yanflybattle plugins so do what you can.
A <Custom Passive Condition> tag is what we'll need to do this, as you only want the trance state to be on the battler when their TP is above a certain level.

So first we need a custom condition tag that will make the Trance state only active when the user's TP is above a certain amount:

Code:
<Custom Passive Condition>
if (user._tp >= 75){
condition = true
} else {
condition = false
}
</Custom Passive Condition>
From here, all you need to do is make it so that the state is on all actors, using the plugin parameters for the AutoPassiveStates plugin.

Next, there are a couple of ways we can set up skills that interact with it. The easiest way is via action sequences. For each skill that can be modified by this state, you simply use an if statement in the action sequence, and place the added effect into it.

So your shield bash example might go something like this:

Code:
<Setup Action>
clear battle log
display action
motion standby: user
move user: target, front base, 20
wait for move
immortal: target, true
</Setup Action>
<Target Action>
wait: 15
motion attack: user
wait: 3
action effect: target
if target.result().i****()
 attack animation: target
end
if (user.isStateAffected(X))
add state Y: target
end
wait for animation
wait: 20
</Target Action>
<Finish Action>
clear battle log
perform finish
wait: 10
immortal: target, false
</Finish Action>
Where if the actor is affected by state X, it applies state Y to the target. This if section can be modified to do anything an action sequence can do, to add states, or extra damage, or whatever else you want. You can even use different action sequence targets to cause damage to enemies from your healing spell as well.
 

Chaos17

Dreamer
Veteran
Joined
Mar 13, 2012
Messages
1,311
Reaction score
485
First Language
French
Hello,

Sorry for the late reply.
I was able to test it today and it works like a charm.
Thank you very much for your help.

:kaojoy:
 

Johnboy

Veteran
Veteran
Joined
Jan 13, 2016
Messages
344
Reaction score
124
First Language
English
Primarily Uses
State Name:
Soul Link
State Description:
In a nutshell, I would like the actor that inflicts this state on an enemy to recover 25% of any damage that enemy takes while the state is active.
Ex. Actor uses Soul Link skill (deals damage and inflicts the target with Soul Link)
Any time the enemy takes damage from any source, the actor recovers 25% of the damage as HP until the state expires.
Plugin Requirement:
Shouldn't need one.
Required Compatibility:
Using Yanfly plugins (obviously, they're the best) so must be compatible.

If you have a chance to work through this, thank you. Javascript is still not my strong suit.
 

ramza

Lunatic Coder
Veteran
Joined
Jan 28, 2013
Messages
773
Reaction score
483
First Language
English
Primarily Uses
RMMV
State Name:
Soul Link
State Description:
In a nutshell, I would like the actor that inflicts this state on an enemy to recover 25% of any damage that enemy takes while the state is active.
Ex. Actor uses Soul Link skill (deals damage and inflicts the target with Soul Link)
Any time the enemy takes damage from any source, the actor recovers 25% of the damage as HP until the state expires.
Plugin Requirement:
Shouldn't need one.
Required Compatibility:
Using Yanfly plugins (obviously, they're the best) so must be compatible.

If you have a chance to work through this, thank you. Javascript is still not my strong suit.
This is a great state suggestion, and surprisingly simple to make.

For this state, we need only one state, the 'Soul Link' state that will be inflicted on the enemy target. Make the state do whatever you want from the normal database UI, including the turn duration.

We're going to use a <Custom React Effect> to heal the origin of the state whenever the target of the state takes damage.
Code:
<Custom React Effect>
if (this.isHpEffect() && value > 0){
 //will only have an effect if the target was hit by a damaging action
 var healamt = (Math.round(0.25 * value))
 origin.gainHp(healamt)
 origin.startDamagePopup()
 origin.clearResult()
}
</Custom React Effect>
The 'origin' of a state is the battler that inflicted it. That means if this state is refreshed by a second ally, only the most recent ally to apply the state will be healed. We can see above, that the 'healamt' is the amount of healing that the actor will receive, and is 25% of the inflicted damage (from 'value'). <Custom React Effect>s happen whenever a battler is successfully hit by an action, we use the if condition at the beginning to filter out possible scenarios where this effect will have no effect,
 

Johnboy

Veteran
Veteran
Joined
Jan 13, 2016
Messages
344
Reaction score
124
First Language
English
Primarily Uses
I didn't think it would be too difficult and I suspected it was through a react effect but I didn't know where else to go from there. Thanks @ramza
 

Johnboy

Veteran
Veteran
Joined
Jan 13, 2016
Messages
344
Reaction score
124
First Language
English
Primarily Uses
Have another one for you @ramza:

State Name:
Float
State Description:
Similar to the Final Fantasy series, I would like the character to float in the air and all earth type damage misses the character.
Ex. Actor has float cast on them. The enemy casts quake and it misses.
Plugin Requirement:
Shouldn't need one.
Required Compatibility:
Using Yanfly plugins (obviously, they're the best) so must be compatible.

Note: I do have the float working for the battlers, just not sure how to get a specific element to have it's hit rate reduced to 0.
 

Kupotepo

Fantasy realist/Advocatus Diaboli
Veteran
Joined
Jul 5, 2017
Messages
1,939
Reaction score
2,064
First Language
Thai
Primarily Uses
RMMV
State Name:
Block
State Description:
Takes Damage for an ally. Also, while taking the damage for a friend, increase 1.4 DEF. Both effects will be last about 4 turns.
Plugin Requirement:
I do not think it shouldn't be one.
Required Compatibility:
Using Yanfly plugins

Thank you and please take your time.
 
Last edited:

ramza

Lunatic Coder
Veteran
Joined
Jan 28, 2013
Messages
773
Reaction score
483
First Language
English
Primarily Uses
RMMV
Have another one for you @ramza:

State Name:
Float
State Description:
Similar to the Final Fantasy series, I would like the character to float in the air and all earth type damage misses the character.
Ex. Actor has float cast on them. The enemy casts quake and it misses.
Plugin Requirement:
Shouldn't need one.
Required Compatibility:
Using Yanfly plugins (obviously, they're the best) so must be compatible.

Note: I do have the float working for the battlers, just not sure how to get a specific element to have it's hit rate reduced to 0.
We can set the success rate of a skill to zero if it meets certain requirements. For your float state, you'd have something like the following:

Code:
<Custom Select Effect>
var earth = 6;
if (this.item() && this.isForOpponent()) {
  if (this.item().damage.elementId === earth){
    this._formerItemSuccessRate = this.item().successRate;
    this.item().successRate = 0;
  }
}
</Custom Select Effect>
<Custom Deselect Effect>
if (this._formerItemSuccessRate){
  this.item().successRate = this._formerItemSuccessRate
  this._formerItemSuccessRate = undefined
}
</Custom Deselect Effect>
Change the number at the top to the correct elementID for the earth element. If the state detects an incoming attack that is earth element, it changes the successrate of the skill to zero, which will make it miss. It then returns the successrate to normal. We use a select effect to set this up, because the select effect happens before the damage is calculated. We use the deselect effect to reset it after, because that happens after damage has already been dealt.
 

ThePotatoOfFire

8-bit Obsessed
Veteran
Joined
Jan 15, 2016
Messages
157
Reaction score
58
First Language
English
Primarily Uses
RMMV
State Name:
Eternal Flame
State Description:
Once set on an enemy, it will deal Fire damage to them at the beginning of their turn, and the state never expires. However, it can only be active on one enemy at a time. So, if Enemy A has Eternal Flame, and then the player casts it on Enemy B, the state would be removed from Enemy A.
Plugin Requirement:
Yanfly's DoT Extension plugin would probably come in handy for the elemental damage and whatnot, not sure what else this would need
Required Compatibility:
I'm using Yanfly's STB, if that has any impact at all

I know it's pretty bland in itself, so if you think of something to make it more interesting, or to give it more strategic use, have at it. Really, what sticks out as the hard part to me is the "one enemy at a time" restriction. Thanks ahead of time!
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Profile Posts

I think I've created a monster.
...and I love it. <3
Today represents my one year anniversary of throwing out the tile map. :LZSexcite: One year ago my game looked like...


And now for those that don't know, it looks like..


What a year, what a year indeed. RIP Tile Map, nobody misses you. :LZSwink:
There is now a demo released for [Beyond the Mirror]! Check the team recruitment thread to learn more!
'Tis the season to see shipping prices and go 'Yikes'.

Forum statistics

Threads
105,694
Messages
1,015,640
Members
137,375
Latest member
jasaseocirebon
Top