king-exit/Scripts/_C.rb
2024-08-31 14:17:23 -05:00

554 lines
No EOL
21 KiB
Ruby
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#==============================================================================
# ■併用化ベーススクリプトC for RGSS3 Ver5.03-β5
# □作成者 kure
#==============================================================================
$kure_base_script = {} if $kure_base_script == nil
$kure_base_script[:base_C] = 503
p "併用化ベーススクリプトC"
#==============================================================================
# ■ Window_PartyCommand
#==============================================================================
class Window_PartyCommand < Window_Command
#--------------------------------------------------------------------------
# ● コマンドリストの作成(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_make_command_list make_command_list
def make_command_list
k_before_make_command_list
if $kure_base_script[:PartyEdit]
case KURE::PartyEdit::PERMIT_EDIT_IN_BATTLE
when 1
add_command("パーティー編成", :partyedit ,$game_switches[KURE::PartyEdit::PERMIT_EDIT_IN_BATTLE_SWITH])
when 2
add_command("パーティー編成", :partyedit)
end
end
if $kure_base_script[:ExEquip]
case KURE::ExEquip::PERMIT_EDIT_IN_BATTLE
when 1
add_command("装備変更", :exequip ,$game_switches[KURE::ExEquip::PERMIT_EDIT_IN_BATTLE_SWITH])
when 2
add_command("装備変更", :exequip)
end
end
end
end
#==============================================================================
# ■ Window_SkillList
#==============================================================================
class Window_SkillList < Window_Selectable
#--------------------------------------------------------------------------
# ☆ フレーム更新(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_update update
def update
k_before_update
process_cost_refresh if KURE::BaseScript::C_SKILL_COST_DRAW == 1
end
#--------------------------------------------------------------------------
# ☆ スキルの使用コストを描画(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_draw_skill_cost draw_skill_cost
def draw_skill_cost(rect, skill)
if @actor.skill_delay && @actor.skill_delay[skill.id] && @actor.skill_delay[skill.id] != 0
change_color(knockout_color)
draw_text(rect, "Delay " + @actor.skill_delay[skill.id].to_s, 2)
return
end
if KURE::BaseScript::C_SKILL_COST_DRAW == 0
k_before_draw_skill_cost(rect, skill)
else
type = 0
type += 1 if @actor.skill_tp_cost(skill) > 0
type += 2 if @actor.skill_mp_cost(skill) > 0
type += 4 if @actor.skill_hp_cost(skill) > 0
case type
when 1
change_color(tp_cost_color, enable?(skill))
draw_text(rect, @actor.skill_tp_cost(skill), 2)
when 2
change_color(mp_cost_color, enable?(skill))
draw_text(rect, @actor.skill_mp_cost(skill), 2)
when 3
case @cost_draw_index
when 0,2,4
change_color(tp_cost_color, enable?(skill))
draw_text(rect, @actor.skill_tp_cost(skill),2)
when 1,3,5
change_color(mp_cost_color, enable?(skill))
draw_text(rect, @actor.skill_mp_cost(skill), 2)
end
when 4
change_color(hp_gauge_color1, enable?(skill))
draw_text(rect, @actor.skill_hp_cost(skill), 2)
when 5
case @cost_draw_index
when 0,2,4
change_color(tp_cost_color, enable?(skill))
draw_text(rect, @actor.skill_tp_cost(skill),2)
when 1,3,5
change_color(hp_gauge_color1, enable?(skill))
draw_text(rect, @actor.skill_hp_cost(skill), 2)
end
when 6
case @cost_draw_index
when 0,2,4
change_color(mp_cost_color, enable?(skill))
draw_text(rect, @actor.skill_mp_cost(skill), 2)
when 1,3,5
change_color(hp_gauge_color1, enable?(skill))
draw_text(rect, @actor.skill_hp_cost(skill), 2)
end
when 7
case @cost_draw_index
when 0,3
change_color(tp_cost_color, enable?(skill))
draw_text(rect, @actor.skill_tp_cost(skill),2)
when 1,4
change_color(mp_cost_color, enable?(skill))
draw_text(rect, @actor.skill_mp_cost(skill), 2)
when 2,5
change_color(hp_gauge_color1, enable?(skill))
draw_text(rect, @actor.skill_hp_cost(skill), 2)
end
end
end
end
end
#==============================================================================
# ■ Game_Message
#==============================================================================
class Game_Message
attr_accessor :need_new_page #改行要求
#--------------------------------------------------------------------------
# ● クリア(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_clear clear
def clear
k_before_clear
@need_new_page = nil
end
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● 戦闘開始処理(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_on_battle_start on_battle_start
def on_battle_start
k_before_on_battle_start
add_cheacker
auto_state_adder
auto_state_adder_ex if KURE::BaseScript::C_AUTO_STATE_ADDER == 1
if actor?
set_b_add_status if KURE::BaseScript::C_BATTLE_ADD_STATUS == 1
set_b_add_state if KURE::BaseScript::C_BATTLE_ADD_STATE == 1
set_passive_skills
end
end
#--------------------------------------------------------------------------
# ● 戦闘終了処理(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_on_battle_end on_battle_end
def on_battle_end
k_before_on_battle_end
init_tp unless preserve_tp?
clear_cheackers
add_cheacker
auto_heeling if KURE::BaseScript::C_BATTLE_AUTO_HEELING == 1
if KURE::BaseScript::C_AUTO_STATE_ADDER == 1
auto_state_adder_ex
set_passive_skills if actor?
end
@first_invoke_item_process = false
end
#--------------------------------------------------------------------------
# ● ターン終了処理(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_on_turn_end on_turn_end
def on_turn_end
self.need_passive_refresh = false if actor?
k_before_on_turn_end
return unless actor?
set_b_add_status if KURE::BaseScript::C_BATTLE_ADD_STATUS == 1
set_b_add_state if KURE::BaseScript::C_BATTLE_ADD_STATE == 1
self.need_passive_refresh = true
set_passive_skills(2) if $game_party.in_battle
end
#--------------------------------------------------------------------------
# ● ステートの解除(エイリアス再定義)
#--------------------------------------------------------------------------
alias kure_before_remove_state remove_state
def remove_state(state_id)
return unless state?(state_id)
@auto_state ||= []
return if @auto_state.include?(state_id)
last_flag = self.need_passive_refresh if actor?
self.need_passive_refresh = false if actor?
remove_state_process(state_id)
kure_before_remove_state(state_id)
next_state = $data_states[state_id].next_state
next_state.each{|id| add_state(id)}
self.need_passive_refresh = last_flag if actor?
#パッシブスキルを更新する
set_passive_skills(2) if actor?
end
#--------------------------------------------------------------------------
# ● ステートの消去(エイリアス再定義)
#--------------------------------------------------------------------------
alias kure_before_erase_state erase_state
def erase_state(state_id)
flag = true if state?(state_id)
remove_state_process(state_id)
kure_before_erase_state(state_id)
#パッシブスキルを更新する
set_passive_skills(2) if actor? && flag
end
#--------------------------------------------------------------------------
# ● 使用効果HP 回復](エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_item_effect_recover_hp item_effect_recover_hp
def item_effect_recover_hp(user, item, effect)
if self.reverse_heel && !item.ignore_reverse_heel
value = (mhp * effect.value1 + effect.value2) * rec
value *= user.pha if item.is_a?(RPG::Item)
value = value.to_i
@result.success = true
@result.hp_damage += (value * self.reverse_heel).to_i
self.hp -= (value * self.reverse_heel).to_i
else
k_before_item_effect_recover_hp(user, item, effect)
end
end
#--------------------------------------------------------------------------
# ● 装備可能判定(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_equippable? equippable?
def equippable?(item)
if $kure_base_script[:SortOut] && KURE::SortOut::BROKEN_CAN_EQUIP == 1
return false unless item.is_a?(RPG::EquipItem)
return false if item.broken?
end
k_before_equippable?(item)
end
#--------------------------------------------------------------------------
# ● スキル/アイテムの使用者側への効果(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_item_user_effect item_user_effect
def item_user_effect(user, item)
k_before_item_user_effect(user, item)
#通常攻撃か反撃ステート対象であれば判定
if item.add_counter_state? or item.damage.element_id < 0
data = battler_add_ability(50).clone
data.each do |obj|
if (obj[1] * user.state_rate(obj[0])).to_i > rand(100)
user.add_state(obj[0])
user.result.sp_added_state_objects.push($data_states[obj[0]]).uniq!
end
end
end
end
end
#==============================================================================
# ■ Game_Actor(再定義項目集積)
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ●■★▲◆◇☆§ セットアップ(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_setup setup
def setup(actor_id)
@need_passive_refresh = false
clear_add_object_before
k_before_setup(actor_id)
clear_add_object_after
@need_passive_refresh = true
set_passive_skills
end
#--------------------------------------------------------------------------
# ● 経験値の初期化(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_init_exp init_exp
def init_exp
@joblevel = actor.initial_joblevel #初期職業レベル
@jobexp = {} #職業レベル
first_lv_setup
k_before_init_exp
end
#--------------------------------------------------------------------------
# ● スキルを覚える(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_learn_skill learn_skill
def learn_skill(skill_id)
return if $data_skills[skill_id].not_learn_list.include?(@actor_id)
k_before_learn_skill(skill_id)
#メモライズ容量と相談して登録する
if $kure_base_script[:Memorize] && KURE::SkillMemorize::AUTO_MEMORIZE == 1
if !$data_skills[skill_id].not_auto_memorize && !unselect_skill?(skill_id)
case $kure_base_script[:Memorize]
when 1
add_memorize_skill_ir(skill_id, true) unless KURE::SkillMemorize::NOT_AUTO_MEMORIZE.include?($data_skills[skill_id].stype_id)
when 2
add_memorize_skill(skill_id)
end
end
end
#パッシブスキルを更新する
set_passive_skills
end
#--------------------------------------------------------------------------
# ● スキルを忘れる(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_forget_skill forget_skill
def forget_skill(skill_id)
k_before_forget_skill(skill_id)
#メモライズ使用時は削除する
delete_memorize_skill(skill_id) if $kure_base_script[:Memorize]
#パッシブスキルを更新する
set_passive_skills
end
#--------------------------------------------------------------------------
# ■ スキルオブジェクトの配列取得(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_skills skills
def skills
if $kure_base_script[:Memorize]
case $kure_base_script[:Memorize]
when 1
return (@skills | sub_class_skills_id | added_skills | @extra_skills).uniq.sort.collect {|id| $data_skills[id] }
when 2
arr = (@memory_skills| added_skills | @extra_skills).select{|id| id != nil}
arr += (@skills | sub_class_skills_id).select{|id| unselect_skill?(id)}
return arr.uniq.sort.collect {|id| $data_skills[id] }
end
end
if $kure_base_script[:JobLvSystem]
return (@skills | sub_class_skills_id | added_skills).uniq.sort.collect {|id| $data_skills[id] }
end
return k_before_skills
end
#--------------------------------------------------------------------------
# ■ 装備の変更(エイリアス定義)
#--------------------------------------------------------------------------
alias k_before_change_equip change_equip
def change_equip(slot_id, item)
cheack_obj = @equips[slot_id].object.clone if @equips[slot_id] && @equips[slot_id].object
k_before_change_equip(slot_id, item)
#追加装備のスキル削除処理
if KURE::BaseScript::C_AUTO_STATE_ADDER == 1
auto_state_adder_ex(cheack_obj)
set_passive_skills if actor?
end
end
#--------------------------------------------------------------------------
# ☆ ステート情報をクリア(エイリアス再定義)
#--------------------------------------------------------------------------
alias kure_before_clear_states clear_states
def clear_states
#常時オートステート情報を保存する
@need_passive_refresh = false
auto_state = Array.new
@states ||= []
@auto_state ||= []
@states.each{|id| auto_state.push(id) if $data_states[id].not_delete_state_healing}
kure_before_clear_states
auto_state.each{|id| add_state(id)}
@need_passive_refresh = true
#パッシブスキルを更新する
set_passive_skills(2) if actor?
end
#--------------------------------------------------------------------------
# ● スキル/アイテムの使用可能判定(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_usable? usable?
def usable?(item)
#メモライズ判定
if item.is_a?(RPG::Skill) && auto_battle?
if $kure_base_script[:Memorize] && item.id != 1 && item.id != 2
unless item.normal_attack_skill?
return false unless usable_now?(item.id)
end
end
end
k_before_usable?(item)
end
#--------------------------------------------------------------------------
# ● リフレッシュ(エイリアス再定義)
#--------------------------------------------------------------------------
alias kure_before_refresh refresh
def refresh
last_flag = @need_passive_refresh
@need_passive_refresh = false
kure_before_refresh
@need_passive_refresh = last_flag
set_passive_skills
end
#--------------------------------------------------------------------------
# ▲ 特徴を保持する全オブジェクトの配列取得(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_feature_objects feature_objects
def feature_objects
k_before_feature_objects + passive_skills.compact
end
#--------------------------------------------------------------------------
# ☆ TP の初期化(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_init_tp init_tp
def init_tp
k_before_init_tp
tp_rate = passive_skills.select{|obj| obj.battle_start_tp != -1}.collect{|obj| obj.battle_start_tp}
tp_rate.flatten!
tp_rate.push(self.class.battle_start_tp)
tp_rate.push($data_actors[@actor_id].battle_start_tp)
final_rate = tp_rate.max
self.tp = max_tp * final_rate.to_f / 100 if final_rate != -1
end
#--------------------------------------------------------------------------
# ● プレイヤーが 1 歩動いたときの処理(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_on_player_walk on_player_walk
def on_player_walk
if KURE::BaseScript::C_WALK_PROCESS == 0
check_floor_effect
return
else
k_before_on_player_walk
end
end
end
#==============================================================================
# ■ Game_Action
#==============================================================================
class Game_Action
#--------------------------------------------------------------------------
# ☆ スキルを設定(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_basescript_before_set_skill set_skill
def set_skill(skill_id)
set_skill_id = change_action(skill_id)
set_skill_id = randam_effecter(set_skill_id)
set_skill_id = change_effecter(set_skill_id)
k_basescript_before_set_skill(skill_id)
end
end
#==============================================================================
# ■ Scene_Battle(再定義)
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ☆ ターン開始(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_turn_start turn_start
def turn_start
k_before_turn_start
turn_invoke_items(1) if KURE::BaseScript::C_SE_TURN_SKILL == 1
end
#--------------------------------------------------------------------------
# ● スキル/アイテムの効果を適用(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_apply_item_effects apply_item_effects
def apply_item_effects(target, item)
#最終発動スキルフラグを立てる
if target.hp > 0
final_skill = target.final_invoke
target.result.final_atk = true if final_skill
end
k_before_apply_item_effects(target, item)
if target.hp <= 0 && final_skill
invoke_final_attack(target, final_skill)
target.perform_collapse_effect
end
#最終攻撃フラグを消去
target.result.final_atk = false
end
end
#==============================================================================
# ▲ BattleManager(エイリアス再定義)
#==============================================================================
class << BattleManager
#--------------------------------------------------------------------------
# ▲ 獲得した経験値の表示(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_display_exp display_exp
def display_exp
k_before_display_exp
#JobExp
if $kure_base_script[:JobLvSystem]
if $game_troop.jobexp_total > 0
text2 = sprintf(Vocab::ObtainJobExp, $game_troop.jobexp_total)
$game_message.add('\.' + text2)
end
end
#EquipExp
if $kure_base_script[:SortOut]
if $game_troop.equip_exp_total > 0
text3 = sprintf(Vocab::ObtainEquipExp, $game_troop.equip_exp_total)
$game_message.add('\.' + text3)
end
end
#AP
if $game_troop.ability_exp_total > 0
text4 = sprintf(Vocab::ObtainAP, $game_troop.ability_exp_total)
$game_message.add('\.' + text4)
end
#ステータスポイント
if $game_troop.status_exp_total > 0
text5 = sprintf(Vocab::ObtainStatus, $game_troop.status_exp_total)
$game_message.add('\.' + text5)
end
#スキルポイント
if $game_troop.skill_exp_total > 0
text6 = sprintf(Vocab::ObtainSkillP, $game_troop.skill_exp_total)
$game_message.add('\.' + text6)
end
end
#--------------------------------------------------------------------------
# ● 戦闘開始(エイリアス再定義)
#--------------------------------------------------------------------------
alias k_before_battle_start battle_start
def battle_start
k_before_battle_start if $k_form_pe_call != 1
$k_form_pe_call = 0
end
end