# =============================================================================
# TheoAllen - 状态堆叠
# Version : 1.0
# Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com
# (This script documentation is written in informal indonesian language)
# =============================================================================
($imported ||= {})[:Theo_StackingState] = true
# =============================================================================
# Change Logs:
# -----------------------------------------------------------------------------
# 2013.10.24 - Finished Script
# =============================================================================
=begin
介绍 :
本脚本可以使相同状态效果互相叠加.
使用方法 :
本脚本放在插件脚本之下,main之上
状态备注: <stack: n>
n为最大堆叠数量。
使用条款 :
署名脚本作者, TheoAllen. 你可以自由编辑此脚本,只要你不声明你是脚本的原作者
如果你想用此脚本于商业游戏,请和我共享收益.别忘了给我一份免费的游戏拷贝.
=end
# =============================================================================
# 无设定
# =============================================================================
class RPG::State < RPG::BaseItem
attr_accessor :max_stack
def load_stack
@max_stack = 1
note.split(/[\r\n]+/).each do |line|
if line =~ /<stack:[ ]*(\d+)>/i
@max_stack = $1.to_i
end
end
end
end
class << DataManager
alias theo_stackstate_load_db load_database
def load_database
theo_stackstate_load_db
load_stackstate_db
end
def load_stackstate_db
$data_states.compact.each do |state|
state.load_stack
end
end
end
class Game_Battler < Game_BattlerBase
# ---------------------------------------------------------------------------
# Overwrite add state
# ---------------------------------------------------------------------------
def add_state(state_id)
#puts @states.select {|id| id == state_id}.size
if state_addable?(state_id)
add_new_state(state_id) unless state?(state_id) && state_maxed?(state_id)
reset_state_counts(state_id)
@result.added_states.push(state_id).uniq!
end
end
def state_maxed?(state_id)
@states.select {|id| id == state_id}.size ==
$data_states[state_id].max_stack
end
end