Project1
标题: 怪物AI系统和嘲讽技能脚本求整合 [打印本页]
作者: 神蛋威武 时间: 2011-8-11 20:20
标题: 怪物AI系统和嘲讽技能脚本求整合
嘲讽的脚本在底下,敌人AI是很多个脚本拼起来了。。详见http://rpg.blue/thread-81986-1-1.html,这两个脚本同时存在的话,敌人AI系统里只有默认随机行(-1型)的怪物才会认嘲讽状态....求整合- #==============================================================================
- # ○隠密&挑発 Ver1.00
- # for RGSS2
- # 西瓜 / Space not far
- # http://muspell.raindrop.jp/
- # 敵の攻撃の対象外になったり、また必ず対象になるステートを作れます。
- #==============================================================================
- # 隠密ステートにかかっていると、敵のターゲット選択の候補になりません。
- # 挑発ステートにかかっているアクターがいると、敵はそれ以外のアクターを
- # ターゲット選択の候補にしません。
- # なお、どちらの効果も対象が全体の場合は無意味です。
- # ●注意
- # ・スキルなどで隠密/挑発のステートを受けた場合、
- # ターゲットが決定されるタイミングがターン開始時という仕様上、
- # 隠密/挑発の効果が反映されるのは次ターン以降になります。
- module SNF
- DISAPPEAR_STATE_ID = 33 # 隠密ステートのID
- PROVOKE_STATE_ID = 34 # 挑発ステートのID
-
- end
- class Game_Unit
- def random_target
- disappear = false
- provoke = false
- roulette = [] # 配列の定義
- for member in existing_members
- # 挑発しているメンバーがいるか否か
- if member.states.include?($data_states[SNF::PROVOKE_STATE_ID])
- provoke = true
- end
- end
- for member in existing_members # 生存しているメンバーの配列取得
- member.odds.times do
- # 隠密状態の場合ルーレットに追加されない
- if member.states.include?($data_states[SNF::DISAPPEAR_STATE_ID])
- disappear = true
- elsif provoke
- if member.states.include?($data_states[SNF::PROVOKE_STATE_ID])
- roulette.push(member)
- end
- else
- roulette.push(member) # odds回数だけ配列にメンバーを追加
- end # if member.states.include?($data_states[SNF::DISAPPEAR_STATE_ID])
- end
- end # member.odds.times do
- if roulette.size <= 0 and disappear
- roulette = existing_members
- end
- return roulette.size > 0 ? roulette[rand(roulette.size)] : nil # ランダムに選ぶ
- end
- end
复制代码