武器種別スキル
[概要]
「剣技」「槍技」など、特定の種類の武器を装備している時にしかスキルを使えないようにします。
ツクール200xの「武器属性」に相当する機能です。
[スクリプト]
#============================================================================== # ++ 武器種別スキル ver. 1.10 ++ # Script by パラ犬 # http://2d6.parasite.jp/ #------------------------------------------------------------------------------ # 武器の種類ごとに使用可能なスキルを制限します。 #------------------------------------------------------------------------------ #[使い方] # 武器の種類ごとに「剣」「槍」などの属性を設定し # 武器とスキルの両方に付加します。 # この属性が一致しない場合、スキルを習得していても使用不可能となります。 #============================================================================== module PARA_WSKL # 素手の時のみ使用可能なスキル属性の名前 NO_WEAPON_NAME = "体術" # 武器によって制限されないスキル属性名 # (この属性が付加されているスキルは武器の影響を受けません) VARIABLE_SKILL = "魔法" # スキルを制限しない武器属性名 # (この属性が付加されている武器は全てのスキルを使うことができます) VARIABLE_WEAPON = "" # 使用不可スキルの表示/非表示 # ( 0:常に表示 / 1:戦闘中は非表示 / 2:常に非表示 ) VISIBLE_TYPE = 1 end # ↑ 設定項目ここまで #------------------------------------------------------------------------------ #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● スキルの使用可能判定 # skill_id : スキル ID #-------------------------------------------------------------------------- def skill_can_use?(skill_id) if not skill_learn?(skill_id) return false end if not skill_w_can_use?(skill_id) return false end return super end #-------------------------------------------------------------------------- # ● 武器スキルの使用可能判定 # skill_id : スキル ID #-------------------------------------------------------------------------- def skill_w_can_use?(skill_id) if not skill_learn?(skill_id) return false end # スキルと武器の属性がひとつでも一致するか if $data_skills[skill_id].element_set & self.element_set != [] bool = true else # 武器の属性IDを名前に weapon_elements_name = [] for element_id in self.element_set weapon_elements_name.push($data_system.elements[element_id]) end # スキルの属性IDを名前に skill_elements_name = [] for element_id in $data_skills[skill_id].element_set skill_elements_name.push($data_system.elements[element_id]) end # 武器によって制限されないスキル属性 if skill_elements_name.include?(PARA_WSKL::VARIABLE_SKILL) and PARA_WSKL::VARIABLE_SKILL != "" bool = true end # スキルを制限しない武器属性 if weapon_elements_name.include?(PARA_WSKL::VARIABLE_WEAPON) and PARA_WSKL::VARIABLE_WEAPON != "" bool = true end # 素手スキル if skill_elements_name.include?(PARA_WSKL::NO_WEAPON_NAME) and @weapon_id == 0 bool = true end end bool = bool == nil ? false : bool return bool end end #============================================================================== # ■ Window_Skill #============================================================================== class Window_Skill < Window_Selectable #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] for i in 0...@actor.skills.size skill = $data_skills[@actor.skills[i]] case PARA_WSKL::VISIBLE_TYPE when 1 if skill != nil and !(!@actor.skill_w_can_use?(skill.id) and $game_temp.in_battle) @data.push(skill) end when 2 if skill != nil and @actor.skill_w_can_use?(skill.id) @data.push(skill) end else if skill != nil @data.push(skill) end end end # 項目数が 0 でなければビットマップを作成し、全項目を描画 @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) for i in 0...@item_max draw_item(i) end end end end
[使い方]
データベースで「剣」「槍」など、任意の属性を作成し、
その属性を、武器とスキルの両方に設定します。
スキルの属性と武器の属性が一致しない場合、
そのスキルは使用不可となります。
[更新履歴]
2005/10/9 ver.1.10
使用不可のスキルは非表示にできる機能を追加。
2005/8/6 ver.1.00
公開。
戻る