=begin ランダム属性武器   2011/07/18 mo-to TKOOL COOL http://mototkool.blog.fc2.com/ ★概要★ メモ欄で指定した属性IDの中からランダムでひとつ選択して、その属性で攻撃する。 ★使用法★ スクリプトの素材▼ 素材 以下 ▼メイン 以上にこれをコピーして張り付ける。 ●武器のメモ欄に<ランダム属性 属性ID数値>と記述する。  記述する属性IDは何行に渡ってもOKです。 ※データベースではなくメモ欄で属性IDを指定して下さい。 例)<ランダム属性 2,3,4,5> 属性ID2番から5番の属性がランダムで選択され、その属性で攻撃。 ●また、指定する属性IDを重複させることにより付加される属性が  選ばれる確率を上げることが可能。 例)<ランダム属性 2,2,3,4>   この場合だと、属性ID2番の属性が選ばれる確率が1/2になり   3番と4番が選ばれる確率がそれぞれ1/4となる。 ★注意・仕様★ ランダム属性付加武器を二刀流しても一度しか発動しない。 データベースの付加する属性にチェックを入れると、 ランダムに選ばれる属性+チェックを入れた属性(同時に効果)となる。 ★おまけ機能★ 副産物として属性IDとアニメーションIDを連動させる機能を付けてあります。 (属性ID2番で攻撃するとアニメーションID2番が表示されるみたいな…) ランダムだと、どの属性で攻撃しているのか、わかり難いのであると便利かもしれません。 ただし、現時点では攻撃が命中したときのみ連動したアニメーションIDのSEとFLASHしか 表示されません。 ふたつのIDを連動して作っている人は、まずいないと思うのでデフォでは切ってあります。 この機能は、あまりテストしていないので思わぬバグがあるかも…^^; =end module MOTO SE_AND_FLASH = false #属性IDとアニメーションIDを連動させるならtrue end module RPG class Weapon < BaseItem #-------------------------------------------------------------------------- # ○ 武器メモ欄の取得 #-------------------------------------------------------------------------- def rand_element_weapons_set @rand_element_weapons = [] self.note.split(/[\r\n]+/).each { |line| case line when /<ランダム属性\s*(\d+(?:\s*,\s*\d+)*)>/ $1.scan(/\d+/).each { |num| @rand_element_weapons.push(num.to_i) } end } end #-------------------------------------------------------------------------- # ○ rand_element_weapons #-------------------------------------------------------------------------- def rand_element_weapons rand_element_weapons_set if @rand_element_weapons == nil return @rand_element_weapons end end end class Game_Actor #-------------------------------------------------------------------------- # ○ rand_element_weaponsの取得 #-------------------------------------------------------------------------- def rand_element_weapons n = [] for weapon in weapons.compact n += weapon.rand_element_weapons end return n end #-------------------------------------------------------------------------- # ● 通常攻撃の属性取得 #-------------------------------------------------------------------------- alias rand_element_set element_set def element_set if rand_element_weapons != [] result = [rand_element_weapons[rand(rand_element_weapons.size)]] if MOTO::SE_AND_FLASH @animation_id = result[0] end for weapon in weapons.compact result |= weapon.element_set end return result else return rand_element_set end end end