• Do not use Discord to host any images you post, these links expire quickly! You can learn how to add images to your posts here.
Deluxe Battle Kit [v21.1]

Resource Deluxe Battle Kit [v21.1] v1.2.2

Tauxins

Aspiring Game Maker
Member
Joined
Jan 24, 2022
Posts
17
You can kinda do whatever you want. Depends how you want to approach it. Some things would be easier to pull off than others.

If you mean just setting a damage gate at 1 HP and then fully restoring the Pokemon's HP to begin phase 2, then sure. If you mean having new opponents join the battle mid-fight, then you'll need the SOS add-on for that.
Perfect. It was the first one, by the way.
 

TurtTheTurtle

Trainer
Member
Joined
Jul 10, 2023
Posts
56
Is there not a way for the trainer to appear on screen when a text is played out?

I also wanted to add.. ive been trying the MBD and nothing happens...

AleshaStart = {
"RoundStartCommand_1" => {
"text_A" => "ALESHA: I know this is your first gym fight but I'm not going easy on you. So slow down there child.",
"playAnim" => [:STICKYWEB, :Self, :Self],
"playSE" => "Anim/PRSFX- Sticky Web",
"text_B" => "Sticky webs were placed at your feet...",
"text_c" => "No need to cut this battle short.",
}
}
end

"setBattleRule("midbattleScript", :AleshaStart)"
 
Last edited:

Lucidious89

Champion
Member
Joined
Nov 12, 2020
Posts
1,222
Is there not a way for the trainer to appear on screen when a text is played out?
That's what "speech" is for. The "text" command is just for normal battle text. This is covered in the guide.

I also wanted to add.. ive been trying the MBD and nothing happens...

AleshaStart = {
"RoundStartCommand_1" => {
"text_A" => "ALESHA: I know this is your first gym fight but I'm not going easy on you. So slow down there child.",
"playAnim" => [:STICKYWEB, :Self, :Self],
"playSE" => "Anim/PRSFX- Sticky Web",
"text_B" => "Sticky webs were placed at your feet...",
"text_c" => "No need to cut this battle short.",
}
}
end

"setBattleRule("midbattleScript", :AleshaStart)"
You need an extension at the end of "RoundStartCommand_1" to signify who is activating this trigger. In this case, I assume you want "_foe". The trigger won't do anything otherwise.
 

TurtTheTurtle

Trainer
Member
Joined
Jul 10, 2023
Posts
56
That's what "speech" is for. The "text" command is just for normal battle text. This is covered in the guide.


You need an extension at the end of "RoundStartCommand_1" to signify who is activating this trigger. In this case, I assume you want "_foe". The trigger won't do anything otherwise.
gotcha... and can you give me an example for the "tempParty" cuz i want the pokemon to have specific move sets, ivs, and all that.
 

Lucidious89

Champion
Member
Joined
Nov 12, 2020
Posts
1,222
gotcha... and can you give me an example for the "tempParty" cuz i want the pokemon to have specific move sets, ivs, and all that.
Just make a new Pokemon object for each party member and edit its values from there. This isn't really a plugin thing, there's plenty of examples in Essentials' default maps that already demonstrate this.
 

TurtTheTurtle

Trainer
Member
Joined
Jul 10, 2023
Posts
56
Just make a new Pokemon object for each party member and edit its values from there. This isn't really a plugin thing, there's plenty of examples in Essentials' default maps that already demonstrate this.
Im sorry... im not sure i understand
 

xDracolich

Novice
Member
Joined
Jun 2, 2019
Posts
28

Lucidious89

Champion
Member
Joined
Nov 12, 2020
Posts
1,222

MasteredUI.Music

Rookie
Member
Joined
Mar 21, 2023
Posts
5
Aight, I've been struggling with this for a week now so I might as well ask. I've been trying to utilise the choice key to command stat raises, and I got it working, but for only one battler, and it's a double battle. I've tried many different structures to try and get it to raise 2 at the same time, but it either raises one battler, or none at all. If anyone could help, that'd be greatly appreciated!

