rebf-gaiden/Scripts/_.33.rb
2025-04-26 17:06:34 -05:00

234 lines
No EOL
9.9 KiB
Ruby
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

module N03_Hide
# ウインドウを非表示にしないスキル(書くと旧仕様再現)
NO_HIDE_SKILL = [ 2, 3]
# 黒枠の縦幅をプラスする この設定が0なら黒枠の縦幅は24文字の高さと同じ
BACK_HEIGHT = 0
# 黒枠の不透明度 値が大きいほど色が濃くなる 0255の範囲
BACK_OPACITY = 100
end
=begin
トリス 1 2 3 4 5 更新回数2
1 ダンジョン内の暗闇の優先度
イベントコマンドのスクリプトで
コモンイベント8のウインドウピクチャ作成時に picture_front(1)
コモンイベント7のステ振り終了時に picture_front(0) と入れてください。
2 ステートが付加されない
解決しました。
3 モンスター図鑑とアイテム図鑑を任意の順番で
モンスター・アイテムのメモ欄に <図鑑ID=19.1> のように数値を指定すると
図鑑での並び順がnとして扱われます。小数の指定も可能です。
4 だいじなものをメニュー時に使用不可
アイテムのメモ欄に <イベント選択> と入っていると、メニューで使えないものでも
 イベントからの選択時は選択できるようになります。
設定項目の使用可能時は「使用不可」にしてください。
5 スキル使用時のみ上下のウインドウを消す
設定項目で指定したスキル以外の使用時は、
 上部スキル名ウインドウは背景を黒枠にします。
 下部ステータスウインドウは非表示になります。
1 説明
picture_front(1) と実行すると、全てのピクチャが
「『暗闇が表示されている画像表示領域』よりも手前にある画像表示領域」に
配置されるようになります。
この間、ピクチャは暗闇・天気・タイマー・画面フラッシュより手前に表示されます。
picture_front(0) と実行すると元に戻ります。
2 説明
Aceの仕様が原因でした。
バトラーには「この行動で解除されたステート一覧」というパラメータがあります。
ステートが解除された時にこの一覧に追加されます。
この一覧はメッセージ表示に使われる他、一覧に入っているステートは付加されません。
このパラメータが初期化されるタイミングは
スキル等の効果を受ける直前、行動終了、ターン終了、戦闘終了、1歩移動ごとです。
ステートの「戦闘終了時に解除」のタイミングは「戦闘終了で一覧初期化」の直後です。
この時に一覧に追加され、その後1歩移動するまでは一覧に入ったままです。
歩く前にステートを付加しようとすると、一覧に入っているので付加できません。
タイミングを変更し、戦闘終了でステート解除→一覧を初期化 としました。
これにより、1歩移動する前でも一覧からは削除されており、付加が可能となりました。
=end
#
#==============================================================================
# ■ Spriteset_Map
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# ● ピクチャスプライトの更新
#--------------------------------------------------------------------------
def update_pictures
#@picture_sprites = [] if $event_script_picture_create_flag←修正
if $event_script_picture_create_flag#追記
@picture_sprites.each {|s| s.dispose if s && !s.disposed?}#追記
@picture_sprites = []#追記
end#追記
$event_script_picture_create_flag = false
viewport = $event_script_picture_front_number == 1 ? @viewport3 : @viewport2
$game_map.screen.pictures.each do |pic|
@picture_sprites[pic.number] ||= Sprite_Picture.new(viewport, pic)
@picture_sprites[pic.number].update
end
end
end
#==============================================================================
# ■ Game_Interpreter
#==============================================================================
class Game_Interpreter
def picture_front(number)
$event_script_picture_front_number = number
$event_script_picture_create_flag = true
end
end
#
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● 戦闘終了処理
#--------------------------------------------------------------------------
def on_battle_end
remove_battle_states
remove_all_buffs
clear_actions
clear_tp unless preserve_tp?
appear
@result.clear
end
end
#
#==============================================================================
# ■ Window_MonsterDictionaryList
#==============================================================================
class Window_MonsterDictionaryList < Window_Selectable
#--------------------------------------------------------------------------
# ● アイテムリストの作成
#--------------------------------------------------------------------------
alias :dictionary_sort_make_item_list :make_item_list
def make_item_list
dictionary_sort_make_item_list
@data.sort_by! {|item| item.dictionary_id}
end
end
#==============================================================================
# ■ Window_ItemDictionaryList
#==============================================================================
class Window_ItemDictionaryList < Window_Selectable
#--------------------------------------------------------------------------
# ● アイテムリストの作成
#--------------------------------------------------------------------------
alias :dictionary_sort_make_item_list :make_item_list
def make_item_list
dictionary_sort_make_item_list
@data.sort_by! {|item| item.dictionary_id}
end
end
#==============================================================================
# ■ RPG::BaseItem
#==============================================================================
class RPG::BaseItem
def dictionary_id
return $1.to_f if @note =~ /<図鑑ID=(\d+.*\d*)>/
return $1.to_f if @note =~ /<図鑑ID=(\d+.*\d*)>/
return id
end
end
#
#==============================================================================
# ■ Window_KeyItem
#==============================================================================
class Window_KeyItem < Window_ItemList
#--------------------------------------------------------------------------
# ● 選択項目の有効状態を取得
#--------------------------------------------------------------------------
def enable?(item)
$game_party.usable?(item) or item.note =~ /<イベント選択>/
end
end
#
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● スキル/アイテム名の表示
#--------------------------------------------------------------------------
def display_item(item)
return @log_window.display_use_item(@subject, item) if N03::BATTLE_LOG
@log_window.off
if not N03_Hide::NO_HIDE_SKILL.include?(item.id) && item.is_a?(RPG::Skill)
@status_window.hide
@skill_name_window = Window_Skill_name.new(item.name, true) unless N03::NO_DISPLAY_SKILL_ID.include?(item.id) && item.is_a?(RPG::Skill)
return
end
@skill_name_window = Window_Skill_name.new(item.name) unless N03::NO_DISPLAY_SKILL_ID.include?(item.id) && item.is_a?(RPG::Skill)
end
#--------------------------------------------------------------------------
# ● スキル/アイテム名の表示終了
#--------------------------------------------------------------------------
def display_end_item
@skill_name_window.dispose if @skill_name_window != nil
@skill_name_window = nil
@status_window.show
set_camera_wait(N03::ACTION_END_WAIT) if @subject.sv.derivation_skill_id == 0
@log_window.clear if N03::BATTLE_LOG
end
end
#==============================================================================
# ■ Window_Skill_name
#==============================================================================
class Window_Skill_name < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(text, flag = false)
super(0, 30, Graphics.width, line_height + standard_padding * 2)#紅茶走
draw_text(4, 0, Graphics.width - 64, line_height,text, 1)
return unless flag
self.opacity = 0
@back_bitmap = Bitmap.new(width, height)
@back_sprite = Sprite.new
@back_sprite.bitmap = @back_bitmap
@back_sprite.y = y
@back_sprite.z = z - 1
back_height = N03_Hide::BACK_HEIGHT
back_rect = Rect.new(0, padding - back_height / 2, width, line_height + back_height)
back_color = Color.new(0, 0, 0, N03_Hide::BACK_OPACITY)
@back_bitmap.fill_rect(back_rect, back_color)
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
def dispose
super
@back_bitmap.dispose if @back_bitmap
@back_sprite.dispose if @back_sprite
end
end