#==============================================================================
# ■ UMSSSS
#------------------------------------------------------------------------------
# ▼ウサギマスクが製作したゲームシステムの基本設定を扱うモジュールです。
# ※ UMSSSS は UsagiMaskSystemScriptSynthesisSetting の略です(ぇ
#==============================================================================
class UMSSSS
# 簡易パッシブスキルとして使用するスキルタイプの名称
UseSimplePassiveName = "主動技能"
end
#==============================================================================
# ■ RPG::Skill
#------------------------------------------------------------------------------
# スキルのデータクラス。
#==============================================================================
class RPG::Skill < RPG::UsableItem
def real_note
return @note.clone
end
def simple_passive?
s_name = $data_system.skill_types[@stype_id]
return s_name == UMSSSS::UseSimplePassiveName
end
end
#==============================================================================
# ■ Game_BattlerBase
#------------------------------------------------------------------------------
# バトラーを扱う基本のクラスです。主に能力値計算のメソッドを含んでいます。こ
# のクラスは Game_Battler クラスのスーパークラスとして使用されます。
#==============================================================================
class Game_BattlerBase
alias ums_simple_passive_skill_state_resist_set state_resist_set
alias ums_simple_passive_skill_recover_all recover_all
#--------------------------------------------------------------------------
# ● 無効化するステートの配列を取得
#--------------------------------------------------------------------------
def state_resist_set
result = ums_simple_passive_skill_state_resist_set
if self.actor?
result += @passive_m_states unless @passive_m_states.nil?
end
return result
end
#--------------------------------------------------------------------------
# ● 全回復
#--------------------------------------------------------------------------
def recover_all
ums_simple_passive_skill_recover_all
check_simple_passive if self.actor?
end
#--------------------------------------------------------------------------
# ● 無効化する能力強化の配列を取得
#--------------------------------------------------------------------------
def buff_resist_set
return []
end
#--------------------------------------------------------------------------
# ● 無効化する能力弱体の配列を取得
#--------------------------------------------------------------------------
def debuff_resist_set
return []
end
end
#==============================================================================
# ■ Game_Battler
#------------------------------------------------------------------------------
# スプライトや行動に関するメソッドを追加したバトラーのクラスです。このクラス
# は Game_Actor クラスと Game_Enemy クラスのスーパークラスとして使用されます。
#==============================================================================
class Game_Battler < Game_BattlerBase
alias ums_simple_passive_skill_remove_state remove_state
alias ums_simple_passive_skill_add_buff add_buff
alias ums_simple_passive_skill_add_debuff add_debuff
alias ums_simple_passive_skill_item_effect_add_buff item_effect_add_buff
alias ums_simple_passive_skill_item_effect_add_debuff item_effect_add_debuff
#--------------------------------------------------------------------------
# ● ステートの解除
#--------------------------------------------------------------------------
def remove_state(state_id)
if self.actor?
return if passive_plus_states.include?(state_id)
end
ums_simple_passive_skill_remove_state(state_id)
end
#--------------------------------------------------------------------------
# ● 能力強化
#--------------------------------------------------------------------------
def add_buff(param_id, turns)
if self.actor?
return if buff_resist_set.include?(param_id)
end
ums_simple_passive_skill_add_buff(param_id, turns)
end
#--------------------------------------------------------------------------
# ● 能力弱体
#--------------------------------------------------------------------------
def add_debuff(param_id, turns)
if self.actor?
return if debuff_resist_set.include?(param_id)
end
ums_simple_passive_skill_add_debuff(param_id, turns)
end
#--------------------------------------------------------------------------
# ● 使用効果[能力強化]
#--------------------------------------------------------------------------
def item_effect_add_buff(user, item, effect)
if self.actor?
return if buff_resist_set.include?(effect.data_id)
end
ums_simple_passive_skill_item_effect_add_buff(user, item, effect)
end
#--------------------------------------------------------------------------
# ● 使用効果[能力弱体]
#--------------------------------------------------------------------------
def item_effect_add_debuff(user, item, effect)
if self.actor?
return if debuff_resist_set.include?(effect.data_id)
end
ums_simple_passive_skill_item_effect_add_debuff(user, item, effect)
end
end
#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
# アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors)
# の内部で使用され、Game_Party クラス($game_party)からも参照されます。
#==============================================================================
class Game_Actor < Game_Battler
alias ums_simple_passive_skill_setup setup
alias ums_simple_passive_skill_learn_skill learn_skill
alias ums_simple_passive_skill_forget_skill forget_skill
#--------------------------------------------------------------------------
# ● セットアップ
#--------------------------------------------------------------------------
def setup(actor_id)
ums_simple_passive_skill_setup(actor_id)
check_simple_passive
end
#--------------------------------------------------------------------------
# ● スキルを覚える
#--------------------------------------------------------------------------
def learn_skill(skill_id)
ums_simple_passive_skill_learn_skill(skill_id)
skill = $data_skills[skill_id]
unless skill.nil?
check_simple_passive if skill.simple_passive?
end
end
#--------------------------------------------------------------------------
# ● スキルを忘れる
#--------------------------------------------------------------------------
def forget_skill(skill_id)
ums_simple_passive_skill_forget_skill(skill_id)
skill = $data_skills[skill_id]
unless skill.nil?
remove_simple_passive(skill) if skill.simple_passive?
end
end
#--------------------------------------------------------------------------
# ● 簡易パッシブスキルの取得
#--------------------------------------------------------------------------
def simple_passive_skills
return skills.select {|v| v.simple_passive?}
end
#--------------------------------------------------------------------------
# ● 簡易パッシブスキルのチェック
#--------------------------------------------------------------------------
def check_simple_passive
# 変数初期化
@passive_p_states = []
@passive_m_states = []
@passive_i_buff = []
@passive_i_debuff = []
# データ取得
p_states = []
m_states = []
i_buff = []
i_debuff = []
for skill in simple_passive_skills
for effect in skill.effects
p_states << effect.data_id if effect.code == 21
m_states << effect.data_id if effect.code == 22
i_buff << effect.data_id if effect.code == 33
i_debuff << effect.data_id if effect.code == 34
end
end
# データ整理
del_states = p_states & m_states
p_states -= del_states
m_states -= del_states
del_buff = i_buff & i_debuff
i_buff -= del_buff
i_debuff -= del_buff
# データ反映
@passive_p_states = p_states
@passive_m_states = m_states
@passive_i_buff = i_buff
@passive_i_debuff = i_debuff
@result.clear
for s in p_states
add_state(s)
end
for s in m_states
remove_state(s)
end
for b in i_buff
erase_buff(b) if buff?(b)
end
for d in i_debuff
erase_buff(d) if debuff?(d)
end
end
#--------------------------------------------------------------------------
# ● 簡易パッシブスキルを無効化
#--------------------------------------------------------------------------
def remove_simple_passive(skill)
check_simple_passive
for effect in skill.effects
if effect.code == 21
remove_state(effect.data_id)
end
end
end
#--------------------------------------------------------------------------
# ● 簡易パッシブスキルで常時付加するステート
#--------------------------------------------------------------------------
def passive_plus_states
return @passive_p_states
end
#--------------------------------------------------------------------------
# ● 無効化する能力強化の配列を取得
#--------------------------------------------------------------------------
def buff_resist_set
return @passive_i_buff
end
#--------------------------------------------------------------------------
# ● 無効化する能力弱体の配列を取得
#--------------------------------------------------------------------------
def debuff_resist_set
return @passive_i_debuff
end
end
#==============================================================================
# ■ Window_Command
#------------------------------------------------------------------------------
# 一般的なコマンド選択を行うウィンドウです。
#==============================================================================
class Window_Command < Window_Selectable
alias ums_simple_passive_skill_add_command add_command
#--------------------------------------------------------------------------
# ● コマンドの追加
# name : コマンド名
# symbol : 対応するシンボル
# enabled : 有効状態フラグ
# ext : 任意の拡張データ
#--------------------------------------------------------------------------
def add_command(name, symbol, enabled = true, ext = nil)
if self.is_a?(Window_ActorCommand)
return if name == UMSSSS::UseSimplePassiveName
end
ums_simple_passive_skill_add_command(name, symbol, enabled, ext)
end
end
#==============================================================================
# ■ Window_Selectable
#------------------------------------------------------------------------------
# カーソルの移動やスクロールの機能を持つウィンドウクラスです。
#==============================================================================
class Window_Selectable < Window_Base
alias ums_simple_passive_skill_process_ok process_ok
#--------------------------------------------------------------------------
# ● 決定ボタンが押されたときの処理
#--------------------------------------------------------------------------
def process_ok
if self.is_a?(Window_SkillList)
if item.is_a?(RPG::Skill)
return if item.simple_passive?
end
end
ums_simple_passive_skill_process_ok
end
end
#==============================================================================
# ■ Window_SkillList
#------------------------------------------------------------------------------
# スキル画面で、使用できるスキルの一覧を表示するウィンドウです。
#==============================================================================
class Window_SkillList < Window_Selectable
alias ums_simple_passive_skill_enable? enable?
#--------------------------------------------------------------------------
# ● スキルを許可状態で表示するかどうか
#--------------------------------------------------------------------------
def enable?(item)
if item.is_a?(RPG::Skill)
return true if item.simple_passive?
end
return ums_simple_passive_skill_enable?(item)
end
end
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |