03-05-2008, 07:04 AM (This post was last modified: 12-29-2017, 04:32 AM by DerVVulfman.)
Limit Break (DVV's)
Version: 3.1
Introduction
This system is a revamped & rewritten system that disables 'element-tagged' skills until the hero's limitbreak bar is filled. Once the skill is used, the skill becomes disabled again. Works with and without the RTAB system.
It has been designed 'menu-less' by intent, and this is to prevent any possible conflicts with any custom menu system. However Alistor had designed a menu system that can change an actor's limit break fill-type explained later. It is ready for plug-n-play use.
The system, by itself, does not change the 'ATTACK' option in the Actor's command window either. Instead, this system enables/disables the skills in the skill menu for you to select. Another add-on has been created by me to change the 'Attack' option for you. * It's been asked for. :) *
It still requires a bar drawing script like Cogwheel's HP/SP/EXP Gauge script to show the Limit Break bar, and I did post (in the 2nd page) a very cheap replacement you can edit to your heart's content. However, without any bar drawing script, you will not get an error. You just won't see the bars on the screen. Previous scripts either had their own bar rendering system, or had 'REQUIRED' scripts that without 'em... crashed.
Features
The ability to disable 'tagged' skills until the limit break bar is filled.
Up to 12 different methods for the limit bar to be filled
Adjustable bar positioning system.
Default Battlesystem and RTAB system complient (yep... in one package).
Most configurable values can now be changed in-game.
You don't HAVE to show bars. If you don't use a compatible bar script, won't show 'em!
Can apply a 'bar fill' chime.
Even allows for players 'added' during battle, even for large party scripts.
Bar values can now 'zero' out if the battlers die in combat.
Demo Limit Break!
(SDK demo of the 'Attack' Replacer and Alistor's Limit Break Menu)
Instructions
Paste it below your battlesystem and fill out whatever values you want. All configuration values are now housed within the LB_DVV module. However, most all the configurable values are passed into and stored within the Game_System class, so they can be edited later in-game.
"Naming your element"
Code:
Name = "Limit Break"
The Name value determines the name of the element in your RMXP database that you use to tag your 'limit break' skills. The name is case sensitive so be forewarned. If you type in a name like "Power Moves" then you do have to ensure that only the 'P' and the 'M' are capitalized.
Limit Break Setting
Code:
Start = 0
The Start value ranges from 0-11. It determines how all your heroes' limit break bars get filled. Valid values are below:
Code:
[SIZE="1"][b] 0 = Attacks the enemy | 1 = Delivers a Critical Hit | 2 = Damaged by the Enemy
3 = Killed an enemy | 4 = Killed a Boss | 5 = Hero Dies in combat
6 = Victory / Wins a fight | 7 = Escapes from Battle | 8 = Defending / Guarding
9 = Lone Combatant | 10 = Just performs an Action | 11 = Has critical health[/b][/SIZE]
Limit Break Max Value
Code:
Maximum = 1000
This value just tells us how sensitive or accurate your limit gauge calculations are. Higher values like 500 or 1000 indicate more accuracy or sensitivity, while lower values like 50 or 100 are less sensitive. Big whoop.
SE played
Code:
Ring = "[color=Red]filename[/color]"
This just holds the sound effect that's played when the bar is filled.
This hash array holds the 'fill' rates of all the limit break conditions.
The first line [ 10, 50, 200, controls the fill rate for the 'ATTACK' limit break. The first value indicates the basic formula rate per point (well... per 10th point or so) that fills your bar. The second value (in this case 50), indicates the minimum fill value per successful hit... so you get at least 50 points per hit. The third value indicates the maximum # of points you get for any successful hit (in this case... 200 points, tops). The 2nd and 3rd lines are similar.
And the last few lines are flat rate values for Victory, Escape, Critical Health and the like... all pointed out in the script.
Limit Break Death Wipe
Code:
Death_Wipe = true
The LB_D_WIPE value is a simple boolean (true/false) value. If it is set to 'true' then the limit break value for a hero is wiped out when he dies. This supercedes/overrides the 'Hero Dies' setting in the LB_RATES above.
Enemy Bosses
Code:
Bosses = [[color=red]number[/color]]
This is an array that holds the id numbers of your bosses... assuming any hero is set to gain point for killing a boss.
Hidden Actors
Code:
Hidden = [[color=red]number[/color]]
This is an array that holds the id numbers of any actors who are not to have their limit bar shown, nor notified by a chime if their limitbreak bar has been filled. It assumes that actors stored here do not have any limitbreak skills.
The Menu_Enable value just indicates if the Limit Break bar appears in the menu... or not. Either it is set to true for it to be on, or set to... well... anything else for it to be off.
The next three hashes (Menu_Position, Battle_Position and RTAB_Position) are hashes that hold the X position, the Y position and the width of the Limit Break bar on the screen. I had to make a separate one for Cogwheel's (RTAB or CTAB) and the ParaDog systems due to their handling of their Battlestatus windows. But it's simple enough. Currently, the system is already setup so the Limit Break bar (if using Cogwheel's bar script), will draw the bar behind the STATUS text display.
The last hash, RTAB_Variance sets the amount of space between Limitbreak bars when using either RTAB or ParaDog's ATB. The default system doesn't need this, but the Cogwheel and ParaDog systems requires you to specify the amount of space between the bars... in both horizontal and vertical directions.
It's very simple. The first line changes the type of Limit break used for a single hero. The index value indicates the hero in the database, with 0 representing the 1st, 1 indicating the 2nd hero, 2 indicating the 3rd.
The limit break type indicates type of limitbreak (range of 0-11) that was already discussed above in 'Limit Break Setting'
The second line merely refreshes the party so the change to the Limit Break condition takes place.
BAR GRAPHICS
This system can be used with the HP/MP/ATB bar system by Cogwheel to use the cogwheel bars for this system. However, if you do not use any bar drawing system, you do not have any bars.
Really.
The KGC RTAB Overdrive system required it or else you'd get a crash. My system just won't draw 'em if you don't have the script.
FAQ
See why a replacement was made for the KGC system.
- Just a little just it is easy to understand, (? ) Code -
Before perusing the page ahead from here, by all means please read thoroughly the code below.
When it cannot agree to these codes, modesty you ask perusal use.
Technique and the like inside this sight is no permission reprinting prohibition.
When it is reprinted, please inform in advance with the bulletin board or the mail. (As for form failure)
Please include this page, avoid also the direct link to each page.
A some damage occurring by compiling the script, this one does not owe responsibility altogether.
Please utilize with respect to self responsibility.
Because of sense,before the using please be sure to take backup.
In regard to demand, please contribute to the private bulletin board. (As for mail and form failure)
It depends on also circumstance, but always demand does not limit passes with.
We do not accept demand presently, with circumstances.
Use report is not necessary.
Copyright inscription is not necessary.
(Especially it does not appoint the prescribed form even with if you can inscribe)
Remodelling of course is OK, but second distribution after the remodelling is strict prohibition.
Profit-making object with use is impossible (such as shareware).
Below, prohibition item summary.
No permission reprinting
Second distribution of remodelling item
Profit-making object () with use such as shareware
(As for receiving the prize in the contest OK)
KGC reserves the rights that their scripts are only to be kept on THEIR forum unless notified beforehand.
Editing/Translating is permitted but distribution of edited works is not.
KGC scripts are copyrighted, without need of copyright mark.
No commercial usage
To be true to truth, the original KGC system was elegent in it's simplicity. The Game_Battler code merely mimiced the original code in the default scripts so it could determine if a 'hit/damaged' attack was successful. And the coding in Scene_Battle was fairly simple and routine as well. As such, one could do very little to make the 'basics' any different.
However... quite a bit of code like 'determining if a party member was alone' was easily trimmed down from 10 lines to 3. What a waste. And there was even more unnecessary clutter in other areas of their original work.
However, I will say this... one main feature that was clearly overlooked was the use of 'ITEMS' as attacks. I have seen more than a couple of Limit Break scripts and none considered weaponized items (Grenades & such) affecting the Limit Break bars. GOTCHA!!!
Notes:
For anyone making scripts for this system, the values of: $game_actors[actor_id].limitbreak holds the total of limitbreak points your hero has. $game_actors[actor_id].lb_type holds the value of which type of system you're using.
And draw_actor_lb(actor, x, y, width) is the method that draws the limit break bar. It refers to the cogwheel script gauge_rect in it, so anyone making a bar script for this system will either have to create their own gauge_rect code that handles 17 arguments, or write a whole new def draw_actor_lb to overwrite this scripts's.
Patches and Add-Ons
First off, a simple 'bar script' in case you don't want to use EITHER Cogwheel's HP/MP/ATB script, or Clive's Seph Styled Slant Bars (if fixed for the new system). The script ONLY adds the Limit Break bar... no others. You can use this as a basis for making your own 'bar' script that works with this system.
"Cheapo Limit Bar Add-On"
Code:
#==============================================================================
# *** Limit Break (DVV's) (12-27-2017)
# *** Cheapo Limit Bar Add-On
# *** Version 1.1
#------------------------------------------------------------------------------
# by DerVVulfman
#
# This bar script merely adds a simple gradient bar. It replaces the def that
# calls on gauge_rect system, and uses a simple gradient system created by
# RPG Advocate.
#
# To use, paste this script below the Limit Break script so it overwrites the
# draw_actor_lb def with this one.
#
# To adjust the colors, edit the values from 'gradient_red_start' through to
# 'gradient_blue_end', in values from 0 to 100. It is currently set up so
# the bar fills with a solid red color from the beginning and continues to
# fill, changing into a magenta-like color at the end.
#
# The only thing to note is that like the Cogwheel bars that the Limit Break
# script was designed to use, these 'Cheapo' bars (nice name, eh?) will be
# shown slightly transparent in the screens.
#
#==============================================================================
class Window_Base
#--------------------------------------------------------------------------
# * Draw Overdrive Meter
#--------------------------------------------------------------------------
def draw_actor_lb(actor, x, y, width = 144)
# Percentages of the bar fill colors
gradient_red_start = 100
gradient_red_end = 100
gradient_green_start = 0
gradient_green_end = 0
gradient_blue_start = 0
gradient_blue_end = 100
height = 10
# Creates the blank/empty bar. No frills, no trim. Cheapo.
self.contents.fill_rect(x, y, width, height, Color.new(0, 0, 0, 255))
# Determines the amount of bar filled
lb = width * actor.limitbreak / LB_DVV::Maximum
# Draw the bar
for x_coord in 1..lb
current_percent_done = x_coord * 100 / width
difference = gradient_red_end - gradient_red_start
red = gradient_red_start + difference * x_coord / width
difference = gradient_green_end - gradient_green_start
green = gradient_green_start + difference * x_coord / width
difference = gradient_blue_end - gradient_blue_start
blue = gradient_blue_start + difference * x_coord / width
if current_percent_done <= lb
rect = Rect.new(x + x_coord-1, y, 1, height)
self.contents.fill_rect(rect, Color.new(red, green, blue, 255))
end
end
end
end
And, a patch to adapt ParaDog's v 2.58 Battlesystem to work with the Limit Break script. Paste it below ParaDog's battlesystem so it works with the Limit Break script.
"The ParaDog Limit Break Patch"
Code:
#==============================================================================
# *** Limit Break (DVV's) (01-24-2006)
# *** The ParaDog Limit Break Patch
# *** Version 1.0
#------------------------------------------------------------------------------
# by DerVVulfman
#
# This script allows for the limitbreak bar to fill after actions or events
# during battle. In truth, only the most minimal of additions were needed.
#
# Simply paste this below ParaDog's Battlesystem.
#
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(160, 320, 480, 160)
self.contents = Bitmap.new(width - 32, height - 32)
@level_up_flags = [false, false, false, false]
@before_hp = []
@before_sp = []
@before_states = []
@before_limit = []
@now_hp = []
@now_sp = []
@now_states = []
@now_limit = []
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
line_height = 120 / PARA_CTB::PARTY_SIZE
actor_y = i * line_height + 4
# Present status in arrangement
@now_hp[i] = actor.hp
@now_sp[i] = actor.sp
@now_states[i] = actor.states
@now_limit[i] = actor.limitbreak
# If leveling up
if @level_up_flags[i]
self.contents.fill_rect(344, actor_y+14, 100, 8, Color.new(0, 0, 0, 0))
self.contents.font.color = normal_color
self.contents.draw_text(344, actor_y, 120, 32, "LEVEL UP!")
end
end
# Light weight conversion processing of battle status
# When arrangement of status changes only, drawing processing
if @before_hp == nil or @before_sp == nil or @before_states == nil or
@before_hp != @now_hp or @before_sp != @now_sp or @before_states != @now_states or
@before_limit != @now_limit
self.contents.clear
for i2 in 0...$game_party.actors.size
actor = $game_party.actors[i2]
line_height = 120 / PARA_CTB::PARTY_SIZE
actor_y = i2 * line_height + 4
self.contents.font.size = PARA_CTB::NAME_FONT_SIZE
# Draw Actor Name
draw_actor_name(actor, 4, actor_y+16-PARA_CTB::NAME_FONT_SIZE)
# Draw HP
hp_color1 = PARA_CTB::HP_COLOR_LEFT
hp_color2 = PARA_CTB::HP_COLOR_RIGHT
draw_meter(actor.hp, actor.maxhp, 125, actor_y+14, 80, 8, hp_color1, hp_color2)
draw_actor_hp(actor, 102, actor_y+16-PARA_CTB::HPSP_FONT_SIZE, 100)
# Draw SP
sp_color1 = PARA_CTB::SP_COLOR_LEFT
sp_color2 = PARA_CTB::SP_COLOR_RIGHT
draw_meter(actor.sp, actor.maxsp, 245, actor_y+14, 80, 8, sp_color1, sp_color2)
draw_actor_sp(actor, 222, actor_y+16-PARA_CTB::HPSP_FONT_SIZE, 100)
# Status after the changing in arrangement
@before_hp[i2] = actor.hp
@before_sp[i2] = actor.sp
@before_states[i2] = actor.states
@before_limit[i2] = actor.limitbreak
# If Leveling up
if @level_up_flags[i2]
self.contents.fill_rect(344, actor_y, 100, 8, Color.new(0, 0, 0, 0))
self.contents.font.color = normal_color
self.contents.draw_text(344, actor_y, 120, 32, "LEVEL UP!")
end
end
end
refresh_ct
end
end
Compatibility
Fairly compliant with (I guess) any CTB system (and the SDK!), and the RTAB system. Needs the ParaDog Limit Break Patch (above) if using ParaDog's v 2.58 battlesystem.
Not for use with any ATB system or any non-Strategy battlesystem.
Credits and Thanks
I will admit some credit to KGC. They seem to have been the first. And credit to Landarma whom (though she doesn't know it) inspired me to work on this system. Thanks to link2795 for finding a bug when a healing items was used with the RTAB system. And thanks to Jaide for requesting and betatesting the Limit Break Death Wipe system. Also to VinVulpis for noting a misplaced @active_battler value, to Nadim who found that enemies attacking themselves caused nil errors as no actor performed these actions, and finally to Tehprince who discovered an error with the rtab/paradog limitbar placement system.
Oh, my gawd! It has been roughly ten years since I touched this script. It is definitely time for a ...
BUMP! to Version 3.0
Dear lord! It is true! This is the first time I have ever bumped this script in Save-Point! I haven't worked on it since the forum STARTED!!! EVEN WHEN IT WAS RMVXP.Com or RMXPUniverse.Com!!!! And that's been YEARS!!!!!!
This script seriously needed some attention. Functional as it was, it was NOT up to my current coding standards. Hell, it used global variables for some configured settings, no module to house the settings, and code that wrapped off the screen! And along with that, poor naming conventions for the aliased methods AND the alias statements were all separate! Oh, wow... NOT up to my standards.
Well, it has taken the better part of a few hours, and the Limit Break system is now working well, and with a clearer set of instructions. The code was shortened thanks to some newer techniques (hey, it's been 10 years). And all this time, I did ensure it was STILL compliant with both the Cogwheel set of battlesystems (CTAB and RTAB) and the ATB by ParaDog.
Of note, 'element tagging' systems can affect battle damage. So a new set of protocols were added to eliminate the Limit Break Element from Skills when damage is being applied, and returned thereafter. You don't want botched up skill math, do you?
The Menu system by Alistor still works like a charm, and it's HIS. Not touching it. ^_^
But my "Attack" replacer script needed a major overhaul, now roughly 25% more compact! I eliminated the use of XRXS's Command Window add-on, as I really didn't wish to rely on outside code. What I wrote does take up more lines than his, but my edits also ensured proper placement of the revised 'Limitbreak' command window, all based on the location where the Actor Command Window is meant to be shown. At the same time, I altered the methods within Scene_Battle that are executed when the Actor Command Window pops up. What was initially half the script was cut down to maybe two dozen lines? Hahaha! Boy, lessons learned over the years can sure translate to optimized code.
I hope you enjoy the changes.
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)
Sledge hammer bump! Hey DerVVulfman just a curious question about this script. Is it possible to use the call script command to fill a certain actor's limit gauge? Like I want to have a skill that will fill actor2's limit gauge through a common event. I have this idea where I can have this script work in conjunction with a HP Cost script I have where actor2's skill will fill limit gauge by costing 40% HP.
09-23-2018, 03:08 AM (This post was last modified: 09-23-2018, 03:09 AM by DerVVulfman.)
You mean like.....
Code:
$game_party.actors.each { |actor|
next unless actor.exist?
actor.limitbreak += 499
}
This sample script call is in the demo, and fills the limit break bar for every active member in the party by about half... since I set the gauges to be a 1000pt fill
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)