#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ? ???? - KGC_LimitBreak ? VX ?
#_/ ? Last update : 2008/01/09 ?
#_/----------------------------------------------------------------------------
#_/ ?????????????????
#_/============================================================================
#_/ ???????????????????????????
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#==============================================================================
# ? ???????? - Customize ?
#==============================================================================
module KGC
module LimitBreak
# ? ???????
# 0..?????????
# (100????????? PARAMETER_CALC_EXP ???)
#
# 1..??????????2????
# a:???1?? b:???2?? c:???3?? x:????
# ????
# ax^2 + bx + c
# ???????????
#
# 2..??????????1????
# b:???2?? c:???3?? x:????
# ????
# bx + c
# ???????????
# (??? 2 ? 3 ????????2??????????????????)
PARAMETER_CALC_METHOD = 0
# ? ??? 100 ?????????
# PARAMETER_CALC_METHOD = 0 ??????????
# ? level..???? param[x]..??? x ???? ?
# ?????????? 99 ???????????
PARAMETER_CALC_EXP = "(param[99] - param[98]) * (level - 99)"
# ? ??????????
ACTOR_FINAL_LEVEL = [] # ? ?????????!
# ????????????????????
# ACTOR_FINAL_LEVEL[????ID] = ?????
# ????????????
# <?> ? ???? 1 ?????? 999
ACTOR_FINAL_LEVEL[1] = 255
# ? ?????????? (?????)
# ????????????????????????????????
ACTOR_FINAL_LEVEL_DEFAULT = 255
# ? ??????????
ACTOR_EXP_LIMIT = 999999999
# ? ????? MaxHP ??
ACTOR_MAXHP_LIMIT = 99999
# ? ????? MaxMP ??
ACTOR_MAXMP_LIMIT = 9999
# ? ??????????????????????
ACTOR_PARAMETER_LIMIT = 9999
# ? ????? MaxHP ??
ENEMY_MAXHP_LIMIT = 9999999
# ? ????? MaxMP ??
ENEMY_MAXMP_LIMIT = 9999999
# ? ??????????????????????
ENEMY_PARAMETER_LIMIT = 9999
# ? ??????????
# ?????????????????? ?% ?????
# ?????????????? 100 ????????
ENEMY_MAXHP_RATE = 100 # MaxHP
ENEMY_MAXMP_RATE = 100 # MaxMP
ENEMY_ATK_RATE = 100 # ???
ENEMY_DEF_RATE = 100 # ???
ENEMY_SPI_RATE = 100 # ???
ENEMY_AGI_RATE = 100 # ???
# ? ?????
GOLD_LIMIT = 99999999
# ? ?????????
ITEM_NUMBER_LIMIT = 30
module_function
#--------------------------------------------------------------------------
# ? ????????
# ?????? MaxHP ?????????????????
# ????????????????????????????????
#--------------------------------------------------------------------------
def set_enemy_parameters
# <?> ID:10 ??? MaxHP ? 2000000 ?????
# $data_enemies[10].maxhp = 2000000
# <?> ID:16 ??????? 5000 ?????
# $data_enemies[16].atk = 5000
# <?> ID:20 ???????2??????
# $data_enemies[20].def *= 2
end
end
end
#???????????????????????????????????????
$imported = {} if $imported == nil
$imported["LimitBreak"] = true
module KGC::LimitBreak
# ???????
module Regexp
# ???????
module BaseItem
# ?????
NUMBER_LIMIT = /<(?:NUMBER_LIMIT|?????)[ ]*(\d+)>/i
end
end
module_function
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def revise_enemy_parameters
(1...$data_enemies.size).each { |i|
enemy = $data_enemies[i]
enemy.maxhp = enemy.maxhp * ENEMY_MAXHP_RATE / 100
enemy.maxmp = enemy.maxmp * ENEMY_MAXMP_RATE / 100
enemy.atk = enemy.atk * ENEMY_ATK_RATE / 100
enemy.def = enemy.def * ENEMY_DEF_RATE / 100
enemy.spi = enemy.spi * ENEMY_SPI_RATE / 100
enemy.agi = enemy.agi * ENEMY_AGI_RATE / 100
}
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ RPG::BaseItem
#==============================================================================
class RPG::BaseItem
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
def create_limit_break_cache
@__number_limit = KGC::LimitBreak::ITEM_NUMBER_LIMIT
self.note.split(/[\r\n]+/).each { |line|
if line =~ KGC::LimitBreak::Regexp::BaseItem::NUMBER_LIMIT
# ?????
@__number_limit = $1.to_i
end
}
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def number_limit
create_limit_break_cache if @__number_limit == nil
return @__number_limit
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ? MaxHP ??????
#--------------------------------------------------------------------------
def maxhp_limit
return KGC::LimitBreak::ENEMY_MAXHP_LIMIT
end
#--------------------------------------------------------------------------
# ? MaxMP ??????
#--------------------------------------------------------------------------
def maxmp_limit
return KGC::LimitBreak::ENEMY_MAXMP_LIMIT
end
#--------------------------------------------------------------------------
# ? MaxMP ???
#--------------------------------------------------------------------------
def maxmp
return [[base_maxmp + @maxmp_plus, 0].max, maxmp_limit].min
end
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def parameter_limit
return KGC::LimitBreak::ENEMY_PARAMETER_LIMIT
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def atk
n = [base_atk + @atk_plus, 1].max
states.each { |state| n *= state.atk_rate / 100.0 }
n = [[Integer(n), 1].max, parameter_limit].min
return n
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def def
n = [base_def + @def_plus, 1].max
states.each { |state| n *= state.def_rate / 100.0 }
n = [[Integer(n), 1].max, parameter_limit].min
return n
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def spi
n = [base_spi + @spi_plus, 1].max
states.each { |state| n *= state.spi_rate / 100.0 }
n = [[Integer(n), 1].max, parameter_limit].min
return n
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def agi
n = [base_agi + @agi_plus, 1].max
states.each { |state| n *= state.agi_rate / 100.0 }
n = [[Integer(n), 1].max, parameter_limit].min
return n
end
#--------------------------------------------------------------------------
# ? MaxHP ???
# new_maxhp : ??? MaxHP
#--------------------------------------------------------------------------
def maxhp=(new_maxhp)
@maxhp_plus += new_maxhp - self.maxhp
@maxhp_plus = [[@maxhp_plus, -maxhp_limit].max, maxhp_limit].min
@hp = [@hp, self.maxhp].min
end
#--------------------------------------------------------------------------
# ? MaxMP ???
# new_maxmp : ??? MaxMP
#--------------------------------------------------------------------------
def maxmp=(new_maxmp)
@maxmp_plus += new_maxmp - self.maxmp
@maxmp_plus = [[@maxmp_plus, -maxmp_limit].max, maxmp_limit].min
@mp = [@mp, self.maxmp].min
end
#--------------------------------------------------------------------------
# ? ??????
# new_atk : ??????
#--------------------------------------------------------------------------
def atk=(new_atk)
@atk_plus += new_atk - self.atk
@atk_plus = [[@atk_plus, -parameter_limit].max, parameter_limit].min
end
#--------------------------------------------------------------------------
# ? ??????
# new_def : ??????
#--------------------------------------------------------------------------
def def=(new_def)
@def_plus += new_def - self.def
@def_plus = [[@def_plus, -parameter_limit].max, parameter_limit].min
end
#--------------------------------------------------------------------------
# ? ??????
# new_spi : ??????
#--------------------------------------------------------------------------
def spi=(new_spi)
@spi_plus += new_spi - self.spi
@spi_plus = [[@spi_plus, -parameter_limit].max, parameter_limit].min
end
#--------------------------------------------------------------------------
# ? ??????
# agi : ??????
#--------------------------------------------------------------------------
def agi=(new_agi)
@agi_plus += new_agi - self.agi
@agi_plus = [[@agi_plus, -parameter_limit].max, parameter_limit].min
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def make_exp_list
@exp_list = Array.new(final_level + 2)
@exp_list[1] = @exp_list[final_level + 1] = 0
m = actor.exp_basis
n = 0.75 + actor.exp_inflation / 200.0
(2..final_level).each { |i|
@exp_list[i] = @exp_list[i-1] + Integer(m)
m *= 1 + n
n *= 0.9
}
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def final_level
n = KGC::LimitBreak::ACTOR_FINAL_LEVEL[self.id]
return (n != nil ? n : KGC::LimitBreak::ACTOR_FINAL_LEVEL_DEFAULT)
end
#--------------------------------------------------------------------------
# ? MaxHP ??????
#--------------------------------------------------------------------------
def maxhp_limit
return KGC::LimitBreak::ACTOR_MAXHP_LIMIT
end
#--------------------------------------------------------------------------
# ? MaxMP ??????
#--------------------------------------------------------------------------
def maxmp_limit
return KGC::LimitBreak::ACTOR_MAXMP_LIMIT
end
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def parameter_limit
return KGC::LimitBreak::ACTOR_PARAMETER_LIMIT
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def exp_limit
return KGC::LimitBreak::ACTOR_EXP_LIMIT
end
#--------------------------------------------------------------------------
# ? ??????
# exp : ??????
# show : ???????????
#--------------------------------------------------------------------------
def change_exp(exp, show)
last_level = @level
last_skills = skills
@exp = [[exp, exp_limit].min, 0].max
while @exp >= @exp_list[@level+1] && @exp_list[@level+1] > 0
level_up
end
while @exp < @exp_list[@level]
level_down
end
@hp = [@hp, maxhp].min
@mp = [@mp, maxmp].min
if show && @level > last_level
display_level_up(skills - last_skills)
end
end
#--------------------------------------------------------------------------
# ? ??????
# level : ??????
# show : ???????????
#--------------------------------------------------------------------------
def change_level(level, show)
level = [[level, final_level].min, 1].max
change_exp(@exp_list[level], show)
end
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
def base_parameter(type)
case KGC::LimitBreak::PARAMETER_CALC_METHOD
when 0 # ????
if @level >= 100
calc_text = KGC::LimitBreak::PARAMETER_CALC_EXP.dup
calc_text.gsub!(/level/i) { "@level" }
calc_text.gsub!(/param\[(\d+)\]/i) {
"actor.parameters[type, #{$1.to_i}]"
}
return actor.parameters[type, 99] + eval(calc_text)
end
when 1 # ????
a = actor.parameters[type, 1]
b = actor.parameters[type, 2]
c = actor.parameters[type, 3]
return ((a * @level + b) * @level + c)
when 2 # ????
b = actor.parameters[type, 2]
c = actor.parameters[type, 3]
return (b * @level + c)
end
return actor.parameters[type, @level]
end
#--------------------------------------------------------------------------
# ? ?? MaxHP ???
#--------------------------------------------------------------------------
def base_maxhp
return base_parameter(0)
end
#--------------------------------------------------------------------------
# ? ?? MaxMP ???
#--------------------------------------------------------------------------
def base_maxmp
return base_parameter(1)
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def base_atk
n = base_parameter(2)
equips.compact.each { |item| n += item.atk }
return n
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def base_def
n = base_parameter(3)
equips.compact.each { |item| n += item.def }
return n
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def base_spi
n = base_parameter(4)
equips.compact.each { |item| n += item.spi }
return n
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def base_agi
n = base_parameter(5)
equips.compact.each { |item| n += item.agi }
return n
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Game_Party
#==============================================================================
class Game_Party < Game_Unit
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def gold_limit
return KGC::LimitBreak::GOLD_LIMIT
end
#--------------------------------------------------------------------------
# ? ??????? (??)
# n : ??
#--------------------------------------------------------------------------
def gain_gold(n)
@gold = [[@gold + n, 0].max, gold_limit].min
end
#--------------------------------------------------------------------------
# ? ??????? (??)
# item : ????
# n : ??
# include_equip : ???????
#--------------------------------------------------------------------------
def gain_item(item, n, include_equip = false)
number = item_number(item)
case item
when RPG::Item
@items[item.id] = [[number + n, 0].max, item.number_limit].min
when RPG::Weapon
@weapons[item.id] = [[number + n, 0].max, item.number_limit].min
when RPG::Armor
@armors[item.id] = [[number + n, 0].max, item.number_limit].min
end
n += number
if include_equip && n < 0
members.each { |actor|
while n < 0 && actor.equips.include?(item)
actor.discard_equip(item)
n += 1
end
}
end
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Window_ShopBuy
#==============================================================================
class Window_ShopBuy < Window_Selectable
#--------------------------------------------------------------------------
# ? ?????
# index : ????
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
number = $game_party.item_number(item)
enabled = (item.price <= $game_party.gold && number < item.number_limit)
rect = item_rect(index)
self.contents.clear_rect(rect)
draw_item_name(item, rect.x, rect.y, enabled)
rect.width -= 4
self.contents.draw_text(rect, item.price, 2)
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Scene_Title
#==============================================================================
class Scene_Title < Scene_Base
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
alias load_database_KGC_LimitBreak load_database
def load_database
load_database_KGC_LimitBreak
set_enemy_parameters
end
#--------------------------------------------------------------------------
# ? ????????????????
#--------------------------------------------------------------------------
alias load_bt_database_KGC_LimitBreak load_bt_database
def load_bt_database
load_bt_database_KGC_LimitBreak
set_enemy_parameters
end
#--------------------------------------------------------------------------
# ? ???????????
#--------------------------------------------------------------------------
def set_enemy_parameters
KGC::LimitBreak.revise_enemy_parameters
KGC::LimitBreak.set_enemy_parameters
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Scene_File
#==============================================================================
class Scene_File < Scene_Base
#--------------------------------------------------------------------------
# ? ???????????
# file : ??????????????? (??????)
#--------------------------------------------------------------------------
alias read_save_data_KGC_LimitBreak read_save_data
def read_save_data(file)
read_save_data_KGC_LimitBreak(file)
(1...$data_actors.size).each { |i|
actor = $game_actors[i]
actor.make_exp_list
# ?????????
if actor.level > actor.final_level
while actor.level > actor.final_level
actor.level_down
end
# ???? HP ????????????????
actor.change_level(actor.final_level, false)
end
}
end
end
#???????????????????????????????????????
#==============================================================================
# ¦ Scene_Shop
#==============================================================================
class Scene_Shop < Scene_Base
#--------------------------------------------------------------------------
# ? ???????????
#--------------------------------------------------------------------------
def update_buy_selection
@status_window.item = @buy_window.item
if Input.trigger?(Input::B)
Sound.play_cancel
@command_window.active = true
@dummy_window.visible = true
@buy_window.active = false
@buy_window.visible = false
@status_window.visible = false
@status_window.item = nil
@help_window.set_text("")
return
end
if Input.trigger?(Input::C)
@item = @buy_window.item
number = $game_party.item_number(@item)
if @item == nil || @item.price > $game_party.gold ||
number == @item.number_limit
Sound.play_buzzer
else
Sound.play_decision
max = (@item.price == 0 ?
@item.number_limit : $game_party.gold / @item.price)
max = [max, @item.number_limit - number].min
@buy_window.active = false
@buy_window.visible = false
@number_window.set(@item, max, @item.price)
@number_window.active = true
@number_window.visible = true
end
end
end
end
Zeile 46-66 ist es möglich DEINE Limits zu setzen.
Zeile 71-76 bezieht sich auf die Zeilen 123-128 (Siehe unten)
Zeile 123-128 Kannst du gegner Parameter-Formel verändern. (Mate einbisschen, wenn überhaupt)
Bei Zeile 82(Itemlimit) rat ich ab über 999 zu machen. Verursacht kleine Grafikfehler. Kommt auf den Font an.
Über main einfügen, und ja das Script ist schwer zu finden, daher kein Kommentar von wegen nicht gesucht.
Credits dafür gehen an "KGC"
MfG
Caps (?_?)