Here's the script:
setBattleRule("midbattleScript", {
"RoundEnd_1_foe" => {
"setChoices" => [:reason, 2, {
"We got lost?" => "What?! That's total Tauros!",
"We're here to beat you." => "H-Huh? You two have got some nerve, then."
}],
"setSpeaker" => "LUXIO",
"editWindow" => "Luxio",
"speech" => ["Hey!", "What are you two doing up here?!", :Choices]
},
"ChoiceRight_reason" => {
"setBattler" => [:Opposing, :OpposingAlly],
"battlerStats" => [:SPEED, 2]
},
"ChoiceWrong_reason" => {
"setBattler" => [:Self, :Ally],
"battlerStats" => [:DEFENSE, 1]
},
"BeforeLastSwitchIn" => {
"setSpeaker" => "LUXIO",
"speech" => "You lot are too weak!",
"playSE" => "shout",
"editWindow" => ["Luxio", "shout"],
"speech" => "GET OUT OF MY WAY!"
},
"LastUserHPHalf" => {
"setSpeaker" => "LUXRAY",
"playSE" => "shout",
"playCry" => :LUXRAY,
"editWindow" => ["Luxray", "shout"],
"speech" => ["THATS ENOUGH!", "QUIT ALL THIS FIGHTING!"],
"endBattle" => 1
}
})
 

Lucidious89

Champion
Member
Joined
Nov 12, 2020
Posts
1,222
Aight, I've been struggling with this for a week now so I might as well ask. I've been trying to utilise the choice key to command stat raises, and I got it working, but for only one battler, and it's a double battle. I've tried many different structures to try and get it to raise 2 at the same time, but it either raises one battler, or none at all. If anyone could help, that'd be greatly appreciated!

Here's the script:
setBattleRule("midbattleScript", {
"RoundEnd_1_foe" => {
"setChoices" => [:reason, 2, {
"We got lost?" => "What?! That's total Tauros!",
"We're here to beat you." => "H-Huh? You two have got some nerve, then."
}],
"setSpeaker" => "LUXIO",
"editWindow" => "Luxio",
"speech" => ["Hey!", "What are you two doing up here?!", :Choices]
},
"ChoiceRight_reason" => {
"setBattler" => [:Opposing, :OpposingAlly],
"battlerStats" => [:SPEED, 2]
},
"ChoiceWrong_reason" => {
"setBattler" => [:Self, :Ally],
"battlerStats" => [:DEFENSE, 1]
},
"BeforeLastSwitchIn" => {
"setSpeaker" => "LUXIO",
"speech" => "You lot are too weak!",
"playSE" => "shout",
"editWindow" => ["Luxio", "shout"],
"speech" => "GET OUT OF MY WAY!"
},
"LastUserHPHalf" => {
"setSpeaker" => "LUXRAY",
"playSE" => "shout",
"playCry" => :LUXRAY,
"editWindow" => ["Luxray", "shout"],
"speech" => ["THATS ENOUGH!", "QUIT ALL THIS FIGHTING!"],
"endBattle" => 1
}
})
All of the "battler" command keys only affect a single battler at a time. You can't cheat it by setting it as an array of battlers. If you do, it won't accept the inputted data and just assume you're trying to target the first available target. If you want it to affect multiple battlers, you'll just have to manually raise the stats of each desired battler one at a time using key extensions.

For example:
Ruby:
Expand Collapse Copy
"ChoiceRight_reason" => {
  "setBattler_A"   => :Opposing,
  "battlerStats_A" => [:SPEED, 2],
  "setBattler_B"   => :OpposingAlly,
  "battlerStats_B" => [:SPEED, 2]
},
 

MasteredUI.Music

Rookie
Member
Joined
Mar 21, 2023
Posts
5
All of the "battler" command keys only affect a single battler at a time. You can't cheat it by setting it as an array of battlers. If you do, it won't accept the inputted data and just assume you're trying to target the first available target. If you want it to affect multiple battlers, you'll just have to manually raise the stats of each desired battler one at a time using key extensions.

For example:
Ruby:
Expand Collapse Copy
"ChoiceRight_reason" => {
  "setBattler_A"   => :Opposing,
  "battlerStats_A" => [:SPEED, 2],
  "setBattler_B"   => :OpposingAlly,
  "battlerStats_B" => [:SPEED, 2]
},
Knew I was missing something, didn't check through extensions well enough to see the example, my dumbahh x_x Thank you for the help, I'm having so much fun figuring out the system, and of course, the freedom of creativity I can utilise with it is insane, so also thank you for making it!

(I did try doing it separately without using the letter extensions, but I'm pretty sure that actually ended up boosting no stats, which led me down a very long, STUBBORN road of trying to figure it out, till I eventually caved and has to ask for help)
 

Highnoonmoon

Rookie
Member
Joined
Jun 12, 2024
Posts
3
Hello, I'm struggling trying to get trainers to terastalize their pokemon during a Double Battle. Single battles that involve terastalization work though.
Just Double battles I'm struggling with.

I have looked over the Deluxe Battle Kit Tutorial website and made sure to check the right PBS files (and [003]MidbattleScripts Module) for any errors.
So far nothing is wrong.
Could it be that it has something to do when setbattlerule("double") is called?

99% of the script works, pretty much anything I set that doesn't involve terastalizing works during the battle. no game crashes either.
Anyways, here is the mid battle script example that i created for the trainer:
#-----------------------------------------------------------------------------
# Battle vs Lacey.
#-----------------------------------------------------------------------------
BATTLE_LACEY = {
"RoundStartCommand_foe" => {
"speech" => ["I'll be facing you with my usual party as a member of the Elite Four."]
},
"UserMoveEffective_foe" => {
"speech" => ["It's a rock-solid stratregy to go after weaknesses...", "which is why I'll be turning it right back at you!"]
},
"UserDealtCriticalHit" => {
"speech" => [:Opposing, "Why did you have to land that kind of hit? Now that's just not right!"]
},
"BeforeTerastallize_foe" => {
"speech" => ["All eyes on our great big Terastal heart! Time to get even cuter and cuter!"]
},
"BeforeTeraMove_foe" => {
"speech" => ["Get'em, Excadrill! Let's send them flying with your adorable destructive force!"]
},
"LastUserHPHalf_foe" => {
"speech" => ["No point in letting this drag on... Behold, the power to overwhelm everything!"]
},

}
end
 

Lucidious89

Champion
Member
Joined
Nov 12, 2020
Posts
1,222
Hello, I'm struggling trying to get trainers to terastalize their pokemon during a Double Battle. Single battles that involve terastalization work though.
Just Double battles I'm struggling with.

I have looked over the Deluxe Battle Kit Tutorial website and made sure to check the right PBS files (and [003]MidbattleScripts Module) for any errors.
So far nothing is wrong.
Could it be that it has something to do when setbattlerule("double") is called?

99% of the script works, pretty much anything I set that doesn't involve terastalizing works during the battle. no game crashes either.
Anyways, here is the mid battle script example that i created for the trainer:
#-----------------------------------------------------------------------------
# Battle vs Lacey.
#-----------------------------------------------------------------------------
BATTLE_LACEY = {
"RoundStartCommand_foe" => {
"speech" => ["I'll be facing you with my usual party as a member of the Elite Four."]
},
"UserMoveEffective_foe" => {
"speech" => ["It's a rock-solid stratregy to go after weaknesses...", "which is why I'll be turning it right back at you!"]
},
"UserDealtCriticalHit" => {
"speech" => [:Opposing, "Why did you have to land that kind of hit? Now that's just not right!"]
},
"BeforeTerastallize_foe" => {
"speech" => ["All eyes on our great big Terastal heart! Time to get even cuter and cuter!"]
},
"BeforeTeraMove_foe" => {
"speech" => ["Get'em, Excadrill! Let's send them flying with your adorable destructive force!"]
},
"LastUserHPHalf_foe" => {
"speech" => ["No point in letting this drag on... Behold, the power to overwhelm everything!"]
},

}
end
What exactly are you trying to make happen? You say you're trying to make this trainer Terastallize, but nothing in your script is forcing this to occur. It seems like you're just conpletely relying on the AI to do so, which isn't particularly reliable. It's likely that the trainer isnt Terastallizing simply because they don't think it's worth Terastallizing.

Turn on battle logging and see what the AI is thinking. It should display their Tera logic.
 

Highnoonmoon

Rookie
Member
Joined
Jun 12, 2024
Posts
3
What exactly are you trying to make happen? You say you're trying to make this trainer Terastallize, but nothing in your script is forcing this to occur. It seems like you're just conpletely relying on the AI to do so, which isn't particularly reliable. It's likely that the trainer isnt Terastallizing simply because they don't think it's worth Terastallizing.

Turn on battle logging and see what the AI is thinking. It should display their Tera logic.
Ok so I readjusted the script to force the terastallization of a specific pokemon, however it looks like i found the real problem.
I turned on battle logging and tested different revisions of my script for a while, and
I discovered that the trainer will ONLY terastallize if the ace pokemon is the last one remaining (in double battles).
No terastallizing happened when the ace pokemon was battling alongside another pokemon.

My goal is to get the trainer to terastallize their Ace pokemon (in a double battle) once it's out and after they select a
move regardless how many pokemon are remaining on the trainer's team.
This is the revised script (it only works if the ace pokemon is the last one remaining):

#-----------------------------------------------------------------------------
# Battle vs Lacey.
#-----------------------------------------------------------------------------
BATTLE_LACEY = {
"RoundStartCommand_foe" => {
"speech" => ["I'll be facing you with my usual party as a member of the Elite Four."]
},
"UserMoveEffective_foe" => {
"speech" => ["It's a rock-solid stratregy to go after weaknesses...", "which is why I'll be turning it right back at you!"]
},
"UserDealtCriticalHit" => {
"speech" => [:Opposing, "Why did you have to land that kind of hit? Now that's just not right!"]
},
"AfterLastSwitchIn_EXCADRILL" => {
"Terastallize" => [:true]
},
"BeforeTerastallize_EXCADRILL" => {
"speech" => ["All eyes on our great big Terastal heart! Time to get even cuter and cuter!"]
},
"BeforeTeraMove_EXCADRILL" => {
"speech" => ["Get'em, Excadrill! Let's send them flying with your adorable destructive force!"]
},
"LastUserHPHalf_EXCADRILL" => {
"speech" => ["No point in letting this drag on... Behold, the power to overwhelm everything!"]
},

}
end
 

Lucidious89

Champion
Member
Joined
Nov 12, 2020
Posts
1,222
Ok so I readjusted the script to force the terastallization of a specific pokemon, however it looks like i found the real problem.
I turned on battle logging and tested different revisions of my script for a while, and
I discovered that the trainer will ONLY terastallize if the ace pokemon is the last one remaining (in double battles).
No terastallizing happened when the ace pokemon was battling alongside another pokemon.

My goal is to get the trainer to terastallize their Ace pokemon (in a double battle) once it's out and after they select a
move regardless how many pokemon are remaining on the trainer's team.
This is the revised script (it only works if the ace pokemon is the last one remaining):

#-----------------------------------------------------------------------------
# Battle vs Lacey.
#-----------------------------------------------------------------------------
BATTLE_LACEY = {
"RoundStartCommand_foe" => {
"speech" => ["I'll be facing you with my usual party as a member of the Elite Four."]
},
"UserMoveEffective_foe" => {
"speech" => ["It's a rock-solid stratregy to go after weaknesses...", "which is why I'll be turning it right back at you!"]
},
"UserDealtCriticalHit" => {
"speech" => [:Opposing, "Why did you have to land that kind of hit? Now that's just not right!"]
},
"AfterLastSwitchIn_EXCADRILL" => {
"Terastallize" => [:true]
},
"BeforeTerastallize_EXCADRILL" => {
"speech" => ["All eyes on our great big Terastal heart! Time to get even cuter and cuter!"]
},
"BeforeTeraMove_EXCADRILL" => {
"speech" => ["Get'em, Excadrill! Let's send them flying with your adorable destructive force!"]
},
"LastUserHPHalf_EXCADRILL" => {
"speech" => ["No point in letting this drag on... Behold, the power to overwhelm everything!"]
},

}
end
Ah, I see. Yeah, that's how the AI works. It will only Terastallize when its down to its final Pokemon, but in a double battle with a single trainer they're never technically down to their final Pokemon until only one is left on the field.
 

Highnoonmoon

Rookie
Member
Joined
Jun 12, 2024
Posts
3
Ah, I see. Yeah, that's how the AI works. It will only Terastallize when its down to its final Pokemon, but in a double battle with a single trainer they're never technically down to their final Pokemon until only one is left on the field.
Yeah. It's something I would really like to happen in select battles.

I'll keep trying to find an alternative. Though I'm not too god with hardcoding (I feel like that might be the only way)
 

Lucidious89

Champion
Member
Joined
Nov 12, 2020
Posts
1,222
Lucidious89 updated Deluxe Battle Kit [v21.1] with a new update entry:

v1.1.5 Update

  • Added the "noBag" Battle Rule that disables the ability to use items from the inventory for all trainers in a battle.
  • Added the "tempBag" Battle Rule that gives the player a temporary bag for this battle only with items of your choosing.
  • Added the "disableItems" midbattle Command Key that disables the ability to use items from the inventory for all trainers.
  • Implemented a new battle animation and sound effects to play when a...

Read the rest of this update entry...
 

jakobmate

Rookie
Member
Joined
Jun 26, 2024
Posts
1
Wondering if you're able to help - just installed all current versions in order to update to 21.1. Keep getting error messages for certain move sets, some animations play fine but 9/10 gives the same error message:

[Pokémon Essentials version 21.1]
[v21.1 Hotfixes 1.0.9]

Exception: NameError
Message: undefined local variable or method `baseDmg' for #<Battle::Move::BindTarget>

Backtrace:
[Deluxe Battle Kit] [004] Plugin Placholders.rb:248:in `pbBaseDamageTera'
[Deluxe Battle Kit] [002] Damage Calc Refactor.rb:323:in `pbCalcDamage'
Battler_UseMove:633:in `block in pbProcessMoveHit'
Battler_UseMove:625:in `each'
Battler_UseMove:625:in `pbProcessMoveHit'
Battler_UseMove:409:in `block in pbUseMove'
Battler_UseMove:407:in `times'
Battler_UseMove:407:in `pbUseMove'
[Deluxe Battle Kit] [001] Animation Utilities.rb:231:in `block in pbProcessTurn'
PBDebug:6:in `logonerr'
 

Lucidious89

Champion
Member
Joined
Nov 12, 2020
Posts
1,222
Wondering if you're able to help - just installed all current versions in order to update to 21.1. Keep getting error messages for certain move sets, some animations play fine but 9/10 gives the same error message:

[Pokémon Essentials version 21.1]
[v21.1 Hotfixes 1.0.9]

Exception: NameError
Message: undefined local variable or method `baseDmg' for #<Battle::Move::BindTarget>

Backtrace:
[Deluxe Battle Kit] [004] Plugin Placholders.rb:248:in `pbBaseDamageTera'
[Deluxe Battle Kit] [002] Damage Calc Refactor.rb:323:in `pbCalcDamage'
Battler_UseMove:633:in `block in pbProcessMoveHit'
Battler_UseMove:625:in `each'
Battler_UseMove:625:in `pbProcessMoveHit'
Battler_UseMove:409:in `block in pbUseMove'
Battler_UseMove:407:in `times'
Battler_UseMove:407:in `pbUseMove'
[Deluxe Battle Kit] [001] Animation Utilities.rb:231:in `block in pbProcessTurn'
PBDebug:6:in `logonerr'
Gotcha. It seems like this'll happen if you don't have the Terastallization plugin installed. Surprised nobody's mentioned it before, because this is actually a very old bug.

Anyway, it should be fixed now.
 

komeiji514

Elite Trainer
Member
Joined
Oct 28, 2023
Posts
267
Every time I use item on my pokemon this happens.
[2024-06-27 11:23:11 +0800]
[Pokémon Essentials version 21.1]
[v21.1 Hotfixes 1.0.9]

Exception: ArgumentError
Message: wrong number of arguments (given 3, expected 2)

Backtrace:
Battle_ActionUseItem:77:in `pbUseItemMessage'
[Deluxe Battle Kit] [001] Midbattle Overwrites.rb:248:in `pbUseItemOnPokemon'
Battle_AttackPhase:77:in `block in pbAttackPhaseItems'
Battle_AttackPhase:70:in `each'
Battle_AttackPhase:70:in `pbAttackPhaseItems'
[Deluxe Battle Kit] [003] Command Menu Refactor.rb:406:in `pbAttackPhase'
Battle_StartAndEnd:339:in `block (2 levels) in pbBattleLoop'
PBDebug:6:in `logonerr'
Battle_StartAndEnd:339:in `block in pbBattleLoop'
Battle_StartAndEnd:324:in `loop'
 
Back
Top