Created
June 1, 2012 15:06
-
-
Save rutan/2852797 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」が必要です | |
#------------------------------------------------------------------------------- | |
# 2012/06/01 Ru/むっくRu | |
#------------------------------------------------------------------------------- | |
# ターンを消費せずに,選択した瞬間に発動するスキルを設定します. | |
# | |
# 【使い方】 | |
# ・「データベース」の「スキル」または「アイテム」の | |
# 「メモ」に以下の内容を記述してください | |
# | |
# [hzm]即発動 | |
# | |
#------------------------------------------------------------------------------- | |
# 【注意】 | |
# 「[hzm]拡張スキルデータベース設定さん for RGSS3」を導入している場合は, | |
# 必ずそれより下に設置するようにしてください. | |
# | |
# また,エネミーにもターン消費無しスキルを設定する場合は, | |
# 「各行動ごとに行動順を設定さん for RGSS3」の導入が必要です. | |
#------------------------------------------------------------------------------- | |
# 【更新履歴】 | |
# 2012/06/01 エネミー用設定を追加 | |
# 2012/04/21 複数回行動するアクターが正常に動作しない不具合を修正 | |
# 2012/04/01 味方の行動不能状態を回復した際に強制終了する不具合を修正 | |
# 2012/03/28 アイテムにも対応 | |
# 2012/01/28 コモンイベント内で「戦闘行動の強制」を使用した際に強制終了するのを修正 | |
# 2012/01/28 コモンイベントの呼び出しが正常に動作しないのを少し修正 | |
# 2012/01/03 ぶっぱ | |
#------------------------------------------------------------------------------- | |
#============================================================================== | |
# ● 設定項目 | |
#============================================================================== | |
module HZM_VXA | |
module QuickSkill | |
# ● エネミーにもターン消費無し行動を適用するか? | |
# true : する | |
# false : しない | |
# ※この機能を使用する場合は, | |
# 「各行動ごとに行動順を設定さん for RGSS3」が必要です | |
USE_ENEMY = false | |
end | |
end | |
#============================================================================== | |
# ↑ ここまで設定 ↑ | |
# ↓ 以下、スクリプト部 ↓ | |
#============================================================================== | |
raise "[hzm] メモ欄取得スクリプトが必要です" unless defined?(HZM_VXA::Note) | |
raise "[hzm] メモ欄取得スクリプトのバージョンが異なります" unless HZM_VXA::Note::VERSION.to_f >= 2.00 and HZM_VXA::Note::VERSION.to_f < 3.0 | |
module HZM_VXA | |
module QuickSkill | |
# メモ欄から読み込む要素名の候補を設定 | |
KEYS = ['即発動', 'QuickSkill'] | |
# 行動回数の限界値(無限ループ回避) | |
MAX_ACTIONS = 50 | |
#--------------------------------------------------------------------------- | |
# ● QuickSkill中か? | |
#--------------------------------------------------------------------------- | |
def self.quickSkill? | |
@quickSkill | |
end | |
#--------------------------------------------------------------------------- | |
# ● 即時行動開始 | |
#--------------------------------------------------------------------------- | |
def self.start | |
@quickSkill = true | |
end | |
#--------------------------------------------------------------------------- | |
# ● 即時行動終了 | |
#--------------------------------------------------------------------------- | |
def self.finish | |
@quickSkill = false | |
# 全てのbattlerのアクションを戻す | |
$game_party.hzm_vxa_quickSkill_force_action_reverse | |
$game_troop.hzm_vxa_quickSkill_force_action_reverse | |
end | |
end | |
end | |
class Game_Battler < Game_BattlerBase | |
#----------------------------------------------------------------------------- | |
# ● 戦闘行動の強制(エイリアス) | |
#----------------------------------------------------------------------------- | |
alias hzm_vxa_quickSkill_force_action force_action | |
def force_action(skill_id, target_index) | |
@hzm_vxa_quickSkill_actions = HZM_VXA::QuickSkill.quickSkill? ? @actions.clone : nil | |
hzm_vxa_quickSkill_force_action(skill_id, target_index) | |
end | |
#----------------------------------------------------------------------------- | |
# ● 戦闘行動の復元(独自) | |
#----------------------------------------------------------------------------- | |
def hzm_vxa_quickSkill_force_action_reverse | |
return unless @hzm_vxa_quickSkill_actions | |
@actions = @hzm_vxa_quickSkill_actions | |
@hzm_vxa_quickSkill_actions = nil | |
end | |
end | |
class Game_Actor < Game_Battler | |
#----------------------------------------------------------------------------- | |
# ● アクションを先頭に入れ替え | |
#----------------------------------------------------------------------------- | |
def hzm_vxa_quickSkill_swapAction | |
tmp = @actions[0] | |
@actions[0] = @actions[@action_input_index] | |
@actions[@action_input_index] = tmp | |
end | |
end | |
class Game_Unit | |
#----------------------------------------------------------------------------- | |
# ● 戦闘行動の復元(独自) | |
#----------------------------------------------------------------------------- | |
def hzm_vxa_quickSkill_force_action_reverse | |
members.each {|member| member.hzm_vxa_quickSkill_force_action_reverse } | |
end | |
end | |
class Scene_Battle < Scene_Base | |
#-------------------------------------------------------------------------- | |
# ● 情報表示ビューポートの更新 | |
#-------------------------------------------------------------------------- | |
alias hzm_vxa_quickSkill_update_info_viewport update_info_viewport | |
def update_info_viewport | |
hzm_vxa_quickSkill_update_info_viewport | |
move_info_viewport(64) if @hzm_vxa_quickSkill_active | |
end | |
#-------------------------------------------------------------------------- | |
# ● 次のコマンド入力へ(エイリアス) | |
#-------------------------------------------------------------------------- | |
alias hzm_vxa_quickSkill_next_command next_command | |
def next_command | |
if @hzm_vxa_quickSkill_skill and @hzm_vxa_quickSkill_skill.hzm_vxa_note_match(HZM_VXA::QuickSkill::KEYS) | |
@hzm_vxa_quickSkill_skill = nil | |
# 行動の開始 | |
HZM_VXA::QuickSkill::start | |
@actor_command_window.close if @actor_command_window | |
@hzm_vxa_quickSkill_active = true | |
# 行動アクター,行動内容の設定 | |
@subject = BattleManager.actor | |
@subject.hzm_vxa_quickSkill_swapAction | |
# 行動 | |
execute_action | |
# イベント処理 | |
process_event | |
# おわり | |
@subject.hzm_vxa_quickSkill_swapAction | |
HZM_VXA::QuickSkill::finish | |
# ウィンドウを戻す | |
@hzm_vxa_quickSkill_active = false | |
@actor_command_window.open if @actor_command_window | |
@status_window.open if @status_window | |
# もう一度自分のターン | |
start_actor_command_selection | |
else | |
hzm_vxa_quickSkill_next_command | |
end | |
end | |
#-------------------------------------------------------------------------- | |
# ● スキル[決定](エイリアス) | |
#-------------------------------------------------------------------------- | |
alias hzm_vxa_quickSkill_on_skill_ok on_skill_ok | |
def on_skill_ok | |
@hzm_vxa_quickSkill_skill = @skill_window.item | |
hzm_vxa_quickSkill_on_skill_ok | |
end | |
#-------------------------------------------------------------------------- | |
# ● スキル[キャンセル](エイリアス) | |
#-------------------------------------------------------------------------- | |
alias hzm_vxa_quickSkill_on_skill_cancel on_skill_cancel | |
def on_skill_cancel | |
@hzm_vxa_quickSkill_skill = nil | |
hzm_vxa_quickSkill_on_skill_cancel | |
end | |
#-------------------------------------------------------------------------- | |
# ● アイテム[決定](エイリアス) | |
#-------------------------------------------------------------------------- | |
alias hzm_vxa_quickSkill_on_item_ok on_item_ok | |
def on_item_ok | |
@hzm_vxa_quickSkill_skill = @item_window.item | |
hzm_vxa_quickSkill_on_item_ok | |
end | |
#-------------------------------------------------------------------------- | |
# ● アイテム[キャンセル](エイリアス) | |
#-------------------------------------------------------------------------- | |
alias hzm_vxa_quickSkill_on_item_cancel on_item_cancel | |
def on_item_cancel | |
@hzm_vxa_quickSkill_skill = nil | |
hzm_vxa_quickSkill_on_item_cancel | |
end | |
#-------------------------------------------------------------------------- | |
# ● アクターコマンド選択の開始(エイリアス) | |
#-------------------------------------------------------------------------- | |
alias hzm_vxa_quickSkill_ostart_actor_command_selection start_actor_command_selection | |
def start_actor_command_selection | |
hzm_vxa_quickSkill_ostart_actor_command_selection | |
BattleManager.actor.make_actions unless BattleManager.actor.input | |
end | |
end | |
# エネミー用の処理 | |
if HZM_VXA::QuickSkill::USE_ENEMY | |
class Game_Action | |
#----------------------------------------------------------------------------- | |
# ● 行動速度の計算(エイリアス) | |
#----------------------------------------------------------------------------- | |
alias hzm_vxa_quickSkillEnemy_speed speed | |
def speed | |
# 速度補正拡張 | |
if item | |
data = item.hzm_vxa_note_match(HZM_VXA::QuickSkill::KEYS) | |
item.speed = 65535 if data | |
end | |
# 元の処理 | |
hzm_vxa_quickSkillEnemy_speed | |
end | |
end | |
class Game_Enemy < Game_Battler | |
#----------------------------------------------------------------------------- | |
# ● 戦闘行動をランダムに選択(エイリアス) | |
#----------------------------------------------------------------------------- | |
alias hzm_vxa_quickSkillEnemy_select_enemy_action select_enemy_action | |
def select_enemy_action(action_list, rating_zero) | |
action = hzm_vxa_quickSkillEnemy_select_enemy_action(action_list, rating_zero) | |
if action and $data_skills[action.skill_id].hzm_vxa_note_match(HZM_VXA::QuickSkill::KEYS) | |
@actions.push Game_Action.new(self) if @actions.size < HZM_VXA::QuickSkill::MAX_ACTIONS | |
end | |
action | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment