攻
撃
属
性
設
定
概要
バトラーの攻撃に特定の属性を付加します。
この属性はどの武器を装備しても変更されません。
(敵の攻撃属性も設定可能)
スキル使用時、武器の攻撃属性を継承させる機能もあります。
「攻撃属性継承」機能を使用する場合は≪不要属性計算排除[RemoveElements]≫より下に導入してください。
更新履歴
2006/03/27
リファクタリング。
2005/04/11
処理を多少効率化。
他サイトとの併用性向上。
2005/03/29
[攻撃属性継承]使用時に属性が重複する可能性があった点を修正。
≪装備拡張≫と併用すると、武器の属性が正常に取得されないバグを修正。
2005/03/11
新規作成。
スクリプト
KGC_SetAttackElement
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #_/ ◆攻撃属性設定 − KGC_SetAttackElement◆ #_/---------------------------------------------------------------------------- #_/ キャラクター毎に攻撃属性を設定する機能を追加します。 #_/ ※[攻撃属性継承]を使用する場合は[RemoveElements]より下に導入してください。 #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #============================================================================== # ★ カスタマイズ項目 ★ #============================================================================== module KGC # ◆アクター:初期状態の攻撃属性 # 配列の添字がアクターIDと対応。nil にすると無属性。 # 配列によって複数の攻撃属性を指定可能。 SAE_ACTOR = [] # ←これは消さないように # <例>アルシェスの攻撃を炎・風属性にする場合 #SAE_ACTOR[1] = [1, 6] # ◆エネミー:初期状態の攻撃属性 # 設定方法はアクターと同じ。 SAE_ENEMY = [] end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ $imported = {} if $imported == nil $imported["SetAttackElement"] = true if $game_special_elements == nil $game_special_elements = {} $data_system = load_data("Data/System.rxdata") end # 攻撃属性継承用属性 $game_special_elements["inherit_attack_element"] = $data_system.elements.index("攻撃属性継承") #============================================================================== # ■ Game_Battler (分割定義 3) #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ● 通常攻撃の効果適用 #-------------------------------------------------------------------------- alias attack_effect_KGC_SetAttackElement attack_effect def attack_effect(attacker) @skill_user = nil # 元の処理を実行 return attack_effect_KGC_SetAttackElement(attacker) end #-------------------------------------------------------------------------- # ● スキルの効果適用 #-------------------------------------------------------------------------- alias skill_effect_KGC_SetAttackElement skill_effect def skill_effect(user, skill) # スキル使用者を保存 @skill_user = user # 元の処理を実行 return skill_effect_KGC_SetAttackElement(user, skill) end #-------------------------------------------------------------------------- # ● アイテムの効果適用 #-------------------------------------------------------------------------- alias item_effect_KGC_SetAttackElement item_effect def item_effect(item) @skill_user = nil # 元の処理を実行 return item_effect_KGC_SetAttackElement(item) end #-------------------------------------------------------------------------- # ● 属性修正の計算 #-------------------------------------------------------------------------- alias elements_correct_KGC_SetAttackElement elements_correct def elements_correct(element_set) # 属性をコピー result_elements = element_set.dup # 行動がスキルの場合 if @skill_user != nil && @skill_user.current_action.kind == 1 skill = $data_skills[@skill_user.current_action.skill_id] # 攻撃属性を継承 if skill.element_set.include?($game_special_elements["inherit_attack_element"]) result_elements |= @skill_user.element_set end end @skill_user = nil # 元の処理を実行 return elements_correct_KGC_SetAttackElement(result_elements) end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :attack_elements # 攻撃属性 #-------------------------------------------------------------------------- # ● セットアップ #-------------------------------------------------------------------------- alias setup_KGC_SetAttackElement setup def setup(actor_id) setup_KGC_SetAttackElement(actor_id) # 攻撃属性 @attack_elements = [] end #-------------------------------------------------------------------------- # ● 通常攻撃の属性取得 #-------------------------------------------------------------------------- def element_set return get_attack_elements end #-------------------------------------------------------------------------- # ● 攻撃属性取得 #-------------------------------------------------------------------------- def get_attack_elements if $imported["EquipExtension"] weapons = equip_weapon_list else weapons = [$data_weapons[self.weapon_id]].compact end elements = [] weapons.each { |weapon| elements |= weapon.element_set.dup } if KGC::SAE_ACTOR[self.id] != nil elements |= KGC::SAE_ACTOR[self.id].dup end if @attack_elements != nil && @attack_elements.size > 0 elements |= @attack_elements.dup end return elements.compact end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Game_Enemy #============================================================================== class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :attack_elements # 攻撃属性 #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_KGC_SetAttackElement initialize def initialize(troop_id, member_index) # 元の処理を実行 initialize_KGC_SetAttackElement(troop_id, member_index) # 攻撃属性 @attack_elements = [] end #-------------------------------------------------------------------------- # ● 通常攻撃の属性取得 #-------------------------------------------------------------------------- def element_set return get_attack_elements end #-------------------------------------------------------------------------- # ● 攻撃属性取得 #-------------------------------------------------------------------------- def get_attack_elements elements = [] if KGC::SAE_ENEMY[self.id] != nil elements |= KGC::SAE_ENEMY[self.id].dup end if @attack_elements != nil && @attack_elements.size > 0 elements |= @attack_elements.dup end return elements.compact end end
使用法
まずはカスタマイズ項目を書き換えます。
SAE_ACTOR = []
がアクターの攻撃属性、
SAE_ENEMY = []
がエネミーの攻撃属性になります。
アクターの攻撃属性を設定するには、
SAE_ACTOR = []
のすぐ下に
SAE_ACTOR[id] = [...]
を追加します。
例えば、
ID:7
のアクターに攻撃属性として
10
と
21
を付加する場合、
SAE_ACTOR[7] = [10, 21]
と指定します。
エネミーの場合も同様です。
ゲーム中に
$game_actors[id].attack_elements = [...]
を実行することで、攻撃属性を変更することができます。
属性IDをマイナスで指定すると、デフォルトの攻撃属性を解除する効果を持ちます。
<例>
ID:12
のアクターの攻撃属性に
4
を追加し、
6
を解除
$game_actors[12].attack_elements = [4, -6]
攻撃属性継承
という属性をスキルにセットすると、そのスキルを使用した際に使用者の攻撃属性を継承します。
例えば、「攻撃属性に[炎]を持っている場合、剣技も[炎]属性にしたい」というような場合に使用します。