赞 | 0 |
VIP | 0 |
好人卡 | 2 |
积分 | 1 |
经验 | 2443 |
最后登录 | 2014-11-13 |
在线时间 | 66 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 66 小时
- 注册时间
- 2011-9-1
- 帖子
- 21
|
從日本的網站轉來的
原址:http://www002.upp.so-net.ne.jp/usagimask/top.htm
#==============================================================================
# ■ 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
使用方法不難,就是添加一個技能類型叫做"主動技能"
這可以在UseSimplePassiveName = "主動技能" 這邊調整成你想要的字串
然後添加一個狀態,在狀態增加你想要的功能(如最大生命+50%之類的)
在技能那邊新增技能,類型主動技能,使用對象使用者,無法使用,然後附加狀態100%(怕附加不上去的可以加到1000%)
然後讓角色學會就會有效果了
只是這個的能力局限於狀態能夠得到的效果 |
|