赞 | 0 |
VIP | 1 |
好人卡 | 4 |
积分 | 0 |
经验 | 3968 |
最后登录 | 2014-2-12 |
在线时间 | 86 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 49
- 在线时间
- 86 小时
- 注册时间
- 2012-5-31
- 帖子
- 63
|
用这个脚本,设置“二刀流”的被动技,并在该技能设置有“二刀流”的状态,就可以让角色有二刀流的状态
不过想消除二刀流的状态时,要让角色遗忘技能,才能确实消除二刀流的状态- #==============================================================================
- # ■ UMSSSS
- # 来源:http://www002.upp.so-net.ne.jp/usagimask/vxace_material.htm
- # 制作者のメルアド:[email protected]
- #------------------------------------------------------------------------------
- # ▼ウサギマスクが制作したゲームシステムの基本设定を扱うモジュールです。
- # ※ UMSSSS は UsagiMaskSystemScriptSynthesisSetting の略です(ぇ
- #------------------------------------------------------------------------------
- # 使用方法不难,就是添加一个技能类型叫做"被动技能"
- # 这可以在UseSimplePassiveName = "被动技能" 这边调整成你想要的字串
- # 然后添加一个状态,在状态增加你想要的功能(如最大生命+50%之类的)
- # 在技能那边新增技能,类型 被动技能,使用对象使用者,无法使用,
- # 然后附加状态100%(怕附加不上去的可以加到1000%)
- # 然后让角色学会就会有效果了
- # 只是这个的能力局限于状态能够得到的效果
- #
- # 测试结果,有两个装备技时,会彼此冲突,后来发现是该武器免疫装备技得状态(汗)
- #
- # 测试心得
- # 1.禁用技能的指令,对 被动技能无效, 被动技能依旧可以发动
- # 2.如果免疫 被动技能的状态,疑似会让该状态永久消失
- #==============================================================================
- 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
复制代码 |
|