# ▼▲▼ No62. ダメージ表示セッティング ▼▲▼ # # update 2005/ 4/22 # #============================================================================== # カスタマイズポイント #============================================================================== module XRXS_DamageSettings #-------------------------------------------------------------------------- # 表示設定 #-------------------------------------------------------------------------- DURATION = 40 CRITICAL_STRING = "CRITICAL" CRITICAL_FONT_SIZE = 20 CRITICAL_FONT_COLOR = Color.new(255, 255, 255) #-------------------------------------------------------------------------- # 基本の色設定 #-------------------------------------------------------------------------- DEFAULT_COLOR = Color.new(255, 255, 255) # HPダメージ DEFAULT_MINUS = Color.new(176, 255, 144) # HP回復 SPDAMAGE_COLOR = Color.new(255, 176, 144) # SPダメージ SPDAMAGE_MINUS = Color.new(128, 255, 255) # SP回復 #-------------------------------------------------------------------------- # 指定文字を含む文字列の色設定 # # 記述形式 : "指定文字列"=>Color.new(red, green, blue[, alpha]) #-------------------------------------------------------------------------- SPECIAL_COLOR_SETS = {"EXP"=>Color.new(255, 192, 64), "G"=>Color.new(255, 255, 32), "Level up!"=>Color.new(255, 255, 0) } #-------------------------------------------------------------------------- # ○ フォントの取得 #-------------------------------------------------------------------------- def self.font # フォントの生成 font = Font.new # # 各種設定 # font.name = "Comic Sans MS" font.size = 32 # 文字のサイズ (基本は 32  ) font.bold = true # 太字     (基本は false ) font.italic = false # 斜体     (基本は false ) # # # 色々設定したフォントをリターンする return font end end #============================================================================== # --- ダメージ表示ライブラリ --- #============================================================================== module XRXS_DamageSettings #-------------------------------------------------------------------------- # ○ 色の取得 #-------------------------------------------------------------------------- def self.color(value_string) # # 指定文字列の検索 # for key in SPECIAL_COLOR_SETS.keys.sort! return SPECIAL_COLOR_SETS[key] unless value_string.scan(key).empty? end # # SPダメージ # unless value_string.scan("SP").empty? value = (value_string.sub("SP"){""}).to_i color = (value >= 0 ? SPDAMAGE_COLOR : SPDAMAGE_MINUS) value_string.gsub!("-") {""} # マイナス削り return color end # # 見つからなかった場合は標準 # value = (value_string).to_i color = (value >= 0 ? DEFAULT_COLOR : DEFAULT_MINUS) return color end end #============================================================================== # ● ダメージの表示 [再定義] #============================================================================== module RPG class Sprite < ::Sprite def damage(value, critical) dispose_damage # # まず先にフォントと色の取得 # font = XRXS_DamageSettings.font color = XRXS_DamageSettings.color(value.to_s) # 文字列の設定 if value.is_a?(Numeric) damage_string = value.abs.to_s else damage_string = value.to_s end # # 文字の描画↓ # bitmap = Bitmap.new(160, 48) bitmap.font = font bitmap.font.color.set(0, 0, 0) bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1) bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1) bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1) bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1) bitmap.font.color = color bitmap.draw_text(0, 12, 160, 36, damage_string, 1) if critical critical_string = XRXS_DamageSettings::CRITICAL_STRING bitmap.font.size = XRXS_DamageSettings::CRITICAL_FONT_SIZE bitmap.font.color.set(0, 0, 0) bitmap.draw_text(-1, -1, 160, 20, critical_string, 1) bitmap.draw_text(+1, -1, 160, 20, critical_string, 1) bitmap.draw_text(-1, +1, 160, 20, critical_string, 1) bitmap.draw_text(+1, +1, 160, 20, critical_string, 1) bitmap.font.color = XRXS_DamageSettings::CRITICAL_FONT_COLOR bitmap.draw_text(0, 0, 160, 20, critical_string, 1) end @_damage_sprite = ::Sprite.new(self.viewport) @_damage_sprite.bitmap = bitmap @_damage_sprite.ox = 80 @_damage_sprite.oy = 20 @_damage_sprite.x = self.x @_damage_sprite.y = self.y - self.oy / 2 @_damage_sprite.z = 3000 @_damage_duration = XRXS_DamageSettings::DURATION end end end #============================================================================== # □ SPダメージ表示機能 #------------------------------------------------------------------------------ # SPダメージ機能を搭載し、ダメージ時には"SP (値)"文字列を生成します。 #============================================================================== class Game_Battler attr_accessor :damage_sp # ダメージSP値 end class Sprite_Battler < RPG::Sprite #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias xrxs62_update update def update # # バトラーがnilでない、可視、ダメージポップ、SPダメージ値有り # 通常ダメージなし  # # を全て満たす場合。 if @battler != nil and @battler_visible and @battler.damage_pop and @battler.damage_sp != nil and (@battler.damage == nil or @battler.damage == "") # value = @battler.damage_sp # 解放 dispose_damage # 表示文字列の設定 damage_string = $data_system.words.sp + " " + value.to_s # ダメージ実行 damage(damage_string, @battler.critical) @battler.damage_sp = nil @battler.critical = false @battler.damage_pop = false end # 呼び戻す xrxs62_update end end