Created
June 4, 2012 07:30
-
-
Save rutan/2866951 to your computer and use it in GitHub Desktop.
[hzm]エネミー行動設定さん for RGSS3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding: utf-8 | |
#=============================================================================== | |
# ■ [hzm]エネミー行動設定さん for RGSS3 | |
# ※ このスクリプトには「[hzm]メモ欄拡張共通部分さん+ for RGSS3」が必要です | |
# 「[hzm]メモ欄拡張共通部分 for RGSS3」では動作しません | |
#------------------------------------------------------------------------------- | |
# 2012/06/04 Ru/むっくRu | |
#------------------------------------------------------------------------------- | |
# ※このスクリプトは暫定バージョンです | |
#------------------------------------------------------------------------------- | |
# 【使い方】 | |
# エネミーのメモ欄に | |
# | |
# [hzm]AI制御:m,ターン上限,n | |
# | |
# と記述すると,エネミーは スキルID: m のスキルを | |
# 1ターンに n 回のみ使えるようになります. | |
# | |
# 例)スキルID2:防御を1ターンに1回までにする場合 | |
# [hzm]AI制御:2,ターン上限,1 | |
# | |
#------------------------------------------------------------------------------- | |
# 【更新履歴】 | |
# 2012/06/04 説明文修正.メモスクリプトチェック. | |
# 2012/06/04 暫定バージョン | |
#------------------------------------------------------------------------------- | |
#=============================================================================== | |
# ↓ 以下、スクリプト部 ↓ | |
#=============================================================================== | |
raise "「[hzm]メモ欄拡張共通部分さん+ for RGSS3」を導入してください" unless defined?(HZM_VXA::Note2) | |
raise "「[hzm]メモ欄拡張共通部分さん+ for RGSS3」のバージョンが一致しません" unless HZM_VXA::Note2.check_version?('3.0.0') | |
module HZM_VXA | |
module EnemyActionControl | |
KEYS = ['AI制御', 'AIControl'] | |
SELECTED_KEYS = ['ターン上限', 'useMax'] | |
MYSELF_REQUIRE_STATE_KEYS = ['必要ステート', 'RequireState'] | |
MYSELF_NO_REQUIRE_STATE_KEYS = ['禁止ステート', 'NoRequireState'] | |
end | |
end | |
class Game_Enemy < Game_Battler | |
#----------------------------------------------------------------------------- | |
# ● 行動条件合致判定(エイリアス) | |
#----------------------------------------------------------------------------- | |
alias hzm_vxa_enemyActionControl_conditions_met? conditions_met? | |
def conditions_met?(action) | |
# 元の処理 | |
return false unless hzm_vxa_enemyActionControl_conditions_met?(action) | |
# 新条件 | |
datas = enemy.hzm_vxa_note2_matches(nil, HZM_VXA::EnemyActionControl::KEYS) | |
datas.each do |data| | |
next unless action.skill_id == data[0] | |
case data[1] | |
when *HZM_VXA::EnemyActionControl::SELECTED_KEYS # ターン内上限 | |
cnt = 0 | |
@actions.each do |a| | |
cnt += 1 if $data_skills[action.skill_id] == a.item | |
return false if cnt >= data[2] | |
end | |
when *HZM_VXA::EnemyActionControl::MYSELF_REQUIRE_STATE_KEYS # 必要ステート(自分) | |
return false unless state?(data[2]) | |
when *HZM_VXA::EnemyActionControl::MYSELF_NO_REQUIRE_STATE_KEYS # 禁止ステート(自分) | |
return false if state?(data[2]) | |
end | |
end | |
true | |
end | |
#----------------------------------------------------------------------------- | |
# ● 戦闘行動をランダムに選択(エイリアス) | |
#----------------------------------------------------------------------------- | |
alias hzm_vxa_enemyActionControl_select_enemy_action select_enemy_action | |
def select_enemy_action(action_list, rating_zero) | |
action_list = enemy.actions.select {|a| action_valid?(a) } | |
return nil if action_list.empty? | |
rating_max = action_list.collect {|a| a.rating }.max | |
rating_zero = rating_max - 3 | |
action_list.reject! {|a| a.rating <= rating_zero } | |
hzm_vxa_enemyActionControl_select_enemy_action(action_list, rating_zero) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment