赞 | 0 |
VIP | 13 |
好人卡 | 7 |
积分 | 7 |
经验 | 32831 |
最后登录 | 2023-12-15 |
在线时间 | 530 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 723
- 在线时间
- 530 小时
- 注册时间
- 2010-6-9
- 帖子
- 840
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
在技能备注里填写<攻撃属性継承>...what is that- #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
- #_/ ◆ 攻撃属性設定 - KGC_SetAttackElement ◆ VX ◆
- #_/ ◇ Last update : 2008/08/28 ◇
- #_/----------------------------------------------------------------------------
- #_/ キャラクター毎に攻撃属性を設定する機能を追加します。
- #_/============================================================================
- #_/ 【基本機能】≪素手詳細設定≫ より下に導入してください。
- #_/ 【戦闘システム】≪割合ダメージ≫ より下に導入してください。
- #_/ 正常に反映されない場合は、導入位置を移動してください。
- #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
- $data_system = load_data("Data/System.rvdata") if $data_system == nil
- #==============================================================================
- # ★ カスタマイズ項目 - Customize ★
- #==============================================================================
- module KGC
- module SetAttackElement
- # ◆ アクターの初期状態の攻撃属性
- ACTOR_ELEMENT = [] # ←これは消さないように
- # この下に
- # ACTOR_ELEMENT[アクター ID] = [属性1, 属性2, ...]
- # という書式で追加。
- # <例> アクター1の攻撃を炎・風属性にする
- #~ ACTOR_ELEMENT[1] = [9, 14]
- # <例> アクター2の攻撃を雷属性にする
- #~ ACTOR_ELEMENT[2] = [11]
- # ◆ 継承しない属性
- # <攻撃属性継承> で継承しない属性の ID を指定。
- # 範囲オブジェクト(1..6 など)または整数の配列 (両方混ざってもOK)。
- # 例えば、ID 1~6 と 10 なら [1..6, 10] と書く。
- IGNORE_ELEMENTS = []
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- $imported = {} if $imported == nil
- $imported["SetAttackElement"] = true
- module KGC::SetAttackElement
- # 正規表現
- module Regexp
- # スキル
- module Skill
- # 攻撃属性継承
- INHERIT_ATTACK_ELEMENT = /<(?:INHERIT_ATTACK_ELEMENT|攻撃属性継承)>/i
- end
- # エネミー
- module Enemy
- # 攻撃属性
- ATTACK_ELEMENT = /<(?:ATTACK_ELEMENT|攻撃属性)\s*(\d+(?:\s*,\s*\d+)*)>/i
- end
- end
- #--------------------------------------------------------------------------
- # ○ 非継承属性を整数配列に変換
- #--------------------------------------------------------------------------
- def self.create_ignore_element_list
- result = []
- IGNORE_ELEMENTS.each { |e|
- if e.is_a?(Range)
- result |= e.to_a
- elsif e.is_a?(Integer)
- result |= [e]
- end
- }
- return result.sort
- end
- # 非継承属性配列
- IGNORE_ELEMENT_ID_LIST = create_ignore_element_list
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # □ KGC::Commands
- #==============================================================================
- module KGC
- module Commands
- module_function
- #--------------------------------------------------------------------------
- # ○ アクターの追加攻撃属性設定
- # actor_id : アクター ID
- # element_set : 属性配列 (nil で解除)
- #--------------------------------------------------------------------------
- def set_actor_attack_element(actor_id, element_set = nil)
- actor = $game_actors[actor_id]
- return if actor == nil
- actor.attack_element_set = element_set
- end
- end
- end
- class Game_Interpreter
- include KGC::Commands
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ RPG::UsableItem
- #==============================================================================
- class RPG::UsableItem < RPG::BaseItem
- #--------------------------------------------------------------------------
- # ○ 攻撃属性継承
- #--------------------------------------------------------------------------
- def attack_element_inherit?
- return false
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ RPG::Skill
- #==============================================================================
- class RPG::Skill < RPG::UsableItem
- #--------------------------------------------------------------------------
- # ○ 攻撃属性設定のキャッシュ生成
- #--------------------------------------------------------------------------
- def create_set_attack_element_cache
- @__inherit_attack_element = false
- self.note.each_line { |line|
- case line
- when KGC::SetAttackElement::Regexp::Skill::INHERIT_ATTACK_ELEMENT
- # 攻撃属性継承
- @__inherit_attack_element = true
- end
- }
- end
- #--------------------------------------------------------------------------
- # ○ 攻撃属性継承
- #--------------------------------------------------------------------------
- def attack_element_inherit?
- create_set_attack_element_cache if @__inherit_attack_element == nil
- return @__inherit_attack_element
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ RPG::Enemy
- #==============================================================================
- class RPG::Enemy
- #--------------------------------------------------------------------------
- # ○ 攻撃属性設定のキャッシュ生成
- #--------------------------------------------------------------------------
- def create_set_attack_element_cache
- @__attack_element_set = []
- self.note.each_line { |line|
- case line
- when KGC::SetAttackElement::Regexp::Enemy::ATTACK_ELEMENT
- # 攻撃属性
- elements = []
- $1.scan(/\d+/).each { |num| elements << num.to_i }
- @__attack_element_set |= elements
- end
- }
- end
- #--------------------------------------------------------------------------
- # ○ 攻撃属性
- #--------------------------------------------------------------------------
- def attack_element_set
- create_set_attack_element_cache if @__attack_element_set == nil
- return @__attack_element_set
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ Game_Battler
- #==============================================================================
- class Game_Battler
- #--------------------------------------------------------------------------
- # ○ 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_accessor :attack_element_set # 攻撃属性
- #--------------------------------------------------------------------------
- # ● 通常攻撃の属性取得
- #--------------------------------------------------------------------------
- alias element_set_KGC_SetAttackElement element_set
- def element_set
- return (element_set_KGC_SetAttackElement | attack_element_set)
- end
- #--------------------------------------------------------------------------
- # ○ 攻撃属性取得
- #--------------------------------------------------------------------------
- def attack_element_set
- result = []
- result |= @attack_element_set if @attack_element_set.is_a?(Array)
- return result
- end
- #--------------------------------------------------------------------------
- # ● スキルまたはアイテムによるダメージ計算
- # user : スキルまたはアイテムの使用者
- # obj : スキルまたはアイテム
- # 結果は @hp_damage または @mp_damage に代入する。
- #--------------------------------------------------------------------------
- alias make_obj_damage_value_KGC_SetAttackElement make_obj_damage_value
- def make_obj_damage_value(user, obj)
- # 元の攻撃属性を退避
- last_element_set = obj.element_set.clone
- # 攻撃属性を継承
- obj.element_set = get_inherited_element_set(user, obj)
- make_obj_damage_value_KGC_SetAttackElement(user, obj)
- # 攻撃属性を戻す
- obj.element_set = last_element_set
- end
- #--------------------------------------------------------------------------
- # ○ 継承後の攻撃属性取得
- # user : スキルまたはアイテムの使用者
- # obj : スキルまたはアイテム
- #--------------------------------------------------------------------------
- def get_inherited_element_set(user, obj)
- result = obj.element_set.clone
- return result unless obj.attack_element_inherit?
- result |= (user.element_set - KGC::SetAttackElement::IGNORE_ELEMENT_ID_LIST)
- return result
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ Game_Actor
- #==============================================================================
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # ● 通常攻撃の属性取得
- #--------------------------------------------------------------------------
- alias element_set_KGC_SetAttackElement element_set
- def element_set
- return (element_set_KGC_SetAttackElement | attack_element_set)
- end
- #--------------------------------------------------------------------------
- # ○ 追加攻撃属性取得
- #--------------------------------------------------------------------------
- def attack_element_set
- result = super
- elements = KGC::SetAttackElement::ACTOR_ELEMENT[self.id]
- result |= elements if elements.is_a?(Array)
- return result
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ Game_Enemy
- #==============================================================================
- class Game_Enemy < Game_Battler
- #--------------------------------------------------------------------------
- # ○ 追加攻撃属性取得
- #--------------------------------------------------------------------------
- def attack_element_set
- return (super | enemy.attack_element_set)
- end
- end
复制代码 |
|