#----------------------------------------------------------------------------
# SPダメージ 貪藻矢射妥←簡易版 By 貪藻矢射妥←
# 微妙に使いづらいです・・・多分(をひ)
#----------------------------------------------------------------------------
# 原作: ◆ SPダメージ - KGC_SPDamage ◆
# ◇ Last update : 2009/08/23 ◇
# 原作者: TOMY様
# HP: Kamesoft
# アドレス: http://ytomy.sakura.ne.jp/
#
# 改造内容:
# ・SPダメージ○%の廃止(SPダメージは常に100% 故に”簡易版”)
# ・SPダメージ/回復時の色設定をカスタマイズポイントへ移行
# ・コッソリとダメージポップス(今は無きスクリプトシェルフ)に対応
#
# 修正内容:
# ・特になし
#
#============================================================================
# 変更点
# 2009:09:14
# ・DRAW_SHADOW_BATTLEを必須からオプションに変更
# ・原作スクリプトアップデートに伴い修正
#
# 2009:11:21
# ・draw_shadow_text関数アップデートに伴い修正
#
# 2024:07:01
# ・そのままだとエラー落ちする可能性があったので修正
#==============================================================================
# ★ カスタマイズ項目 ★
#==============================================================================
module KGC
include BM
# ==== ≪ダメージ表示改造≫を導入していない場合に使用 ====
# ◆ダメージ数値フォント
SPD_FONT_NAME = "Times New Roman"
# ◆ダメージ数値サイズ
SPD_FONT_SIZE = 24
# ◆ダメージ数値ボールド
SPD_FONT_BOLD = true
# ◆ダメージ数値イタリック
SPD_FONT_ITALIC = true
# ◆SP Damage用属性
SP_DAMAGE = 50
# ◆SPダメージカラー
COLOR_SPD = Color.new(255, 255, 128, MAX8BIT)
# ◆SP回復カラー
COLOR_SPR = Color.new(160, 192, 255, MAX8BIT)
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
$imported = {} if $imported == nil
$imported["SPDamage"] = true
#==============================================================================
# ■ Game_Battler (分割定義 1)
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :damage2 # SPダメージ値
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias initialize_KGC_SPDamage initialize
def initialize
initialize_KGC_SPDamage
@damage2 = nil
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Battler (分割定義 3)
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 通常攻撃の効果適用
#--------------------------------------------------------------------------
alias attack_effect_KGC_SPDamage attack_effect
def attack_effect(attacker)
result = attack_effect_KGC_SPDamage(attacker)
# ダメージを受けた場合
if result && $imported["AttackRecoverSP"]
recover_sp = -attack_recover_sp_effect(attacker)
if $game_temp.in_battle
attacker.damage2 = recover_sp
else
# 戦闘中以外に呼び出す、ってこともあるかもしれないので一応
attacker.damage2 = nil
end
end
return result
end
#--------------------------------------------------------------------------
# ● スキルの効果適用
#--------------------------------------------------------------------------
alias skill_effect_KGC_SPDamage skill_effect
def skill_effect(user, skill)
last_hp = self.hp
result = skill_effect_KGC_SPDamage(user, skill)
# ダメージを受けた場合
if (result || hp == maxhp) && self.damage.is_a?(Numeric)
exist_damage2 = false
if skill.element_set.include?(KGC::SP_DAMAGE)
self.damage2 = self.damage
exist_damage2 = true
end
if exist_damage2
# SP減少処理
self.hp = last_hp
self.sp -= self.damage2
self.damage = ""
end
end
unless $game_temp.in_battle
self.damage2 = nil
end
return result
end
#--------------------------------------------------------------------------
# ● アイテムの効果適用
#--------------------------------------------------------------------------
alias item_effect_KGC_SPDamage item_effect
def item_effect(item)
last_sp = self.sp
result = item_effect_KGC_SPDamage(item)
# SPダメージ値を設定
if result
if $game_temp.in_battle
self.damage2 = last_sp - self.sp
else
self.damage2 = nil
end
end
return result
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
class Sprite_Battler < RPG::Sprite
include BM
include DS
if $imported["DamageAlter"]
#--------------------------------------------------------------------------
# ● SPダメージ値作成
#--------------------------------------------------------------------------
def damage2(value, critical)
@_damage2_flag = true
damage(value, critical)
end
else # <-- $imported["DamageAlter"]
include DIAMOND
include RUBY_SYS
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# viewport : ビューポート
# battler : バトラー (Game_Battler)
#--------------------------------------------------------------------------
alias initialize_KGC_SPDamage initialize
def initialize(viewport, battler = nil)
initialize_KGC_SPDamage(viewport, battler)
@_damage2_duration = 0
end
#------------------------------------------------------------------------
# ● 解放
#------------------------------------------------------------------------
alias dispose_KGC_SPDamage dispose
def dispose
dispose_damage2
dispose_KGC_SPDamage
end
#--------------------------------------------------------------------------
# ● SPダメージ値作成
#--------------------------------------------------------------------------
def damage2(value, critical = false)
dispose_damage2
# ダメージが数値かどうかの判定
if value.is_a?(Numeric)
num_flg = true
else
num_flg = false
end
# ダメージが数値である場合、絶対値を取得
if num_flg
damage_string = value.abs.to_s
else
damage_string = value.to_s
end
bitmap = Bitmap.new(160, 48)
bitmap.font.size = KGC::SPD_FONT_SIZE
bitmap.font.bold = KGC::SPD_FONT_BOLD
bitmap.font.italic = KGC::SPD_FONT_ITALIC
bitmap.font.color = BLCOLOR
if num_flg && value < 0
draw_color = KGC::COLOR_SPR
else
draw_color = KGC::COLOR_SPD
end
draw_shadow_text_root(bitmap, [0, 12, 160, 36], damage_string, draw_color, 1)
@_damage2_sprite = ::Sprite.new
@_damage2_sprite.bitmap = bitmap
@_damage2_sprite.ox = 80
@_damage2_sprite.oy = 20
@_damage2_sprite.x = self.x
@_damage2_sprite.y = self.y - self.oy / 4
@_damage2_sprite.z = 3000
@_damage2_duration = 40
end
#--------------------------------------------------------------------------
# ● SPダメージ値破棄
#--------------------------------------------------------------------------
def dispose_damage2
if @_damage2_sprite != nil
@_damage2_sprite.bitmap.dispose
@_damage2_sprite.dispose
@_damage2_sprite = nil
@_damage2_duration = 0
end
end
end # <-- $imported["DamageAlter"]
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
alias update_KGC_SPDamage update
def update
# SPダメージ表示
if @battler != nil && @battler_visible && @battler.damage_pop &&
@battler.damage2 != nil && @battler.damage2 != 0
damage2(@battler.damage2, @battler.critical)
@battler.damage2 = nil
end
update_KGC_SPDamage
if !$imported["DamageAlter"] && @_damage2_duration > 0
@_damage2_duration -= 1
@_damage2_sprite.x = self.x
if @_damage2_duration > 27
@_damage2_sprite.y -= [(@_damage2_duration - 33) / 2 + 1, 1].max
end
@_damage2_sprite.opacity = 256 - (12 - @_damage2_duration) * 32
if @_damage2_duration == 0
dispose_damage2
end
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Battle (分割定義 1)
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
alias main_KGC_SPDamage main
def main
# SPダメージを消去
(1...$data_actors.size).each { |i|
actor = $game_actors[i]
if actor != nil
actor.damage2 = nil
end
}
main_KGC_SPDamage
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Battle (分割定義 4)
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
#--------------------------------------------------------------------------
alias update_phase4_step5_KGC_SPDamage update_phase4_step5
def update_phase4_step5
update_phase4_step5_KGC_SPDamage
# SPダメージ表示
($game_party.actors + $game_troop.enemies).each { |battler|
if battler.damage2 != nil
battler.damage_pop = true
end
}
end
end
|