赞 | 0 |
VIP | 56 |
好人卡 | 8 |
积分 | 1 |
经验 | 5891 |
最后登录 | 2016-6-25 |
在线时间 | 161 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 161 小时
- 注册时间
- 2011-2-8
- 帖子
- 274
|
嘲讽的脚本在底下,敌人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
复制代码 |
|