设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1816|回复: 6
打印 上一主题 下一主题

[已经解决] 脚本修改

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
76 小时
注册时间
2009-10-24
帖子
172
跳转到指定楼层
1
发表于 2012-12-9 08:46:26 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
请教图书馆里的CP脚本怎么将人物的HP槽这类的懂改的和XP的外形一样

点评

LZ提问能加点标点么……  发表于 2012-12-14 09:23

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
7
发表于 2012-12-14 04:27:33 | 只看该作者
这是指标图档:
lnx11a_cursor7.zip (20.15 KB, 下载次数: 43)

这是战斗中一些数字、效果文字等等的图档,分割压缩成两个档,都要下载:
lnx11a_popup.part1.rar (878.91 KB, 下载次数: 39)
lnx11a_popup.part2.rar (500.73 KB, 下载次数: 41)

大概是这样吧,其它是否还有要下载的档案我就不知道了,目前没遇到有这样的提示讯息。

点评

不清楚出错原因,那是直接从原站复制的,我这儿测试运行正常。  发表于 2012-12-15 13:52
第一个脚本第508行出错。。 原因是“]”东西  发表于 2012-12-15 07:26
谢谢!  发表于 2012-12-15 07:13
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
6
发表于 2012-12-14 02:16:36 | 只看该作者
本帖最后由 j433463 于 2012-12-14 04:15 编辑

这是那个战斗系统的示范视频,可以参考一下。

可以选择显示脸图或行走图,它的设定项目很多,分得很细,
据说也可以像 XP 一样用全身战斗图,但我没试过,只看过贴图。

两个脚本,都要有才行,第一个:

LNX11a_XPスタイルバトル

RUBY 代码复制
  1. #==============================================================================
  2. # ★ RGSS3-Extension
  3. # LNX11a_XPスタイルバトル
  4. #  戦闘画面をRPGツクールXP准拠のものに変更します。
  5. #
  6. #  version   : 1.10 (12/11/18)
  7. #  author    : ももまる
  8. #  reference : [url]http://peachround.blog.fc2.com/blog-entry-9.html[/url]
  9. #
  10. #==============================================================================
  11.  
  12. #==============================================================================
  13. # ■ LNXスクリプト导入情报
  14. #==============================================================================
  15. $lnx_include = {} if $lnx_include == nil
  16. $lnx_include[:lnx11a] = 110 # version
  17. p "OK:LNX11a_XPスタイルバトル"
  18.  
  19. module LNX11
  20.   #--------------------------------------------------------------------------
  21.   # ● 正规表现
  22.   #--------------------------------------------------------------------------
  23.   # アクター:バトラーグラフィック = "ファイル名"
  24.   RE_BATTLER = /(?:バトラーグラフィック|battler_graphic)\s*=\s*"([^"]*)"/i
  25.   # アイテム/スキル:使用时アニメ = アニメーションID
  26.   RE_USE_ANIMATION = /(?:使用时アニメ|use_animation)\s*=\s*(\d+)/i
  27.   # アイテム/スキル:ヘルプ说明 = "说明文"
  28.   RE_SHORT_DESCRIPTION =/(?:ヘルプ说明|short_description)\s*=\s*"([^"]*)"/i
  29.   # アイテム/スキル:ヘルプ非表示
  30.   RE_USABLEITEM_NO_DISPLAY = /(?:ヘルプ非表示|no_display)/i
  31.   # アイテム/スキル:使用时追加ウェイト = duration
  32.   RE_DISPLAY_WAIT = /(?:使用时追加ウェイト|display_wait)\s*=\s*(\d+)/i
  33.   # アイテム/スキル:终了时追加ウェイト = duration
  34.   RE_END_WAIT = /(?:终了时追加ウェイト|end_wait)\s*=\s*(\d+)/i
  35.   # 敌キャラ:通常攻撃アニメ = アニメーションID
  36.   RE_ATK_ANIMATION = /(?:通常攻撃アニメ|atk_animation)\s*=\s*(\d+)/i
  37.   # ステート:ステートアニメ = アニメーションID
  38.   RE_STATE_ANIMATION = /(?:ステートアニメ|state_animation)\s*=\s*(\d+)/i
  39.   # ステート:ポップアップ表示名 = "表示名"
  40.   RE_STATE_DISPLAY = /(?:ポップアップ表示名|display_name)\s*=\s*"([^"]*)"/i
  41.   # ステート:ポップアップ非表示
  42.   RE_STATE_NO_DISPLAY = /(?:ポップアップ非表示|no_display)/i
  43.   # ステート:付加ポップアップ非表示
  44.   RE_STATE_ADD_NO_DISPLAY = /(?:付加ポップアップ非表示|add_no_display)/i
  45.   # ステート:解除ポップアップ非表示
  46.   RE_STATE_REM_NO_DISPLAY = /(?:解除ポップアップ非表示|remove_no_display)/i
  47.   # ステート:有利なステート
  48.   RE_STATE_ADVANTAGE = /(?:有利なステート|advantage_state)/i
  49.   # ステート:ポップアップタイプ = type_id
  50.   RE_STATE_TYPE = /(?:ポップアップタイプ|popup_type)\s*=\s*(\d+)/i
  51.   # ステート:付加ポップアップタイプ = type_id
  52.   RE_STATE_ADD_TYPE = /(?:付加ポップアップタイプ|add_popup_type)\s*=\s*(\d+)/i
  53.   # ステート:解除ポップアップタイプ = type_id
  54.   RE_STATE_REM_TYPE =/(?:解除ポップアップタイプ|remove_popup_type)\s*=\s*(\d+)/i
  55.   # ステート:修饰文字非表示
  56.   RE_STATE_NO_DECORATION = /(?:修饰文字非表示|no_decoration)/i
  57.   # ステート:付加修饰文字非表示
  58.   RE_STATE_ADD_NO_DECORATION = /(?:付加修饰文字非表示|add_no_decoration)/i
  59.   # ステート:解除修饰文字非表示
  60.   RE_STATE_REM_NO_DECORATION = /(?:解除修饰文字非表示|remove_no_decoration)/i
  61.   # <<ver1.10>>
  62.   # ステート:付加ポップアップ表示名 = "表示名"
  63.   RE_STATE_ADD_DISPLAY =
  64.   /(?:付加ポップアップ表示名|add_display_name)\s*=\s*"([^"]*)"/i
  65.   # ステート:解除ポップアップ表示名 = "表示名"
  66.   RE_STATE_REM_DISPLAY =
  67.   /(?:解除ポップアップ表示名|remove_display_name)\s*=\s*"([^"]*)"/i
  68.   #--------------------------------------------------------------------------
  69.   # ● バトルステータス更新
  70.   #--------------------------------------------------------------------------
  71.   # LNX11.バトルステータス更新
  72.   def self.battle_status_refresh
  73.     $game_temp.battle_status_refresh
  74.   end
  75.   def self.バトルステータス更新
  76.     self.battle_status_refresh
  77.   end  
  78.   #--------------------------------------------------------------------------
  79.   # ● アクターエリア表示/非表示
  80.   #--------------------------------------------------------------------------
  81.   # LNX11.アクターエリア表示
  82.   def self.actor_area_show
  83.     self.actor_show
  84.     self.status_show
  85.     self.actor_bg_show
  86.   end
  87.   def self.アクターエリア表示
  88.     self.actor_area_show
  89.   end
  90.   # LNX11.アクターエリア非表示
  91.   def self.actor_area_hide
  92.     self.actor_hide
  93.     self.status_hide
  94.     self.actor_bg_hide
  95.   end
  96.   def self.アクターエリア非表示
  97.     self.actor_area_hide
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● アクター表示/非表示
  101.   #--------------------------------------------------------------------------
  102.   # LNX11.アクター表示
  103.   def self.actor_show
  104.     $game_party.actor_invisible = false
  105.   end
  106.   def self.アクター表示
  107.     self.actor_show
  108.   end
  109.   # LNX11.アクター非表示
  110.   def self.actor_hide
  111.     $game_party.actor_invisible = true
  112.   end
  113.   def self.アクター非表示
  114.     self.actor_hide
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● バトルステータス表示/非表示
  118.   #--------------------------------------------------------------------------
  119.   # LNX11.バトルステータス表示
  120.   def self.status_show
  121.     $game_party.status_invisible = false
  122.     self.battle_status_refresh
  123.   end
  124.   def self.バトルステータス表示
  125.     self.status_show
  126.   end
  127.   # LNX11.バトルステータス非表示
  128.   def self.status_hide
  129.     $game_party.status_invisible = true
  130.     self.battle_status_refresh
  131.   end
  132.   def self.バトルステータス非表示
  133.     self.status_hide
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ● アクター背景表示/非表示
  137.   #--------------------------------------------------------------------------
  138.   # LNX11.アクター背景表示
  139.   def self.actor_bg_show
  140.     $game_party.actor_bg_invisible = false
  141.   end
  142.   def self.アクター背景表示
  143.     self.actor_bg_show
  144.   end
  145.   # LNX11.アクター背景非表示
  146.   def self.actor_bg_hide
  147.     $game_party.actor_bg_invisible = true
  148.   end
  149.   def self.アクター背景非表示
  150.     self.actor_bg_hide
  151.   end  
  152.   #--------------------------------------------------------------------------
  153.   # ● バトラーグラフィックのスクリプト指定
  154.   #--------------------------------------------------------------------------
  155.   # LNX11.バトラーグラフィック(id, filename)
  156.   def self.battler_graphic(id ,filename)
  157.     if id.is_a?(Numeric) && filename.is_a?(String)
  158.       p "LNX11a:バトラーグラフィックを変更しました:ID#{id} #{filename}"
  159.       $game_actors[id].battler_graphic_name = filename
  160.     else
  161.       errormes =  "LNX11a:バトラーグラフィック指定の引数が正しくありません。"
  162.       p errormes, "LNX11a:バトラーグラフィックの指定は行われませんでした。"
  163.       msgbox errormes
  164.     end
  165.   end
  166.   def self.バトラーグラフィック(id ,filename)
  167.     self.battler_graphic(id ,filename)
  168.   end
  169.   #--------------------------------------------------------------------------
  170.   # ● 任意のポップアップを生成
  171.   #--------------------------------------------------------------------------
  172.   # LNX11.ポップアップ(battler, popup, type, color, deco)
  173.   def self.make_popup(battler, popup, type = 0, color = :hp_damage, deco = nil)
  174.     return unless $game_party.in_battle
  175.     target = self.battler_search(battler)
  176.     unless target.is_a?(Game_Battler)
  177.       p "LNX11a:任意のポップアップの生成に失败しました。バトラー指定が"
  178.       p "LNX11a:间违っているか、バトラーが存在していない可能性があります。"
  179.       return
  180.     end
  181.     $game_temp.popup_data.popup_custom(target, popup, type, color, deco)   
  182.   end
  183.   def self.ポップアップ(battler, popup, type=0, color=:hp_damage, deco=nil)
  184.     self.make_popup(battler, popup, type, color, deco)
  185.   end
  186.   #--------------------------------------------------------------------------
  187.   # ● バトラー指定
  188.   #--------------------------------------------------------------------------
  189.   def self.battler_search(val)
  190.     if val.is_a?(String)
  191.       # 名前指定
  192.       a = ($game_party.members + $game_troop.members).find {|b| b.name == val }
  193.       return a
  194.     elsif val.is_a?(Array)
  195.       # インデックス指定
  196.       case val[0]
  197.       when :actor ; return $game_party.members[val[1]]
  198.       when :enemy ; return $game_troop.members[val[1]]
  199.       else        ; return nil
  200.       end
  201.     else
  202.       # オブジェクト
  203.       return val
  204.     end
  205.   end
  206.   #--------------------------------------------------------------------------
  207.   # ● バトルログプッシュ
  208.   #--------------------------------------------------------------------------
  209.   # LNX11.バトルログ(text)
  210.   def self.battle_log_push(text)
  211.     return unless $game_party.in_battle
  212.     case BATTLELOG_TYPE
  213.     when 0..1 # バトルログ
  214.       BattleManager.log_window.add_text(text)
  215.     when 2 # 简易ヘルプ表示
  216.       BattleManager.helpdisplay_set(text, 0)
  217.     end
  218.   end
  219.   def self.バトルログ(text)
  220.     self.battle_log_push(text)
  221.   end
  222.   #--------------------------------------------------------------------------
  223.   # ● バトルログ消去
  224.   #--------------------------------------------------------------------------
  225.   # LNX11.バトルログ消去
  226.   def self.battle_log_clear
  227.     return unless $game_party.in_battle
  228.     case BATTLELOG_TYPE
  229.     when 0 # バトルログ
  230.       BattleManager.log_window.clear
  231.     when 1 # 蓄积型
  232.       BattleManager.log_window.clear
  233.       $game_temp.battlelog_clear = true
  234.       self.battle_wait(1)
  235.     when 2 # 简易ヘルプ
  236.       BattleManager.helpdisplay_clear(0)
  237.     end
  238.   end
  239.   def self.バトルログ消去
  240.     self.battle_log_clear
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ● バトルウェイト
  244.   #--------------------------------------------------------------------------
  245.   # LNX11.バトルウェイト(duration)
  246.   def self.battle_wait(duration)
  247.     return unless $game_party.in_battle
  248.     BattleManager.log_window.abs_wait(duration)
  249.   end
  250.   def self.バトルウェイト(duration)
  251.     self.battle_wait(duration)
  252.   end
  253.   #--------------------------------------------------------------------------
  254.   # ● 设定値
  255.   #  ※ 设定を変更する场合、LNX11aconf を使用してください。
  256.   #--------------------------------------------------------------------------
  257.   # <<ver1.00>>
  258.   if !$lnx_include[:lnx11aconf] ||
  259.      $lnx_include[:lnx11aconf] && $lnx_include[:lnx11aconf] < 100
  260.   DEFAULT_BATTLER_GRAPHIC = 0
  261.   DEFAULT_BG_COLOR        = [Color.new(0, 0, 0, 0), Color.new(0, 0, 0, 0)]
  262.   ACTOR_SCREEN_TONE       = false
  263.   TP_POPUP_TYPE           = 1
  264.   INDEXZERO_NO_POPUP      = true
  265.   ACTOR_BACKGROUND        = 2
  266.   ACTOR_BACKGROUND_HEIGHT = 112
  267.   ACTOR_BG_GRADIENT_COLOR = [Color.new(0, 0, 0, 96), Color.new(0, 0, 0, 224)]
  268.   BATTLELOG_TYPE  =  1
  269.   STORAGE_LINE_NUMBER     = 6
  270.   STORAGE_LINE_HEIGHT     = 20
  271.   STORAGE_UP_MESSAGE_TIME = 90
  272.   STORAGE_TURNEND_CLEAR   = true
  273.   STORAGE_OFFSET = {:x => 0, :y => 6}
  274.   STORAGE_FONT   = {:size => 20, :out_color => Color.new(0, 0, 0, 192)}
  275.   STORAGE_GRADIENT_COLOR = [Color.new(0, 0, 0, 128), Color.new(0, 0, 0, 0)]
  276.   POPUP_ADD_WAIT          = 6
  277.   HELPDISPLAY_TYPE        = 1
  278.   HELPDISPLAT_WAIT        = 20
  279.   HELPDISPLAT_END_WAIT    = 24
  280.   HELPDISPLAY_DESCRIPTION = {:size => 20, :delimiter => " "}
  281.   MESSAGE_TYPE  =  2
  282.   MESSAGE_WINDOW_BACKGROUND  = 1
  283.   MESSAGE_WINDOW_POSITION    = 0
  284.   MESSAGE_WAIT = {:battle_start => [120, false], :victory   => [ 60, false],
  285.                   :defeat       => [120, false], :escape    => [120, false],
  286.                   :drop_item    => [ 60,  true], :levelup   => [ 60,  true]}
  287.   MESSAGE_WINDOW_ENEMY_NAMES = false
  288.   LEVELUP_SE  = RPG::SE.new("Up4", 90, 100)
  289.   DROPITEM_SE = RPG::SE.new("Item3", 80, 125)
  290.   ACTOR_CENTERING  =  true
  291.   ACTOR_SPACING_ADJUST = 32
  292.   ACTOR_OFFSET  = {:x => -16, :y => 0}
  293.   ACTOR_PADDING = {:side => 4, :bottom => 8}
  294.   SCREEN_ANIMATION_OFFSET = 128
  295.   STATUS_OFFSET = {:x => 64, :y => -12}
  296.   STATUS_SIDE_PADDING   = 6
  297.   STATUS_WIDTH          = 72
  298.   STATUS_AUTOADJUST     = true
  299.   STATUS_LINE_HEIGHT    = 22
  300.   STATUS_NAME_SIZE      = 20
  301.   STATUS_PARAM_SIZE     = 23
  302.   STATUS_GAUGE_OPACITY  = 192
  303.   ACTOR_COMMAND_NOSCROLL   = true
  304.   ACTOR_COMMAND_HORIZON    = false
  305.   ACTOR_COMMAND_ALIGNMENT  = 0
  306.   ACTOR_COMMAND_WIDTH      = 128
  307.   ACTOR_COMMAND_POSITION   = 0
  308.   ACTOR_COMMAND_Y_POSITION = 0
  309.   ACTOR_COMMAND_OFFSET  = {:x => 0, :y => -16}
  310.   PARTY_COMMAND_HORIZON   = true
  311.   PARTY_COMMAND_ALIGNMENT = 1
  312.   PARTY_COMMAND_WIDTH     = Graphics.width
  313.   PARTY_COMMAND_XY        = {:x => 0, :y => 0}
  314.   CURSOR_NAME       = ""
  315.   CURSOR_TONE     = Tone.new(-34, 0, 68)
  316.   CURSOR_ANI_SPEED  = 3
  317.   CURSOR_SPEED      = 3
  318.   CURSOR_BLINK      = true
  319.   CURSOR_MINMAX     = {:min => 48, :max => Graphics.height}
  320.   CURSOR_OFFSET     = {:x => 0, :y => 0}
  321.   HELP_ACTOR_PARAM = {:hp => true ,:mp => true ,:tp => true ,:state => true }
  322.   HELP_ENEMY_PARAM = {:hp => false,:mp => false,:tp => false,:state => true }
  323.   HELP_PARAM_WIDTH    = 72
  324.   RANDOMSCOPE_DISPLAY = 1
  325.   ACTOR_POPUP_POSITION   = 3
  326.   ENEMY_POPUP_POSITION   = 1
  327.   LEVELUP_POPUP_POSITION = 3
  328.   ACTOR_POPUP_Y     =  -100
  329.   LEVELUP_POPUP_Y   =  -112
  330.   NUMBER_FONT   =  ["Arial Black", "VL Gothic"]
  331.   TEXT_FONT     =  ["Arial Black", "VL Gothic"]
  332.   TEXT_FONT_MCS =  ["VL Gothic"]
  333.   LARGE_NUMBER  =  {:fontsize => 38, :spacing => -4, :line_height => 26}
  334.   SMALL_NUMBER  =  {:fontsize => 28, :spacing => -4, :line_height => 20}
  335.   TEXT_SIZERATE     = {:normal => 0.8, :left_right => 0.7, :top_bottom => 0.6}
  336.   TEXT_SIZERATE_MCS = 0.9
  337.   DECORATION_NUMBER = {
  338.   :critical    => ["CRITICAL", 8], :weakness    => ["WEAKNESS", 8],
  339.   :resist      => ["RESIST"  , 8], :mp_damage   => ["\mp"     , 4],
  340.   :mp_plus     => ["\mp+"    , 4], :mp_minus    => ["\mp-"    , 4],
  341.   :tp_plus     => ["\tp+"    , 4], :tp_minus    => ["\tp-"    , 4]}
  342.   DECORATION_TEXT = {
  343.   :add_state   => "+%s",      :rem_state   => "-%s",
  344.   :add_buff    => "%s UP",    :add_debuff  => "%s DOWN",
  345.   :rem_buff    => "-%s Buff"}
  346.   POPUP_VOCAB = {
  347.   :miss        => "MISS!",      :counter     => "Counter",
  348.   :reflection  => "Reflection", :substitute  => "Substitute",
  349.   :levelup     => "LEVELUP!"}
  350.   POPUP_VOCAB_PARAMS = [
  351.   "MAX\hp","MAX\mp","ATK","DEF","MATK","MDEF","AGI","LUCK"]
  352.   POPUP_COLOR = {
  353.   :hp_damage     => [Color.new(255, 255, 255), Color.new(  0,   0,   0)],
  354.   :critical      => [Color.new(255, 255,  80), Color.new(224,  32,   0)],
  355.   :weakness      => [Color.new(255, 255, 255), Color.new(  0,  56, 144)],
  356.   :resist        => [Color.new(232, 224, 216), Color.new( 56,  48,  40)],
  357.   :hp_recovery   => [Color.new( 96, 255, 128), Color.new(  0,  64,  32)],
  358.   :mp_damage     => [Color.new(248,  80, 172), Color.new( 48,   0,  32)],
  359.   :mp_recovery   => [Color.new(160, 240, 255), Color.new( 32,  48, 144)],
  360.   :tp_damage     => [Color.new(248, 240,  64), Color.new(  0,  80,  40)],
  361.   :add_state     => [Color.new(255, 255, 255), Color.new(  0,  56, 144)],
  362.   :rem_state     => [Color.new(224, 232, 240), Color.new( 32,  64, 128, 128)],
  363.   :add_badstate  => [Color.new(255, 255, 255), Color.new(  0,   0,   0)],
  364.   :rem_badstate  => [Color.new(224, 224, 224), Color.new( 32,  32,  32, 128)],
  365.   :add_buff      => [Color.new(255, 255, 192), Color.new( 96,  64,   0)],
  366.   :add_debuff    => [Color.new(200, 224, 232), Color.new( 40,  48,  56)],
  367.   :rem_buff      => [Color.new(224, 224, 224), Color.new( 32,  32,  32, 128)],
  368.   :counter       => [Color.new(255, 255, 224), Color.new(128,  96,   0)],
  369.   :reflection    => [Color.new(224, 255, 255), Color.new(  0,  96, 128)],
  370.   :substitute    => [Color.new(224, 255, 224), Color.new(  0, 128,  64)],
  371.   :levelup       => [Color.new(255, 255, 255), Color.new(  0,   0,   0)],
  372.   }
  373.   POPUP_TYPE = {
  374.   :miss          =>   0,:hp_damage     =>   0,:hp_slipdamage =>   1,
  375.   :hp_recovery   =>   0,:hp_regenerate =>   1,:hp_drain      =>   0,
  376.   :hp_drainrecv  =>   0,:mp_damage     =>   0,:mp_slipdamage =>   1,
  377.   :mp_recovery   =>   0,:mp_regenerate =>   1,:mp_drain      =>   0,
  378.   :mp_drainrecv  =>   0,:mp_paycost    =>  -1,:tp_damage     =>   1,
  379.   :tp_charge     =>  -1,:tp_gain       =>   7,:tp_regenerate =>   1,
  380.   :tp_paycost    =>  -1,:add_state     =>   2,:rem_state     =>   2,
  381.   :add_badstate  =>   2,:rem_badstate  =>   2,:add_debuff    =>   3,
  382.   :rem_buff      =>   3,:counter       =>   6,:reflection    =>   6,
  383.   :substitute    =>   4,}
  384.   LARGE_MOVEMENT = {
  385.   :inirate    => 6.4,  :gravity      => 0.68,  :side_scatter => 1.2,
  386.   :ref_height =>  32,  :ref_factor   => 0.60,  :ref_count    =>   2,
  387.                        :duration     =>   40,  :fadeout      =>  20 }
  388.   SMALL_MOVEMENT = {
  389.   :inirate    => 4.4,  :gravity      => 0.60,  :side_scatter => 0.0,
  390.   :ref_height =>  12,  :ref_factor   => 0.70,  :ref_count    =>   0,
  391.                        :duration     =>   60,  :fadeout      =>  16 }
  392.   RISE_MOVEMENT     = {:rising_speed => 0.75,  :line_spacing => 0.9,
  393.                        :duration     =>   40,  :fadeout      =>   8 }
  394.   SLIDE_MOVEMENT    = {:x_speed      =>    2,  :line_spacing => 0.9,
  395.                        :duration     =>   50,  :fadeout      =>  32 }
  396.   OVERLAY_MOVEMENT  = {:duration     =>   36,  :fadeout      =>  32 }
  397.   FIX_TARGET_CHECKE     = true
  398.   GUARD_TARGET_CHECKE   = true
  399.   SMART_TARGET_SELECT   = true
  400.   LAST_TARGET           = true
  401.   LAST_PARTY_COMMAND    = true
  402.   LAST_ACTOR_COMMAND    = true
  403.   TROOP_X_SORT          = true
  404.   PARTY_COMMAND_SKIP    = true
  405.   FITTING_LIST          = true
  406.   ENHANCED_WHITEN       = true
  407.   DISABLED_DAMAGE_SHAKE = true
  408.   TROOP_X_SCREEN_FIX    = true
  409.   TROOP_Y_OFFSET        = 0
  410.   end
  411.   # <<ver1.10>>
  412.   if !$lnx_include[:lnx11aconf] ||
  413.     $lnx_include[:lnx11aconf] && $lnx_include[:lnx11aconf] < 110
  414.   LARGE_NUMBER_NAME = ""
  415.   SMALL_NUMBER_NAME = ""
  416.   LARGE_BUFFS_NAME  = ""
  417.   SMALL_BUFFS_NAME  = ""
  418.   end
  419. end
  420.  
  421. #==============================================================================
  422. # ■ [追加]:Popup_Data
  423. #------------------------------------------------------------------------------
  424. #  戦闘中のポップアップをまとめて插うクラス。ポップアップスプライトの
  425. # initialize 时に自身を参照させて、ポップアップ内容を定义する际にも使います。
  426. #==============================================================================
  427.  
  428. class Popup_Data
  429.   #--------------------------------------------------------------------------
  430.   # ● クラス変数
  431.   #--------------------------------------------------------------------------
  432.   @@make_methods = {} # ポップアップ作成メソッドのハッシュ
  433.   #--------------------------------------------------------------------------
  434.   # ● 定数(ポップアップのタイプID)
  435.   #--------------------------------------------------------------------------
  436.   SPRING_LARGE  = 0
  437.   SPRING_SMALL  = 1
  438.   RISING_LARGE  = 2
  439.   RISING_SMALL  = 3
  440.   SLIDING_LARGE = 4
  441.   SLIDING_SMALL = 5
  442.   OVERLAY_LARGE = 6
  443.   OVERLAY_SMALL = 7
  444.   LEVELUP       = :levelup
  445.   #--------------------------------------------------------------------------
  446.   # ● 公开インスタンス変数
  447.   #--------------------------------------------------------------------------
  448.   attr_accessor :type       # ポップアップのタイプ
  449.   attr_accessor :popup      # 表示する内容
  450.   attr_accessor :popup_size # ポップアップの大きさ
  451.   attr_accessor :color      # 色
  452.   attr_accessor :deco       # 修饰文字
  453.   attr_accessor :battler    # ポップアップするバトラー
  454.   attr_accessor :delay      # 表示开始までの时间
  455.   attr_accessor :viewport   # ビューポート
  456.   attr_accessor :popup_wait # ポップアップウェイト
  457.   attr_accessor :buff_data  # 能力强化/弱体 <<ver1.10>>
  458.   #--------------------------------------------------------------------------
  459.   # ● オブジェクト初期化
  460.   #--------------------------------------------------------------------------
  461.   def initialize
  462.     @sprites = []
  463.     @viewport = Viewport.new
  464.     @viewport.z = 120 # ポップアップの Z 座标
  465.     spb = Sprite_PopupBase.new
  466.     spb.create_number
  467.     spb.dispose
  468.     set_methods
  469.     refresh
  470.   end
  471.   #--------------------------------------------------------------------------
  472.   # ● ポップアップ生成メソッドの登録
  473.   #--------------------------------------------------------------------------
  474.   def set_methods
  475.     @@make_methods[SPRING_LARGE]  = method(:makeup_spring_large)
  476.     @@make_methods[SPRING_SMALL]  = method(:makeup_spring_small)
  477.     @@make_methods[RISING_LARGE]  = method(:makeup_rising_large)
  478.     @@make_methods[RISING_SMALL]  = method(:makeup_rising_small)
  479.     @@make_methods[SLIDING_LARGE] = method(:makeup_sliding_large)
  480.     @@make_methods[SLIDING_SMALL] = method(:makeup_sliding_small)
  481.     @@make_methods[OVERLAY_LARGE] = method(:makeup_overlay_large)
  482.     @@make_methods[OVERLAY_SMALL] = method(:makeup_overlay_small)
  483.     @@make_methods[LEVELUP]       = method(:makeup_levelup)
  484.   end
  485.   #--------------------------------------------------------------------------
  486.   # ● スプライト解放
  487.   #--------------------------------------------------------------------------
  488.   def dispose
  489.     @sprites.each {|sprite| sprite.dispose}
  490.     @viewport.dispose
  491.   end
  492.   #--------------------------------------------------------------------------
  493.   # ● フレーム更新
  494.   #--------------------------------------------------------------------------
  495.   def update
  496.     @sprites.each do |sprite|
  497.       sprite.update
  498.       @sprites.delete(sprite) if sprite.disposed?
  499.     end
  500.   end
  501.   #--------------------------------------------------------------------------
  502.   # ● リフレッシュ
  503.   #--------------------------------------------------------------------------
  504.   def refresh
  505.     @type  = 0
  506.     @popup = nil
  507.     @popup_size = :large
  508.     [url=home.php?mod=space&uid=10453]@color[/url] = :hp_damage
  509.     @deco = ["", -1] # [テキスト, テキストの位置]
  510.     [url=home.php?mod=space&uid=133701]@battler[/url] = nil
  511.     @delay = 0
  512.     @popup_wait = false
  513.     # <<ver1.10>> 能力强化/弱体ポップアップを画像で表示する际に利用
  514.     @buff_data = [-1, -1] # [能力, 强化or弱体or解除]
  515.   end
  516.   #--------------------------------------------------------------------------
  517.   # ● ポップアップを生成
  518.   #--------------------------------------------------------------------------
  519.   def makeup
  520.     if @@make_methods[@type]
  521.       @@make_methods[@type].call
  522.       @popup_wait = true
  523.     end
  524.   end
  525.   #--------------------------------------------------------------------------
  526.   # ● ポップアップウェイト
  527.   #  バトルログタイプが [2:ヘルプ表示] の场合のみ実行されます。
  528.   #--------------------------------------------------------------------------
  529.   def add_wait
  530.     return if LNX11::BATTLELOG_TYPE != 2 || !@popup_wait
  531.     LNX11::POPUP_ADD_WAIT.times {BattleManager.log_window.abs_wait(1)}
  532.     @popup_wait = false
  533.   end
  534.   #--------------------------------------------------------------------------
  535.   # ● ポップアップ生成メソッド
  536.   #  これらのメソッドを @@make_methods に登録して呼び出します。
  537.   # これはポップアップタイプの拡张を容易にするための仕様です。
  538.   #--------------------------------------------------------------------------
  539.   def makeup_spring_large
  540.     # @type   0 : 跳ねるポップアップ(大)
  541.     @popup_size = :large
  542.     @sprites.push(Sprite_PopupSpring.new(self))
  543.   end
  544.   def makeup_spring_small
  545.     # @type   1 : 跳ねるポップアップ(小)
  546.     @popup_size = :small
  547.     @delay = @battler.popup_delay[1]
  548.     @sprites.push(Sprite_PopupSpring.new(self))
  549.   end
  550.   def makeup_rising_large
  551.     # @type   2 : ゆっくり上升(大)
  552.     @popup_size = :large
  553.     @delay = @battler.popup_delay[2]
  554.     @sprites.push(Sprite_PopupRising.new(self))
  555.   end
  556.   def makeup_rising_small
  557.     # @type   3 : ゆっくり上升(小)
  558.     @popup_size = :small      
  559.     @delay = @battler.popup_delay[2]
  560.     @sprites.push(Sprite_PopupRising.new(self))
  561.   end
  562.   def makeup_sliding_large
  563.     # @type   4 : スライド(大)
  564.     @popup_size = :large
  565.     @delay = @battler.popup_delay[3]
  566.     @sprites.push(Sprite_PopupSliding.new(self))
  567.   end
  568.   def makeup_sliding_small
  569.     # @type   5 : スライド(小)
  570.     @popup_size = :small
  571.     @delay = @battler.popup_delay[3]
  572.     @sprites.push(Sprite_PopupSliding.new(self))      
  573.   end
  574.   def makeup_overlay_large
  575.     # @type   6 : オーバーレイ(大)
  576.     @popup_size = :large
  577.     @sprites.push(Sprite_PopupOverlay.new(self))
  578.   end
  579.   def makeup_overlay_small
  580.     # @type   7 : オーバーレイ(小)
  581.     @popup_size = :small
  582.     @sprites.push(Sprite_PopupOverlay.new(self))
  583.   end
  584.   def makeup_levelup
  585.     # @type :levelup : レベルアップ
  586.     @battler.popup_delay[3] = 0
  587.     @popup_size = :large
  588.     @sprites.push(Sprite_PopupLevelUp.new(self))
  589.   end
  590.   #--------------------------------------------------------------------------
  591.   # ● TP のポップアップが有効か?
  592.   #--------------------------------------------------------------------------
  593.   def tp_popup_enabled?(target)
  594.     return false if !$data_system.opt_display_tp
  595.     return true  if LNX11::TP_POPUP_TYPE == 0 # すべてポップアップ
  596.     return true  if LNX11::TP_POPUP_TYPE == 1 && target.actor? # アクターのみ
  597.     false # ポップアップしない
  598.   end
  599.   #--------------------------------------------------------------------------
  600.   # ● 任意のポップアップ
  601.   #--------------------------------------------------------------------------
  602.   def popup_custom(target, popup, type = 0, color = :hp_damage, deco = nil)
  603.     refresh
  604.     @battler = target
  605.     @popup = popup
  606.     type = LNX11::POPUP_TYPE[type] if type.is_a?(Symbol)
  607.     @type = type
  608.     @color = color
  609.     @deco = LNX11::DECORATION_NUMBER[deco] if deco.is_a?(Symbol)
  610.     # ポップアップ作成
  611.     makeup
  612.   end
  613.   #--------------------------------------------------------------------------
  614.   # ● レベルアップのポップアップ
  615.   #--------------------------------------------------------------------------
  616.   def popup_levelup(target)
  617.     # 戦闘に参加している场合のみポップアップ
  618.     return unless $game_party.battle_members.include?(target)
  619.     refresh
  620.     @type = :levelup
  621.     @battler = target
  622.     @popup = LNX11::POPUP_VOCAB[:levelup]
  623.     @color = :levelup
  624.     # ポップアップ作成
  625.     makeup
  626.   end
  627.   #--------------------------------------------------------------------------
  628.   # ● 単一テキストのポップアップ
  629.   #--------------------------------------------------------------------------
  630.   def popup_text(target, type)
  631.     refresh
  632.     @type = LNX11::POPUP_TYPE[type]
  633.     @battler = target
  634.     @popup = LNX11::POPUP_VOCAB[type]
  635.     @color = type
  636.     # ポップアップ作成
  637.     makeup
  638.   end
  639.   #--------------------------------------------------------------------------
  640.   # ● ミスのポップアップ
  641.   #--------------------------------------------------------------------------
  642.   def popup_miss(target, item)
  643.     refresh
  644.     @type = LNX11::POPUP_TYPE[:miss]
  645.     @battler = target
  646.     @popup = LNX11::POPUP_VOCAB[:miss]
  647.     @color = :hp_damage
  648.     # ポップアップ作成
  649.     makeup
  650.   end
  651.   #--------------------------------------------------------------------------
  652.   # ● HP ダメージポップアップ
  653.   #--------------------------------------------------------------------------
  654.   def popup_hp_damage(target, item)
  655.     return if target.result.hp_damage == 0 && item && !item.damage.to_hp?
  656.     refresh
  657.     @popup = target.result.hp_damage
  658.     @battler = target
  659.     if target.result.hp_drain > 0
  660.       # 被吸収
  661.       @type = LNX11::POPUP_TYPE[:hp_drain]
  662.       # 弱点/耐性
  663.       if target.result.element_rate > 1
  664.         @deco = LNX11::DECORATION_NUMBER[:weakness]
  665.         @color = :weakness
  666.       elsif target.result.element_rate < 1
  667.         @deco = LNX11::DECORATION_NUMBER[:resist]
  668.         @color = :resist
  669.       else
  670.         @color = :hp_damage
  671.       end
  672.     elsif target.result.hp_damage > 0
  673.       # ダメージ
  674.       @type = LNX11::POPUP_TYPE[:hp_damage]
  675.       @color = :hp_damage
  676.       if target.result.critical
  677.         # クリティカル
  678.         @deco = LNX11::DECORATION_NUMBER[:critical]
  679.         @color = :critical
  680.       end
  681.       # 弱点/耐性
  682.       if target.result.element_rate > 1
  683.         @deco = LNX11::DECORATION_NUMBER[:weakness]
  684.         @color = :weakness if @color != :critical
  685.       elsif target.result.element_rate < 1
  686.         @deco = LNX11::DECORATION_NUMBER[:resist]
  687.         @color = :resist if @color != :critical
  688.       end
  689.     elsif target.result.hp_damage < 0
  690.       # 回复
  691.       @type = LNX11::POPUP_TYPE[:hp_recovery]
  692.       @color = :hp_recovery
  693.     else
  694.       # 0 ダメージ
  695.       @type = LNX11::POPUP_TYPE[:hp_damage]
  696.       @color = :hp_damage
  697.     end
  698.     # ポップアップ作成
  699.     makeup
  700.   end
  701.   #--------------------------------------------------------------------------
  702.   # ● MP ダメージポップアップ
  703.   #--------------------------------------------------------------------------
  704.   def popup_mp_damage(target, item)
  705.     return if target.dead? || target.result.mp_damage == 0
  706.     refresh
  707.     @popup = target.result.mp_damage
  708.     @battler = target
  709.     @deco = LNX11::DECORATION_NUMBER[:mp_damage]
  710.     if target.result.mp_drain > 0
  711.       # 被吸収
  712.       @type = LNX11::POPUP_TYPE[:mp_drain]
  713.       @color = :mp_damage
  714.     elsif target.result.mp_damage > 0
  715.       # ダメージ
  716.       @type = LNX11::POPUP_TYPE[:mp_damage]
  717.       @color = :mp_damage
  718.     elsif target.result.mp_damage < 0
  719.       # 回复
  720.       @type = LNX11::POPUP_TYPE[:mp_recovery]
  721.       @color = :mp_recovery
  722.     end
  723.     # ポップアップ作成
  724.     makeup
  725.   end
  726.   #--------------------------------------------------------------------------
  727.   # ● TP ダメージポップアップ
  728.   #--------------------------------------------------------------------------
  729.   def popup_tp_damage(target, item)
  730.     return unless tp_popup_enabled?(target)
  731.     return if target.dead? || target.result.tp_damage == 0
  732.     refresh
  733.     @popup = target.result.tp_damage
  734.     @battler = target
  735.     deco = target.result.tp_damage > 0 ? :tp_minus : :tp_plus
  736.     @deco = LNX11::DECORATION_NUMBER[deco]
  737.     @type = LNX11::POPUP_TYPE[:tp_damage]
  738.     @color = :tp_damage
  739.     # ポップアップ作成
  740.     makeup
  741.   end
  742.   #--------------------------------------------------------------------------
  743.   # ● HP 吸収回复
  744.   #--------------------------------------------------------------------------
  745.   def popup_hp_drain(target, hp_drain)
  746.     return if hp_drain == 0
  747.     refresh
  748.     @popup = hp_drain
  749.     @battler = target
  750.     @type = LNX11::POPUP_TYPE[:hp_drainrecv]
  751.     @color = :hp_recovery
  752.     # ポップアップ作成
  753.     makeup
  754.   end
  755.   #--------------------------------------------------------------------------
  756.   # ● MP 吸収回复
  757.   #--------------------------------------------------------------------------
  758.   def popup_mp_drain(target, mp_drain)
  759.     return if mp_drain == 0
  760.     refresh
  761.     @popup = mp_drain
  762.     @battler = target
  763.     @deco = LNX11::DECORATION_NUMBER[:mp_damage]
  764.     @type = LNX11::POPUP_TYPE[:mp_drainrecv]
  765.     @color = :mp_recovery
  766.     # ポップアップ作成
  767.     makeup
  768.   end
  769.   #--------------------------------------------------------------------------
  770.   # ● ステート付加のポップアップ
  771.   #--------------------------------------------------------------------------
  772.   def popup_added_states(target)
  773.     refresh
  774.     @battler = target
  775.     target.result.added_state_objects.each do |state|
  776.       next if state.id == target.death_state_id
  777.       next if state.icon_index == 0 && LNX11::INDEXZERO_NO_POPUP
  778.       next if state.add_no_display?      
  779.       if state.add_no_decoration?
  780.         @popup = state.add_display_name
  781.       else
  782.         @popup = sprintf(LNX11::DECORATION_TEXT[:add_state],
  783.                          state.add_display_name)
  784.       end
  785.       type = state.advantage? ? :add_state : :add_badstate
  786.       if state.add_popup_type
  787.         @type = state.add_popup_type
  788.       else
  789.         @type = LNX11::POPUP_TYPE[type]
  790.       end
  791.       @color = type
  792.       # ポップアップ作成
  793.       makeup
  794.     end
  795.   end
  796.   #--------------------------------------------------------------------------
  797.   # ● ステート解除のポップアップ
  798.   #--------------------------------------------------------------------------
  799.   def popup_removed_states(target)
  800.     refresh
  801.     @type = LNX11::POPUP_TYPE[:rem_badstate]
  802.     @battler = target
  803.     target.result.removed_state_objects.each do |state|
  804.       next if state.id == target.death_state_id
  805.       next if state.icon_index == 0 && LNX11::INDEXZERO_NO_POPUP
  806.       next if state.remove_no_display?
  807.       if state.remove_no_decoration?
  808.         @popup = state.remove_display_name
  809.       else
  810.         @popup = sprintf(LNX11::DECORATION_TEXT[:rem_state],
  811.                          state.remove_display_name)
  812.       end
  813.       type = state.advantage? ? :rem_state : :rem_badstate
  814.       if state.remove_popup_type
  815.         @type = state.remove_popup_type
  816.       else
  817.         @type = LNX11::POPUP_TYPE[type]
  818.       end
  819.       @color = type
  820.       # ポップアップ作成
  821.       makeup
  822.     end
  823.   end
  824.   #--------------------------------------------------------------------------
  825.   # ● 能力强化/弱体のポップアップ
  826.   #--------------------------------------------------------------------------
  827.   def popup_buffs(target, buffs, fmt)
  828.     return if buffs.empty?
  829.     refresh
  830.     @battler = target
  831.     case fmt
  832.     when Vocab::BuffAdd
  833.       buffdeco = LNX11::DECORATION_TEXT[:add_buff]
  834.       @type = LNX11::POPUP_TYPE[:add_buff]
  835.       @color = :add_buff
  836.       @buff_data[1] = 0
  837.     when Vocab::DebuffAdd
  838.       buffdeco = LNX11::DECORATION_TEXT[:add_debuff]
  839.       @type = LNX11::POPUP_TYPE[:add_debuff]
  840.       @color = :add_debuff
  841.       @buff_data[1] = 1
  842.     when Vocab::BuffRemove
  843.       buffdeco = LNX11::DECORATION_TEXT[:rem_buff]
  844.       @type = LNX11::POPUP_TYPE[:rem_buff]
  845.       @color = :rem_buff
  846.       @buff_data[1] = 2
  847.     end
  848.     buffs.each do |param_id|
  849.       @popup = sprintf(buffdeco, LNX11::POPUP_VOCAB_PARAMS[param_id])
  850.       @buff_data[0] = param_id
  851.       # ポップアップ作成
  852.       makeup
  853.       @popup_wait = false
  854.     end
  855.   end
  856.   #--------------------------------------------------------------------------
  857.   # ● HP 再生
  858.   #--------------------------------------------------------------------------
  859.   def popup_regenerate_hp(target, hp_damage, paycost = false)
  860.     return if hp_damage == 0
  861.     refresh
  862.     @popup = hp_damage
  863.     @battler = target
  864.     if hp_damage > 0
  865.       # ダメージ
  866.       @type = LNX11::POPUP_TYPE[:hp_slipdamage]
  867.       @color = :hp_damage
  868.     elsif hp_damage < 0
  869.       # 回复
  870.       @type = LNX11::POPUP_TYPE[:hp_regenerate]
  871.       @color = :hp_recovery
  872.     end
  873.     # ポップアップ作成
  874.     makeup
  875.   end
  876.   #--------------------------------------------------------------------------
  877.   # ● MP 再生
  878.   #--------------------------------------------------------------------------
  879.   def popup_regenerate_mp(target, mp_damage, paycost = false)
  880.     return if mp_damage == 0
  881.     refresh
  882.     @popup = mp_damage
  883.     @battler = target
  884.     @deco = LNX11::DECORATION_NUMBER[mp_damage > 0 ? :mp_minus : :mp_plus]
  885.     if mp_damage > 0
  886.       # ダメージ
  887.       @type = LNX11::POPUP_TYPE[paycost ? :mp_paycost : :mp_slipdamage]
  888.       @color = :mp_damage
  889.     elsif mp_damage < 0
  890.       # 回复
  891.       @type = LNX11::POPUP_TYPE[paycost ? :mp_paycost : :mp_regenerate]
  892.       @color = :mp_recovery
  893.     end
  894.     # ポップアップ作成
  895.     makeup
  896.   end
  897.   #--------------------------------------------------------------------------
  898.   # ● TP 再生
  899.   #--------------------------------------------------------------------------
  900.   def popup_regenerate_tp(target, tp_damage, paycost = false)
  901.     return unless tp_popup_enabled?(target)
  902.     return if tp_damage == 0
  903.     refresh
  904.     @popup = tp_damage
  905.     @battler = target
  906.     @deco = LNX11::DECORATION_NUMBER[tp_damage > 0 ? :tp_minus : :tp_plus]
  907.     @type = LNX11::POPUP_TYPE[paycost ? :tp_paycost : :tp_regenerate]
  908.     @color = :tp_damage
  909.     # ポップアップ作成
  910.     makeup
  911.   end
  912.   #--------------------------------------------------------------------------
  913.   # ● TP チャージ
  914.   #--------------------------------------------------------------------------
  915.   def popup_tp_charge(target, tp_damage)
  916.     return unless tp_popup_enabled?(target)
  917.     return if tp_damage == 0
  918.     refresh
  919.     @popup = tp_damage
  920.     @battler = target
  921.     @deco = LNX11::DECORATION_NUMBER[tp_damage > 0 ? :tp_minus : :tp_plus]
  922.     @type = LNX11::POPUP_TYPE[:tp_charge]
  923.     @color = :tp_damage
  924.     # ポップアップ作成
  925.     makeup
  926.   end
  927.   #--------------------------------------------------------------------------
  928.   # ● TP 得
  929.   #--------------------------------------------------------------------------
  930.   def popup_tp_gain(target, tp_damage)
  931.     return unless tp_popup_enabled?(target)
  932.     return if tp_damage == 0
  933.     refresh
  934.     @popup = tp_damage
  935.     @battler = target
  936.     @deco = LNX11::DECORATION_NUMBER[tp_damage > 0 ? :tp_minus : :tp_plus]
  937.     @type = LNX11::POPUP_TYPE[:tp_gain]
  938.     @color = :tp_damage
  939.     # ポップアップ作成
  940.     makeup
  941.   end
  942. end
  943.  
  944. #==============================================================================
  945. # ■ [追加]:Sprite_PopupBase
  946. #------------------------------------------------------------------------------
  947. #  戦闘中のダメージ表示等をポップアップ表示するためのスプライトの
  948. # スーパークラス。サブクラスで细かい动きを定义します。
  949. #==============================================================================
  950.  
  951. class Sprite_PopupBase < Sprite
  952.   #--------------------------------------------------------------------------
  953.   # ● クラス変数
  954.   #--------------------------------------------------------------------------
  955.   @@cache_number = []
  956.   @@cache_text   = {}
  957.   @@w = []
  958.   @@h = []
  959.   @@priority = 0
  960.   @@count    = 0
  961.   @@buf_bitmap = nil
  962.   #--------------------------------------------------------------------------
  963.   # ● 定数
  964.   #--------------------------------------------------------------------------
  965.   NUMBER_COLOR_SIZE = 8
  966.   NUMBERS    = [0,1,2,3,4,5,6,7,8,9]
  967.   COLOR_KEYS = LNX11::POPUP_COLOR.keys
  968.   #--------------------------------------------------------------------------
  969.   # ● オブジェクト初期化
  970.   #     data : ポップアップデータ
  971.   #--------------------------------------------------------------------------
  972.   def initialize(data = nil)
  973.     return if data == nil
  974.     # ポップアップデータを适用
  975.     super(data.viewport)
  976.     @battler = data.battler # ポップアップを表示するバトラー
  977.     @delay   = data.delay   # ディレイ(遅延) ※サブクラスによって插いが违います
  978.     @popup_size = data.popup_size # ポップアップの大きさ 大/小
  979.     # 基本设定
  980.     @duration = 60  # 消え始める时间
  981.     @fadeout  = 16  # 消える速さ
  982.     @rx = ry  = 0   # XY座标
  983.     # Z座标
  984.     @rz = base_z * 128 + priority
  985.     popup_add
  986.     self.visible = false
  987.     # ポップアップデータからビットマップを作成
  988.     if data.popup.is_a?(Numeric)
  989.       # ダメージ値
  990.       self.bitmap = number(data.popup, data.color, data.popup_size, data.deco)
  991.     elsif data.popup.is_a?(String)
  992.       # テキスト
  993.       self.bitmap = text(data.popup, data.color,
  994.                          data.popup_size, data.buff_data)
  995.     end
  996.     # 位置设定
  997.     self.ox = self.width  / 2
  998.     self.oy = self.height / 2
  999.     set_position
  1000.     start
  1001.   end
  1002.   #--------------------------------------------------------------------------
  1003.   # ● 解放
  1004.   #--------------------------------------------------------------------------
  1005.   def dispose
  1006.     popup_remove
  1007.     terminate
  1008.     self.bitmap.dispose if self.bitmap
  1009.     super
  1010.   end
  1011.   #--------------------------------------------------------------------------
  1012.   # ● フレーム更新
  1013.   #--------------------------------------------------------------------------
  1014.   def update
  1015.     return if delay?
  1016.     update_popup
  1017.     update_xy
  1018.     @duration -= 1
  1019.     self.opacity -= @fadeout if @duration <= 0
  1020.     dispose if self.opacity == 0
  1021.   end
  1022.   #--------------------------------------------------------------------------
  1023.   # ● 开始処理(サブクラスで定义)
  1024.   #--------------------------------------------------------------------------
  1025.   def start
  1026.   end
  1027.   #--------------------------------------------------------------------------
  1028.   # ● 终了処理(サブクラスで定义)
  1029.   #--------------------------------------------------------------------------
  1030.   def terminate
  1031.   end
  1032.   #--------------------------------------------------------------------------
  1033.   # ● フレーム更新(サブクラスで定义)
  1034.   #--------------------------------------------------------------------------
  1035.   def update_popup
  1036.   end
  1037.   #--------------------------------------------------------------------------
  1038.   # ● ポップアップ Z 座标
  1039.   #--------------------------------------------------------------------------
  1040.   def base_z
  1041.     0
  1042.   end
  1043.   #--------------------------------------------------------------------------
  1044.   # ● ポップアップのプライオリティを返す
  1045.   #  同一Z座标のポップアップで、后から生成されたものが手前に表示されるように
  1046.   # Z座标の修正値をクラス変数で管理しています。
  1047.   #--------------------------------------------------------------------------
  1048.   def priority
  1049.     @@priority * 2
  1050.   end
  1051.   #--------------------------------------------------------------------------
  1052.   # ● ポップアップ追加
  1053.   #--------------------------------------------------------------------------
  1054.   def popup_add
  1055.     @@priority += 1
  1056.     @@count += 1
  1057.   end
  1058.   #--------------------------------------------------------------------------
  1059.   # ● ポップアップ消去
  1060.   #--------------------------------------------------------------------------
  1061.   def popup_remove
  1062.     @@count -= 1
  1063.     @@priority = 0 if @@count <= 0
  1064.   end
  1065.  
  1066.   #--------------------------------------------------------------------------
  1067.   # ● ディレイが残っている?
  1068.   #  サブクラスの update メソッドで使用します。
  1069.   #--------------------------------------------------------------------------
  1070.   def delay?
  1071.     @delay -= 1
  1072.     self.visible = (@delay <= 0)
  1073.     !self.visible
  1074.   end
  1075.   #--------------------------------------------------------------------------
  1076.   # ● 座标更新
  1077.   #--------------------------------------------------------------------------
  1078.   def update_xy
  1079.     self.x = @rx
  1080.     self.y = @ry
  1081.     self.z = @rz
  1082.   end
  1083.   #--------------------------------------------------------------------------
  1084.   # ● ポップアップ位置の设定
  1085.   #--------------------------------------------------------------------------
  1086.   def set_position
  1087.     @rx = @battler.screen_x
  1088.     if @battler.actor?
  1089.       pos = LNX11::ACTOR_POPUP_POSITION
  1090.     else
  1091.       pos = [LNX11::ENEMY_POPUP_POSITION, 2].min
  1092.     end
  1093.     case pos
  1094.     when 0 ; @ry = @battler.screen_y        # 足元
  1095.     when 1 ; @ry = @battler.screen_y_center # 中心
  1096.     when 2 ; @ry = @battler.screen_y_top    # 头上
  1097.     when 3 ; @ry = Graphics.height + LNX11::ACTOR_POPUP_Y # Y座标统一(アクター)
  1098.     end
  1099.   end
  1100.   #--------------------------------------------------------------------------
  1101.   # ● 描画するテキストの矩形を取得
  1102.   #--------------------------------------------------------------------------
  1103.   def text_size(str, name, size, bold = false)
  1104.     @@buf_bitmap = Bitmap.new(4, 4) if !@@buf_bitmap || @@buf_bitmap.disposed?
  1105.     @@buf_bitmap.font.name = name
  1106.     @@buf_bitmap.font.size = size
  1107.     @@buf_bitmap.font.bold = bold
  1108.     return @@buf_bitmap.text_size(str)
  1109.   end
  1110.   #--------------------------------------------------------------------------
  1111.   # ● 数字ビットマップの取得
  1112.   #--------------------------------------------------------------------------
  1113.   def bitmap_number(size = :large)
  1114.     return @@cache_number[size == :large ? 0 : 1]
  1115.   end
  1116.   #--------------------------------------------------------------------------
  1117.   # ● 数字ビットマップキャッシュの作成
  1118.   #--------------------------------------------------------------------------
  1119.   def create_number
  1120.     return if @@cache_number[0] && !@@cache_number[0].disposed?
  1121.     n_index = NUMBER_COLOR_SIZE
  1122.     @@cache_number.clear
  1123.     colors = LNX11::POPUP_COLOR.values # 色
  1124.     name = LNX11::NUMBER_FONT
  1125.     # 大・小の 2 パターンを作成する(ループ)
  1126.     [LNX11::LARGE_NUMBER, LNX11::SMALL_NUMBER].each_with_index do |n_size, i|
  1127.       next if get_number(i)
  1128.       size = n_size[:fontsize]
  1129.       # 数字の幅・高さ
  1130.       w = NUMBERS.collect{|n| text_size(n.to_s, name, size).width}.max + 4
  1131.       nh = NUMBERS.collect{|n| text_size(n.to_s, name, size).height}.max
  1132.       h = n_size[:line_height]
  1133.       @@w[i] = w
  1134.       @@h[i] = h
  1135.       # ビットマップ作成
  1136.       bitmap = Bitmap.new(w * NUMBERS.size, h * [colors.size, n_index].min)
  1137.       bitmap.font.name = LNX11::NUMBER_FONT
  1138.       bitmap.font.size = n_size[:fontsize]
  1139.       y = ((h - nh) / 2) - 1
  1140.       # 色ごとに分けて描画する(ループ)
  1141.       n_index.times do |col|
  1142.         # 色を変更
  1143.         bitmap.font.color.set(colors[col][0])
  1144.         bitmap.font.out_color.set(colors[col][1])
  1145.         # 文字ごとに分けて描画(ループ)
  1146.         NUMBERS.size.times do |num|
  1147.           bitmap.draw_text(num * w, (col * h) + y, w, nh, NUMBERS[num], 2)
  1148.         end
  1149.       end
  1150.       @@cache_number.push(bitmap)
  1151.     end
  1152.     p "LNX11a:数字ビットマップのキャッシュを作成しました。"
  1153.     # 数字ビットマップを表示する(テスト用)
  1154.     # s = Sprite.new
  1155.     # s.z = 1000000
  1156.     # s.bitmap = @@cache_number[1] # 0 or 1
  1157.     # loop do Graphics.update end
  1158.   end
  1159.   #--------------------------------------------------------------------------
  1160.   # ● 数字ビットマップの取得
  1161.   #--------------------------------------------------------------------------
  1162.   def get_number(i)
  1163.     case i
  1164.     when 0 # 大
  1165.       return false if LNX11::LARGE_NUMBER_NAME.empty?
  1166.       bitmap = Cache.system(LNX11::LARGE_NUMBER_NAME)
  1167.     when 1 # 小
  1168.       return false if LNX11::SMALL_NUMBER_NAME.empty?
  1169.       bitmap = Cache.system(LNX11::SMALL_NUMBER_NAME)
  1170.     end
  1171.     @@cache_number.push(bitmap)
  1172.     @@w[i] = bitmap.width / NUMBERS.size
  1173.     @@h[i] = bitmap.height / NUMBER_COLOR_SIZE
  1174.     true
  1175.   end
  1176.   #--------------------------------------------------------------------------
  1177.   # ● ダメージ数を描画したビットマップの取得
  1178.   #--------------------------------------------------------------------------
  1179.   def number(num, color, size = :large, deco = nil)
  1180.     # 数値を文字列の配列にする
  1181.     numbers = (num.abs.to_s).split(//)
  1182.     # 色番号を取得
  1183.     color_index = COLOR_KEYS.index(color)
  1184.     # ポップアップサイズを设定
  1185.     n_bitmap = bitmap_number(size)
  1186.     if size == :large
  1187.       n_size = LNX11::LARGE_NUMBER
  1188.       i = 0
  1189.     else
  1190.       n_size = LNX11::SMALL_NUMBER
  1191.       i = 1
  1192.     end
  1193.     spacing = n_size[:spacing]
  1194.     w = @@w[i]
  1195.     h = @@h[i]
  1196.     # ダメージ値のビットマップサイズ
  1197.     @bw = w * numbers.size + spacing * (numbers.size - 1)
  1198.     @bh = h
  1199.     # 修饰文字の描画
  1200.     @offset_x = @offset_y = 0
  1201.     text_bitmap = deco_text(deco,color,n_size[:fontsize]) if deco[1] >= 0
  1202.     # ビットマップを作成
  1203.     bitmap = Bitmap.new(@bw, @bh)
  1204.     # 涂りつぶし(テスト用)
  1205.     # bitmap.fill_rect(bitmap.rect, Color.new(0,0,0,128))
  1206.     # ダメージ値を描画
  1207.     rect = Rect.new(0, h * color_index, w, h)
  1208.     numbers.size.times do |n|
  1209.       rect.x = numbers[n].to_i * w
  1210.       bitmap.blt(w * n + spacing * n + @offset_x, @offset_y, n_bitmap, rect)
  1211.     end
  1212.     # 修饰文字の描画をコールバック
  1213.     @decoblt.call(bitmap) if @decoblt
  1214.     @decoblt = nil
  1215.     # ビットマップを返す
  1216.     bitmap
  1217.   end
  1218.   #--------------------------------------------------------------------------
  1219.   # ● 修饰文字の描画
  1220.   #--------------------------------------------------------------------------
  1221.   def deco_text(deco, color, sizerate)
  1222.     # 元の幅・高さ
  1223.     ow = @bw
  1224.     oh = @bh
  1225.     case deco[1]   
  1226.     when 2 # ダメージ値の下
  1227.       # テキストのビットマップを取得
  1228.       size = decosize(deco[0], sizerate, :top_bottom)
  1229.       text_bitmap = text(deco[0], color, size)
  1230.       # テキストの幅・高さ
  1231.       tw = text_bitmap.width
  1232.       th = text_bitmap.height * 0.8
  1233.       # 最终的なビットマップのサイズ
  1234.       @bw = [@bw, tw].max
  1235.       @bh += th
  1236.       # ダメージ値の描画位置の修正
  1237.       @offset_x = (@bw - ow) / 2
  1238.       @offset_y = 0
  1239.       # 修饰文字の描画位置を设定
  1240.       x = (@bw - tw) / 2
  1241.       y = oh * 0.8
  1242.     when 4 # ダメージ値の左
  1243.       # テキストのビットマップを取得
  1244.       size = decosize(deco[0], sizerate, :left_right)
  1245.       text_bitmap = text(deco[0], color, size)
  1246.       # テキストの幅・高さ
  1247.       tw = text_bitmap.width
  1248.       th = text_bitmap.height
  1249.       # 最终的なビットマップのサイズ
  1250.       @bw += tw
  1251.       @bh = [@bh, th].max
  1252.       # ダメージ値の描画位置の修正
  1253.       @offset_x = tw
  1254.       @offset_y = (@bh - oh) / 2
  1255.       # 修饰文字の描画位置を设定
  1256.       x = 2
  1257.       y = (@bh - th) / 2
  1258.     when 6 # ダメージ値の右
  1259.       # テキストのビットマップを取得
  1260.       size = decosize(deco[0], sizerate, :left_right)
  1261.       text_bitmap = text(deco[0], color, size)
  1262.       # テキストの幅・高さ
  1263.       tw = text_bitmap.width
  1264.       th = text_bitmap.height
  1265.       # 最终的なビットマップのサイズ
  1266.       @bw += tw
  1267.       @bh = [@bh, th].max
  1268.       # ダメージ値の描画位置の修正
  1269.       @offset_x = 0
  1270.       @offset_y = (@bh - oh) / 2
  1271.       # 修饰文字の描画位置を设定
  1272.       x = ow
  1273.       y = (@bh - th) / 2
  1274.     when 8 # ダメージ値の上
  1275.       # テキストのビットマップを取得
  1276.       size = decosize(deco[0], sizerate, :top_bottom)
  1277.       text_bitmap = text(deco[0], color, size)
  1278.       # テキストの幅・高さ
  1279.       tw = text_bitmap.width
  1280.       th = text_bitmap.height * 0.8
  1281.       # 最终的なビットマップのサイズ
  1282.       @bw = [@bw, tw].max
  1283.       @bh += th
  1284.       # ダメージ値の描画位置の修正
  1285.       @offset_x = (@bw - ow) / 2
  1286.       @offset_y = @bh - oh
  1287.       # 修饰文字の描画位置を设定
  1288.       x = (@bw - tw) / 2
  1289.       y = 0
  1290.     end
  1291.     # 修饰文字の描画(コールバック)
  1292.     @decoblt = Proc.new {|bitmap|
  1293.     bitmap.blt(x, y, text_bitmap, text_bitmap.rect)
  1294.     text_bitmap.dispose}
  1295.     return text_bitmap
  1296.   end
  1297.   #--------------------------------------------------------------------------
  1298.   # ● 修饰文字のサイズ
  1299.   #--------------------------------------------------------------------------
  1300.   def decosize(text, size, pos)
  1301.     if text.length != text.bytesize
  1302.       return size * LNX11::TEXT_SIZERATE[pos] * LNX11::TEXT_SIZERATE_MCS
  1303.     else
  1304.       return size * LNX11::TEXT_SIZERATE[pos]
  1305.     end
  1306.   end
  1307.   #--------------------------------------------------------------------------
  1308.   # ● テキストを描画したビットマップの取得
  1309.   #  ステートやダメージ値の修饰文字の描画に使用します。
  1310.   #--------------------------------------------------------------------------
  1311.   def text(text, color, size = :large, buff_data = [-1, -1])
  1312.     # キャッシュがあればそれを返す(无ければ作成)
  1313.     key = text + color.to_s + size.to_s
  1314.     if @@cache_text[key] && !@@cache_text[key].disposed?
  1315.       return @@cache_text[key].clone
  1316.     end
  1317.     # 用语の置き换え
  1318.     text.gsub!("\hp") { Vocab::hp_a } if text.include?("\hp")
  1319.     text.gsub!("\mp") { Vocab::mp_a } if text.include?("\mp")
  1320.     text.gsub!("\tp") { Vocab::tp_a } if text.include?("\tp")
  1321.     # <<ver1.10>> テキストの头に _ があれば対応する画像ファイルを参照する
  1322.     if text[/^[\_]./]
  1323.       bitmap = get_text_bitmap(text, color, size)
  1324.       # キャッシュに保存
  1325.       @@cache_text[key] = bitmap
  1326.       # ビットマップを返す
  1327.       return bitmap.clone
  1328.     end
  1329.     # <<ver1.10>>
  1330.     # 能力强化/弱体のポップアップで、ファイル名が指定されていればそれを返す
  1331.     if buff_data[0] >= 0 &&
  1332.       (size == :large && !LNX11::LARGE_BUFFS_NAME.empty?) ||
  1333.       (size == :small && !LNX11::SMALL_BUFFS_NAME.empty?)
  1334.       bitmap = get_buff_bitmap(buff_data, size)
  1335.       # キャッシュに保存
  1336.       @@cache_text[key] = bitmap
  1337.       # ビットマップを返す
  1338.       return bitmap.clone
  1339.     end
  1340.     # テキストにマルチバイト文字があれば日本语用フォントを使う
  1341.     if text.length != text.bytesize
  1342.       fontname = LNX11::TEXT_FONT_MCS
  1343.       sizerate = LNX11::TEXT_SIZERATE[:normal] * LNX11::TEXT_SIZERATE_MCS
  1344.     else
  1345.       fontname = LNX11::TEXT_FONT
  1346.       sizerate = LNX11::TEXT_SIZERATE[:normal]
  1347.     end
  1348.     # ポップアップサイズを设定
  1349.     case size
  1350.     when :large ; fontsize = LNX11::LARGE_NUMBER[:fontsize] * sizerate
  1351.     when :small ; fontsize = LNX11::SMALL_NUMBER[:fontsize] * sizerate
  1352.     else        ; fontsize = size
  1353.     end
  1354.     # テキストサイズ计算
  1355.     rect = text_size(text, fontname, fontsize)
  1356.     rect.width += 2
  1357.     # ビットマップを作成
  1358.     bitmap = Bitmap.new(rect.width, rect.height)
  1359.     # 涂りつぶし(テスト用)
  1360.     # bitmap.fill_rect(bitmap.rect, Color.new(0,0,0,128))
  1361.     # フォント设定
  1362.     bitmap.font.name = fontname
  1363.     bitmap.font.size = fontsize
  1364.     bitmap.font.color.set(LNX11::POPUP_COLOR[color][0])
  1365.     bitmap.font.out_color.set(LNX11::POPUP_COLOR[color][1])
  1366.     # テキスト描画
  1367.     bitmap.draw_text(rect, text, 1)
  1368.     # キャッシュに保存
  1369.     @@cache_text[key] = bitmap
  1370.     # ビットマップを返す
  1371.     bitmap.clone
  1372.   end
  1373.   #--------------------------------------------------------------------------
  1374.   # ● 能力强化/弱体ビットマップの取得 <<ver1.10>>
  1375.   #--------------------------------------------------------------------------
  1376.   def get_buff_bitmap(buff_data, size)
  1377.     case size
  1378.     when :large ; src_bitmap = Cache.system(LNX11::LARGE_BUFFS_NAME)
  1379.     when :small ; src_bitmap = Cache.system(LNX11::SMALL_BUFFS_NAME)
  1380.     end
  1381.     src_rect = Rect.new
  1382.     src_rect.width  = src_bitmap.width  / 2
  1383.     src_rect.height = src_bitmap.height / 12
  1384.     src_rect.x = (buff_data[0] / 4) * src_rect.width
  1385.     src_rect.y = (buff_data[0] % 4) * src_rect.height * 3 +
  1386.                   buff_data[1] * src_rect.height
  1387.     bitmap = Bitmap.new(src_rect.width, src_rect.height)
  1388.     bitmap.blt(0, 0, src_bitmap, src_rect)
  1389.     bitmap
  1390.   end
  1391.   #--------------------------------------------------------------------------
  1392.   # ● テキストビットマップの取得 <<ver1.10>>
  1393.   #--------------------------------------------------------------------------
  1394.   def get_text_bitmap(text, color, size)
  1395.     # クリティカルカラーかつ、弱点/耐性なら参照するビットマップを変更
  1396.     if LNX11::POPUP_COLOR[color] == LNX11::POPUP_COLOR[:critical] &&
  1397.       (text == LNX11::DECORATION_NUMBER[:weakness][0] ||
  1398.        text == LNX11::DECORATION_NUMBER[:resist][0])
  1399.       # ファイル名に _critcolor を加える
  1400.       text += "_critcolor"
  1401.     end
  1402.     # MPダメージ/回复(符号なし)なら参照するビットマップを変更
  1403.     if text == LNX11::DECORATION_NUMBER[:mp_damage][0]
  1404.       # カラーに応じてファイル名を変更
  1405.       case LNX11::POPUP_COLOR[color]
  1406.       when LNX11::POPUP_COLOR[:mp_damage]   ; text += "_damage"
  1407.       when LNX11::POPUP_COLOR[:mp_recovery] ; text += "_recovery"
  1408.       end
  1409.     end
  1410.     # popup_xxxxxx_(large or small)
  1411.     Cache.system("popup" + text + (size == :large ? "_large" : "_small"))
  1412.   end
  1413. end
  1414.  
  1415. #==============================================================================
  1416. # ■ [追加]:Sprite_PopupSpring
  1417. #------------------------------------------------------------------------------
  1418. #  通常の跳ねるポップアップ。
  1419. #==============================================================================
  1420.  
  1421. class Sprite_PopupSpring < Sprite_PopupBase
  1422.   #--------------------------------------------------------------------------
  1423.   # ● ポップアップ Z 座标
  1424.   #--------------------------------------------------------------------------
  1425.   def base_z
  1426.     14
  1427.   end
  1428.   #--------------------------------------------------------------------------
  1429.   # ● 开始処理
  1430.   #--------------------------------------------------------------------------
  1431.   def start
  1432.     # 动き设定
  1433.     set_movement
  1434.     # ディレイ设定 同じタイプのポップアップが重ならないようにする
  1435.     if @popup_size == :small
  1436.       self.oy -= @battler.popup_delay[1]
  1437.       @delay_clear = (@delay == 0)
  1438.       dy = self.bitmap.height * 0.8
  1439.       @battler.popup_delay[1] += dy
  1440.       @delay = 0
  1441.     end
  1442.   end
  1443.   #--------------------------------------------------------------------------
  1444.   # ● 终了処理
  1445.   #--------------------------------------------------------------------------  
  1446.   def terminate
  1447.     # 一番上のポップアップなら、ディレイを初期化する
  1448.     @battler.popup_delay[1] = 0 if @delay_clear
  1449.   end
  1450.   #--------------------------------------------------------------------------
  1451.   # ● 投射运动の设定
  1452.   #--------------------------------------------------------------------------
  1453.   def set_movement
  1454.     if @popup_size == :large
  1455.       movement = LNX11::LARGE_MOVEMENT
  1456.     else
  1457.       movement = LNX11::SMALL_MOVEMENT
  1458.     end
  1459.     [url=home.php?mod=space&uid=287440]@fall[/url]       = -movement[:inirate]
  1460.     @gravity    =  movement[:gravity]
  1461.     @side       =  movement[:side_scatter] * rand(0) * (rand(2) == 0 ? -1 : 1)
  1462.     @ref_move   =  movement[:ref_height]
  1463.     @ref_factor =  movement[:ref_factor]
  1464.     @ref_count  =  movement[:ref_count]
  1465.     @duration   =  movement[:duration]
  1466.     @fadeout    =  movement[:fadeout]
  1467.   end
  1468.   #--------------------------------------------------------------------------
  1469.   # ● フレーム更新
  1470.   #--------------------------------------------------------------------------
  1471.   def update_popup
  1472.     update_freefall
  1473.   end
  1474.   #--------------------------------------------------------------------------
  1475.   # ● 投射运动の更新
  1476.   #--------------------------------------------------------------------------
  1477.   def update_freefall
  1478.     if @ref_count >= 0
  1479.       # X:左右移动
  1480.       @rx += @side
  1481.       # Y:自由落下
  1482.       @ry += @fall
  1483.       @ref_move -= @fall
  1484.       @fall += @gravity
  1485.       # 跳ね返り
  1486.       if @ref_move <= 0 && @fall >= 0
  1487.         @ref_count -= 1
  1488.         @fall = -@fall * @ref_factor
  1489.       end      
  1490.     end
  1491.   end
  1492. end
  1493.  
  1494. #==============================================================================
  1495. # ■ [追加]:Sprite_PopupRising
  1496. #------------------------------------------------------------------------------
  1497. #  少しずつ上升するポップアップ。
  1498. #==============================================================================
  1499.  
  1500. class Sprite_PopupRising < Sprite_PopupBase
  1501.   #--------------------------------------------------------------------------
  1502.   # ● ポップアップ Z 座标
  1503.   #--------------------------------------------------------------------------
  1504.   def base_z
  1505.     6
  1506.   end
  1507.   #--------------------------------------------------------------------------
  1508.   # ● 开始処理
  1509.   #--------------------------------------------------------------------------
  1510.   def start
  1511.     # 动き设定
  1512.     set_movement
  1513.     self.opacity = 0
  1514.     d = self.bitmap.height * LNX11::RISE_MOVEMENT[:line_spacing]
  1515.     @delay_count = d / @rising_speed
  1516.     @battler.popup_delay[2] += @delay_count
  1517.   end
  1518.   #--------------------------------------------------------------------------
  1519.   # ● 动きの设定
  1520.   #--------------------------------------------------------------------------
  1521.   def set_movement
  1522.     @rising_speed = LNX11::RISE_MOVEMENT[:rising_speed]
  1523.     @duration = LNX11::RISE_MOVEMENT[:duration]
  1524.     @fadeout  = LNX11::RISE_MOVEMENT[:fadeout]
  1525.   end
  1526.   #--------------------------------------------------------------------------
  1527.   # ● フレーム更新
  1528.   #--------------------------------------------------------------------------
  1529.   def update_popup
  1530.     @delay_count -= 1
  1531.     @battler.popup_delay[2] -= 1 if @delay_count >= 0
  1532.     @ry -= @rising_speed # すこしずつ上升
  1533.     self.opacity += 32 if @duration > 0
  1534.   end
  1535. end
  1536.  
  1537. #==============================================================================
  1538. # ■ [追加]:Sprite_PopupSliding
  1539. #------------------------------------------------------------------------------
  1540. #  スライド表示するポップアップ。
  1541. #==============================================================================
  1542.  
  1543. class Sprite_PopupSliding < Sprite_PopupBase
  1544.   #--------------------------------------------------------------------------
  1545.   # ● ポップアップ Z 座标
  1546.   #--------------------------------------------------------------------------
  1547.   def base_z
  1548.     8
  1549.   end
  1550.   #--------------------------------------------------------------------------
  1551.   # ● 开始処理
  1552.   #--------------------------------------------------------------------------
  1553.   def start
  1554.     # 动き设定
  1555.     set_movement
  1556.     d = self.bitmap.height * LNX11::SLIDE_MOVEMENT[:line_spacing]
  1557.     self.oy += @delay + d / 2 if @delay > 0
  1558.     self.opacity = 0
  1559.     # ディレイ设定 同じタイプのポップアップが重ならないようにする
  1560.     @delay_clear = (@delay == 0)
  1561.     @battler.popup_delay[3] += (@delay <= 0 ? d / 2 : d)
  1562.     @delay = 0
  1563.   end
  1564.   #--------------------------------------------------------------------------
  1565.   # ● 终了処理
  1566.   #--------------------------------------------------------------------------  
  1567.   def terminate
  1568.     # 一番下のポップアップなら、ディレイを初期化する
  1569.     @battler.popup_delay[3] = 0 if @delay_clear
  1570.   end
  1571.   #--------------------------------------------------------------------------
  1572.   # ● 动きの设定
  1573.   #--------------------------------------------------------------------------
  1574.   def set_movement
  1575.     @x_speed  = LNX11::SLIDE_MOVEMENT[:x_speed]
  1576.     @duration = LNX11::SLIDE_MOVEMENT[:duration]
  1577.     @fadeout  = LNX11::SLIDE_MOVEMENT[:fadeout]
  1578.     # フェードインのスライド分だけ X を移动
  1579.     @rx -= @x_speed * 255.0 / @fadeout
  1580.   end
  1581.   #--------------------------------------------------------------------------
  1582.   # ● フレーム更新
  1583.   #--------------------------------------------------------------------------
  1584.   def update_popup
  1585.     @rx += @x_speed if opacity != 255 # スライド
  1586.     self.opacity += @fadeout if @duration > 0
  1587.   end
  1588. end
  1589.  
  1590. #==============================================================================
  1591. # ■ [追加]:Sprite_PopupOverlay
  1592. #------------------------------------------------------------------------------
  1593. #  オーバーレイポップアップ。自身の复制を加算合成で重ね合わせます。
  1594. #==============================================================================
  1595.  
  1596. class Sprite_PopupOverlay < Sprite_PopupBase
  1597.   #--------------------------------------------------------------------------
  1598.   # ● ポップアップ Z 座标
  1599.   #--------------------------------------------------------------------------
  1600.   def base_z
  1601.     10
  1602.   end
  1603.   #--------------------------------------------------------------------------
  1604.   # ● 开始処理
  1605.   #--------------------------------------------------------------------------
  1606.   def start
  1607.     @duration = LNX11::OVERLAY_MOVEMENT[:duration]
  1608.     @fadeout  = LNX11::OVERLAY_MOVEMENT[:fadeout]
  1609.     # オーバーレイの作成
  1610.     create_overlay
  1611.   end
  1612.   #--------------------------------------------------------------------------
  1613.   # ● 终了処理
  1614.   #--------------------------------------------------------------------------
  1615.   def terminate
  1616.     @overlay.dispose
  1617.     @overlay = nil
  1618.   end
  1619.   #--------------------------------------------------------------------------
  1620.   # ● オーバーレイ(复制)の作成
  1621.   #--------------------------------------------------------------------------
  1622.   def create_overlay
  1623.     @overlay = Sprite.new
  1624.     @overlay.bitmap   = self.bitmap
  1625.     @overlay.viewport = self.viewport
  1626.     @overlay.ox = self.ox
  1627.     @overlay.oy = self.oy
  1628.     @overlay.visible = false
  1629.     @overlay.blend_type = 1
  1630.   end
  1631.   #--------------------------------------------------------------------------
  1632.   # ● フレーム更新
  1633.   #--------------------------------------------------------------------------
  1634.   def update_popup
  1635.     self.opacity += @fadeout * 2 if @duration > 0
  1636.   end
  1637.   #--------------------------------------------------------------------------
  1638.   # ● フレーム更新
  1639.   #--------------------------------------------------------------------------
  1640.   def update
  1641.     super
  1642.     update_overlay
  1643.   end
  1644.   #--------------------------------------------------------------------------
  1645.   # ● オーバーレイの更新
  1646.   #--------------------------------------------------------------------------
  1647.   def update_overlay
  1648.     return if self.disposed? || @overlay.opacity == 0
  1649.     @overlay.x = self.x
  1650.     @overlay.y = self.y
  1651.     @overlay.z = self.z
  1652.     # 拡大・消去
  1653.     @overlay.zoom_x += 0.16
  1654.     @overlay.zoom_y += 0.12
  1655.     @overlay.opacity -= 20
  1656.     @overlay.visible = (@overlay.opacity != 0)
  1657.   end
  1658. end
  1659.  
  1660. #==============================================================================
  1661. # ■ [追加]:Sprite_PopupLevelUp
  1662. #------------------------------------------------------------------------------
  1663. #  レベルアップのポップアップ。スライドポップアップを継承しています。
  1664. #==============================================================================
  1665.  
  1666. class Sprite_PopupLevelUp < Sprite_PopupSliding
  1667.   #--------------------------------------------------------------------------
  1668.   # ● ポップアップ Z 座标
  1669.   #--------------------------------------------------------------------------
  1670.   def base_z
  1671.     32
  1672.   end
  1673.   #--------------------------------------------------------------------------
  1674.   # ● ポップアップ位置の设定
  1675.   #--------------------------------------------------------------------------
  1676.   def set_position
  1677.     @rx = @battler.screen_x - LNX11::ACTOR_OFFSET[:x]
  1678.     case LNX11::LEVELUP_POPUP_POSITION
  1679.     when 0 ; @ry = @battler.screen_y        # 足元
  1680.     when 1 ; @ry = @battler.screen_y_center # 中心
  1681.     when 2 ; @ry = @battler.screen_y_top    # 头上
  1682.     when 3 ; @ry = Graphics.height + LNX11::LEVELUP_POPUP_Y # Y座标统一
  1683.     end
  1684.   end
  1685.   #--------------------------------------------------------------------------
  1686.   # ● フレーム更新
  1687.   #--------------------------------------------------------------------------
  1688.   def update_popup
  1689.     super
  1690.     # リザルト中なら自动的に消去しない
  1691.     @duration += 1 if $game_troop.all_dead? || $game_message.busy?
  1692.   end
  1693. end
  1694.  
  1695. #==============================================================================
  1696. # ■ Bitmap
  1697. #==============================================================================
  1698.  
  1699. class Bitmap
  1700.   #--------------------------------------------------------------------------
  1701.   # ● [追加]:カーソル用三角形の描画
  1702.   #--------------------------------------------------------------------------
  1703.   def lnx_cursor_triangle(size, color, oy = 0, grad = 1)
  1704.     color = color.clone
  1705.     x = (self.width - size) / 2
  1706.     y = (self.height - size) / 2 + oy
  1707.     rect = Rect.new(x, y, size, 1)
  1708.     count = size / 2
  1709.     minus = 128 / count / 2
  1710.     count.times do
  1711.       clear_rect(rect)
  1712.       fill_rect(rect, color)
  1713.       color.red   = [color.red   - minus * grad, 0].max
  1714.       color.green = [color.green - minus * grad, 0].max
  1715.       color.blue  = [color.blue  - minus * grad, 0].max
  1716.       rect.y += rect.height
  1717.       clear_rect(rect)
  1718.       fill_rect(rect, color)
  1719.       color.red   = [color.red   - minus * grad, 0].max
  1720.       color.green = [color.green - minus * grad, 0].max
  1721.       color.blue  = [color.blue  - minus * grad, 0].max
  1722.       rect.x += 1
  1723.       rect.y += rect.height
  1724.       rect.width -= 2
  1725.     end
  1726.   end
  1727. end
  1728.  
  1729. #==============================================================================
  1730. # ■ [追加]:Sprite_TargetCursor
  1731. #------------------------------------------------------------------------------
  1732. #  対象选択されているバトラーや行动选択中のアクターを示すアローカーソルです。
  1733. #==============================================================================
  1734. class Sprite_TargetCursor < Sprite
  1735.   #--------------------------------------------------------------------------
  1736.   # ● クラス変数
  1737.   #--------------------------------------------------------------------------
  1738.   @@cursor_cache = nil
  1739.   #--------------------------------------------------------------------------
  1740.   # ● 公开インスタンス変数
  1741.   #--------------------------------------------------------------------------
  1742.   attr_accessor :battler     # バトラー
  1743.   attr_accessor :blink       # 点灭(対象の选択中)
  1744.   #--------------------------------------------------------------------------
  1745.   # ● オブジェクト初期化
  1746.   #--------------------------------------------------------------------------
  1747.   def initialize(viewport = nil)
  1748.     super(viewport)
  1749.     @wait = LNX11::CURSOR_ANI_SPEED
  1750.     @speed = [LNX11::CURSOR_SPEED, 1].max
  1751.     @battler = nil
  1752.     @sub_cursor = []
  1753.     @blink = false
  1754.     self.bitmap = cursor_bitmap
  1755.     partition = self.bitmap.width / self.height
  1756.     self.src_rect.set(0, 0, self.width / partition, self.height)
  1757.     self.ox = self.width / 2
  1758.     self.oy = self.height / 2
  1759.     self.x = @rx = @tx = 0
  1760.     self.y = @ry = @ty = 0
  1761.     self.z = 98
  1762.     self.visible = false
  1763.   end
  1764.   #--------------------------------------------------------------------------
  1765.   # ● 解放
  1766.   #--------------------------------------------------------------------------  
  1767.   def dispose
  1768.     dispose_subcursor
  1769.     super
  1770.   end
  1771.   #--------------------------------------------------------------------------
  1772.   # ● サブカーソル作成
  1773.   #  メンバー全体にカーソルを表示するために复数のカーソルを作成します。
  1774.   #--------------------------------------------------------------------------  
  1775.   def create_subcursor(members)
  1776.     return unless @sub_cursor.empty?
  1777.     members.each_with_index do |battler, i|
  1778.       @sub_cursor[i] = Sprite_TargetCursor.new(self.viewport)
  1779.       @sub_cursor[i].set(@rx, @ry)
  1780.       @sub_cursor[i].set(battler, true)
  1781.     end
  1782.   end
  1783.   #--------------------------------------------------------------------------
  1784.   # ● サブカーソル解放
  1785.   #--------------------------------------------------------------------------  
  1786.   def dispose_subcursor
  1787.     @sub_cursor.each {|sprite| sprite.dispose }
  1788.     @sub_cursor = []
  1789.   end
  1790.   #--------------------------------------------------------------------------
  1791.   # ● サブカーソル更新
  1792.   #--------------------------------------------------------------------------  
  1793.   def update_subcursor
  1794.     @sub_cursor.each {|sprite| sprite.update }
  1795.   end
  1796.   #--------------------------------------------------------------------------
  1797.   # ● ビットマップの设定
  1798.   #--------------------------------------------------------------------------
  1799.   def cursor_bitmap
  1800.     if !LNX11::CURSOR_NAME.empty?
  1801.       return Cache.system(LNX11::CURSOR_NAME)
  1802.     else
  1803.       # カーソルファイル名が指定されていなければRGSS侧で生成
  1804.       return @@cursor_cache if @@cursor_cache && !@@cursor_cache.disposed?
  1805.       @@cursor_cache = Bitmap.new(32, 32)
  1806.       color = Color.new(0, 0, 0)
  1807.       @@cursor_cache.lnx_cursor_triangle(26, color, 2)
  1808.       2.times {@@cursor_cache.blur}
  1809.       color.set(255, 255, 255)
  1810.       @@cursor_cache.lnx_cursor_triangle(24, color, 1, 0.5)
  1811.       tone = LNX11::CURSOR_TONE ? LNX11::CURSOR_TONE : $game_system.window_tone
  1812.       r = 118 + tone.red
  1813.       g = 118 + tone.green
  1814.       b = 118 + tone.blue
  1815.       color.set(r, g, b, 232)
  1816.       @@cursor_cache.lnx_cursor_triangle(20, color,  0)
  1817.       @@cursor_cache.lnx_cursor_triangle(20, color,  1)
  1818.       p "LNX11a:カーソルビットマップを作成しました。"
  1819.       return @@cursor_cache
  1820.     end
  1821.   end
  1822.   #--------------------------------------------------------------------------
  1823.   # ● カーソルの表示
  1824.   #--------------------------------------------------------------------------
  1825.   def show
  1826.     self.x = @rx = @tx
  1827.     self.y = @ry = @ty
  1828.     self.visible = true
  1829.   end
  1830.   #--------------------------------------------------------------------------
  1831.   # ● カーソルの非表示
  1832.   #--------------------------------------------------------------------------
  1833.   def hide
  1834.     dispose_subcursor
  1835.     @battler = nil
  1836.     self.visible = false
  1837.   end
  1838.   #--------------------------------------------------------------------------
  1839.   # ● 移动平均
  1840.   #--------------------------------------------------------------------------
  1841.   def sma(a, b, p)
  1842.     # a = 目标位置 b = 现在地
  1843.     return a if a == b || (a - b).abs < 0.3 || p == 1
  1844.     result = ((a + b * (p.to_f - 1)) / p.to_f)
  1845.     return (a - result).abs <= 1.0 ? (b < a ? b + 0.3 : b - 0.3) : result
  1846.   end
  1847.   #--------------------------------------------------------------------------
  1848.   # ● フレーム更新
  1849.   #--------------------------------------------------------------------------
  1850.   def update
  1851.     update_subcursor
  1852.     self.opacity = @sub_cursor.empty? ? 255 : 0
  1853.     return if !visible || !@sub_cursor.empty?
  1854.     super
  1855.     # 点灭
  1856.     if LNX11::CURSOR_BLINK
  1857.       self.blend_type = @blink && Graphics.frame_count / 3 % 2 == 0 ? 1 : 0
  1858.     end
  1859.     # アニメーションを进める
  1860.     @wait -= 1
  1861.     if @wait <= 0
  1862.       @wait += LNX11::CURSOR_ANI_SPEED
  1863.       self.src_rect.x += self.width
  1864.       self.src_rect.x = 0 if self.src_rect.x >= self.bitmap.width
  1865.     end
  1866.     # カーソルの座标を更新
  1867.     set_xy if @battler && @sub_cursor.empty?
  1868.     self.x = @rx = sma(@tx, @rx, @speed)
  1869.     self.y = @ry = sma(@ty, @ry, @speed)
  1870.   end
  1871.   #--------------------------------------------------------------------------
  1872.   # ● カーソル位置の设定
  1873.   #--------------------------------------------------------------------------
  1874.   def set(*args)
  1875.     if args[0].is_a?(Numeric)
  1876.       # 引数一つ目が数値なら、XY指定
  1877.       @battler = nil
  1878.       set_xy(args[0], args[1])
  1879.       @blink = args[2] ? args[2] : false
  1880.     else
  1881.       # バトラーorシンボル指定
  1882.       if @battler != args[0]
  1883.         @battler = args[0]
  1884.         dispose_subcursor
  1885.         case args[0]
  1886.         when :party        ; create_subcursor($game_party.members)
  1887.         when :troop        ; create_subcursor($game_troop.alive_members)
  1888.         when :troop_random ; create_subcursor($game_troop.alive_members)
  1889.         else ; args[0] ? set_xy : hide
  1890.         end
  1891.       end
  1892.       @blink = args[1] ? args[1] : false
  1893.     end
  1894.     # スピードが1かカーソルが非表示なら表示に変える
  1895.     show if @sub_cursor.empty? && (@speed == 1 || !visible)
  1896.   end
  1897.   #--------------------------------------------------------------------------
  1898.   # ● カーソル位置をバトラーの位置に设定
  1899.   #--------------------------------------------------------------------------
  1900.   def set_xy(x = nil, y = nil)
  1901.     if x
  1902.       # 直接指定
  1903.       x += LNX11::CURSOR_OFFSET[:x]
  1904.       y += LNX11::CURSOR_OFFSET[:y]
  1905.     else
  1906.       # バトラーの座标
  1907.       x = @battler.screen_x + LNX11::CURSOR_OFFSET[:x]
  1908.       y = @battler.screen_y_top + LNX11::CURSOR_OFFSET[:y]
  1909.     end
  1910.     @tx = x
  1911.     minmax = LNX11::CURSOR_MINMAX
  1912.     @ty = [[y, minmax[:min] + self.oy].max, minmax[:max]].min
  1913.   end
  1914. end
  1915.  
  1916. #==============================================================================
  1917. # ■ [追加]:Sprite_OneLine_BattleLog
  1918. #------------------------------------------------------------------------------
  1919. #  バトルログを动的に表示するスプライトです。単体では1行しか表示できませんが、
  1920. # 复数同时に插うことで复数行の表示を実装しています。
  1921. #==============================================================================
  1922.  
  1923. class Sprite_OneLine_BattleLog < Sprite
  1924.   @@grad_cache = nil
  1925.   #--------------------------------------------------------------------------
  1926.   # ● 公开インスタンス変数
  1927.   #--------------------------------------------------------------------------
  1928.   attr_accessor   :position # 表示位置(行)
  1929.   #--------------------------------------------------------------------------
  1930.   # ● オブジェクト初期化
  1931.   #--------------------------------------------------------------------------
  1932.   def initialize(width, height, max_line_number)
  1933.     super(nil)
  1934.     @rx = @ry = 0
  1935.     @line_height = height
  1936.     @max_line_number = max_line_number
  1937.     @position = -1
  1938.     @visible = true
  1939.     self.ox = -LNX11::STORAGE_OFFSET[:x]
  1940.     self.oy = -LNX11::STORAGE_OFFSET[:y]
  1941.     self.opacity = 0
  1942.     self.z = 96
  1943.     self.bitmap = Bitmap.new(width * 0.75, height)
  1944.   end
  1945.   #--------------------------------------------------------------------------
  1946.   # ● 解放
  1947.   #--------------------------------------------------------------------------  
  1948.   def dispose
  1949.     self.bitmap.dispose
  1950.     super
  1951.   end
  1952.   #--------------------------------------------------------------------------
  1953.   # ● スプライトの表示
  1954.   #--------------------------------------------------------------------------  
  1955.   def show
  1956.     @visible = true
  1957.   end
  1958.   #--------------------------------------------------------------------------
  1959.   # ● スプライトの非表示
  1960.   #--------------------------------------------------------------------------  
  1961.   def hide
  1962.     @visible = false
  1963.     @position = -1
  1964.   end
  1965.   #--------------------------------------------------------------------------
  1966.   # ● 表示しているか?
  1967.   #--------------------------------------------------------------------------  
  1968.   def visible?
  1969.     @visible
  1970.   end
  1971.   #--------------------------------------------------------------------------
  1972.   # ● フレーム更新
  1973.   #--------------------------------------------------------------------------
  1974.   def update
  1975.     return if self.opacity == 0
  1976.     self.opacity += @visible && @position >= 0 ? 24 : -24
  1977.     self.visible = self.opacity > 0
  1978.     return unless @visible # 不可视状态なら座标を更新しない
  1979.     @ry = (target_y + (@ry * 5)) / 6.0 if target_y < @ry
  1980.     @rx += 2 if @rx < 0
  1981.     self.x = @rx
  1982.     self.y = @ry
  1983.   end
  1984.   #--------------------------------------------------------------------------
  1985.   # ● テキストの描画
  1986.   #  自身が持つ Bitmap で描画するのではなく、Window の contents から
  1987.   # コピーします(Sprite からでは Window_Base#draw_text_ex が插えないため)。
  1988.   #--------------------------------------------------------------------------
  1989.   def set_text(window, position)
  1990.     self.bitmap.clear
  1991.     # 横グラデーション
  1992.     if @@grad_cache && !@@grad_cache.disposed?
  1993.       self.bitmap.blt(0, 0, @@grad_cache, self.bitmap.rect)
  1994.     else
  1995.       color = LNX11::STORAGE_GRADIENT_COLOR
  1996.       fillrect = self.bitmap.rect
  1997.       fillrect.width /= 2
  1998.       self.bitmap.gradient_fill_rect(fillrect, color[0], color[1])
  1999.       @@grad_cache = self.bitmap.clone
  2000.     end
  2001.     # contents からコピー
  2002.     self.bitmap.blt(4, 0, window.contents, self.bitmap.rect)
  2003.     self.opacity = 1
  2004.     @rx = -8
  2005.     @position = position
  2006.     @ry = target_y
  2007.   end
  2008.   #--------------------------------------------------------------------------
  2009.   # ● 位置の缲り上げ
  2010.   #--------------------------------------------------------------------------
  2011.   def up_position
  2012.     @position -= 1
  2013.   end
  2014.   #--------------------------------------------------------------------------
  2015.   # ● メッセージが空か?(表示待ち)
  2016.   #--------------------------------------------------------------------------
  2017.   def mes_empty?
  2018.     @position < 0
  2019.   end
  2020.   #--------------------------------------------------------------------------
  2021.   # ● 移动するべき Y 座标
  2022.   #--------------------------------------------------------------------------
  2023.   def target_y
  2024.     @position * @line_height
  2025.   end
  2026. end
  2027.  
  2028. #==============================================================================
  2029. # ■ Window_BattleLog
  2030. #------------------------------------------------------------------------------
  2031. #  戦闘の进行を実况表示するウィンドウです。
  2032. #==============================================================================
  2033.  
  2034. class Window_BattleLog < Window_Selectable
  2035.   #--------------------------------------------------------------------------
  2036.   # ● [エイリアス]:オブジェクト初期化
  2037.   #--------------------------------------------------------------------------
  2038.   alias :lnx11a_initialize :initialize
  2039.   def initialize
  2040.     lnx11a_initialize
  2041.     # バトルログタイプが 1 以上なら非表示にする
  2042.     @storage_number = 0
  2043.     hide if LNX11::BATTLELOG_TYPE >= 1
  2044.     BattleManager.log_window = self
  2045.   end
  2046.   #--------------------------------------------------------------------------
  2047.   # ● [追加]:文章の配列のクリア
  2048.   #--------------------------------------------------------------------------
  2049.   def lines_clear
  2050.     @lines.clear if LNX11::BATTLELOG_TYPE == 1
  2051.   end
  2052.   #--------------------------------------------------------------------------
  2053.   # ● [追加]:指定ウェイト
  2054.   #--------------------------------------------------------------------------
  2055.   def abs_wait(wait)
  2056.     @method_wait.call(wait) if @method_wait
  2057.   end
  2058.   #--------------------------------------------------------------------------
  2059.   # ● [再定义]:メッセージ速度の取得
  2060.   #--------------------------------------------------------------------------
  2061.   def message_speed
  2062.     return 20
  2063.   end
  2064.   #--------------------------------------------------------------------------
  2065.   # ● [再定义]:エフェクト実行が终わるまでウェイト
  2066.   #--------------------------------------------------------------------------
  2067.   def wait_for_effect
  2068.     return if LNX11::BATTLELOG_TYPE > 0
  2069.     @method_wait_for_effect.call if @method_wait_for_effect
  2070.   end
  2071.   #--------------------------------------------------------------------------
  2072.   # ● [追加]:アニメーションのウェイト用メソッドの设定
  2073.   #--------------------------------------------------------------------------
  2074.   def method_wait_for_animation=(method)
  2075.     @method_wait_for_animation = method
  2076.   end
  2077.   #--------------------------------------------------------------------------
  2078.   # ● [追加]:アニメーション再生が终わるまでウェイト
  2079.   #--------------------------------------------------------------------------
  2080.   def wait_for_animation
  2081.     @method_wait_for_animation.call if @method_wait_for_animation
  2082.   end
  2083.  
  2084.   #--------------------------------------------------------------------------
  2085.   # ● [エイリアス]:ウィンドウ高さの取得
  2086.   #--------------------------------------------------------------------------
  2087.   alias :lnx11a_window_height :window_height
  2088.   def window_height
  2089.     LNX11::BATTLELOG_TYPE == 1 ? fitting_height(1) : lnx11a_window_height
  2090.   end
  2091.   #--------------------------------------------------------------------------
  2092.   # ● [エイリアス]:最大行数の取得
  2093.   #--------------------------------------------------------------------------
  2094.   alias :lnx11a_max_line_number :max_line_number
  2095.   def max_line_number
  2096.     num = LNX11::STORAGE_LINE_NUMBER
  2097.     LNX11::BATTLELOG_TYPE == 1 ? num : lnx11a_max_line_number
  2098.   end
  2099.   #--------------------------------------------------------------------------
  2100.   # ● [オーバーライド]:行の高さを取得
  2101.   #--------------------------------------------------------------------------
  2102.   def line_height
  2103.     LNX11::BATTLELOG_TYPE == 1 ? LNX11::STORAGE_LINE_HEIGHT : super
  2104.   end
  2105.   #--------------------------------------------------------------------------
  2106.   # ● [オーバーライド]:フォント设定のリセット
  2107.   #--------------------------------------------------------------------------
  2108.   def reset_font_settings
  2109.     super
  2110.     return unless LNX11::BATTLELOG_TYPE == 1
  2111.     contents.font.size = LNX11::STORAGE_FONT[:size]
  2112.     contents.font.out_color.set(LNX11::STORAGE_FONT[:out_color])
  2113.   end
  2114.   #--------------------------------------------------------------------------
  2115.   # ● [エイリアス]:データ行数の取得
  2116.   #--------------------------------------------------------------------------
  2117.   alias :lnx11a_line_number :line_number
  2118.   def line_number
  2119.     return 0 if LNX11::BATTLELOG_TYPE == 2
  2120.     LNX11::BATTLELOG_TYPE == 1 ? @storage_number : lnx11a_line_number
  2121.   end
  2122.   #--------------------------------------------------------------------------
  2123.   # ● [再定义]:背景スプライトの作成
  2124.   #--------------------------------------------------------------------------
  2125.   alias :lnx11a_create_back_sprite :create_back_sprite
  2126.   def create_back_sprite
  2127.     if LNX11::BATTLELOG_TYPE == 1
  2128.       # 蓄积型
  2129.       create_message_sprite
  2130.     else
  2131.       # 背景
  2132.       lnx11a_create_back_sprite
  2133.     end
  2134.   end
  2135.   #--------------------------------------------------------------------------
  2136.   # ● [再定义]:背景スプライトの解放
  2137.   #--------------------------------------------------------------------------
  2138.   alias :lnx11a_dispose_back_sprite :dispose_back_sprite
  2139.   def dispose_back_sprite
  2140.     if LNX11::BATTLELOG_TYPE == 1
  2141.       # 蓄积型
  2142.       dispose_message_sprite
  2143.     else
  2144.       # 背景
  2145.       lnx11a_dispose_back_sprite
  2146.     end
  2147.   end
  2148.   #--------------------------------------------------------------------------
  2149.   # ● [追加]:メッセージスプライトの作成
  2150.   #--------------------------------------------------------------------------
  2151.   def create_message_sprite
  2152.     # メッセージスプライト 行数分だけ作成する
  2153.     @mes_position = 0 # 次にメッセージを表示させる位置
  2154.     @mesup_count = LNX11::STORAGE_UP_MESSAGE_TIME # ログが进行するまでの时间
  2155.     @mes_sprites = Array.new(max_line_number + 1) {
  2156.     Sprite_OneLine_BattleLog.new(self.width, line_height, max_line_number)}     
  2157.   end
  2158.   #--------------------------------------------------------------------------
  2159.   # ● [追加]:メッセージスプライトの解放
  2160.   #--------------------------------------------------------------------------
  2161.   def dispose_message_sprite
  2162.     @mes_sprites.each {|sprite| sprite.dispose }
  2163.   end
  2164.   #--------------------------------------------------------------------------
  2165.   # ● [追加]:メッセージスプライトを表示
  2166.   #--------------------------------------------------------------------------
  2167.   def show_message_sprite
  2168.     @mes_sprites.each {|sprite| sprite.show }
  2169.   end
  2170.   #--------------------------------------------------------------------------
  2171.   # ● [追加]:メッセージスプライトを非表示
  2172.   #--------------------------------------------------------------------------
  2173.   def hide_message_sprite
  2174.     @mes_sprites.each {|sprite| sprite.hide }
  2175.     @mes_position = 0
  2176.   end
  2177.   #--------------------------------------------------------------------------
  2178.   # ● [追加]:メッセージスプライトを一つ进める
  2179.   #--------------------------------------------------------------------------
  2180.   def up_message_sprite
  2181.     @mes_sprites.each {|sprite| sprite.up_position }
  2182.   end
  2183.   #--------------------------------------------------------------------------
  2184.   # ● [追加]:空のメッセージスプライトを返す
  2185.   #--------------------------------------------------------------------------
  2186.   def empty_message_sprite
  2187.     @mes_sprites.each {|sprite| return sprite if sprite.mes_empty? }
  2188.     @mes_sprites[0]
  2189.   end
  2190.   #--------------------------------------------------------------------------
  2191.   # ● [追加]:メッセージスプライトの更新
  2192.   #--------------------------------------------------------------------------
  2193.   def update_message_sprite
  2194.     # バトルログ消去フラグが有効
  2195.     if $game_temp.battlelog_clear
  2196.       $game_temp.battlelog_clear = false
  2197.       # スプライトが表示されていれば非表示にする
  2198.       if @mes_sprites[0].visible?
  2199.         hide_message_sprite
  2200.         lines_clear
  2201.       end
  2202.     end
  2203.     # ログの自动进行
  2204.     @mesup_count -= 1
  2205.     if @mesup_count <= 0 && @mes_position > 0
  2206.       up_message_sprite
  2207.       @mes_position -= 1
  2208.       @mesup_count = LNX11::STORAGE_UP_MESSAGE_TIME
  2209.     end
  2210.     @mes_sprites.each {|sprite| sprite.update }
  2211.   end
  2212.   #--------------------------------------------------------------------------
  2213.   # ● [追加]:メッセージスプライトのリフレッシュ
  2214.   #--------------------------------------------------------------------------
  2215.   def refresh_message_sprite
  2216.     # 文章が无ければ何もしない
  2217.     return if @lines.empty?
  2218.     # スプライトを表示する
  2219.     show_message_sprite unless @mes_sprites[0].visible?
  2220.     # 文章の描画
  2221.     contents.clear
  2222.     @lines[0] = last_text
  2223.     return if @lines[0].empty?
  2224.     draw_line(0)
  2225.     @storage_number += 1
  2226.     # ウィンドウの内容をスプライトにコピー
  2227.     empty_message_sprite.set_text(self, @mes_position)
  2228.     # スプライト位置の変动   
  2229.     if @mes_position < max_line_number
  2230.       @mes_position += 1
  2231.     elsif @mesup_count > 0
  2232.       up_message_sprite
  2233.     end
  2234.     @mesup_count = (LNX11::STORAGE_UP_MESSAGE_TIME * 1.5).truncate
  2235.   end  
  2236.   #--------------------------------------------------------------------------
  2237.   # ● [オーバーライド]:フレーム更新
  2238.   #--------------------------------------------------------------------------
  2239.   def update
  2240.     super
  2241.     update_message_sprite if LNX11::BATTLELOG_TYPE == 1
  2242.   end
  2243.   #--------------------------------------------------------------------------
  2244.   # ● [エイリアス]:リフレッシュ
  2245.   #--------------------------------------------------------------------------
  2246.   alias :lnx11a_refresh :refresh
  2247.   def refresh
  2248.     return if LNX11::BATTLELOG_TYPE == 2
  2249.     LNX11::BATTLELOG_TYPE == 1 ? refresh_message_sprite : lnx11a_refresh
  2250.   end
  2251.   #--------------------------------------------------------------------------
  2252.   # ● [エイリアス]:クリア
  2253.   #--------------------------------------------------------------------------
  2254.   alias :lnx11a_clear :clear
  2255.   def clear
  2256.     return if LNX11::BATTLELOG_TYPE == 2
  2257.     LNX11::BATTLELOG_TYPE == 1 ? @storage_number = 0 : lnx11a_clear
  2258.   end
  2259.   #--------------------------------------------------------------------------
  2260.   # ● [エイリアス]:一行戻る
  2261.   #--------------------------------------------------------------------------
  2262.   alias :lnx11a_back_one :back_one
  2263.   def back_one
  2264.     if LNX11::BATTLELOG_TYPE == 1
  2265.       # 蓄积型
  2266.       @storage_number = [@storage_number - 1, 0].max
  2267.     else
  2268.       # 通常
  2269.       lnx11a_back_one
  2270.     end
  2271.   end
  2272.   #--------------------------------------------------------------------------
  2273.   # ● [エイリアス]:指定した行に戻る
  2274.   #--------------------------------------------------------------------------
  2275.   alias :lnx11a_back_to :back_to
  2276.   def back_to(line_number)
  2277.     if LNX11::BATTLELOG_TYPE == 1
  2278.       # 蓄积型
  2279.       @storage_number -= 1 while @storage_number > line_number
  2280.     else
  2281.       # 通常
  2282.       lnx11a_back_to(line_number)
  2283.     end
  2284.   end
  2285.   #--------------------------------------------------------------------------
  2286.   # ● [エイリアス]:ウェイト
  2287.   #--------------------------------------------------------------------------
  2288.   alias :lnx11a_wait :wait
  2289.   def wait
  2290.     return if LNX11::BATTLELOG_TYPE == 2
  2291.     # 元のメソッドを呼ぶ
  2292.     lnx11a_wait
  2293.   end
  2294.   #--------------------------------------------------------------------------
  2295.   # ● [エイリアス]:スキル/アイテム使用の表示
  2296.   #  使用时アニメーションの処理を追加します。
  2297.   #--------------------------------------------------------------------------
  2298.   alias :lnx11a_display_use_item :display_use_item
  2299.   def display_use_item(subject, item)
  2300.     if item.use_animation > 0
  2301.       # 使用时アニメーションが设定されていれば再生
  2302.       subject.animation_id = item.use_animation
  2303.       subject.animation_mirror = false
  2304.     end
  2305.     # 元のメソッドを呼ぶ
  2306.     lnx11a_display_use_item(subject, item)
  2307.     # アニメーションのウェイト
  2308.     wait_for_animation if item.use_animation > 0
  2309.   end
  2310.   #--------------------------------------------------------------------------
  2311.   # ● [追加]:ポップアップデータの取得
  2312.   #--------------------------------------------------------------------------
  2313.   def popup_data
  2314.     $game_temp.popup_data
  2315.   end
  2316.   #--------------------------------------------------------------------------
  2317.   # ● [エイリアス]:反撃の表示
  2318.   #--------------------------------------------------------------------------
  2319.   alias :lnx11a_display_counter :display_counter
  2320.   def display_counter(target, item)
  2321.     # ポップアップ
  2322.     popup_data.popup_text(target, :counter)
  2323.     # 元のメソッドを呼ぶ
  2324.     lnx11a_display_counter(target, item)
  2325.     # ポップアップウェイト
  2326.     popup_data.add_wait
  2327.   end
  2328.   #--------------------------------------------------------------------------
  2329.   # ● [エイリアス]:反射の表示
  2330.   #--------------------------------------------------------------------------
  2331.   alias :lnx11a_display_reflection :display_reflection
  2332.   def display_reflection(target, item)
  2333.     # ポップアップ
  2334.     popup_data.popup_text(target, :reflection)
  2335.     # 元のメソッドを呼ぶ
  2336.     lnx11a_display_reflection(target, item)
  2337.     # ポップアップウェイト
  2338.     popup_data.add_wait
  2339.   end
  2340.   #--------------------------------------------------------------------------
  2341.   # ● [エイリアス]:身代わりの表示
  2342.   #--------------------------------------------------------------------------
  2343.   alias :lnx11a_display_substitute :display_substitute
  2344.   def display_substitute(substitute, target)
  2345.     # ポップアップ
  2346.     popup_data.popup_text(substitute, :substitute)
  2347.     # 元のメソッドを呼ぶ
  2348.     lnx11a_display_substitute(substitute, target)
  2349.     # ポップアップウェイト
  2350.     popup_data.add_wait
  2351.   end
  2352.   #--------------------------------------------------------------------------
  2353.   # ● [エイリアス]:失败の表示
  2354.   #--------------------------------------------------------------------------
  2355.   alias :lnx11a_display_failure :display_failure
  2356.   def display_failure(target, item)
  2357.     if target.result.hit? && !target.result.success
  2358.       # ポップアップ (ミスと同じ插いにする)
  2359.       popup_data.popup_miss(target, item)
  2360.     end
  2361.     # 元のメソッドを呼ぶ
  2362.     lnx11a_display_failure(target, item)
  2363.     # ポップアップウェイト
  2364.     popup_data.add_wait
  2365.   end
  2366.   #--------------------------------------------------------------------------
  2367.   # ● [エイリアス]:ミスの表示
  2368.   #--------------------------------------------------------------------------
  2369.   alias :lnx11a_display_miss :display_miss
  2370.   def display_miss(target, item)
  2371.     # ポップアップ
  2372.     popup_data.popup_miss(target, item)
  2373.     # 元のメソッドを呼ぶ   
  2374.     lnx11a_display_miss(target, item)
  2375.     # ポップアップウェイト
  2376.     popup_data.add_wait
  2377.   end
  2378.   #--------------------------------------------------------------------------
  2379.   # ● [エイリアス]:回避の表示
  2380.   #--------------------------------------------------------------------------
  2381.   alias :lnx11a_display_evasion :display_evasion
  2382.   def display_evasion(target, item)
  2383.     # ポップアップ (ミスと同じ插いにする)
  2384.     popup_data.popup_miss(target, item)
  2385.     # 元のメソッドを呼ぶ   
  2386.     lnx11a_display_evasion(target, item)
  2387.     # ポップアップウェイト
  2388.     popup_data.add_wait
  2389.   end
  2390.   #--------------------------------------------------------------------------
  2391.   # ● [エイリアス]:HP ダメージ表示
  2392.   #--------------------------------------------------------------------------
  2393.   alias :lnx11a_display_hp_damage :display_hp_damage
  2394.   def display_hp_damage(target, item)
  2395.     # ポップアップ
  2396.     popup_data.popup_hp_damage(target, item)
  2397.     # 元のメソッドを呼ぶ
  2398.     lnx11a_display_hp_damage(target, item)
  2399.     # ポップアップウェイト
  2400.     popup_data.add_wait
  2401.   end
  2402.   #--------------------------------------------------------------------------
  2403.   # ● [エイリアス]:MP ダメージ表示
  2404.   #--------------------------------------------------------------------------
  2405.   alias :lnx11a_display_mp_damage :display_mp_damage
  2406.   def display_mp_damage(target, item)
  2407.     # ポップアップ
  2408.     popup_data.popup_mp_damage(target, item)
  2409.     # 元のメソッドを呼ぶ
  2410.     lnx11a_display_mp_damage(target, item)
  2411.     # ポップアップウェイト
  2412.     popup_data.add_wait
  2413.   end
  2414.   #--------------------------------------------------------------------------
  2415.   # ● [エイリアス]:TP ダメージ表示
  2416.   #--------------------------------------------------------------------------
  2417.   alias :lnx11a_display_tp_damage :display_tp_damage
  2418.   def display_tp_damage(target, item)
  2419.     # ポップアップ
  2420.     popup_data.popup_tp_damage(target, item)
  2421.     # 元のメソッドを呼ぶ
  2422.     lnx11a_display_tp_damage(target, item)
  2423.     # ポップアップウェイト
  2424.     popup_data.add_wait
  2425.   end
  2426.   #--------------------------------------------------------------------------
  2427.   # ● [エイリアス]:ステート付加の表示
  2428.   #--------------------------------------------------------------------------
  2429.   alias :lnx11a_display_added_states :display_added_states
  2430.   def display_added_states(target)
  2431.     # ポップアップ
  2432.     popup_data.popup_added_states(target)
  2433.     # 元のメソッドを呼ぶ
  2434.     lnx11a_display_added_states(target)
  2435.   end
  2436.   #--------------------------------------------------------------------------
  2437.   # ● [エイリアス]:ステート解除の表示
  2438.   #--------------------------------------------------------------------------
  2439.   alias :lnx11a_display_removed_states :display_removed_states
  2440.   def display_removed_states(target)
  2441.     # ポップアップ
  2442.     popup_data.popup_removed_states(target)
  2443.     # 元のメソッドを呼ぶ
  2444.     lnx11a_display_removed_states(target)
  2445.   end
  2446.   #--------------------------------------------------------------------------
  2447.   # ● [エイリアス]:能力强化/弱体の表示(个别)
  2448.   #--------------------------------------------------------------------------
  2449.   alias :lnx11a_display_buffs :display_buffs
  2450.   def display_buffs(target, buffs, fmt)
  2451.     # ポップアップ
  2452.     popup_data.popup_buffs(target, buffs, fmt)
  2453.     # 元のメソッドを呼ぶ
  2454.     lnx11a_display_buffs(target, buffs, fmt)
  2455.   end
  2456. end
  2457.  
  2458. #==============================================================================
  2459. # ■ RPG::BaseItem
  2460. #------------------------------------------------------------------------------
  2461. #  アクター、职业、スキル、アイテム、武器、防具、敌キャラ、およびステートの
  2462. # スーパークラス。
  2463. #==============================================================================
  2464.  
  2465. class RPG::BaseItem  
  2466.   #--------------------------------------------------------------------------
  2467.   # ● [追加]:バトラーグラフィックファイル名を取得
  2468.   #--------------------------------------------------------------------------
  2469.   def default_battler_graphic
  2470.     # キャッシュがある场合、それを返す
  2471.     return @default_battler_graphic if @default_battler_graphic
  2472.     # メモ取得
  2473.     re = LNX11::RE_BATTLER =~ note
  2474.     @default_battler_graphic = re ? $1 : ""
  2475.   end
  2476.   #--------------------------------------------------------------------------
  2477.   # ● [追加]:敌キャラの通常攻撃アニメの取得
  2478.   #--------------------------------------------------------------------------
  2479.   def atk_animation
  2480.     # キャッシュがある场合、それを返す
  2481.     return @atk_animation if @atk_animation
  2482.     # メモ取得
  2483.     re = LNX11::RE_ATK_ANIMATION =~ note
  2484.     @atk_animation = re ? $1.to_i : 1
  2485.   end
  2486. end
  2487.  
  2488. #==============================================================================
  2489. # ■ RPG::UsableItem
  2490. #------------------------------------------------------------------------------
  2491. #  スキルとアイテムのスーパークラス。
  2492. #==============================================================================
  2493. class RPG::UsableItem < RPG::BaseItem
  2494.   #--------------------------------------------------------------------------
  2495.   # ● [エイリアス]:対象の选択操作が必要か否かを取得
  2496.   #--------------------------------------------------------------------------
  2497.   alias :lnx11a_need_selection? :need_selection?
  2498.   def need_selection?
  2499.     LNX11::FIX_TARGET_CHECKE && scope > 0 ? true : lnx11a_need_selection?
  2500.   end
  2501.   #--------------------------------------------------------------------------
  2502.   # ● [追加]:使用时アニメの取得
  2503.   #--------------------------------------------------------------------------
  2504.   def use_animation
  2505.     # キャッシュがある场合、それを返す
  2506.     return @use_animation if @use_animation
  2507.     # メモ取得
  2508.     re = LNX11::RE_USE_ANIMATION =~ note
  2509.     @use_animation = re ? $1.to_i : 0
  2510.   end
  2511.   #--------------------------------------------------------------------------
  2512.   # ● [追加]:简易ヘルプ非表示の取得
  2513.   #--------------------------------------------------------------------------
  2514.   def no_display
  2515.     # キャッシュがある场合、それを返す
  2516.     return @no_display if @no_display
  2517.     # メモ取得
  2518.     re = LNX11::RE_USABLEITEM_NO_DISPLAY =~ note
  2519.     @no_display = re ? true : false
  2520.   end
  2521.   #--------------------------------------------------------------------------
  2522.   # ● [追加]:使用时追加ウェイトの取得
  2523.   #--------------------------------------------------------------------------
  2524.   def display_wait
  2525.     # キャッシュがある场合、それを返す
  2526.     return @display_wait if @display_wait
  2527.     # メモ取得
  2528.     re = LNX11::RE_DISPLAY_WAIT =~ note
  2529.     @display_wait = re ? $1.to_i : LNX11::HELPDISPLAT_WAIT
  2530.   end
  2531.   #--------------------------------------------------------------------------
  2532.   # ● [追加]:终了时追加ウェイトの取得
  2533.   #--------------------------------------------------------------------------
  2534.   def end_wait
  2535.     # キャッシュがある场合、それを返す
  2536.     return @end_wait if @end_wait
  2537.     # メモ取得
  2538.     re = LNX11::RE_END_WAIT =~ note
  2539.     @end_wait = re ? $1.to_i : LNX11::HELPDISPLAT_END_WAIT
  2540.   end
  2541.   #--------------------------------------------------------------------------
  2542.   # ● [追加]:简易ヘルプ说明を取得
  2543.   #--------------------------------------------------------------------------
  2544.   def short_description
  2545.     # キャッシュがある场合、それを返す
  2546.     return @short_description if @short_description
  2547.     # メモ取得
  2548.     re = LNX11::RE_SHORT_DESCRIPTION =~ note
  2549.     @short_description = re ? $1 : ""
  2550.   end
  2551. end
  2552.  
  2553. #==============================================================================
  2554. # ■ RPG::State
  2555. #------------------------------------------------------------------------------
  2556. #  ステートのデータクラス。
  2557. #==============================================================================
  2558.  
  2559. class RPG::State < RPG::BaseItem
  2560.   #--------------------------------------------------------------------------
  2561.   # ● [追加]:ステートアニメの取得
  2562.   #--------------------------------------------------------------------------
  2563.   def state_animation
  2564.     # キャッシュがある场合、それを返す
  2565.     return @state_animation if @state_animation
  2566.     # メモ取得
  2567.     re = LNX11::RE_STATE_ANIMATION =~ note
  2568.     @state_animation = re ? $1.to_i : 0
  2569.   end
  2570.   #--------------------------------------------------------------------------
  2571.   # ● [追加]:ポップアップ表示名の取得
  2572.   # <<ver1.10>>
  2573.   #  このメソッドは付加/解除ポップアップ表示名が设定されていない场合のみ
  2574.   # 呼び出されるようになりました。
  2575.   #--------------------------------------------------------------------------
  2576.   def display_name
  2577.     # キャッシュがある场合、それを返す
  2578.     return @display_name if @display_name
  2579.     # メモ取得
  2580.     re = LNX11::RE_STATE_DISPLAY =~ note
  2581.     @display_name = re ? $1 : name
  2582.   end
  2583.   #--------------------------------------------------------------------------
  2584.   # ● [追加]:付加ポップアップ表示名の取得 <<ver1.10>>
  2585.   #--------------------------------------------------------------------------
  2586.   def add_display_name
  2587.     # キャッシュがある场合、それを返す
  2588.     return @add_display_name if @add_display_name
  2589.     # メモ取得
  2590.     re = LNX11::RE_STATE_ADD_DISPLAY =~ note
  2591.     @add_display_name = re ? $1 : display_name
  2592.   end
  2593.   #--------------------------------------------------------------------------
  2594.   # ● [追加]:解除ポップアップ表示名の取得 <<ver1.10>>
  2595.   #--------------------------------------------------------------------------
  2596.   def remove_display_name
  2597.     # キャッシュがある场合、それを返す
  2598.     return @remove_display_name if @remove_display_name
  2599.     # メモ取得
  2600.     re = LNX11::RE_STATE_REM_DISPLAY =~ note
  2601.     @remove_display_name = re ? $1 : display_name
  2602.   end
  2603.   #--------------------------------------------------------------------------
  2604.   # ● [追加]:ポップアップ非表示の取得
  2605.   #--------------------------------------------------------------------------
  2606.   def no_display?
  2607.     # キャッシュがある场合、それを返す
  2608.     return @no_display if @no_display
  2609.     # 付加/解除のどちらかで设定されていれば无视する
  2610.     if LNX11::RE_STATE_ADD_NO_DISPLAY =~ note ||
  2611.        LNX11::RE_STATE_REM_NO_DISPLAY =~ note
  2612.       return @no_display = false
  2613.     end
  2614.     # メモ取得
  2615.     re = LNX11::RE_STATE_NO_DISPLAY =~ note
  2616.     @no_display = re ? true : false
  2617.   end
  2618.   #--------------------------------------------------------------------------
  2619.   # ● [追加]:付加ポップアップ非表示の取得
  2620.   #--------------------------------------------------------------------------
  2621.   def add_no_display?
  2622.     return true if no_display?
  2623.     # キャッシュがある场合、それを返す
  2624.     return @add_no_display if @add_no_display
  2625.     # メモ取得
  2626.     re = LNX11::RE_STATE_ADD_NO_DISPLAY =~ note
  2627.     @add_no_display = re ? true : false
  2628.   end
  2629.   #--------------------------------------------------------------------------
  2630.   # ● [追加]:解除ポップアップ非表示の取得
  2631.   #--------------------------------------------------------------------------
  2632.   def remove_no_display?
  2633.     return true if no_display?
  2634.     # キャッシュがある场合、それを返す
  2635.     return @remove_no_display if @remove_no_display
  2636.     # メモ取得
  2637.     re = LNX11::RE_STATE_REM_NO_DISPLAY =~ note
  2638.     @remove_no_display = re ? true : false
  2639.   end
  2640.   #--------------------------------------------------------------------------
  2641.   # ● [追加]:有利なステートの取得
  2642.   #--------------------------------------------------------------------------
  2643.   def advantage?
  2644.     # キャッシュがある场合、それを返す
  2645.     return @advantage if @advantage
  2646.     # メモ取得
  2647.     re = LNX11::RE_STATE_ADVANTAGE =~ note
  2648.     @advantage = re ? true : false
  2649.   end
  2650.   #--------------------------------------------------------------------------
  2651.   # ● [追加]:ポップアップタイプの取得
  2652.   #--------------------------------------------------------------------------
  2653.   def popup_type
  2654.     # キャッシュがある场合、それを返す
  2655.     return @popup_type if @popup_type != nil
  2656.     # 付加/解除のどちらかで设定されていれば无视する
  2657.     if LNX11::RE_STATE_ADD_TYPE =~ note ||
  2658.        LNX11::RE_STATE_REM_TYPE =~ note
  2659.       return @popup_type = false
  2660.     end
  2661.     # メモ取得
  2662.     re = LNX11::RE_STATE_TYPE =~ note
  2663.     @popup_type = re ? $1.to_i : false
  2664.   end
  2665.   #--------------------------------------------------------------------------
  2666.   # ● [追加]:付加ポップアップタイプの取得
  2667.   #--------------------------------------------------------------------------
  2668.   def add_popup_type
  2669.     return popup_type if popup_type
  2670.     # キャッシュがある场合、それを返す
  2671.     return @add_popup_type if @add_popup_type != nil
  2672.     # メモ取得
  2673.     re = LNX11::RE_STATE_ADD_TYPE =~ note
  2674.     @add_popup_type = re ? $1.to_i : false
  2675.   end
  2676.   #--------------------------------------------------------------------------
  2677.   # ● [追加]:解除ポップアップタイプの取得
  2678.   #--------------------------------------------------------------------------
  2679.   def remove_popup_type
  2680.     return popup_type if popup_type
  2681.     # キャッシュがある场合、それを返す
  2682.     return @remove_popup_type if @remove_popup_type != nil
  2683.     # メモ取得
  2684.     re = LNX11::RE_STATE_REM_TYPE =~ note
  2685.     @remove_popup_type = re ? $1.to_i : false
  2686.   end
  2687.   #--------------------------------------------------------------------------
  2688.   # ● [追加]:修饰文字非表示の取得
  2689.   #--------------------------------------------------------------------------
  2690.   def no_decoration?
  2691.     # キャッシュがある场合、それを返す
  2692.     return @no_decoration if @no_decoration
  2693.     # 付加/解除のどちらかで设定されていれば无视する
  2694.     if LNX11::RE_STATE_ADD_NO_DECORATION =~ note ||
  2695.        LNX11::RE_STATE_REM_NO_DECORATION =~ note
  2696.       return @no_decoration = false
  2697.     end
  2698.     # メモ取得
  2699.     re = LNX11::RE_STATE_NO_DECORATION =~ note
  2700.     @no_decoration = re ? true : false
  2701.   end
  2702.   #--------------------------------------------------------------------------
  2703.   # ● [追加]:付加修饰文字非表示の取得
  2704.   #--------------------------------------------------------------------------
  2705.   def add_no_decoration?
  2706.     return true if no_decoration?
  2707.     # キャッシュがある场合、それを返す
  2708.     return @add_no_decoration if @add_no_decoration
  2709.     # メモ取得
  2710.     re = LNX11::RE_STATE_ADD_NO_DECORATION =~ note
  2711.     @add_no_decoration = re ? true : false
  2712.   end
  2713.   #--------------------------------------------------------------------------
  2714.   # ● [追加]:解除修饰文字非表示の取得
  2715.   #--------------------------------------------------------------------------
  2716.   def remove_no_decoration?
  2717.     return true if no_decoration?
  2718.     # キャッシュがある场合、それを返す
  2719.     return @remove_no_decoration if @remove_no_decoration
  2720.     # メモ取得
  2721.     re = LNX11::RE_STATE_REM_NO_DECORATION =~ note
  2722.     @remove_no_decoration = re ? true : false
  2723.   end
  2724. end
  2725.  
  2726. #==============================================================================
  2727. # ■ BattleManager
  2728. #------------------------------------------------------------------------------
  2729. #  戦闘の进行を管理するモジュールです。
  2730. #==============================================================================
  2731.  
  2732. class << BattleManager
  2733.   #--------------------------------------------------------------------------
  2734.   # ● [追加]:公开インスタンス変数
  2735.   #--------------------------------------------------------------------------
  2736.   attr_reader   :preemptive             # 先制攻撃フラグ
  2737.   attr_reader   :surprise               # 不意打ちフラグ
  2738.   attr_accessor :log_window             # バトルログウィンドウ
  2739.   attr_accessor :update_for_wait_method # ウェイト中のフレーム更新
  2740.   attr_accessor :helpdisplay_set_method        # 简易ヘルプ表示
  2741.   attr_accessor :helpdisplay_clear_method      # 简易ヘルプ消去
  2742.   attr_accessor :helpdisplay_wait_short_method # 简易ヘルプ・短时间ウェイト
  2743.   #--------------------------------------------------------------------------
  2744.   # ● [追加]:简易ヘルプ表示
  2745.   #--------------------------------------------------------------------------
  2746.   def helpdisplay_set(*args)
  2747.     @helpdisplay_set_method.call(*args) if @helpdisplay_set_method
  2748.   end
  2749.   #--------------------------------------------------------------------------
  2750.   # ● [追加]:简易ヘルプ消去
  2751.   #--------------------------------------------------------------------------
  2752.   def helpdisplay_clear(*args)
  2753.     @helpdisplay_clear_method.call(*args) if @helpdisplay_clear_method
  2754.   end
  2755.   #--------------------------------------------------------------------------
  2756.   # ● [追加]:简易ヘルプ・短时间ウェイト
  2757.   #--------------------------------------------------------------------------
  2758.   def helpdisplay_wait_short
  2759.     @helpdisplay_wait_short_method.call if @helpdisplay_wait_short_method
  2760.   end
  2761.   #--------------------------------------------------------------------------
  2762.   # ● [追加]:キー入力待ち
  2763.   #--------------------------------------------------------------------------
  2764.   def helpdisplay_wait_input
  2765.     return if $game_message.helpdisplay_texts.empty?
  2766.     return if LNX11::MESSAGE_TYPE == 0
  2767.     return if !@helpdisplay_wait_input || !@update_for_wait_method
  2768.     update_for_wait_method.call while !Input.press?(:B) && !Input.press?(:C)
  2769.   end
  2770.   #--------------------------------------------------------------------------
  2771.   # ● [追加]:メッセージ进行の SE 再生
  2772.   #--------------------------------------------------------------------------
  2773.   def messagedisplay_se_play
  2774.     return if !@helpdisplay_se
  2775.     @helpdisplay_se.play  
  2776.     @helpdisplay_se = nil if @helpdisplay_se == LNX11::LEVELUP_SE
  2777.   end
  2778.   #--------------------------------------------------------------------------
  2779.   # ● [追加]:メッセージ进行
  2780.   #--------------------------------------------------------------------------
  2781.   def process_messagedisplay(wait)
  2782.     return if $game_message.helpdisplay_texts.empty?
  2783.     return if LNX11::MESSAGE_TYPE == 0
  2784.     $game_temp.battlelog_clear = true
  2785.     BattleManager.log_window.update
  2786.     if LNX11::BATTLELOG_TYPE == 2 || LNX11::MESSAGE_TYPE == 2
  2787.       # 简易ヘルプ
  2788.       $game_message.helpdisplay_texts.each do |text|
  2789.         helpdisplay_wait_short
  2790.         messagedisplay_se_play
  2791.         helpdisplay_set(text, wait)
  2792.         helpdisplay_wait_input
  2793.       end
  2794.       helpdisplay_clear
  2795.     elsif LNX11::BATTLELOG_TYPE == 0
  2796.       # VXAceデフォルト
  2797.       BattleManager.log_window.clear
  2798.       $game_message.helpdisplay_texts.each do |text|
  2799.         messagedisplay_se_play
  2800.         BattleManager.log_window.add_text(text)
  2801.         BattleManager.log_window.abs_wait(wait)
  2802.         helpdisplay_wait_input
  2803.         max = BattleManager.log_window.max_line_number
  2804.         # 表示がいっぱいになったら消去
  2805.         if BattleManager.log_window.line_number >= max
  2806.           BattleManager.log_window.clear
  2807.         end
  2808.       end
  2809.       BattleManager.log_window.clear
  2810.     elsif LNX11::BATTLELOG_TYPE == 1
  2811.       # 蓄积型
  2812.       $game_message.helpdisplay_texts.each do |text|
  2813.         messagedisplay_se_play
  2814.         BattleManager.log_window.add_text(text)
  2815.         BattleManager.log_window.abs_wait(wait)
  2816.         helpdisplay_wait_input
  2817.       end
  2818.       $game_temp.battlelog_clear = true
  2819.       BattleManager.log_window.update
  2820.     end
  2821.     $game_message.helpdisplay_texts.clear
  2822.   end
  2823.   #--------------------------------------------------------------------------
  2824.   # ● [エイリアス]:メッセージ表示が终わるまでウェイト
  2825.   #--------------------------------------------------------------------------
  2826.   alias :lnx11a_wait_for_message :wait_for_message
  2827.   def wait_for_message
  2828.     # 简易ヘルプ表示
  2829.     process_messagedisplay(@helpdisplay_wait ? @helpdisplay_wait : 60)
  2830.     return if $game_message.texts.empty?
  2831.     # 元のメソッドを呼ぶ
  2832.     lnx11a_wait_for_message
  2833.   end  
  2834.   #--------------------------------------------------------------------------
  2835.   # ● [エイリアス]:戦闘开始
  2836.   #--------------------------------------------------------------------------
  2837.   alias :lnx11a_battle_start :battle_start
  2838.   def battle_start   
  2839.     @helpdisplay_wait = LNX11::MESSAGE_WAIT[:battle_start][0]
  2840.     @helpdisplay_wait_input = LNX11::MESSAGE_WAIT[:battle_start][1]
  2841.     # メッセージウィンドウへのテキスト追加を禁止する
  2842.     $game_message.add_disabled
  2843.     # 元のメソッドを呼ぶ
  2844.     lnx11a_battle_start
  2845.     # メッセージウィンドウへのテキスト追加を许可する
  2846.     $game_message.add_enabled
  2847.     @helpdisplay_wait = nil
  2848.     @helpdisplay_wait_input = nil
  2849.   end
  2850.   #--------------------------------------------------------------------------
  2851.   # ● [エイリアス]:胜利の処理
  2852.   #--------------------------------------------------------------------------
  2853.   alias :lnx11a_process_victory :process_victory
  2854.   def process_victory
  2855.     @helpdisplay_wait = LNX11::MESSAGE_WAIT[:victory][0]
  2856.     @helpdisplay_wait_input = LNX11::MESSAGE_WAIT[:victory][1]
  2857.     # メッセージウィンドウへのテキスト追加を禁止する
  2858.     $game_message.add_disabled
  2859.     # 元のメソッドを呼ぶ
  2860.     success = lnx11a_process_victory
  2861.     # メッセージウィンドウへのテキスト追加を许可する
  2862.     $game_message.add_enabled
  2863.     @helpdisplay_wait = nil
  2864.     @helpdisplay_wait_input = nil
  2865.     return success
  2866.   end
  2867.   #--------------------------------------------------------------------------
  2868.   # ● [エイリアス]:逃走の処理
  2869.   #--------------------------------------------------------------------------
  2870.   alias :lnx11a_process_escape :process_escape
  2871.   def process_escape
  2872.     @helpdisplay_wait = LNX11::MESSAGE_WAIT[:escape][0]
  2873.     @helpdisplay_wait_input = LNX11::MESSAGE_WAIT[:escape][1]
  2874.     # メッセージウィンドウへのテキスト追加を禁止する
  2875.     $game_message.add_disabled
  2876.     # 元のメソッドを呼ぶ
  2877.     success = lnx11a_process_escape
  2878.     # メッセージウィンドウへのテキスト追加を许可する
  2879.     $game_message.add_enabled
  2880.     @helpdisplay_wait = nil
  2881.     @helpdisplay_wait_input = nil
  2882.     return success
  2883.   end
  2884.   #--------------------------------------------------------------------------
  2885.   # ● [エイリアス]:败北の処理
  2886.   #--------------------------------------------------------------------------
  2887.   alias :lnx11a_process_defeat :process_defeat
  2888.   def process_defeat
  2889.     @helpdisplay_wait = LNX11::MESSAGE_WAIT[:defeat][0]
  2890.     @helpdisplay_wait_input = LNX11::MESSAGE_WAIT[:defeat][1]
  2891.     # メッセージウィンドウへのテキスト追加を禁止する
  2892.     $game_message.add_disabled
  2893.     # 元のメソッドを呼ぶ
  2894.     success = lnx11a_process_defeat
  2895.     # メッセージウィンドウへのテキスト追加を许可する
  2896.     $game_message.add_enabled
  2897.     @helpdisplay_wait = nil
  2898.     @helpdisplay_wait_input = nil
  2899.     return success
  2900.   end
  2901.   #--------------------------------------------------------------------------
  2902.   # ● [エイリアス]:ドロップアイテムの获得と表示
  2903.   #--------------------------------------------------------------------------
  2904.   alias :lnx11a_gain_drop_items :gain_drop_items
  2905.   def gain_drop_items
  2906.     helpdisplay_clear
  2907.     @helpdisplay_wait = LNX11::MESSAGE_WAIT[:drop_item][0]
  2908.     @helpdisplay_wait_input = LNX11::MESSAGE_WAIT[:drop_item][1]
  2909.     @helpdisplay_se = LNX11::DROPITEM_SE
  2910.     # 元のメソッドを呼ぶ
  2911.     lnx11a_gain_drop_items
  2912.     @helpdisplay_wait = nil
  2913.     @helpdisplay_wait_input = nil
  2914.     @helpdisplay_se = nil
  2915.   end
  2916.   #--------------------------------------------------------------------------
  2917.   # ● [再定义]:経験値の获得とレベルアップの表示
  2918.   #--------------------------------------------------------------------------
  2919.   def gain_exp
  2920.     @helpdisplay_wait = LNX11::MESSAGE_WAIT[:levelup][0]
  2921.     @helpdisplay_wait_input = LNX11::MESSAGE_WAIT[:levelup][1]
  2922.     $game_party.all_members.each do |actor|
  2923.       @helpdisplay_se = LNX11::LEVELUP_SE
  2924.       actor.gain_exp($game_troop.exp_total)
  2925.       # レベルアップ毎にメッセージ表示ウェイト
  2926.       wait_for_message
  2927.     end
  2928.     @helpdisplay_wait = nil
  2929.     @helpdisplay_wait_input = nil
  2930.     @helpdisplay_se = nil
  2931.   end
  2932. end
  2933.  
  2934. #==============================================================================
  2935. # ■ Game_Temp
  2936. #------------------------------------------------------------------------------
  2937. #  セーブデータに含まれない、一时的なデータを插うクラスです。このクラスのイン
  2938. # スタンスは $game_temp で参照されます。
  2939. #==============================================================================
  2940.  
  2941. class Game_Temp
  2942.   #--------------------------------------------------------------------------
  2943.   # ● [追加]:公开インスタンス変数
  2944.   #--------------------------------------------------------------------------
  2945.   attr_accessor :popup_data            # ポップアップスプライト
  2946.   attr_accessor :actor_battler_graphic # アクターのバトラーグラフィック
  2947.   attr_accessor :battlelog_clear       # バトルログ消去フラグ
  2948.   attr_accessor :target_cursor_sprite  # ターゲットカーソルスプライト
  2949.   attr_accessor :last_target_cursor    # 対象选択のカーソル记忆
  2950.   #--------------------------------------------------------------------------
  2951.   # ● [エイリアス]:オブジェクト初期化
  2952.   #--------------------------------------------------------------------------
  2953.   alias :lnx11a_initialize :initialize
  2954.   def initialize
  2955.     # 元のメソッドを呼ぶ
  2956.     lnx11a_initialize
  2957.     # 追加
  2958.     @popup_data = nil
  2959.     @actor_battler_graphic = []
  2960.     @battlelog_clear = false
  2961.     @battle_status_refresh = nil
  2962.     @target_cursor_sprite = nil
  2963.     clear_last_target_cursor
  2964.   end
  2965.   #--------------------------------------------------------------------------
  2966.   # ● [追加]:バトルステータス更新メソッドの设定
  2967.   #--------------------------------------------------------------------------
  2968.   def method_battle_status_refresh=(method)
  2969.     @battle_status_refresh = method
  2970.   end
  2971.   #--------------------------------------------------------------------------
  2972.   # ● [追加]:バトルステータス更新
  2973.   #--------------------------------------------------------------------------
  2974.   def battle_status_refresh
  2975.     return unless $game_party.in_battle
  2976.     @battle_status_refresh.call if @battle_status_refresh
  2977.   end
  2978.   #--------------------------------------------------------------------------
  2979.   # ● [追加]:対象选択のカーソル记忆をクリア
  2980.   #--------------------------------------------------------------------------
  2981.   def clear_last_target_cursor
  2982.     @last_target_cursor = {:actor => nil, :enemy => nil}
  2983.   end
  2984. end
  2985.  
  2986. #==============================================================================
  2987. # ■ Game_Action
  2988. #------------------------------------------------------------------------------
  2989. #  戦闘行动を插うクラスです。
  2990. #==============================================================================
  2991.  
  2992. class Game_Action
  2993.   #--------------------------------------------------------------------------
  2994.   # ● [エイリアス]:ターゲットの配列作成
  2995.   #--------------------------------------------------------------------------
  2996.   alias :lnx11a_make_targets :make_targets
  2997.   def make_targets   
  2998.     if LNX11::TROOP_X_SORT
  2999.       # 元のメソッドを呼んでソート
  3000.       return lnx11a_make_targets.sort {|a,b| a.screen_x <=> b.screen_x}
  3001.     else
  3002.       return lnx11a_make_targets
  3003.     end
  3004.   end
  3005. end
  3006.  
  3007. #==============================================================================
  3008. # ■ Game_ActionResult
  3009. #------------------------------------------------------------------------------
  3010. #  戦闘行动の结果を插うクラスです。属性に関する结果を追加します。
  3011. #==============================================================================
  3012.  
  3013. class Game_ActionResult
  3014.   #--------------------------------------------------------------------------
  3015.   # ● 公开インスタンス変数
  3016.   #--------------------------------------------------------------------------
  3017.   attr_accessor :element_rate               # 属性修正値
  3018.   #--------------------------------------------------------------------------
  3019.   # ● ダメージ値のクリア
  3020.   #--------------------------------------------------------------------------
  3021.   alias :lnx11a_clear_damage_values :clear_damage_values
  3022.   def clear_damage_values
  3023.     # 元のメソッドを呼ぶ
  3024.     lnx11a_clear_damage_values
  3025.     # 属性修正値をクリア
  3026.     @element_rate = 1.0
  3027.   end
  3028.   #--------------------------------------------------------------------------
  3029.   # ● [追加]:属性修正値の取得
  3030.   #--------------------------------------------------------------------------
  3031.   def element_rate
  3032.     return @element_rate if @element_rate
  3033.     @element_rate = 1.0
  3034.   end
  3035. end
  3036.  
  3037. #==============================================================================
  3038. # ■ Game_BattlerBase
  3039. #------------------------------------------------------------------------------
  3040. #  バトラーを插う基本のクラスです。
  3041. #==============================================================================
  3042.  
  3043. class Game_BattlerBase
  3044.   #--------------------------------------------------------------------------
  3045.   # ● [追加]:ポップアップデータの取得
  3046.   #--------------------------------------------------------------------------
  3047.   def popup_data
  3048.     $game_temp.popup_data
  3049.   end
  3050.   #--------------------------------------------------------------------------
  3051.   # ● [エイリアス]:スキル使用コストの支払い
  3052.   #--------------------------------------------------------------------------
  3053.   alias :lnx11a_pay_skill_cost :pay_skill_cost
  3054.   def pay_skill_cost(skill)
  3055.     rmp = self.mp
  3056.     rtp = self.tp
  3057.     # 元のメソッドを呼ぶ   
  3058.     lnx11a_pay_skill_cost(skill)
  3059.     return unless $game_party.in_battle
  3060.     # ポップアップ
  3061.     popup_data.popup_regenerate_mp(self, (rmp - self.mp).truncate, true)
  3062.     popup_data.popup_regenerate_tp(self, (rtp - self.tp).truncate, true)
  3063.   end
  3064. end
  3065.  
  3066. #==============================================================================
  3067. # ■ Game_Battler
  3068. #------------------------------------------------------------------------------
  3069. #  スプライトに関するメソッドを追加したバトラーのクラスです。
  3070. #==============================================================================
  3071.  
  3072. class Game_Battler < Game_BattlerBase
  3073.   #--------------------------------------------------------------------------
  3074.   # ● 公开インスタンス変数
  3075.   #--------------------------------------------------------------------------
  3076.   attr_accessor :loop_animation_id     # ループアニメーション ID
  3077.   attr_accessor :loop_animation_mirror # ループアニメーション 左右反転フラグ
  3078.   #--------------------------------------------------------------------------
  3079.   # ● [エイリアス]:スプライトのエフェクトをクリア
  3080.   #--------------------------------------------------------------------------
  3081.   alias :lnx11a_clear_sprite_effects :clear_sprite_effects
  3082.   def clear_sprite_effects
  3083.     # 元のメソッドを呼ぶ
  3084.     lnx11a_clear_sprite_effects
  3085.     @loop_animation_id = 0
  3086.     @loop_animation_mirror = false
  3087.   end
  3088.   #--------------------------------------------------------------------------
  3089.   # ● [追加]:ステートのループアニメーションの设定
  3090.   #--------------------------------------------------------------------------
  3091.   def set_state_animation
  3092.     # 表示优先度が高いステートを优先
  3093.     sort_states
  3094.     anime = @states.collect {|id| $data_states[id].state_animation }
  3095.     anime.delete(0)
  3096.     @loop_animation_id = anime[0] ? anime[0] : 0
  3097.   end
  3098.   #--------------------------------------------------------------------------
  3099.   # ● [エイリアス]:ステート情报をクリア
  3100.   #--------------------------------------------------------------------------
  3101.   alias :lnx11a_clear_states :clear_states
  3102.   def clear_states
  3103.     # 元のメソッドを呼ぶ
  3104.     lnx11a_clear_states
  3105.     # ステートアニメ设定
  3106.     set_state_animation
  3107.   end
  3108.   #--------------------------------------------------------------------------
  3109.   # ● [エイリアス]:ステートの付加
  3110.   #--------------------------------------------------------------------------
  3111.   alias :lnx11a_add_state :add_state
  3112.   def add_state(state_id)
  3113.     # 元のメソッドを呼ぶ
  3114.     lnx11a_add_state(state_id)
  3115.     # ステートアニメ设定
  3116.     set_state_animation
  3117.   end
  3118.   #--------------------------------------------------------------------------
  3119.   # ● [エイリアス]:ステートの解除
  3120.   #--------------------------------------------------------------------------
  3121.   alias :lnx11a_remove_state :remove_state
  3122.   def remove_state(state_id)
  3123.     # 元のメソッドを呼ぶ
  3124.     lnx11a_remove_state(state_id)
  3125.     # ステートアニメ设定
  3126.     set_state_animation
  3127.   end
  3128.   #--------------------------------------------------------------------------
  3129.   # ● [追加]:ポップアップディレイの取得
  3130.   #--------------------------------------------------------------------------
  3131.   def popup_delay
  3132.     return @popup_delay if @popup_delay
  3133.     popup_delay_clear
  3134.   end
  3135.   #--------------------------------------------------------------------------
  3136.   # ● [追加]:ポップアップディレイの设定
  3137.   #--------------------------------------------------------------------------
  3138.   def popup_delay=(delay)
  3139.     @popup_delay = delay
  3140.   end
  3141.   #--------------------------------------------------------------------------
  3142.   # ● [追加]:ポップアップディレイの设定
  3143.   #--------------------------------------------------------------------------
  3144.   def popup_delay_clear
  3145.     @popup_delay = Array.new(16) { 0 }
  3146.   end
  3147.   #--------------------------------------------------------------------------
  3148.   # ● [エイリアス]:スキル/アイテムの属性修正値を取得
  3149.   #  弱点/耐性の判定を追加します。
  3150.   #--------------------------------------------------------------------------
  3151.   alias :lnx11a_item_element_rate :item_element_rate
  3152.   def item_element_rate(user, item)
  3153.     # 元のメソッドを呼ぶ
  3154.     rate = lnx11a_item_element_rate(user, item)
  3155.     return rate unless $game_party.in_battle
  3156.     # レートを结果に保存する
  3157.     @result.element_rate = rate
  3158.     rate
  3159.   end
  3160.   #--------------------------------------------------------------------------
  3161.   # ● [エイリアス]:ダメージの処理
  3162.   #  吸収による回复のポップアップを生成します。
  3163.   #--------------------------------------------------------------------------
  3164.   alias :lnx11a_execute_damage :execute_damage
  3165.   def execute_damage(user)
  3166.     # 元のメソッドを呼ぶ
  3167.     lnx11a_execute_damage(user)
  3168.     return unless $game_party.in_battle
  3169.     # ポップアップ
  3170.     popup_data.popup_hp_drain(user, @result.hp_drain)
  3171.     popup_data.popup_mp_drain(user, @result.mp_drain)
  3172.   end
  3173.   #--------------------------------------------------------------------------
  3174.   # ● [エイリアス]:HP の再生
  3175.   #--------------------------------------------------------------------------
  3176.   alias :lnx11a_regenerate_hp :regenerate_hp
  3177.   def regenerate_hp
  3178.     # 元のメソッドを呼ぶ
  3179.     lnx11a_regenerate_hp
  3180.     return unless $game_party.in_battle
  3181.     # ポップアップ
  3182.     popup_data.popup_regenerate_hp(self, @result.hp_damage)
  3183.   end
  3184.   #--------------------------------------------------------------------------
  3185.   # ● [エイリアス]:MP の再生
  3186.   #--------------------------------------------------------------------------
  3187.   alias :lnx11a_regenerate_mp :regenerate_mp
  3188.   def regenerate_mp
  3189.     # 元のメソッドを呼ぶ
  3190.     lnx11a_regenerate_mp
  3191.     return unless $game_party.in_battle
  3192.     # ポップアップ
  3193.     popup_data.popup_regenerate_mp(self, @result.mp_damage)
  3194.   end
  3195.   #--------------------------------------------------------------------------
  3196.   # ● [エイリアス]:TP の再生
  3197.   #--------------------------------------------------------------------------
  3198.   alias :lnx11a_regenerate_tp :regenerate_tp
  3199.   def regenerate_tp
  3200.     rtp = self.tp.to_i
  3201.     # 元のメソッドを呼ぶ
  3202.     lnx11a_regenerate_tp
  3203.     return unless $game_party.in_battle
  3204.     # ポップアップ
  3205.     popup_data.popup_regenerate_tp(self, rtp - self.tp.to_i)
  3206.   end
  3207.   #--------------------------------------------------------------------------
  3208.   # ● 被ダメージによる TP チャージ
  3209.   #--------------------------------------------------------------------------
  3210.   alias :lnx11a_charge_tp_by_damage :charge_tp_by_damage
  3211.   def charge_tp_by_damage(damage_rate)
  3212.     rtp = self.tp.to_i
  3213.     # 元のメソッドを呼ぶ
  3214.     lnx11a_charge_tp_by_damage(damage_rate)
  3215.     return unless $game_party.in_battle
  3216.     # ポップアップ
  3217.     popup_data.popup_tp_charge(self, rtp - self.tp.to_i)
  3218.   end
  3219.   #--------------------------------------------------------------------------
  3220.   # ● [エイリアス]:スキル/アイテムの使用者侧への効果(TP 得)
  3221.   #--------------------------------------------------------------------------
  3222.   alias :lnx11a_item_user_effect :item_user_effect
  3223.   def item_user_effect(user, item)
  3224.     rtp = user.tp.to_i
  3225.     # 元のメソッドを呼ぶ
  3226.     lnx11a_item_user_effect(user, item)
  3227.     return unless $game_party.in_battle
  3228.     # ポップアップ
  3229.     popup_data.popup_tp_gain(user, rtp - user.tp.to_i)
  3230.   end
  3231.   #--------------------------------------------------------------------------
  3232.   # ● [追加]:高さの取得
  3233.   #--------------------------------------------------------------------------
  3234.   def bitmap_height
  3235.     return @bitmap_height if @bitmap_height
  3236.     @bitmap_height = 0
  3237.   end
  3238.   #--------------------------------------------------------------------------
  3239.   # ● [追加]:高さの设定
  3240.   #--------------------------------------------------------------------------
  3241.   def bitmap_height=(y)
  3242.     @bitmap_height = y
  3243.   end
  3244.   #--------------------------------------------------------------------------
  3245.   # ● [追加]:バトル画面 Y 座标(头上)の取得
  3246.   #--------------------------------------------------------------------------
  3247.   def screen_y_top
  3248.     screen_y - @bitmap_height
  3249.   end
  3250.   #--------------------------------------------------------------------------
  3251.   # ● [追加]:バトル画面 Y 座标(中心)の取得
  3252.   #--------------------------------------------------------------------------
  3253.   def screen_y_center
  3254.     screen_y - @bitmap_height / 2
  3255.   end
  3256. end
  3257.  
  3258. #==============================================================================
  3259. # ■ Game_Actor
  3260. #------------------------------------------------------------------------------
  3261. #  アクターを插うクラスです。このクラスは Game_Actors クラス($game_actors)
  3262. # の内部で使用され、Game_Party クラス($game_party)からも参照されます。
  3263. #==============================================================================
  3264.  
  3265. class Game_Actor < Game_Battler
  3266.   #--------------------------------------------------------------------------
  3267.   # ● [追加]:公开インスタンス変数
  3268.   #--------------------------------------------------------------------------
  3269.   attr_accessor :battler_graphic_name    # 后指定のバトラーグラフィック
  3270.   attr_accessor :refresh_battler_graphic # バトラーグラフィックの更新フラグ
  3271.   attr_accessor :screen_x                # バトル画面 X 座标
  3272.   attr_accessor :screen_y                # バトル画面 Y 座标
  3273.   attr_accessor :last_actor_command      # 最后に选択したコマンド
  3274.   #--------------------------------------------------------------------------
  3275.   # ● [再定义]:スプライトを使うか?
  3276.   #--------------------------------------------------------------------------
  3277.   def use_sprite?
  3278.     return true # 使う
  3279.   end
  3280.   #--------------------------------------------------------------------------
  3281.   # ● [追加]:バトル画面 Z 座标の取得
  3282.   #--------------------------------------------------------------------------
  3283.   def screen_z
  3284.     return $game_party.members_screen_z[0] if index == nil
  3285.     return $game_party.members_screen_z[index] # Game_EnemyのZ座标は100
  3286.   end
  3287.   #--------------------------------------------------------------------------
  3288.   # ● [エイリアス]:ダメージ効果の実行
  3289.   #--------------------------------------------------------------------------
  3290.   alias :lnx11a_perform_damage_effect :perform_damage_effect
  3291.   def perform_damage_effect
  3292.     # 元のメソッドを呼ぶ
  3293.     lnx11a_perform_damage_effect
  3294.     # シェイクを无効にしている场合、シェイクをクリア
  3295.     $game_troop.screen.clear_shake if LNX11::DISABLED_DAMAGE_SHAKE
  3296.   end
  3297.   #--------------------------------------------------------------------------
  3298.   # ● [再定义]:コラプス効果の実行
  3299.   #  アクターの[特徴>その他>消灭エフェクト]の设定を适用するようにします。
  3300.   #  処理内容は Game_Enemy のものとほぼ同一です。
  3301.   #--------------------------------------------------------------------------
  3302.   def perform_collapse_effect
  3303.     if $game_party.in_battle
  3304.       case collapse_type
  3305.       when 0
  3306.         @sprite_effect_type = :collapse
  3307.         Sound.play_actor_collapse
  3308.       when 1
  3309.         @sprite_effect_type = :boss_collapse
  3310.         Sound.play_boss_collapse1
  3311.       when 2
  3312.         @sprite_effect_type = :instant_collapse
  3313.       end
  3314.     end
  3315.   end
  3316.   #--------------------------------------------------------------------------
  3317.   # ● [追加]:グラフィック设定の配列を返す
  3318.   #--------------------------------------------------------------------------
  3319.   def graphic_name_index
  3320.     case LNX11::DEFAULT_BATTLER_GRAPHIC
  3321.     when 0 ; [@face_name, @face_index]
  3322.     when 1 ; [@character_name, @character_index]
  3323.     end
  3324.   end
  3325.   #--------------------------------------------------------------------------
  3326.   # ● [エイリアス]:グラフィックの変更
  3327.   #--------------------------------------------------------------------------
  3328.   alias :lnx11a_set_graphic :set_graphic
  3329.   def set_graphic(*args)
  3330.     face = graphic_name_index
  3331.     # 元のメソッドを呼ぶ
  3332.     lnx11a_set_graphic(*args)
  3333.     @refresh_battler_graphic = (face != graphic_name_index)
  3334.   end
  3335.   #--------------------------------------------------------------------------
  3336.   # ● [追加]:デフォルトバトラーグラフィックの取得
  3337.   #--------------------------------------------------------------------------
  3338.   def facebattler
  3339.     $game_temp.actor_battler_graphic[id]
  3340.   end
  3341.   def facebattler=(bitmap)
  3342.     facebattler.dispose if facebattler && !facebattler.disposed?
  3343.     $game_temp.actor_battler_graphic[id] = bitmap
  3344.   end
  3345.   #--------------------------------------------------------------------------
  3346.   # ● [追加]:后指定のバトラーグラフィックファイル名の取得
  3347.   #--------------------------------------------------------------------------
  3348.   def battler_graphic_name
  3349.     return @battler_graphic_name if @battler_graphic_name != nil
  3350.     @battler_graphic_name = ""
  3351.   end
  3352.   #--------------------------------------------------------------------------
  3353.   # ● [追加]:后指定のバトラーグラフィックファイル名の指定
  3354.   #--------------------------------------------------------------------------
  3355.   def battler_graphic_name=(filename)
  3356.     @battler_graphic_name = filename
  3357.     @refresh_battler_graphic = true
  3358.   end
  3359.   #--------------------------------------------------------------------------
  3360.   # ● [追加]:颜グラフィックを描画して返す
  3361.   #  処理内容は Window_Base の draw_face に准じたものです。
  3362.   #--------------------------------------------------------------------------
  3363.   def draw_face(face_name, face_index, enabled = true)
  3364.     fw = 96
  3365.     fh = 96
  3366.     # ビットマップを作成して返す
  3367.     bitmap = Cache.face(face_name)
  3368.     rect = Rect.new(face_index % 4 * fw, face_index / 4 * fh, fw, fh)
  3369.     face = Bitmap.new(fw, fh)
  3370.     color = LNX11::DEFAULT_BG_COLOR
  3371.     face.gradient_fill_rect(face.rect, color[0], color[1], true)
  3372.     face.blt(0, 0, bitmap, rect)
  3373.     bitmap.dispose
  3374.     face
  3375.   end
  3376.   #--------------------------------------------------------------------------
  3377.   # ● [追加]:歩行グラフィックを描画して返す
  3378.   #  処理内容は Window_Base の draw_character に准じたものです。
  3379.   #--------------------------------------------------------------------------
  3380.   def draw_character(character_name, character_index)
  3381.     return unless character_name
  3382.     bitmap = Cache.character(character_name)
  3383.     sign = character_name[/^[\!\$]./]
  3384.     if sign && sign.include?('$')
  3385.       cw = bitmap.width / 3
  3386.       ch = bitmap.height / 4
  3387.     else
  3388.       cw = bitmap.width / 12
  3389.       ch = bitmap.height / 8
  3390.     end
  3391.     n = character_index
  3392.     src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
  3393.     character = Bitmap.new(cw, ch)
  3394.     color = LNX11::DEFAULT_BG_COLOR
  3395.     character.gradient_fill_rect(character.rect, color[0], color[1], true)
  3396.     character.blt(0, 0, bitmap, src_rect)
  3397.     character
  3398.   end
  3399.  
  3400.   #--------------------------------------------------------------------------
  3401.   # ● [追加]:デフォルトバトラーグラフィック设定
  3402.   #--------------------------------------------------------------------------
  3403.   def default_battler_graphic
  3404.     case LNX11::DEFAULT_BATTLER_GRAPHIC
  3405.     when 0 # 颜グラフィック
  3406.       self.facebattler = draw_face(@face_name, @face_index)
  3407.     when 1 # 歩行グラフィック
  3408.       self.facebattler = draw_character(@character_name, @character_index)
  3409.     end
  3410.   end
  3411.   #--------------------------------------------------------------------------
  3412.   # ● [追加]:バトラーグラフィックの更新
  3413.   #  Sprite_Batter が利用するオブジェクトを更新します。
  3414.   #--------------------------------------------------------------------------
  3415.   def update_battler_graphic
  3416.     @battler_hue = 0
  3417.     if !battler_graphic_name.empty?
  3418.       # スクリプトで指定されている
  3419.       @battler_name = @battler_graphic_name
  3420.       dispose_facebattler
  3421.     elsif !actor.default_battler_graphic.empty?
  3422.       # メモで指定されている
  3423.       @battler_name = actor.default_battler_graphic
  3424.       dispose_facebattler
  3425.     else
  3426.       # 何も指定されていない
  3427.       @battler_name = ""
  3428.       default_battler_graphic
  3429.     end
  3430.     # 更新したので更新フラグを取り消す
  3431.     @refresh_battler_graphic = false
  3432.   end
  3433.   #--------------------------------------------------------------------------
  3434.   # ● [追加]:バトラー用颜グラフィックの解放
  3435.   #--------------------------------------------------------------------------
  3436.   def dispose_facebattler
  3437.     return if self.facebattler == nil
  3438.     self.facebattler.dispose
  3439.     self.facebattler = nil
  3440.   end
  3441.   #--------------------------------------------------------------------------
  3442.   # ● [エイリアス]:レベルアップメッセージの表示
  3443.   #   レベルアップのポップアップを追加します。
  3444.   #--------------------------------------------------------------------------
  3445.   alias :lnx11a_display_level_up :display_level_up
  3446.   def display_level_up(new_skills)
  3447.     popup_data.popup_levelup(self) if $game_party.in_battle
  3448.     lnx11a_display_level_up(new_skills)
  3449.   end
  3450. end
  3451.  
  3452. #==============================================================================
  3453. # ■ Game_Enemy
  3454. #------------------------------------------------------------------------------
  3455. #  敌キャラを插うクラスです。
  3456. #==============================================================================
  3457.  
  3458. class Game_Enemy < Game_Battler
  3459.   #--------------------------------------------------------------------------
  3460.   # ● 通常攻撃 アニメーション ID の取得
  3461.   #--------------------------------------------------------------------------
  3462.   def atk_animation
  3463.     # メモを参照
  3464.     enemy.atk_animation
  3465.   end
  3466. end
  3467.  
  3468. #==============================================================================
  3469. # ■ Game_Party
  3470. #------------------------------------------------------------------------------
  3471. #  パーティを插うクラスです。所持金やアイテムなどの情报が含まれます。このクラ
  3472. # スのインスタンスは $game_party で参照されます。
  3473. #==============================================================================
  3474.  
  3475. class Game_Party < Game_Unit
  3476.   #--------------------------------------------------------------------------
  3477.   # ● [追加]:公开インスタンス変数
  3478.   #--------------------------------------------------------------------------
  3479.   attr_accessor :actor_invisible     # アクター非表示
  3480.   attr_accessor :status_invisible    # バトルステータス非表示
  3481.   attr_accessor :actor_bg_invisible  # アクター背景非表示
  3482.   attr_accessor :last_party_command  # 最后に选択したパーティコマンド
  3483.   attr_accessor :members_screen_x          # バトルメンバー分のX座标配列
  3484.   attr_accessor :members_screen_x_nooffset # X:オフセットなし
  3485.   attr_accessor :members_screen_y          # バトルメンバー分のY座标配列
  3486.   attr_accessor :members_screen_z          # バトルメンバー分のZ座标配列
  3487.   #--------------------------------------------------------------------------
  3488.   # ● [追加]:バトルメンバーの座标设定
  3489.   #--------------------------------------------------------------------------
  3490.   def set_members_xyz
  3491.     return if members.size == 0
  3492.     # 座标をまとめて设定
  3493.     set_screen_x
  3494.     set_screen_y
  3495.     set_screen_z
  3496.   end
  3497.   #--------------------------------------------------------------------------
  3498.   # ● [追加]:バトルメンバーの座标设定
  3499.   #--------------------------------------------------------------------------
  3500.   def set_members_battle_graphic
  3501.     $game_party.battle_members.each {|actor| actor.update_battler_graphic}
  3502.   end
  3503.   #--------------------------------------------------------------------------
  3504.   # ● [追加]:バトル画面 X 座标の设定
  3505.   #  ここで设定した座标は Game_Actor や ステータス表示等で利用されます。
  3506.   #--------------------------------------------------------------------------
  3507.   def set_screen_x
  3508.     @members_screen_x = []
  3509.     @members_screen_x_nooffset = []
  3510.     padding = LNX11::ACTOR_PADDING[:side]
  3511.     if LNX11::ACTOR_CENTERING
  3512.       # アクターのセンタリングが有効
  3513.       a_spacing = LNX11::ACTOR_SPACING_ADJUST
  3514.       padding += (max_battle_members - battle_members.size) * a_spacing
  3515.       width = (Graphics.width - padding * 2) / battle_members.size
  3516.     else
  3517.       # アクターのセンタリングが无効
  3518.       width = (Graphics.width - padding * 2) / max_battle_members
  3519.     end
  3520.     battle_members.each_with_index do |actor, i|
  3521.       offset = LNX11::ACTOR_OFFSET[:x]
  3522.       @members_screen_x_nooffset[i] = width * i + width / 2 + padding
  3523.       @members_screen_x[i] = @members_screen_x_nooffset[i] + offset
  3524.       actor.screen_x = @members_screen_x[i]
  3525.     end
  3526.   end
  3527.   #--------------------------------------------------------------------------
  3528.   # ● [追加]:バトル画面 Y 座标の设定
  3529.   #  ここで设定した座标は Game_Actor や ステータス表示等で利用されます。
  3530.   #--------------------------------------------------------------------------
  3531.   def set_screen_y
  3532.     offset = LNX11::ACTOR_OFFSET[:y]
  3533.     ay = Graphics.height - LNX11::ACTOR_PADDING[:bottom] + offset
  3534.     @members_screen_y = Array.new(max_battle_members) {ay}
  3535.     battle_members.each {|actor| actor.screen_y = ay}
  3536.   end
  3537.   #--------------------------------------------------------------------------
  3538.   # ● [追加]:バトル画面 Z 座标の设定
  3539.   #--------------------------------------------------------------------------
  3540.   def set_screen_z
  3541.     # 便宜上、XYと同じように配列を作成しておく
  3542.     az = LNX11::ACTOR_SCREEN_TONE ? 150 : -10
  3543.     @members_screen_z = Array.new(max_battle_members) {az}
  3544.   end
  3545.   #--------------------------------------------------------------------------
  3546.   # ● [オーバーライド]:戦闘开始処理
  3547.   #--------------------------------------------------------------------------
  3548.   def on_battle_start
  3549.     super
  3550.     # バトルステータスの更新
  3551.     $game_temp.battle_status_refresh
  3552.   end
  3553. end
  3554.  
  3555. #==============================================================================
  3556. # ■ Game_Troop
  3557. #------------------------------------------------------------------------------
  3558. #  敌グループおよび戦闘に関するデータを插うクラスです。
  3559. #==============================================================================
  3560.  
  3561. class Game_Troop < Game_Unit
  3562.   #--------------------------------------------------------------------------
  3563.   # ● [エイリアス]:セットアップ
  3564.   #  敌グループの座标修正処理を追加します。
  3565.   #--------------------------------------------------------------------------
  3566.   alias :lnx11a_setup :setup
  3567.   def setup(*args)
  3568.     # 元のメソッドを呼ぶ
  3569.     lnx11a_setup(*args)
  3570.     # 敌グループの座标修正
  3571.     @enemies.each do |enemy|
  3572.       # X:解像度がデフォルトでない场合に位置を补正する
  3573.       if LNX11::TROOP_X_SCREEN_FIX
  3574.         enemy.screen_x *= Graphics.width.to_f / 544
  3575.         enemy.screen_x.truncate
  3576.       end
  3577.       enemy.screen_y += LNX11::TROOP_Y_OFFSET
  3578.     end
  3579.   end
  3580.   #--------------------------------------------------------------------------
  3581.   # ● [エイリアス]:敌キャラ名の配列取得
  3582.   #--------------------------------------------------------------------------
  3583.   alias :lnx11a_enemy_names :enemy_names
  3584.   def enemy_names
  3585.     LNX11::MESSAGE_WINDOW_ENEMY_NAMES ? lnx11a_enemy_names : []
  3586.   end
  3587. end
  3588.  
  3589. #==============================================================================
  3590. # ■ Game_Message
  3591. #------------------------------------------------------------------------------
  3592. #  文章や选択肢などを表示するメッセージウィンドウの状态を插うクラスです。
  3593. #==============================================================================
  3594.  
  3595. class Game_Message
  3596.   #--------------------------------------------------------------------------
  3597.   # ● [追加]:公开インスタンス変数
  3598.   #--------------------------------------------------------------------------
  3599.   attr_reader   :helpdisplay_texts        # 简易ヘルプ配列
  3600.   #--------------------------------------------------------------------------
  3601.   # ● [追加]:简易ヘルプ配列の取得
  3602.   #--------------------------------------------------------------------------
  3603.   def helpdisplay_texts
  3604.     return @helpdisplay_texts if @helpdisplay_texts
  3605.     @helpdisplay_texts = []
  3606.   end
  3607.   #--------------------------------------------------------------------------
  3608.   # ● [エイリアス]:クリア
  3609.   #--------------------------------------------------------------------------
  3610.   alias :lnx11a_clear :clear
  3611.   def clear
  3612.     # 元のメソッドを呼ぶ
  3613.     lnx11a_clear
  3614.     @helpdisplay_texts = []
  3615.     @add_disabled = false
  3616.   end
  3617.   #--------------------------------------------------------------------------
  3618.   # ● [エイリアス]:テキストの追加
  3619.   #--------------------------------------------------------------------------
  3620.   alias :lnx11a_add :add
  3621.   def add(text)
  3622.     # テキストの追加が禁止されてる场合、简易ヘルプ表示用の配列に追加する
  3623.     if @add_disabled
  3624.       @helpdisplay_texts = [] unless @helpdisplay_texts
  3625.       @helpdisplay_texts.push(text)
  3626.     else
  3627.       # 元のメソッドを呼ぶ
  3628.       lnx11a_add(text)
  3629.     end
  3630.   end
  3631.   #--------------------------------------------------------------------------
  3632.   # ● [追加]:テキスト追加の禁止
  3633.   #--------------------------------------------------------------------------
  3634.   def add_disabled
  3635.     return if LNX11::MESSAGE_TYPE == 0
  3636.     @add_disabled = true
  3637.   end
  3638.   #--------------------------------------------------------------------------
  3639.   # ● [追加]:テキスト追加の禁止
  3640.   #--------------------------------------------------------------------------
  3641.   def add_enabled
  3642.     return if LNX11::MESSAGE_TYPE == 0
  3643.     @add_disabled = false
  3644.   end
  3645. end
  3646.  
  3647. #==============================================================================
  3648. # ■ Sprite_Battler
  3649. #------------------------------------------------------------------------------
  3650. #  バトラー表示用のスプライトです。
  3651. #==============================================================================
  3652.  
  3653. class Sprite_Battler < Sprite_Base
  3654.   #--------------------------------------------------------------------------
  3655.   # ● [追加]:ターゲットカーソルのバトラーの取得
  3656.   #--------------------------------------------------------------------------
  3657.   def cursor_battler
  3658.     $game_temp.target_cursor_sprite.battler
  3659.   end
  3660.   #--------------------------------------------------------------------------
  3661.   # ● [追加]:ターゲットカーソルの点灭状态に対応したシンボルを返す
  3662.   #--------------------------------------------------------------------------
  3663.   def cursor_effect
  3664.     $game_temp.target_cursor_sprite.blink ? :target_whiten : :command_whiten
  3665.   end
  3666.   #--------------------------------------------------------------------------
  3667.   # ● [追加]:対象选択フラッシュの设定
  3668.   #--------------------------------------------------------------------------
  3669.   def setup_cursor_effect
  3670.     if cursor_battler == @battler ||
  3671.        (cursor_battler == :party && @battler.actor?) ||
  3672.        ([:troop, :troop_random].include?(cursor_battler) && !@battler.actor?)
  3673.       if @effect_type == nil || @effect_type != cursor_effect
  3674.         start_effect(cursor_effect)
  3675.       end
  3676.     else
  3677.       # フラッシュエフェクト终了
  3678.       end_cursor_effect
  3679.     end
  3680.   end
  3681.   #--------------------------------------------------------------------------
  3682.   # ● [追加]:対象选択フラッシュの终了
  3683.   #--------------------------------------------------------------------------
  3684.   def end_cursor_effect
  3685.     if [:target_whiten, :command_whiten].include?(@effect_type)
  3686.       @effect_type = nil
  3687.       @effect_duration = 0
  3688.       revert_to_normal
  3689.     end
  3690.   end
  3691.   #--------------------------------------------------------------------------
  3692.   # ● [オーバーライド]:アニメーションスプライトの设定
  3693.   #--------------------------------------------------------------------------
  3694.   def animation_set_sprites(frame)
  3695.     o = self.opacity
  3696.     self.opacity = 255 if !@battler_visible || @effect_duration > 0
  3697.     # スーパークラスのメソッドを呼ぶ
  3698.     super(frame)
  3699.     self.opacity = o
  3700.   end
  3701.   #--------------------------------------------------------------------------
  3702.   # ● [オーバーライド]:アニメーションの原点设定
  3703.   #--------------------------------------------------------------------------
  3704.   def set_animation_origin
  3705.     # スーパークラスのメソッドを呼ぶ
  3706.     super
  3707.     # 画面アニメーションがアクターに再生されたら
  3708.     if @animation.position == 3 && @battler != nil && @battler.actor?
  3709.       # アニメーションのY座标を修正
  3710.       @ani_oy += LNX11::SCREEN_ANIMATION_OFFSET
  3711.     end
  3712.   end
  3713.   #--------------------------------------------------------------------------
  3714.   # ● [エイリアス]:転送元ビットマップの更新
  3715.   #--------------------------------------------------------------------------
  3716.   alias :lnx11a_update_bitmap :update_bitmap
  3717.   def update_bitmap
  3718.     if @battler.actor? && @battler.refresh_battler_graphic
  3719.       # バトラーグラフィックが変更されていれば更新する
  3720.       @battler.update_battler_graphic
  3721.     end
  3722.     if @battler.actor? && @battler.facebattler != nil
  3723.       # バトラー用颜グラフィックが作成されていれば、
  3724.       # それを Sprite の Bitmap とする
  3725.       new_bitmap = @battler.facebattler
  3726.       if bitmap != new_bitmap
  3727.         self.bitmap = new_bitmap
  3728.         init_visibility
  3729.       end
  3730.     else
  3731.       # 元のメソッドを呼ぶ
  3732.       lnx11a_update_bitmap
  3733.     end
  3734.   end
  3735.   #--------------------------------------------------------------------------
  3736.   # ● [エイリアス]:新しいアニメーションの设定
  3737.   #--------------------------------------------------------------------------
  3738.   alias :lnx11a_setup_new_animation :setup_new_animation
  3739.   def setup_new_animation
  3740.     lnx11a_setup_new_animation
  3741.     # ループアニメーションの设定
  3742.     if @battler.loop_animation_id > 0 && (@loop_animation == nil ||
  3743.        @battler.loop_animation_id != @loop_animation.id)
  3744.       animation = $data_animations[@battler.loop_animation_id]
  3745.       mirror = @battler.loop_animation_mirror
  3746.       start_loop_animation(animation, mirror)
  3747.     elsif @battler.loop_animation_id == 0 && @loop_animation
  3748.       end_loop_animation
  3749.     end
  3750.   end
  3751.   #--------------------------------------------------------------------------
  3752.   # ● [エイリアス]:新しいエフェクトの设定
  3753.   #--------------------------------------------------------------------------
  3754.   alias :lnx11a_setup_new_effect :setup_new_effect
  3755.   def setup_new_effect
  3756.     # 元のメソッドを呼ぶ
  3757.     lnx11a_setup_new_effect
  3758.     # フラッシュエフェクト设定
  3759.     if @battler_visible && cursor_battler
  3760.       setup_cursor_effect
  3761.     else
  3762.       # フラッシュエフェクト终了
  3763.       end_cursor_effect
  3764.     end
  3765.   end
  3766.   #--------------------------------------------------------------------------
  3767.   # ● [エイリアス]:エフェクトの开始
  3768.   #--------------------------------------------------------------------------
  3769.   alias :lnx11a_start_effect :start_effect
  3770.   def start_effect(effect_type)
  3771.     # エフェクト开始の追加
  3772.     @effect_type = effect_type
  3773.     case @effect_type
  3774.     when :target_whiten
  3775.       @effect_duration = 40
  3776.       @battler_visible = true
  3777.     when :command_whiten
  3778.       @effect_duration = 80
  3779.       @battler_visible = true
  3780.     end
  3781.     # 元のメソッドを呼ぶ
  3782.     lnx11a_start_effect(effect_type)
  3783.   end
  3784.   #--------------------------------------------------------------------------
  3785.   # ● [エイリアス]:エフェクトの更新
  3786.   #--------------------------------------------------------------------------
  3787.   alias :lnx11a_update_effect :update_effect
  3788.   def update_effect
  3789.     # エフェクト更新の追加
  3790.     if @effect_duration > 0
  3791.       @effect_duration -= 1
  3792.       case @effect_type
  3793.       when :target_whiten
  3794.         update_target_whiten
  3795.       when :command_whiten
  3796.         update_command_whiten
  3797.       end
  3798.       @effect_duration += 1
  3799.     end
  3800.     # 元のメソッドを呼ぶ
  3801.     lnx11a_update_effect
  3802.   end
  3803.   #--------------------------------------------------------------------------
  3804.   # ● [追加]:対象选択フラッシュエフェクトの更新
  3805.   #--------------------------------------------------------------------------
  3806.   def update_target_whiten
  3807.     alpha = @effect_duration < 20 ? @effect_duration : 40 - @effect_duration
  3808.     self.color.set(255, 255, 255, 0)
  3809.     self.color.alpha = (alpha + 1) * 2
  3810.   end
  3811.   #--------------------------------------------------------------------------
  3812.   # ● [追加]:コマンド选択フラッシュエフェクトの更新
  3813.   #--------------------------------------------------------------------------
  3814.   def update_command_whiten
  3815.     alpha = @effect_duration < 40 ? @effect_duration : 80 - @effect_duration
  3816.     self.color.set(255, 255, 255, 0)
  3817.     self.color.alpha = alpha * 2
  3818.   end
  3819.   #--------------------------------------------------------------------------
  3820.   # ● [追加]:高さの取得
  3821.   #--------------------------------------------------------------------------
  3822.   def bitmap_height
  3823.     self.bitmap.height
  3824.   end
  3825.   #--------------------------------------------------------------------------
  3826.   # ● [エイリアス]:位置の更新
  3827.   #--------------------------------------------------------------------------
  3828.   alias :lnx11a_update_position :update_position
  3829.   def update_position
  3830.     # 元のメソッドを呼ぶ
  3831.     lnx11a_update_position
  3832.     # 高さを更新
  3833.     @battler.bitmap_height = bitmap_height
  3834.     # 可视状态を更新
  3835.     self.visible = !$game_party.actor_invisible if @battler.actor?
  3836.   end
  3837.   if LNX11::ENHANCED_WHITEN
  3838.     # 白フラッシュを强めにする
  3839.     #------------------------------------------------------------------------
  3840.     # ● [再定义]:白フラッシュエフェクトの更新
  3841.     #------------------------------------------------------------------------
  3842.     def update_whiten
  3843.       self.color.set(255, 255, 255, 0)
  3844.       self.color.alpha = 192 - (16 - @effect_duration) * 12
  3845.     end
  3846.   end
  3847.   #--------------------------------------------------------------------------
  3848.   # ● ループアニメーションの追加
  3849.   #--------------------------------------------------------------------------
  3850.   #--------------------------------------------------------------------------
  3851.   # ● [追加]:クラス変数
  3852.   #--------------------------------------------------------------------------
  3853.   @@loop_ani_checker = []
  3854.   @@loop_ani_spr_checker = []
  3855.   #--------------------------------------------------------------------------
  3856.   # ● [エイリアス]:オブジェクト初期化
  3857.   #--------------------------------------------------------------------------
  3858.   alias :lnx11a_initialize :initialize
  3859.   def initialize(viewport, battler = nil)
  3860.     # 元のメソッドを呼ぶ
  3861.     lnx11a_initialize(viewport, battler)
  3862.     # ループアニメの残り时间
  3863.     @loop_ani_duration = 0
  3864.   end
  3865.   #--------------------------------------------------------------------------
  3866.   # ● [エイリアス]:解放
  3867.   #--------------------------------------------------------------------------
  3868.   alias :lnx11a_dispose :dispose
  3869.   def dispose
  3870.     # 元のメソッドを呼ぶ
  3871.     lnx11a_dispose
  3872.     # ループアニメを解放
  3873.     dispose_loop_animation
  3874.   end
  3875.   #--------------------------------------------------------------------------
  3876.   # ● [エイリアス]:フレーム更新
  3877.   #--------------------------------------------------------------------------
  3878.   alias :lnx11a_update :update
  3879.   def update
  3880.     # 元のメソッドを呼ぶ
  3881.     lnx11a_update
  3882.     update_loop_animation
  3883.     @@loop_ani_checker.clear
  3884.     @@loop_ani_spr_checker.clear
  3885.   end
  3886.   #--------------------------------------------------------------------------
  3887.   # ● [追加]:ループアニメーション表示中判定
  3888.   #--------------------------------------------------------------------------
  3889.   def loop_animation?
  3890.     @loop_animation != nil
  3891.   end
  3892.   #--------------------------------------------------------------------------
  3893.   # ● [追加]:ループアニメーションの开始
  3894.   #--------------------------------------------------------------------------
  3895.   def start_loop_animation(animation, mirror = false)
  3896.     dispose_loop_animation
  3897.     @loop_animation = animation
  3898.     if @loop_animation
  3899.       @loop_ani_mirror = mirror
  3900.       set_loop_animation_rate
  3901.       @loop_ani_duration = @loop_animation.frame_max * @loop_ani_rate + 1
  3902.       load_loop_animation_bitmap
  3903.       make_loop_animation_sprites
  3904.       set_loop_animation_origin
  3905.     end
  3906.   end
  3907.   #--------------------------------------------------------------------------
  3908.   # ● [追加]:ループアニメーションの速度を设定
  3909.   #--------------------------------------------------------------------------
  3910.   def set_loop_animation_rate
  3911.     if $lnx_include[:lnx09]
  3912.       # LNX09 を导入している
  3913.       default = LNX09::DEFAULT_BATTLE_SPEED_RATE
  3914.       if @loop_animation.speed_rate
  3915.         @loop_ani_rate = @loop_animation.speed_rate
  3916.       else
  3917.         @loop_ani_rate = default
  3918.       end
  3919.     else
  3920.       @loop_ani_rate = 4
  3921.     end
  3922.   end
  3923.   #--------------------------------------------------------------------------
  3924.   # ● [追加]:ループアニメーション グラフィックの読み込み
  3925.   #--------------------------------------------------------------------------
  3926.   def load_loop_animation_bitmap
  3927.     animation1_name = @loop_animation.animation1_name
  3928.     animation1_hue = @loop_animation.animation1_hue
  3929.     animation2_name = @loop_animation.animation2_name
  3930.     animation2_hue = @loop_animation.animation2_hue
  3931.     @loop_ani_bitmap1 = Cache.animation(animation1_name, animation1_hue)
  3932.     @loop_ani_bitmap2 = Cache.animation(animation2_name, animation2_hue)
  3933.     if @@_reference_count.include?(@loop_ani_bitmap1)
  3934.       @@_reference_count[@loop_ani_bitmap1] += 1
  3935.     else
  3936.       @@_reference_count[@loop_ani_bitmap1] = 1
  3937.     end
  3938.     if @@_reference_count.include?(@loop_ani_bitmap2)
  3939.       @@_reference_count[@loop_ani_bitmap2] += 1
  3940.     else
  3941.       @@_reference_count[@loop_ani_bitmap2] = 1
  3942.     end
  3943.     Graphics.frame_reset
  3944.   end
  3945.   #--------------------------------------------------------------------------
  3946.   # ● [追加]:ループアニメーションスプライトの作成
  3947.   #--------------------------------------------------------------------------
  3948.   def make_loop_animation_sprites
  3949.     @loop_ani_sprites = []
  3950.     if @use_sprite && !@@loop_ani_spr_checker.include?(@loop_animation)
  3951.       16.times do
  3952.         sprite = ::Sprite.new(viewport)
  3953.         sprite.visible = false
  3954.         @loop_ani_sprites.push(sprite)
  3955.       end
  3956.       if @loop_animation.position == 3
  3957.         @@loop_ani_spr_checker.push(@loop_animation)
  3958.       end
  3959.     end
  3960.     @loop_ani_duplicated = @@loop_ani_checker.include?(@loop_animation)
  3961.     if !@loop_ani_duplicated && @loop_animation.position == 3
  3962.       @@loop_ani_checker.push(@loop_animation)
  3963.     end
  3964.   end
  3965.   #--------------------------------------------------------------------------
  3966.   # ● [追加]:ループアニメーションの原点设定
  3967.   #--------------------------------------------------------------------------
  3968.   def set_loop_animation_origin
  3969.     if @loop_animation.position == 3
  3970.       if viewport == nil
  3971.         @loop_ani_ox = Graphics.width / 2
  3972.         @loop_ani_oy = Graphics.height / 2
  3973.       else
  3974.         @loop_ani_ox = viewport.rect.width / 2
  3975.         @loop_ani_oy = viewport.rect.height / 2
  3976.       end
  3977.     else
  3978.       @loop_ani_ox = x - ox + width / 2
  3979.       @loop_ani_oy = y - oy + height / 2
  3980.       if @loop_animation.position == 0
  3981.         @loop_ani_oy -= height / 2
  3982.       elsif @loop_animation.position == 2
  3983.         @loop_ani_oy += height / 2
  3984.       end
  3985.     end
  3986.   end
  3987.   #--------------------------------------------------------------------------
  3988.   # ● [追加]:ループアニメーションの解放
  3989.   #--------------------------------------------------------------------------
  3990.   def dispose_loop_animation
  3991.     if @loop_ani_bitmap1
  3992.       @@_reference_count[@loop_ani_bitmap1] -= 1
  3993.       if @@_reference_count[@loop_ani_bitmap1] == 0
  3994.         @loop_ani_bitmap1.dispose
  3995.       end
  3996.     end
  3997.     if @loop_ani_bitmap2
  3998.       @@_reference_count[@loop_ani_bitmap2] -= 1
  3999.       if @@_reference_count[@loop_ani_bitmap2] == 0
  4000.         @loop_ani_bitmap2.dispose
  4001.       end
  4002.     end
  4003.     if @loop_ani_sprites
  4004.       @loop_ani_sprites.each {|sprite| sprite.dispose }
  4005.       @loop_ani_sprites = nil
  4006.       @loop_animation = nil
  4007.     end
  4008.     @loop_ani_bitmap1 = nil
  4009.     @loop_ani_bitmap2 = nil
  4010.   end
  4011.   #--------------------------------------------------------------------------
  4012.   # ● [追加]:ループアニメーションの更新
  4013.   #--------------------------------------------------------------------------
  4014.   def update_loop_animation
  4015.     return unless loop_animation?
  4016.     @loop_ani_duration -= 1
  4017.     if @loop_ani_duration % @loop_ani_rate == 0
  4018.       if @loop_ani_duration > 0
  4019.         frame_index = @loop_animation.frame_max
  4020.         frame_index -= (@loop_ani_duration + @loop_ani_rate - 1) / @loop_ani_rate
  4021.         loop_animation_set_sprites(@loop_animation.frames[frame_index])
  4022.         @loop_animation.timings.each do |timing|
  4023.           loop_animation_process_timing(timing) if timing.frame == frame_index
  4024.         end
  4025.       else
  4026.         # 残り时间を再设定してループ
  4027.         @loop_ani_duration = @loop_animation.frame_max * @loop_ani_rate + 1
  4028.       end
  4029.     end
  4030.   end
  4031.   #--------------------------------------------------------------------------
  4032.   # ● [追加]:ループアニメーションの终了
  4033.   #--------------------------------------------------------------------------
  4034.   def end_loop_animation
  4035.     dispose_loop_animation
  4036.   end
  4037.   #--------------------------------------------------------------------------
  4038.   # ● [追加]:ループアニメーションスプライトの设定
  4039.   #     frame : フレームデータ(RPG::Animation::Frame)
  4040.   #--------------------------------------------------------------------------
  4041.   def loop_animation_set_sprites(frame)
  4042.     cell_data = frame.cell_data
  4043.     @loop_ani_sprites.each_with_index do |sprite, i|
  4044.       next unless sprite
  4045.       pattern = cell_data[i, 0]
  4046.       if !pattern || pattern < 0
  4047.         sprite.visible = false
  4048.         next
  4049.       end
  4050.       sprite.bitmap = pattern < 100 ? @loop_ani_bitmap1 : @loop_ani_bitmap2
  4051.       sprite.visible = true
  4052.       sprite.src_rect.set(pattern % 5 * 192,
  4053.         pattern % 100 / 5 * 192, 192, 192)
  4054.       if @loop_ani_mirror
  4055.         sprite.x = @loop_ani_ox - cell_data[i, 1]
  4056.         sprite.y = @loop_ani_oy + cell_data[i, 2]
  4057.         sprite.angle = (360 - cell_data[i, 4])
  4058.         sprite.mirror = (cell_data[i, 5] == 0)
  4059.       else
  4060.         sprite.x = @loop_ani_ox + cell_data[i, 1]
  4061.         sprite.y = @loop_ani_oy + cell_data[i, 2]
  4062.         sprite.angle = cell_data[i, 4]
  4063.         sprite.mirror = (cell_data[i, 5] == 1)
  4064.       end
  4065.       sprite.z = self.z + 316 + i
  4066.       sprite.ox = 96
  4067.       sprite.oy = 96
  4068.       sprite.zoom_x = cell_data[i, 3] / 100.0
  4069.       sprite.zoom_y = cell_data[i, 3] / 100.0
  4070.       sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
  4071.       sprite.blend_type = cell_data[i, 7]
  4072.     end
  4073.   end
  4074.   #--------------------------------------------------------------------------
  4075.   # ● [追加]:SE とフラッシュのタイミング処理
  4076.   #     timing : タイミングデータ(RPG::Animation::Timing)
  4077.   #--------------------------------------------------------------------------
  4078.   def loop_animation_process_timing(timing)
  4079.     timing.se.play unless @loop_ani_duplicated
  4080.     case timing.flash_scope
  4081.     when 1
  4082.       self.flash(timing.flash_color, timing.flash_duration * @loop_ani_rate)
  4083.     when 2
  4084.       if viewport && !@loop_ani_duplicated
  4085.         viewport.flash(timing.flash_color, timing.flash_duration * @loop_ani_rate)
  4086.       end
  4087.     when 3
  4088.       self.flash(nil, timing.flash_duration * @loop_ani_rate)
  4089.     end
  4090.   end
  4091. end
  4092.  
  4093. #==============================================================================
  4094. # ■ Spriteset_Battle
  4095. #------------------------------------------------------------------------------
  4096. #  バトル画面のスプライトをまとめたクラスです。
  4097. #==============================================================================
  4098.  
  4099. class Spriteset_Battle
  4100.   #--------------------------------------------------------------------------
  4101.   # ● [エイリアス]:オブジェクト初期化
  4102.   #--------------------------------------------------------------------------
  4103.   alias :lnx11a_initialize :initialize
  4104.   def initialize
  4105.     # 元のメソッドを呼ぶ
  4106.     lnx11a_initialize
  4107.     # アクターエリアの背景の作成
  4108.     create_actor_background
  4109.   end
  4110.   #--------------------------------------------------------------------------
  4111.   # ● [エイリアス]:解放
  4112.   #--------------------------------------------------------------------------
  4113.   alias :lnx11a_dispose :dispose
  4114.   def dispose
  4115.     # 元のメソッドを呼ぶ
  4116.     lnx11a_dispose
  4117.     # アクターエリアの背景の解放
  4118.     dispose_actor_background
  4119.   end
  4120.   #--------------------------------------------------------------------------
  4121.   # ● [エイリアス]:フレーム更新
  4122.   #--------------------------------------------------------------------------
  4123.   alias :lnx11a_update :update
  4124.   def update
  4125.     # 元のメソッドを呼ぶ
  4126.     lnx11a_update
  4127.     # アクターエリアの背景の更新
  4128.     update_actor_background
  4129.   end
  4130.   #--------------------------------------------------------------------------
  4131.   # ● [追加]:アクターのビューポート
  4132.   #--------------------------------------------------------------------------
  4133.   def actor_viewport
  4134.     LNX11::ACTOR_SCREEN_TONE ? @viewport1 : @viewport2
  4135.   end
  4136.   #--------------------------------------------------------------------------
  4137.   # ● [追加]:アクターエリアの背景の作成
  4138.   #--------------------------------------------------------------------------
  4139.   def create_actor_background
  4140.     return if LNX11::ACTOR_BACKGROUND == 0
  4141.     viewport = actor_viewport
  4142.     height = LNX11::ACTOR_BACKGROUND_HEIGHT
  4143.     case LNX11::ACTOR_BACKGROUND
  4144.     when 1
  4145.       # グラデーション
  4146.       @actor_background = Sprite.new
  4147.       back = Bitmap.new(Graphics.width, height)
  4148.       color = LNX11::ACTOR_BG_GRADIENT_COLOR
  4149.       back.gradient_fill_rect(back.rect, color[0], color[1], true)
  4150.       @actor_background.bitmap = back
  4151.     when 2
  4152.       # ウィンドウ
  4153.       @actor_background = Window_Base.new(0, 0, Graphics.width, height)
  4154.     else
  4155.       if LNX11::ACTOR_BACKGROUND.is_a?(String)
  4156.         # ファイル指定
  4157.         @actor_background = Sprite.new
  4158.         @actor_background.bitmap = Cache.system(LNX11::ACTOR_BACKGROUND)
  4159.         @actor_background.x = Graphics.width / 2
  4160.         @actor_background.ox = @actor_background.bitmap.width / 2
  4161.         height = @actor_background.bitmap.height
  4162.       end
  4163.     end
  4164.     @actor_background.viewport = viewport
  4165.     @actor_background.y = Graphics.height - height
  4166.     @actor_background.z = viewport == @viewport1 ? 120 : -20
  4167.     update_actor_background
  4168.   end
  4169.   #--------------------------------------------------------------------------
  4170.   # ● [追加]:アクターエリアの背景の解放
  4171.   #--------------------------------------------------------------------------
  4172.   def dispose_actor_background
  4173.     return unless @actor_background
  4174.     @actor_background.bitmap.dispose if @actor_background.is_a?(Sprite)
  4175.     @actor_background.dispose
  4176.   end
  4177.   #--------------------------------------------------------------------------
  4178.   # ● [追加]:アクターエリアの背景の更新
  4179.   #--------------------------------------------------------------------------
  4180.   def update_actor_background
  4181.     return unless @actor_background
  4182.     @actor_background.visible = !$game_party.actor_bg_invisible
  4183.   end
  4184.   #--------------------------------------------------------------------------
  4185.   # ● [再定义]:アクタースプライトの作成
  4186.   #--------------------------------------------------------------------------
  4187.   def create_actors
  4188.     # 座标とグラフィックの设定
  4189.     $game_party.set_members_xyz
  4190.     $game_party.set_members_battle_graphic
  4191.     # スプライトの作成
  4192.     viewport = actor_viewport
  4193.     @actor_sprites = $game_party.battle_members.collect do |actor|
  4194.       Sprite_Battler.new(viewport, actor)
  4195.     end
  4196.   end
  4197.   #--------------------------------------------------------------------------
  4198.   # ● [再定义]:アクタースプライトの更新
  4199.   #--------------------------------------------------------------------------
  4200.   def update_actors
  4201.     @actor_sprites.each {|sprite| sprite.update }
  4202.   end
  4203. end
  4204.  
  4205. #==============================================================================
  4206. # ■ Scene_Battle
  4207. #------------------------------------------------------------------------------
  4208. #  バトル画面の処理を行うクラスです。
  4209. #==============================================================================
  4210.  
  4211. class Scene_Battle < Scene_Base
  4212.   #--------------------------------------------------------------------------
  4213.   # ● [追加]:简易ヘルプのメソッド设定
  4214.   #--------------------------------------------------------------------------
  4215.   def set_helpdisplay_methods
  4216.     BattleManager.update_for_wait_method = method(:update_for_wait)
  4217.     BattleManager.helpdisplay_set_method = method(:helpdisplay_set)
  4218.     BattleManager.helpdisplay_clear_method = method(:helpdisplay_clear)
  4219.     BattleManager.helpdisplay_wait_short_method=method(:helpdisplay_wait_short)
  4220.   end
  4221.   #--------------------------------------------------------------------------
  4222.   # ● [追加]:简易ヘルプ表示
  4223.   #--------------------------------------------------------------------------
  4224.   def helpdisplay_set(item, duration = nil)
  4225.     @wait_short_disabled = false
  4226.     @targethelp_window.show.set_item(item)
  4227.     @targethelp_window.update
  4228.     wait(duration ? duration : 20)
  4229.   end
  4230.   #--------------------------------------------------------------------------
  4231.   # ● [追加]:简易ヘルプ消去
  4232.   #--------------------------------------------------------------------------
  4233.   def helpdisplay_clear(duration = nil)
  4234.     return if !@targethelp_window.visible
  4235.     @wait_short_disabled = false
  4236.     @targethelp_window.clear
  4237.     @targethelp_window.hide
  4238.     wait(duration ? duration : 10)
  4239.   end
  4240.   #--------------------------------------------------------------------------
  4241.   # ● [追加]:简易ヘルプ・短时间ウェイト
  4242.   #--------------------------------------------------------------------------
  4243.   def helpdisplay_wait_short
  4244.     return if !@targethelp_window.visible || @wait_short_disabled
  4245.     @wait_short_disabled = true # 连続で短时间ウェイトが実行されないように
  4246.     @targethelp_window.clear
  4247.     abs_wait_short
  4248.   end
  4249.   #--------------------------------------------------------------------------
  4250.   # ● [追加]:バトラーのエフェクト実行中?
  4251.   #--------------------------------------------------------------------------
  4252.   def battler_effect?
  4253.     @spriteset.effect?
  4254.   end
  4255.   #--------------------------------------------------------------------------
  4256.   # ● [エイリアス]:コマンド[逃げる]
  4257.   #--------------------------------------------------------------------------
  4258.   alias :lnx11a_command_escape :command_escape
  4259.   def command_escape
  4260.     @party_command_window.close
  4261.     @party_command_window.openness = 0 if LNX11::MESSAGE_TYPE == 2
  4262.     @status_window.unselect
  4263.     # 元のメソッドを呼ぶ
  4264.     lnx11a_command_escape
  4265.   end
  4266.   #--------------------------------------------------------------------------
  4267.   # ● [エイリアス]:スキル/アイテムの使用
  4268.   #--------------------------------------------------------------------------
  4269.   alias :lnx11a_use_item :use_item
  4270.   def use_item
  4271.     # 简易ヘルプ表示
  4272.     item = @subject.current_action.item
  4273.     if LNX11::BATTLELOG_TYPE == 2 && !item.no_display
  4274.       helpdisplay_set(item, item.display_wait)
  4275.     end
  4276.     # 元のメソッドを呼ぶ
  4277.     lnx11a_use_item
  4278.     # 简易ヘルプ消去・エフェクトが终わるまで待つ
  4279.     if LNX11::BATTLELOG_TYPE == 2
  4280.       wait(item.end_wait)
  4281.       helpdisplay_clear
  4282.     end
  4283.     wait_for_effect
  4284.   end
  4285.   #--------------------------------------------------------------------------
  4286.   # ● [エイリアス]:开始処理
  4287.   #--------------------------------------------------------------------------
  4288.   alias :lnx11a_start :start
  4289.   def start
  4290.     set_helpdisplay_methods
  4291.     @last_party_members = party_members
  4292.     $game_temp.method_battle_status_refresh = method(:refresh_status)
  4293.     $game_temp.clear_last_target_cursor
  4294.     $game_party.all_members.each {|actor| actor.last_actor_command = 0 }
  4295.     reset_sprite_effects
  4296.     standby_message_window_position
  4297.     create_targetcursor
  4298.     create_popup
  4299.     #元のメソッドを呼ぶ
  4300.     lnx11a_start
  4301.   end
  4302.   #--------------------------------------------------------------------------
  4303.   # ● [エイリアス]:终了処理
  4304.   #--------------------------------------------------------------------------
  4305.   alias :lnx11a_terminate :terminate
  4306.   def terminate
  4307.     dispose_targetcursor
  4308.     dispose_popup
  4309.     # 元のメソッドを呼ぶ
  4310.     lnx11a_terminate
  4311.   end
  4312.   #--------------------------------------------------------------------------
  4313.   # ● [追加]:アクターのスプライト情报の初期化
  4314.   #--------------------------------------------------------------------------
  4315.   def reset_sprite_effects
  4316.     $game_party.battle_members.each do |actor|
  4317.       actor.popup_delay_clear
  4318.       actor.set_state_animation
  4319.     end
  4320.   end
  4321.   #--------------------------------------------------------------------------
  4322.   # ● [エイリアス]:全ウィンドウの作成
  4323.   #--------------------------------------------------------------------------
  4324.   alias :lnx11a_create_all_windows :create_all_windows
  4325.   def create_all_windows
  4326.     # 元のメソッドを呼ぶ
  4327.     lnx11a_create_all_windows
  4328.     create_targethelp_window
  4329.   end
  4330.   #--------------------------------------------------------------------------
  4331.   # ● [エイリアス]:ステータスウィンドウの作成
  4332.   #--------------------------------------------------------------------------
  4333.   alias :lnx11a_create_status_window :create_status_window
  4334.   def create_status_window
  4335.     # 元のメソッドを呼ぶ
  4336.     lnx11a_create_status_window
  4337.     @status_window.set_xy
  4338.   end
  4339.   #--------------------------------------------------------------------------
  4340.   # ● [エイリアス]:情报表示ビューポートの作成
  4341.   #--------------------------------------------------------------------------
  4342.   alias :lnx11a_create_info_viewport :create_info_viewport
  4343.   def create_info_viewport
  4344.     # 元のメソッドを呼ぶ
  4345.     lnx11a_create_info_viewport
  4346.     # ビューポートを修正
  4347.     @info_viewport.rect.y = Graphics.height - LNX11::ACTOR_BACKGROUND_HEIGHT
  4348.     @info_viewport.rect.height = LNX11::ACTOR_BACKGROUND_HEIGHT
  4349.     @status_window.viewport = nil
  4350.   end
  4351.   #--------------------------------------------------------------------------
  4352.   # ● [エイリアス]:パーティコマンドウィンドウの作成
  4353.   #--------------------------------------------------------------------------
  4354.   alias :lnx11a_create_party_command_window :create_party_command_window
  4355.   def create_party_command_window
  4356.     # 元のメソッドを呼ぶ
  4357.     lnx11a_create_party_command_window
  4358.     @party_command_window.viewport = nil
  4359.   end
  4360.   #--------------------------------------------------------------------------
  4361.   # ● [エイリアス]:アクターコマンドウィンドウの作成
  4362.   #--------------------------------------------------------------------------
  4363.   alias :lnx11a_create_actor_command_window :create_actor_command_window
  4364.   def create_actor_command_window
  4365.     # 元のメソッドを呼ぶ
  4366.     lnx11a_create_actor_command_window
  4367.     @actor_command_window.viewport = nil
  4368.   end
  4369.   #--------------------------------------------------------------------------
  4370.   # ● [エイリアス]:ログウィンドウの作成
  4371.   #--------------------------------------------------------------------------
  4372.   alias :lnx11a_create_log_window :create_log_window
  4373.   def create_log_window
  4374.     # 元のメソッドを呼ぶ
  4375.     lnx11a_create_log_window
  4376.     # ウェイトメソッド
  4377.     @log_window.method_wait_for_animation = method(:wait_for_animation)
  4378.   end  
  4379.   #--------------------------------------------------------------------------
  4380.   # ● [追加]:ターゲットカーソルの作成
  4381.   #--------------------------------------------------------------------------
  4382.   def create_targetcursor
  4383.     @targetcursor = Sprite_TargetCursor.new
  4384.     $game_temp.target_cursor_sprite = @targetcursor
  4385.   end
  4386.   #--------------------------------------------------------------------------
  4387.   # ● [追加]:ターゲットカーソルの解放
  4388.   #--------------------------------------------------------------------------
  4389.   def dispose_targetcursor
  4390.     @targetcursor.dispose
  4391.   end
  4392.   #--------------------------------------------------------------------------
  4393.   # ● [追加]:ターゲットヘルプウィンドウの作成
  4394.   #--------------------------------------------------------------------------
  4395.   def create_targethelp_window
  4396.     @targethelp_window = Window_TargetHelp.new
  4397.     @targethelp_window.visible = false
  4398.     # ターゲット选択ウィンドウに関连付ける
  4399.     @actor_window.help_window = @targethelp_window
  4400.     @enemy_window.help_window = @targethelp_window
  4401.   end
  4402.   #--------------------------------------------------------------------------
  4403.   # ● [追加]:ポップアップの作成
  4404.   #--------------------------------------------------------------------------
  4405.   def create_popup
  4406.     $game_temp.popup_data = Popup_Data.new
  4407.   end
  4408.   #--------------------------------------------------------------------------
  4409.   # ● [追加]:ポップアップの解放
  4410.   #--------------------------------------------------------------------------
  4411.   def dispose_popup
  4412.     $game_temp.popup_data.dispose
  4413.   end
  4414.   #--------------------------------------------------------------------------
  4415.   # ● [追加]:ポップアップデータの取得
  4416.   #--------------------------------------------------------------------------
  4417.   def popup_data
  4418.     $game_temp.popup_data
  4419.   end
  4420.   #--------------------------------------------------------------------------
  4421.   # ● [エイリアス]:フレーム更新(基本)
  4422.   #--------------------------------------------------------------------------
  4423.   alias :lnx11a_update_basic :update_basic
  4424.   def update_basic
  4425.     # 元のメソッドを呼ぶ
  4426.     lnx11a_update_basic
  4427.     # 追加したオブジェクトの更新
  4428.     update_targetcursor
  4429.     update_popup
  4430.     refresh_actors
  4431.   end
  4432.   #--------------------------------------------------------------------------
  4433.   # ● [追加]:パーティメンバーの ID 配列の取得
  4434.   #--------------------------------------------------------------------------
  4435.   def party_members
  4436.     $game_party.battle_members.collect {|actor| actor.id }
  4437.   end
  4438.   #--------------------------------------------------------------------------
  4439.   # ● [追加]:メンバーが入れ替わったらオブジェクトを再作成する
  4440.   #--------------------------------------------------------------------------
  4441.   def refresh_actors
  4442.     a_party_members = party_members
  4443.     return if @last_party_members == a_party_members
  4444.     @last_party_members = a_party_members
  4445.     $game_party.battle_members.each {|actor| actor.sprite_effect_type=:appear }
  4446.     reset_sprite_effects
  4447.     @spriteset.dispose_actors
  4448.     @spriteset.create_actors
  4449.     status_clear
  4450.     refresh_status
  4451.     Graphics.frame_reset
  4452.   end
  4453.   #--------------------------------------------------------------------------
  4454.   # ● [追加]:ステータスウィンドウの情报を更新(メンバー交代用)
  4455.   #--------------------------------------------------------------------------
  4456.   def status_clear
  4457.     @status_window.all_clear
  4458.   end
  4459.   #--------------------------------------------------------------------------
  4460.   # ● [追加]:メッセージウィンドウの位置の初期化
  4461.   #  毎フレーム呼び出すことで、イベントコマンド以外のメッセージの位置を
  4462.   # 固定します。
  4463.   #--------------------------------------------------------------------------
  4464.   def standby_message_window_position
  4465.     $game_message.background = LNX11::MESSAGE_WINDOW_BACKGROUND
  4466.     $game_message.position = LNX11::MESSAGE_WINDOW_POSITION
  4467.   end
  4468.   #--------------------------------------------------------------------------
  4469.   # ● [再定义]:メッセージウィンドウを开く処理の更新
  4470.   #    ステータスウィンドウなどが闭じ终わるまでオープン度を 0 にする。
  4471.   #--------------------------------------------------------------------------
  4472.   def update_message_open
  4473.     if $game_message.busy?
  4474.       @party_command_window.close
  4475.       @actor_command_window.close
  4476.       $game_temp.battlelog_clear = true
  4477.     else
  4478.       standby_message_window_position
  4479.     end
  4480.   end
  4481.   #--------------------------------------------------------------------------
  4482.   # ● [追加]:ターゲットカーソル更新
  4483.   #--------------------------------------------------------------------------
  4484.   def update_targetcursor
  4485.     # 选択中のバトラーの座标を设定する
  4486.     if @actor_window.active
  4487.       # アクター选択ウィンドウがアクティブ
  4488.       @targetcursor.set(@actor_window.targetcursor, true)
  4489.     elsif @enemy_window.active
  4490.       # 敌キャラ选択ウィンドウがアクティブ
  4491.       @targetcursor.set(@enemy_window.targetcursor, true)
  4492.     elsif @status_window.index >= 0
  4493.       # ステータスウィンドウがアクティブ
  4494.       @targetcursor.set(@status_window.actor)
  4495.     else
  4496.       # どれもアクティブでない场合は非表示
  4497.       @targetcursor.hide
  4498.     end
  4499.     @targetcursor.update
  4500.   end
  4501.   #--------------------------------------------------------------------------
  4502.   # ● [追加]:ポップアップ更新
  4503.   #--------------------------------------------------------------------------
  4504.   def update_popup
  4505.     # ポップアップスプライトの更新
  4506.     popup_data.update
  4507.   end  
  4508.   #--------------------------------------------------------------------------
  4509.   # ● [エイリアス]:パーティコマンド选択の开始
  4510.   #--------------------------------------------------------------------------
  4511.   alias :lnx11a_start_party_command_selection :start_party_command_selection
  4512.   def start_party_command_selection
  4513.     # 元のメソッドを呼ぶ
  4514.     lnx11a_start_party_command_selection
  4515.     # バトルログ削除
  4516.     @log_window.lines_clear
  4517.     $game_temp.battlelog_clear = LNX11::STORAGE_TURNEND_CLEAR
  4518.     @actor_command = false
  4519.     # 2ターン目以降のパーテイコマンドスキップ
  4520.     return unless @party_command_skip
  4521.     @party_command_skip = false
  4522.     command_fight if !scene_changing? && @party_command_window.active
  4523.   end
  4524.   #--------------------------------------------------------------------------
  4525.   # ● [エイリアス]:アクターコマンド选択の开始
  4526.   #--------------------------------------------------------------------------
  4527.   alias :lnx11a_start_actor_command_selection :start_actor_command_selection
  4528.   def start_actor_command_selection
  4529.     # 元のメソッドを呼ぶ
  4530.     lnx11a_start_actor_command_selection
  4531.     @actor_command = true
  4532.   end
  4533.   #--------------------------------------------------------------------------
  4534.   # ● [エイリアス]:ターン终了
  4535.   #--------------------------------------------------------------------------
  4536.   alias :lnx11a_turn_end :turn_end
  4537.   def turn_end
  4538.     @party_command_skip = (LNX11::PARTY_COMMAND_SKIP && @actor_command)
  4539.     @actor_command = false
  4540.     # 元のメソッドを呼ぶ
  4541.     lnx11a_turn_end
  4542.   end
  4543.   #--------------------------------------------------------------------------
  4544.   # ● [追加]:アクターの选択したアイテム・スキルを返す
  4545.   #--------------------------------------------------------------------------
  4546.   def actor_selection_item
  4547.     case @actor_command_window.current_symbol
  4548.     when :attack ; $data_skills[BattleManager.actor.attack_skill_id]
  4549.     when :skill  ; @skill
  4550.     when :item   ; @item
  4551.     when :guard  ; $data_skills[BattleManager.actor.guard_skill_id]
  4552.     else ; nil
  4553.     end
  4554.   end
  4555.   #--------------------------------------------------------------------------
  4556.   # ● [エイリアス]:コマンド[防御]
  4557.   #--------------------------------------------------------------------------
  4558.   alias :lnx11a_command_guard :command_guard
  4559.   def command_guard
  4560.     if LNX11::GUARD_TARGET_CHECKE
  4561.       BattleManager.actor.input.set_guard
  4562.       # アクター选択
  4563.       select_actor_selection
  4564.     else
  4565.       # 元のメソッドを呼ぶ
  4566.       lnx11a_command_guard
  4567.     end
  4568.   end
  4569.   #--------------------------------------------------------------------------
  4570.   # ● [エイリアス]:アクター选択の开始
  4571.   #--------------------------------------------------------------------------
  4572.   alias :lnx11a_select_actor_selection :select_actor_selection
  4573.   def select_actor_selection
  4574.     # ターゲットチェック
  4575.     @actor_window.set_target(actor_selection_item)
  4576.     # 元のメソッドを呼ぶ
  4577.     lnx11a_select_actor_selection
  4578.     # ターゲットチェック
  4579.     @actor_window.set_target_refresh(actor_selection_item, BattleManager.actor)
  4580.   end
  4581.   #--------------------------------------------------------------------------
  4582.   # ● [エイリアス]:敌キャラ选択の开始
  4583.   #--------------------------------------------------------------------------
  4584.   alias :lnx11a_select_enemy_selection :select_enemy_selection
  4585.   def select_enemy_selection
  4586.     # ターゲットチェック
  4587.     @enemy_window.set_target(actor_selection_item)
  4588.     # 元のメソッドを呼ぶ
  4589.     lnx11a_select_enemy_selection
  4590.     # ターゲットチェック
  4591.     @enemy_window.set_target_refresh(actor_selection_item, BattleManager.actor)
  4592.   end
  4593.   #--------------------------------------------------------------------------
  4594.   # ● [エイリアス]アクター[キャンセル]
  4595.   #--------------------------------------------------------------------------
  4596.   alias :lnx11a_on_actor_cancel :on_actor_cancel
  4597.   def on_actor_cancel
  4598.     # 元のメソッドを呼ぶ
  4599.     lnx11a_on_actor_cancel
  4600.     # 防御の场合
  4601.     case @actor_command_window.current_symbol
  4602.     when :guard
  4603.       @actor_command_window.activate
  4604.     end   
  4605.   end
  4606.   #--------------------------------------------------------------------------
  4607.   # ● [エイリアス]:攻撃アニメーションの表示
  4608.   #--------------------------------------------------------------------------
  4609.   alias :lnx11a_show_attack_animation :show_attack_animation
  4610.   def show_attack_animation(targets)
  4611.     if @subject.actor?
  4612.       lnx11a_show_attack_animation(targets)
  4613.     else
  4614.       # 敌の通常攻撃アニメーション
  4615.       show_normal_animation(targets, @subject.atk_animation, false)
  4616.     end
  4617.   end
  4618. end
  4619.  
  4620. #==============================================================================
  4621. # ■ LNX11_Window_ActiveVisible
  4622. #------------------------------------------------------------------------------
  4623. #  バトル画面でターゲット选択中にウィンドウを非表示にするための
  4624. # ウィンドウ用モジュールです。
  4625. # ウィンドウの active と visible を连动させる役割があります。
  4626. # Window_ActorCommand,Window_BattleSkill, Window_BattleItem で
  4627. # インクルードされます。
  4628. #==============================================================================
  4629.  
  4630. module LNX11_Window_ActiveVisible
  4631.   #--------------------------------------------------------------------------
  4632.   # ● [オーバーライド]:ウィンドウのアクティブ化
  4633.   #--------------------------------------------------------------------------
  4634.   def activate
  4635.     self.show
  4636.     super
  4637.   end
  4638.   #--------------------------------------------------------------------------
  4639.   # ● [オーバーライド]:ウィンドウの非アクティブ化
  4640.   #--------------------------------------------------------------------------
  4641.   def deactivate
  4642.     @help_window != nil ? self.hide : self.visible = false
  4643.     super
  4644.   end
  4645. end
  4646.  
  4647. #==============================================================================
  4648. # ■ LNX11_Window_FittingList
  4649. #------------------------------------------------------------------------------
  4650. #  バトル画面のスキルリスト・アイテムリストを项目数に合わせてリサイズする
  4651. # ウィンドウ用モジュールです。
  4652. # Window_BattleSkill, Window_BattleItem でインクルードされます。
  4653. #==============================================================================
  4654.  
  4655. module LNX11_Window_FittingList
  4656.   #--------------------------------------------------------------------------
  4657.   # ● [追加]:ウィンドウの高さ(最大)
  4658.   #--------------------------------------------------------------------------
  4659.   def max_height
  4660.     @info_viewport.rect.y - @help_window.height
  4661.   end
  4662.   #--------------------------------------------------------------------------
  4663.   # ● [オーバーライド]:リフレッシュ
  4664.   #--------------------------------------------------------------------------
  4665.   def refresh
  4666.     make_item_list
  4667.     self.height = [fitting_height(row_max), max_height].min
  4668.     super
  4669.     self.oy = 0
  4670.   end
  4671. end
  4672.  
  4673. #==============================================================================
  4674. # ■ LNX11_Window_TargetHelp
  4675. #------------------------------------------------------------------------------
  4676. #  バトル画面で、ターゲット选択中にヘルプウィンドウを表示するための
  4677. # ウィンドウ用モジュールです。
  4678. # Window_BattleActor, Window_BattleEnemy でインクルードされます。
  4679. #==============================================================================
  4680.  
  4681. module LNX11_Window_TargetHelp
  4682.   #--------------------------------------------------------------------------
  4683.   # ● [追加]:ターゲットチェック
  4684.   #--------------------------------------------------------------------------
  4685.   def set_target(actor_selection_item)
  4686.     @cursor_fix = @cursor_all = @cursor_random = false
  4687.     item = actor_selection_item
  4688.     if actor_selection_item && !item.lnx11a_need_selection?
  4689.       # カーソルを固定
  4690.       @cursor_fix = true
  4691.       # 全体
  4692.       @cursor_all = item.for_all?
  4693.       # ランダム
  4694.       if item.for_random?
  4695.         @cursor_all = true
  4696.         @cursor_random = true
  4697.         @random_number = item.number_of_targets
  4698.       end
  4699.     end
  4700.     # 戦闘不能の味方が対象か?
  4701.     @dead_friend = item.for_dead_friend?
  4702.   end
  4703.   #--------------------------------------------------------------------------
  4704.   # ● [追加]:ターゲットチェック(リフレッシュ后)
  4705.   #--------------------------------------------------------------------------
  4706.   def set_target_refresh(actor_selection_item, actor)
  4707.     item = actor_selection_item
  4708.     # 使用者が対象なら、使用者にカーソルを合わせる
  4709.     select($game_party.members.index(actor)) if @cursor_fix && item.for_user?      
  4710.   end
  4711.   #--------------------------------------------------------------------------
  4712.   # ● [オーバーライド]:ウィンドウの表示
  4713.   #--------------------------------------------------------------------------
  4714.   def show
  4715.     @help_window.show
  4716.     super
  4717.   end
  4718.   #--------------------------------------------------------------------------
  4719.   # ● [オーバーライド]:ウィンドウの非表示
  4720.   #--------------------------------------------------------------------------
  4721.   def hide
  4722.     @help_window.hide
  4723.     super
  4724.   end
  4725. end
  4726.  
  4727. #==============================================================================
  4728. # ■ [追加]:Window_TargetHelp
  4729. #------------------------------------------------------------------------------
  4730. #  ターゲットの名前情报やスキルやアイテムの名前を表示します。
  4731. #==============================================================================
  4732.  
  4733. class Window_TargetHelp < Window_Help
  4734.   #--------------------------------------------------------------------------
  4735.   # ● 公开インスタンス変数
  4736.   #--------------------------------------------------------------------------
  4737.   attr_accessor :random_number  # 効果范囲ランダムの数
  4738.   #--------------------------------------------------------------------------
  4739.   # ● [オーバーライド]:オブジェクト初期化
  4740.   #--------------------------------------------------------------------------
  4741.   def initialize
  4742.     super(1) # 1行ヘルプ
  4743.   end
  4744.   #--------------------------------------------------------------------------
  4745.   # ● [オーバーライド]:ウィンドウの非表示
  4746.   #--------------------------------------------------------------------------
  4747.   def hide
  4748.     super
  4749.     clear
  4750.   end
  4751.   #--------------------------------------------------------------------------
  4752.   # ● [オーバーライド]:アイテム名设定
  4753.   #     item : スキル、アイテム、バトラー等
  4754.   #--------------------------------------------------------------------------
  4755.   def set_item(item)
  4756.     set_text(item ? item : "") # itemの说明ではなく、item自体を渡すようにする
  4757.   end
  4758.   #--------------------------------------------------------------------------
  4759.   # ● ゲージ幅
  4760.   #--------------------------------------------------------------------------
  4761.   def gauge_width
  4762.     LNX11::HELP_PARAM_WIDTH
  4763.   end
  4764.   #--------------------------------------------------------------------------
  4765.   # ● ゲージ幅(余白を含む)
  4766.   #--------------------------------------------------------------------------  
  4767.   def gauge_width_spacing
  4768.     LNX11::HELP_PARAM_WIDTH + 4
  4769.   end
  4770.   #--------------------------------------------------------------------------
  4771.   # ● パラメータエリアの幅
  4772.   #--------------------------------------------------------------------------  
  4773.   def param_width(size)
  4774.     gauge_width_spacing * size
  4775.   end
  4776.   #--------------------------------------------------------------------------
  4777.   # ● 効果范囲ランダムの数の取得
  4778.   #--------------------------------------------------------------------------
  4779.   def random_number
  4780.     # 全角にして返す
  4781.     @random_number.to_s.tr('0-9','0-9')
  4782.   end
  4783.   #--------------------------------------------------------------------------
  4784.   # ● [オーバーライド]:リフレッシュ
  4785.   #--------------------------------------------------------------------------
  4786.   def refresh
  4787.     contents.clear
  4788.     if @text == :party
  4789.       draw_text(contents.rect, "味方全体", 1)
  4790.     elsif @text == :troop
  4791.       draw_text(contents.rect, "敌全体", 1)
  4792.     elsif @text == :troop_random
  4793.       case LNX11::RANDOMSCOPE_DISPLAY
  4794.       when 0 ; draw_text(contents.rect, "敌全体 ランダム", 1)
  4795.       when 1 ; draw_text(contents.rect, "敌#{random_number}体 ランダム", 1)
  4796.       end
  4797.     elsif @text.is_a?(Game_Battler)
  4798.       # 选択対象の情报を描画
  4799.       draw_target_info
  4800.     elsif @text.is_a?(RPG::UsableItem)
  4801.       # アイテムかスキルならアイテム名を描画
  4802.       draw_item_name_help(@text)
  4803.     else
  4804.       # 通常のテキスト
  4805.       super
  4806.     end
  4807.   end
  4808.   #--------------------------------------------------------------------------
  4809.   # ● 选択対象の情报の描画
  4810.   #--------------------------------------------------------------------------
  4811.   def draw_target_info
  4812.     # バトラー情报の描画
  4813.     param = @text.actor? ? LNX11::HELP_ACTOR_PARAM : LNX11::HELP_ENEMY_PARAM
  4814.     # ゲージ付きステータス配列
  4815.     status = [param[:hp],param[:mp],param[:tp]&&$data_system.opt_display_tp]
  4816.     # 名前
  4817.     x = contents_width / 2 - contents.text_size(@text.name).width / 2
  4818.     name_width = contents.text_size(@text.name).width + 4
  4819.     if !status.include?(true)
  4820.       # ゲージ付きステータスを描画しない场合
  4821.       draw_targethelp_name(@text, x, name_width, param[:hp])
  4822.       x += name_width
  4823.       state_width = contents_width - x
  4824.     else
  4825.       # ゲージ付きステータスを描画する场合
  4826.       status.delete(false)
  4827.       x -= param_width(status.size) / 2
  4828.       draw_targethelp_name(@text, x, name_width, param[:hp])
  4829.       x += name_width
  4830.       state_width = contents_width - x - param_width(status.size)
  4831.     end
  4832.     # ステートアイコン
  4833.     if param[:state]
  4834.       draw_actor_icons(@text, x, 0, state_width)
  4835.     end
  4836.     # パラメータの描画
  4837.     x = contents_width - param_width(status.size)
  4838.     # HP
  4839.     if param[:hp]
  4840.       draw_actor_hp(@text, x, 0, gauge_width)
  4841.       x += gauge_width_spacing
  4842.     end
  4843.     # MP
  4844.     if param[:mp]
  4845.       draw_actor_mp(@text, x, 0, gauge_width)
  4846.       x += gauge_width_spacing
  4847.     end
  4848.     # TP
  4849.     if param[:tp] && $data_system.opt_display_tp
  4850.       draw_actor_tp(@text, x, 0, gauge_width)
  4851.       x += gauge_width_spacing
  4852.     end
  4853.   end
  4854.   #--------------------------------------------------------------------------
  4855.   # ● ターゲットの名前描画
  4856.   #--------------------------------------------------------------------------
  4857.   def draw_targethelp_name(actor, x, name_width, hp)
  4858.     if hp
  4859.       # HPゲージを伴う场合(HPが少ない场合、名前の色が変化する)
  4860.       draw_actor_name(actor, x, 0, name_width)
  4861.     else
  4862.       text = actor.name
  4863.       draw_text(x, 0, text_size(text).width + 4, line_height, text)
  4864.     end
  4865.   end
  4866.   #--------------------------------------------------------------------------
  4867.   # ● アイテムの描画(中央揃え)
  4868.   #--------------------------------------------------------------------------
  4869.   def draw_item_name_help(item)
  4870.     case LNX11::HELPDISPLAY_TYPE
  4871.     when 0 # アイコン+名前
  4872.       w = contents.text_size(@text.name).width + 28
  4873.     when 1 # 名前のみ
  4874.       w = contents.text_size(@text.name).width + 4
  4875.     end
  4876.     # 简易说明文の描画
  4877.     if !@text.short_description.empty?
  4878.       des = LNX11::HELPDISPLAY_DESCRIPTION
  4879.       contents.font.size = des[:size]
  4880.       text = des[:delimiter] + @text.short_description
  4881.       rect = contents.text_size(text)
  4882.       w += rect.width
  4883.       x = (contents_width - w) / 2
  4884.       y = (line_height - rect.height) / 2
  4885.       draw_text(x, y, w, line_height, text, 2)
  4886.       reset_font_settings
  4887.     end
  4888.     # 名前の描画
  4889.     x = (contents_width - w) / 2
  4890.     case LNX11::HELPDISPLAY_TYPE
  4891.     when 0 # アイコン+名前
  4892.       draw_item_name(@text, x, 0, true, w)
  4893.     when 1 # 名前のみ
  4894.       draw_text(x, 0, contents_width, line_height, @text.name)
  4895.     end
  4896.   end
  4897. end
  4898.  
  4899. #==============================================================================
  4900. # ■ Window_PartyCommand
  4901. #------------------------------------------------------------------------------
  4902. #  バトル画面で、戦うか逃げるかを选択するウィンドウです。
  4903. #==============================================================================
  4904.  
  4905. class Window_PartyCommand < Window_Command
  4906.   #--------------------------------------------------------------------------
  4907.   # ● [エイリアス]:オブジェクト初期化
  4908.   #--------------------------------------------------------------------------
  4909.   alias :lnx11a_initialize :initialize
  4910.   def initialize
  4911.     $game_party.last_party_command = nil
  4912.     # 元のメソッドを呼ぶ
  4913.     lnx11a_initialize
  4914.     # 座标を设定
  4915.     self.x = LNX11::PARTY_COMMAND_XY[:x]
  4916.     self.y = LNX11::PARTY_COMMAND_XY[:y]
  4917.   end
  4918.   #--------------------------------------------------------------------------
  4919.   # ● [オーバーライド]:ウィンドウ幅の取得
  4920.   #--------------------------------------------------------------------------
  4921.   def window_width
  4922.     return LNX11::PARTY_COMMAND_WIDTH
  4923.   end
  4924.   #--------------------------------------------------------------------------
  4925.   # ● [オーバーライド]:表示行数の取得
  4926.   #--------------------------------------------------------------------------
  4927.   def visible_line_number
  4928.     return LNX11::PARTY_COMMAND_HORIZON ? 1 : @list.size
  4929.   end
  4930.   #--------------------------------------------------------------------------
  4931.   # ● [オーバーライド]:桁数の取得
  4932.   #--------------------------------------------------------------------------
  4933.   def col_max
  4934.     return LNX11::PARTY_COMMAND_HORIZON ? @list.size : 1
  4935.   end
  4936.   #--------------------------------------------------------------------------
  4937.   # ● [オーバーライド]:アライメントの取得
  4938.   #--------------------------------------------------------------------------
  4939.   def alignment
  4940.     return LNX11::PARTY_COMMAND_ALIGNMENT
  4941.   end
  4942.   #--------------------------------------------------------------------------
  4943.   # ● [オーバーライド]:横に项目が并ぶときの空白の幅を取得
  4944.   #--------------------------------------------------------------------------
  4945.   def spacing
  4946.     return 8
  4947.   end
  4948.   #--------------------------------------------------------------------------
  4949.   # ● [オーバーライド]:ウィンドウを开く
  4950.   #--------------------------------------------------------------------------
  4951.   def open
  4952.     super
  4953.     # 最后に选択したコマンドを选択
  4954.     return self unless LNX11::LAST_PARTY_COMMAND
  4955.     last_command = $game_party.last_party_command
  4956.     if last_command && @list.include?(last_command)
  4957.       select(@list.index(last_command))
  4958.     end
  4959.     self
  4960.   end
  4961.   #--------------------------------------------------------------------------
  4962.   # ● [エイリアス]:ウィンドウを闭じる
  4963.   #--------------------------------------------------------------------------
  4964.   def close
  4965.     super
  4966.     # 选択したコマンドを记忆
  4967.     $game_party.last_party_command = @list[index] if index >= 0
  4968.     self
  4969.   end
  4970. end
  4971.  
  4972. #==============================================================================
  4973. # ■ Window_ActorCommand
  4974. #------------------------------------------------------------------------------
  4975. #  バトル画面で、アクターの行动を选択するウィンドウです。
  4976. #==============================================================================
  4977.  
  4978. class Window_ActorCommand < Window_Command
  4979.   include LNX11_Window_ActiveVisible
  4980.   #--------------------------------------------------------------------------
  4981.   # ● [オーバーライド]:ウィンドウ幅の取得
  4982.   #--------------------------------------------------------------------------
  4983.   def window_width
  4984.     return LNX11::ACTOR_COMMAND_WIDTH
  4985.   end
  4986.   #--------------------------------------------------------------------------
  4987.   # ● [オーバーライド]:表示行数の取得
  4988.   #--------------------------------------------------------------------------
  4989.   def visible_line_number
  4990.     list_size = LNX11::ACTOR_COMMAND_NOSCROLL ? @list.size : 4
  4991.     return LNX11::ACTOR_COMMAND_HORIZON ? 1 : list_size
  4992.   end
  4993.   #--------------------------------------------------------------------------
  4994.   # ● [オーバーライド]:桁数の取得
  4995.   #--------------------------------------------------------------------------
  4996.   def col_max
  4997.     return LNX11::ACTOR_COMMAND_HORIZON ? [@list.size, 1].max :  1
  4998.   end
  4999.   #--------------------------------------------------------------------------
  5000.   # ● [オーバーライド]:アライメントの取得
  5001.   #--------------------------------------------------------------------------
  5002.   def alignment
  5003.     return LNX11::ACTOR_COMMAND_ALIGNMENT
  5004.   end
  5005.   #--------------------------------------------------------------------------
  5006.   # ● [オーバーライド]:横に项目が并ぶときの空白の幅を取得
  5007.   #--------------------------------------------------------------------------
  5008.   def spacing
  5009.     return 8
  5010.   end
  5011.   #--------------------------------------------------------------------------
  5012.   # ● [追加]:X 座标をアクターに合わせる
  5013.   #--------------------------------------------------------------------------
  5014.   def actor_x(actor)
  5015.     ax = $game_party.members_screen_x_nooffset[actor.index] - self.width / 2
  5016.     pad = LNX11::STATUS_SIDE_PADDING / 2
  5017.     # 画面内に収める
  5018.     self.x = [[ax, pad].max, Graphics.width - pad - self.width].min
  5019.     self.x += LNX11::ACTOR_COMMAND_OFFSET[:x]
  5020.   end
  5021.   #--------------------------------------------------------------------------
  5022.   # ● [追加]:Y 座标をアクターに合わせる
  5023.   #--------------------------------------------------------------------------
  5024.   def actor_y(actor)
  5025.     self.y = actor.screen_y_top - self.height
  5026.     self.y += LNX11::ACTOR_COMMAND_OFFSET[:y]
  5027.   end
  5028.   #--------------------------------------------------------------------------
  5029.   # ● [追加]:固定 Y 座标
  5030.   #--------------------------------------------------------------------------
  5031.   def screen_y
  5032.     if LNX11::ACTOR_COMMAND_Y_POSITION == 0
  5033.       self.y = Graphics.height - self.height + LNX11::ACTOR_COMMAND_OFFSET[:y]
  5034.     else
  5035.       self.y = LNX11::ACTOR_COMMAND_OFFSET[:y]
  5036.     end
  5037.   end
  5038.   #--------------------------------------------------------------------------
  5039.   # ● [エイリアス]:セットアップ
  5040.   #--------------------------------------------------------------------------
  5041.   alias :lnx11a_setup :setup
  5042.   def setup(actor)
  5043.     # 前のアクターのコマンドを记忆
  5044.     @actor.last_actor_command = @list[index] if @actor
  5045.     # 元のメソッドを呼ぶ
  5046.     lnx11a_setup(actor)
  5047.     self.arrows_visible = !LNX11::ACTOR_COMMAND_NOSCROLL
  5048.     self.height = window_height
  5049.     self.oy = 0
  5050.     # アクターコマンドの表示位置で分岐
  5051.     case LNX11::ACTOR_COMMAND_POSITION
  5052.     when 0
  5053.       # アクターの头上
  5054.       actor_x(actor)
  5055.       actor_y(actor)
  5056.     when 1
  5057.       # Y 座标固定
  5058.       actor_x(actor)
  5059.       screen_y
  5060.     when 2
  5061.       # XY固定
  5062.       self.x = LNX11::ACTOR_COMMAND_OFFSET[:x]
  5063.       screen_y
  5064.     end
  5065.     # 最后に选択したコマンドを选択
  5066.     return unless LNX11::LAST_ACTOR_COMMAND
  5067.     last_command = @actor.last_actor_command
  5068.     if last_command && @list.include?(last_command)
  5069.       select(@list.index(last_command))
  5070.     end
  5071.   end
  5072. end
  5073.  
  5074. #==============================================================================
  5075. # ■ Window_BattleStatus
  5076. #------------------------------------------------------------------------------
  5077. #  バトル画面で、パーティメンバーのステータスを表示するウィンドウです。
  5078. #==============================================================================
  5079.  
  5080. class Window_BattleStatus < Window_Selectable
  5081.   #--------------------------------------------------------------------------
  5082.   # ● [追加]:公开インスタンス変数
  5083.   #--------------------------------------------------------------------------
  5084.   attr_reader :min_offset   # ステータス描画 X 座标の位置修正
  5085.   #--------------------------------------------------------------------------
  5086.   # ● [エイリアス]:オブジェクト初期化
  5087.   #--------------------------------------------------------------------------
  5088.   alias :lnx11a_initialize :initialize
  5089.   def initialize
  5090.     @actor_last_status = Array.new($game_party.max_battle_members) { nil }   
  5091.     # 元のメソッドを呼ぶ
  5092.     lnx11a_initialize
  5093.     # ウィンドウを最初から表示
  5094.     self.openness = 255
  5095.     self.opacity = 0
  5096.     update_invisible
  5097.   end
  5098.   #--------------------------------------------------------------------------
  5099.   # ● [オーバーライド]:行の高さを取得
  5100.   #--------------------------------------------------------------------------
  5101.   def line_height
  5102.     return LNX11::STATUS_LINE_HEIGHT
  5103.   end
  5104.   #--------------------------------------------------------------------------
  5105.   # ● [オーバーライド]:标准パディングサイズの取得
  5106.   #--------------------------------------------------------------------------
  5107.   def standard_padding
  5108.     return 0
  5109.   end
  5110.   #--------------------------------------------------------------------------
  5111.   # ● [オーバーライド]:表示行数の取得
  5112.   #--------------------------------------------------------------------------
  5113.   def visible_line_number
  5114.     return $data_system.opt_display_tp ? 4 : 3
  5115.   end
  5116.   #--------------------------------------------------------------------------
  5117.   # ● [オーバーライド]:桁数の取得
  5118.   #--------------------------------------------------------------------------
  5119.   def col_max
  5120.     return [item_max, 1].max
  5121.   end
  5122.   #--------------------------------------------------------------------------
  5123.   # ● [オーバーライド]:横に项目が并ぶときの空白の幅を取得
  5124.   #--------------------------------------------------------------------------
  5125.   def spacing
  5126.     return 0
  5127.   end
  5128.   #--------------------------------------------------------------------------
  5129.   # ● [オーバーライド]:项目の高さを取得
  5130.   #--------------------------------------------------------------------------
  5131.   def item_height
  5132.     self.height
  5133.   end  
  5134.   #--------------------------------------------------------------------------
  5135.   # ● [再定义]:ウィンドウ幅の取得
  5136.   #--------------------------------------------------------------------------
  5137.   def window_width
  5138.     Graphics.width
  5139.   end
  5140.   #--------------------------------------------------------------------------
  5141.   # ● [エイリアス]:ウィンドウ高さの取得
  5142.   #--------------------------------------------------------------------------
  5143.   alias :lnx11a_window_height :window_height
  5144.   def window_height
  5145.     # 一行目(名前・ステート)の高さを确保する
  5146.     lnx11a_window_height - line_height + [24, line_height].max
  5147.   end
  5148.   #--------------------------------------------------------------------------
  5149.   # ● [オーバーライド]:カーソルの更新
  5150.   #--------------------------------------------------------------------------
  5151.   def update_cursor
  5152.     # カーソルを表示しない
  5153.     cursor_rect.empty
  5154.   end
  5155.   #--------------------------------------------------------------------------
  5156.   # ● [オーバーライド]:システム色の取得
  5157.   #  ゲージ幅が短すぎる场合、HP,MP,TP の文字を非表示にします。
  5158.   #--------------------------------------------------------------------------
  5159.   def system_color
  5160.     gauge_area_width - @min_offset >= 52 ? super : Color.new
  5161.   end  
  5162.   #--------------------------------------------------------------------------
  5163.   # ● [オーバーライド]:ゲージ背景色の取得
  5164.   #   ゲージの透明度を适用します。  
  5165.   #--------------------------------------------------------------------------
  5166.   def gauge_back_color
  5167.     color = super
  5168.     color.alpha *= LNX11::STATUS_GAUGE_OPACITY / 255.0
  5169.     color
  5170.   end
  5171.   #--------------------------------------------------------------------------
  5172.   # ● [オーバーライド]:ゲージの描画
  5173.   #   ゲージの透明度を适用します。
  5174.   #--------------------------------------------------------------------------
  5175.   def draw_gauge(x, y, width, rate, color1, color2)
  5176.     oparate = LNX11::STATUS_GAUGE_OPACITY / 255.0
  5177.     color1.alpha *= oparate
  5178.     color2.alpha *= oparate
  5179.     super
  5180.   end
  5181.   #--------------------------------------------------------------------------
  5182.   # ● [オーバーライド]:フレーム更新
  5183.   #--------------------------------------------------------------------------
  5184.   def update
  5185.     super
  5186.     update_invisible
  5187.   end
  5188.   #--------------------------------------------------------------------------
  5189.   # ● [追加]:表示状态更新
  5190.   #--------------------------------------------------------------------------
  5191.   def update_invisible
  5192.     self.contents_opacity = $game_party.status_invisible ? 0 : 255
  5193.   end  
  5194.   #--------------------------------------------------------------------------
  5195.   # ● [追加]:アクターオブジェクト取得
  5196.   #--------------------------------------------------------------------------
  5197.   def actor
  5198.     $game_party.members[@index]
  5199.   end
  5200.   #--------------------------------------------------------------------------
  5201.   # ● [追加]:座标の设定
  5202.   #--------------------------------------------------------------------------
  5203.   def set_xy
  5204.     # ステータス位置の调整:画面からはみ出ないようにする
  5205.     pw = $game_party.members_screen_x.last + LNX11::STATUS_OFFSET[:x]
  5206.     pw += gauge_area_width / 2
  5207.     right_end = Graphics.width - LNX11::STATUS_SIDE_PADDING
  5208.     min_offset = pw > right_end ? pw - right_end : 0
  5209.     # ステータスのオフセットを适用
  5210.     self.x = LNX11::STATUS_OFFSET[:x] - min_offset
  5211.     self.y = LNX11::STATUS_OFFSET[:y] + Graphics.height - self.height
  5212.     # ステータス幅の自动调整:位置を调整した分だけ幅を缩める
  5213.     @min_offset = LNX11::STATUS_AUTOADJUST ? min_offset : 0
  5214.   end
  5215.   #--------------------------------------------------------------------------
  5216.   # ● [再定义]:ゲージエリアの幅を取得
  5217.   #--------------------------------------------------------------------------
  5218.   def gauge_area_width
  5219.     return LNX11::STATUS_WIDTH
  5220.   end
  5221.   #--------------------------------------------------------------------------
  5222.   # ● [追加]:表示するステート数の取得
  5223.   #--------------------------------------------------------------------------
  5224.   def states(actor, width)
  5225.     icons = (actor.state_icons + actor.buff_icons)[0, width / 24]
  5226.     icons.size
  5227.   end
  5228.   #--------------------------------------------------------------------------
  5229.   # ● [追加]:名前とステートの描画(1行表示)
  5230.   #  width の范囲で名前を左揃え、ステートアイコンを右揃えで描画します。
  5231.   # ステートを优先して表示するため、アイコンが多すぎて名前の表示领域が
  5232.   # 极端に狭くなる场合は名前を描画しません。
  5233.   #--------------------------------------------------------------------------
  5234.   def draw_actor_name_with_icons(actor, x, y, width = 128, draw_name = true)
  5235.     # アイコンのY座标补正
  5236.     iy = ([line_height, 24].max - 24) / 2
  5237.     # 名前のY座标补正
  5238.     ny = ([line_height, 24].max - LNX11::STATUS_NAME_SIZE) / 2
  5239.     # 表示するステート数を取得
  5240.     icon = states(actor, width)
  5241.     if icon > 0
  5242.       # 表示するべきステートがある场合
  5243.       name_width = width - icon * 24
  5244.       ix = x + width - icon * 24
  5245.       if name_width >= contents.font.size * 2 && draw_name
  5246.         # 名前の表示领域(width) が フォントサイズ * 2 以上なら両方を描画
  5247.         draw_actor_name(actor, x, y + ny,  name_width)
  5248.         iw = width - name_width
  5249.         draw_actor_icons(actor, ix, y + iy, iw)
  5250.       else
  5251.         # ステートのみ描画
  5252.         draw_actor_icons(actor, ix, y + iy, width)
  5253.       end
  5254.     elsif draw_name
  5255.       # ない场合、名前のみ描画
  5256.       draw_actor_name(actor, x, y + ny, width)
  5257.     end
  5258.   end
  5259.   #--------------------------------------------------------------------------
  5260.   # ● [再定义]:リフレッシュ
  5261.   #--------------------------------------------------------------------------
  5262.   def refresh
  5263.     set_xy
  5264.     draw_all_items
  5265.   end
  5266.   #--------------------------------------------------------------------------
  5267.   # ● [オーバーライド]:项目を描画する矩形の取得
  5268.   #--------------------------------------------------------------------------
  5269.   def item_rect(index)
  5270.     rect = super
  5271.     rect.x = $game_party.members_screen_x[index] - gauge_area_width / 2
  5272.     rect.width = gauge_area_width
  5273.     rect
  5274.   end
  5275.   #--------------------------------------------------------------------------
  5276.   # ● [再定义]:基本エリアの矩形を取得
  5277.   #--------------------------------------------------------------------------
  5278.   def basic_area_rect(index)
  5279.     rect = item_rect(index)
  5280.     rect
  5281.   end
  5282.   #--------------------------------------------------------------------------
  5283.   # ● [再定义]:ゲージエリアの矩形を取得
  5284.   #--------------------------------------------------------------------------
  5285.   def gauge_area_rect(index)
  5286.     rect = basic_area_rect(index)
  5287.     rect.y += [24, line_height].max
  5288.     rect.x += @min_offset
  5289.     rect
  5290.   end
  5291.   #--------------------------------------------------------------------------
  5292.   # ● [再定义]:基本エリアの描画
  5293.   #--------------------------------------------------------------------------
  5294.   def draw_basic_area(rect, actor)
  5295.     # フォントサイズ変更
  5296.     contents.font.size = [LNX11::STATUS_NAME_SIZE, 8].max
  5297.     # 名前とステートを描画
  5298.     dn = LNX11::STATUS_NAME_SIZE > 0 # 名前を描画するか?
  5299.     width = gauge_area_width - @min_offset
  5300.     rest  = width % 24
  5301.     width += 24 - rest if rest > 0
  5302.     draw_actor_name_with_icons(actor, rect.x, rect.y, width, dn)
  5303.     # フォントサイズを元に戻す
  5304.     reset_font_settings
  5305.   end
  5306.   #--------------------------------------------------------------------------
  5307.   # ● [エイリアス]:ゲージエリアの描画
  5308.   #--------------------------------------------------------------------------
  5309.   alias :lnx11a_draw_gauge_area :draw_gauge_area
  5310.   def draw_gauge_area(*args)
  5311.     # フォントサイズ変更
  5312.     contents.font.size = LNX11::STATUS_PARAM_SIZE
  5313.     # 元のメソッドを呼ぶ
  5314.     lnx11a_draw_gauge_area(*args)
  5315.     # フォントサイズを元に戻す
  5316.     reset_font_settings
  5317.   end
  5318.   #--------------------------------------------------------------------------
  5319.   # ● [再定义]:ゲージエリアの描画(TP あり)
  5320.   #--------------------------------------------------------------------------
  5321.   def draw_gauge_area_with_tp(rect, actor)
  5322.     width = gauge_area_width - @min_offset
  5323.     draw_actor_hp(actor, rect.x, rect.y,                   width)
  5324.     draw_actor_mp(actor, rect.x, rect.y + line_height,     width)
  5325.     draw_actor_tp(actor, rect.x, rect.y + line_height * 2, width)
  5326.   end
  5327.   #--------------------------------------------------------------------------
  5328.   # ● [再定义]:ゲージエリアの描画(TP なし)
  5329.   #--------------------------------------------------------------------------
  5330.   def draw_gauge_area_without_tp(rect, actor)
  5331.     draw_actor_hp(actor, rect.x, rect.y,               gauge_area_width)
  5332.     draw_actor_mp(actor, rect.x, rect.y + line_height, gauge_area_width)
  5333.   end
  5334.   #--------------------------------------------------------------------------
  5335.   # ● [再定义]:项目の描画
  5336.   #--------------------------------------------------------------------------
  5337.   def draw_item(index)
  5338.     actor = $game_party.battle_members[index]
  5339.     a_status = status(actor)
  5340.     # ステータスが変化した场合のみ描画する
  5341.     return if @actor_last_status[index] == a_status
  5342.     @actor_last_status[index] = a_status
  5343.     contents.clear_rect(item_rect(index))
  5344.     draw_basic_area(basic_area_rect(index), actor)
  5345.     draw_gauge_area(gauge_area_rect(index), actor)
  5346.   end
  5347.   #--------------------------------------------------------------------------
  5348.   # ● [追加]:アクターのステータス配列を返す
  5349.   #--------------------------------------------------------------------------
  5350.   def status(actor)
  5351.     if $data_system.opt_display_tp
  5352.       return [actor.name, actor.state_icons + actor.buff_icons,
  5353.               actor.mhp, actor.hp, actor.mmp, actor.mp, actor.max_tp, actor.tp]
  5354.     else
  5355.       # TP を除くステータス配列
  5356.       return [actor.name, actor.state_icons + actor.buff_icons,
  5357.               actor.mhp, actor.hp, actor.mmp, actor.mp]
  5358.     end
  5359.   end
  5360.   #--------------------------------------------------------------------------
  5361.   # ● [追加]:内容の消去
  5362.   #--------------------------------------------------------------------------
  5363.   def all_clear
  5364.     contents.clear
  5365.     @actor_last_status = Array.new($game_party.max_battle_members) { nil }   
  5366.   end
  5367. end
  5368.  
  5369. #==============================================================================
  5370. # ■ Window_BattleActor
  5371. #------------------------------------------------------------------------------
  5372. #  バトル画面で、行动対象のアクターを选択するウィンドウです。
  5373. # XPスタイルバトルではバトルステータスを非表示にしないため、
  5374. # 选択机能だけを持つ不可视のウィンドウとして插います。
  5375. #==============================================================================
  5376.  
  5377. class Window_BattleActor < Window_BattleStatus
  5378.   include LNX11_Window_TargetHelp
  5379.   #--------------------------------------------------------------------------
  5380.   # ● [エイリアス]:オブジェクト初期化
  5381.   #--------------------------------------------------------------------------
  5382.   alias :lnx11a_wba_initialize :initialize
  5383.   def initialize(info_viewport)
  5384.     # 元のメソッドを呼ぶ
  5385.     lnx11a_wba_initialize(info_viewport)
  5386.     # ウィンドウを画面外に移动
  5387.     self.y = Graphics.height
  5388.   end
  5389.   #--------------------------------------------------------------------------
  5390.   # ● [オーバーライド]:ヘルプテキスト更新
  5391.   #--------------------------------------------------------------------------
  5392.   def update_help
  5393.     @help_window.set_item(targetcursor)
  5394.   end
  5395.   #--------------------------------------------------------------------------
  5396.   # ● [追加]:ターゲットカーソルに渡すオブジェクト
  5397.   #--------------------------------------------------------------------------
  5398.   def targetcursor
  5399.     @cursor_all ? :party : actor
  5400.   end
  5401.   #--------------------------------------------------------------------------
  5402.   # ● [オーバーライド]:ウィンドウ幅の取得
  5403.   #--------------------------------------------------------------------------
  5404.   def window_width
  5405.     64
  5406.   end
  5407.   #--------------------------------------------------------------------------
  5408.   # ● [オーバーライド]:全项目の描画
  5409.   #--------------------------------------------------------------------------
  5410.   def draw_all_items
  5411.     # 何もしない   
  5412.   end
  5413.   #--------------------------------------------------------------------------
  5414.   # ● [オーバーライド]:项目の描画
  5415.   #--------------------------------------------------------------------------
  5416.   def draw_item(index)
  5417.     # 何もしない
  5418.   end
  5419.   #--------------------------------------------------------------------------
  5420.   # ● [オーバーライド]:リフレッシュ
  5421.   #--------------------------------------------------------------------------
  5422.   def refresh
  5423.     # 何もしない
  5424.   end
  5425.   #--------------------------------------------------------------------------
  5426.   # ● [エイリアス]:ウィンドウの表示
  5427.   #--------------------------------------------------------------------------
  5428.   alias :lnx11a_show :show
  5429.   def show
  5430.     # 元のメソッドを呼ぶ
  5431.     lnx11a_show
  5432.     # 最后に选択したアクターを选択
  5433.     last_target = $game_temp.last_target_cursor[:actor]
  5434.     if last_target && $game_party.members.include?(last_target) &&
  5435.        LNX11::LAST_TARGET
  5436.       select($game_party.members.index(last_target))
  5437.     end
  5438.     # スマートターゲットセレクト
  5439.     if LNX11::SMART_TARGET_SELECT && !@cursor_fix
  5440.       if @dead_friend && (!last_target || last_target && last_target.alive?)
  5441.         dead_actor = $game_party.dead_members[0]
  5442.         select($game_party.members.index(dead_actor)) if dead_actor
  5443.       elsif !@dead_friend && (!last_target || last_target && last_target.dead?)
  5444.         alive_actor = $game_party.alive_members[0]
  5445.         select($game_party.members.index(alive_actor)) if alive_actor
  5446.       end
  5447.     end
  5448.     self
  5449.   end
  5450.   #--------------------------------------------------------------------------
  5451.   # ● [エイリアス]:ウィンドウの非表示
  5452.   #--------------------------------------------------------------------------
  5453.   alias :lnx11a_hide :hide
  5454.   def hide
  5455.     # 元のメソッドを呼ぶ
  5456.     lnx11a_hide
  5457.     # 选択したアクターを记忆
  5458.     $game_temp.last_target_cursor[:actor] = actor
  5459.     self
  5460.   end
  5461. end
  5462.  
  5463. #==============================================================================
  5464. # ■ Window_BattleEnemy
  5465. #------------------------------------------------------------------------------
  5466. #  バトル画面で、行动対象の敌キャラを选択するウィンドウです。
  5467. # 横并びの不可视のウィンドウとして插います。
  5468. #==============================================================================
  5469.  
  5470. class Window_BattleEnemy < Window_Selectable
  5471.   include LNX11_Window_TargetHelp
  5472.   #--------------------------------------------------------------------------
  5473.   # ● [エイリアス]:オブジェクト初期化
  5474.   #--------------------------------------------------------------------------
  5475.   alias :lnx11a_initialize :initialize
  5476.   def initialize(info_viewport)
  5477.     # 敌キャラオブジェクトの设定
  5478.     set_enemy
  5479.     # 元のメソッドを呼ぶ
  5480.     lnx11a_initialize(info_viewport)
  5481.     # ウィンドウを画面外に移动
  5482.     self.y = Graphics.height
  5483.   end
  5484.   #--------------------------------------------------------------------------
  5485.   # ● [追加]:敌キャラオブジェクトの设定
  5486.   #--------------------------------------------------------------------------
  5487.   def set_enemy
  5488.     if LNX11::TROOP_X_SORT
  5489.       @troop = $game_troop.alive_members.sort {|a,b| a.screen_x <=> b.screen_x}
  5490.     else
  5491.       @troop = $game_troop.alive_members
  5492.     end
  5493.   end
  5494.   #--------------------------------------------------------------------------
  5495.   # ● [再定义]:敌キャラオブジェクト取得
  5496.   #--------------------------------------------------------------------------
  5497.   def enemy
  5498.     @troop[@index]
  5499.   end
  5500.   #--------------------------------------------------------------------------
  5501.   # ● [オーバーライド]:ウィンドウ幅の取得
  5502.   #--------------------------------------------------------------------------
  5503.   def window_width
  5504.     64
  5505.   end
  5506.   #--------------------------------------------------------------------------
  5507.   # ● [オーバーライド]:指定行数に适合するウィンドウの高さを计算
  5508.   #--------------------------------------------------------------------------
  5509.   def fitting_height(line_number)
  5510.     super(1)
  5511.   end
  5512.   #--------------------------------------------------------------------------
  5513.   # ● [オーバーライド]:桁数の取得
  5514.   #--------------------------------------------------------------------------
  5515.   def col_max
  5516.     return item_max
  5517.   end
  5518.   #--------------------------------------------------------------------------
  5519.   # ● [オーバーライド]:ヘルプテキスト更新
  5520.   #--------------------------------------------------------------------------
  5521.   def update_help
  5522.     @help_window.random_number = @random_number
  5523.     @help_window.set_item(targetcursor)
  5524.   end
  5525.   #--------------------------------------------------------------------------
  5526.   # ● [追加]:ターゲットカーソルに渡すオブジェクト
  5527.   #--------------------------------------------------------------------------
  5528.   def targetcursor
  5529.     @cursor_all ? (@cursor_random ? :troop_random : :troop) : enemy
  5530.   end
  5531.   #--------------------------------------------------------------------------
  5532.   # ● [エイリアス]:ウィンドウの表示
  5533.   #--------------------------------------------------------------------------
  5534.   alias :lnx11a_show :show
  5535.   def show
  5536.     # 元のメソッドを呼ぶ
  5537.     lnx11a_show
  5538.     # 敌キャラオブジェクトの设定
  5539.     set_enemy
  5540.     return self unless LNX11::LAST_TARGET
  5541.     # 最后に选択した敌キャラを选択
  5542.     last_target = $game_temp.last_target_cursor[:enemy]
  5543.     if last_target && @troop.include?(last_target)
  5544.       select(@troop.index(last_target))
  5545.     end
  5546.     self
  5547.   end
  5548.   #--------------------------------------------------------------------------
  5549.   # ● [エイリアス]:ウィンドウの非表示
  5550.   #--------------------------------------------------------------------------
  5551.   alias :lnx11a_hide :hide
  5552.   def hide
  5553.     # 元のメソッドを呼ぶ
  5554.     lnx11a_hide
  5555.     # 选択した敌キャラを记忆
  5556.     $game_temp.last_target_cursor[:enemy] = enemy
  5557.     self
  5558.   end
  5559. end
  5560.  
  5561. #==============================================================================
  5562. # ■ Window_BattleSkill
  5563. #------------------------------------------------------------------------------
  5564. #  いくつかのモジュールをインクルードします。
  5565. #==============================================================================
  5566.  
  5567. class Window_BattleSkill < Window_SkillList
  5568.   include LNX11_Window_ActiveVisible
  5569.   include LNX11_Window_FittingList if LNX11::FITTING_LIST
  5570. end
  5571.  
  5572. #==============================================================================
  5573. # ■ Window_BattleItem
  5574. #------------------------------------------------------------------------------
  5575. #  いくつかのモジュールをインクルードします。
  5576. #==============================================================================
  5577.  
  5578. class Window_BattleItem < Window_ItemList
  5579.   include LNX11_Window_ActiveVisible
  5580.   include LNX11_Window_FittingList if LNX11::FITTING_LIST
  5581. end
  5582. # l:5582


第二个脚本:

LNX11aconf_XPスタイルバトル#コンフィグ

RUBY 代码复制
  1. #==============================================================================
  2. # ★ RGSS3-Extension
  3. # LNX11aconf_XPスタイルバトル#コンフィグ
  4. #  このスクリプトは LNX11a_XPスタイルバトル の设定スクリプトです。
  5. #  単体では何の机能も持ちませんのでご注意ください。
  6. #
  7. #  version   : 1.10 (12/11/18)
  8. #  author    : ももまる
  9. #  reference : [url]http://peachround.blog.fc2.com/blog-entry-9.html[/url]
  10. #
  11. #==============================================================================
  12.  
  13. module LNX11
  14.   #--------------------------------------------------------------------------
  15.   # ■ Index
  16.   #
  17.   # line 026 : 基本设定              line 244 : パーティコマンド
  18.   # line 048 : アクターエリアの背景  line 259 : ターゲットカーソル
  19.   # line 065 : バトルログ            line 289 : ターゲットヘルプ
  20.   # line 118 : バトルメッセージ      line 305 : ポップアップ
  21.   # line 159 : バトラーグラフィック  line 507 : ユーザビリティ
  22.   # line 182 : バトルステータス      line 535 : その他
  23.   # line 212 : アクターコマンド      
  24.   #
  25.   #--------------------------------------------------------------------------
  26.   # ● 基本设定
  27.   #--------------------------------------------------------------------------
  28.   # デフォルトで表示するアクターのバトラーグラフィック
  29.   #  0 = 颜グラフィック / 1 = 歩行グラフィック
  30.   DEFAULT_BATTLER_GRAPHIC = 0  # 规定値:0
  31.  
  32.   # デフォルトバトラーグラフィックの背景グラデーション色([Color1, Color2])
  33.   DEFAULT_BG_COLOR        = [Color.new(0, 0, 0, 0), Color.new(0, 0, 0, 0)]
  34.                    # 规定値:[Color.new(0, 0, 0, 0), Color.new(0, 0, 0, 0)]
  35.  
  36.   # 画面の色调変更をアクターに适用する true = 有効 / false = 无効
  37.   # * true にするとアクターエリアの背景にも适用されます
  38.   ACTOR_SCREEN_TONE       = false  # 规定値:false
  39.  
  40.   # TP のポップアップ设定
  41.   #  0 = すべてポップアップする / 1 = アクターのみ / 2 = ポップアップしない
  42.   TP_POPUP_TYPE           = 1      # 规定値:1
  43.  
  44.   # アイコン无しのステートをポップアップしない true = 有効 / false = 无効
  45.   INDEXZERO_NO_POPUP      = true   # 规定値:true
  46.  
  47.   #--------------------------------------------------------------------------
  48.   # ● 设定:アクターエリアの背景
  49.   #--------------------------------------------------------------------------
  50.   # アクターエリアの背景のタイプ
  51.   #  0 = 无し / 1 = グラデーション / 2 = ウィンドウ / "文字列" = 画像
  52.   ACTOR_BACKGROUND        = 2   # 规定値:2
  53.  
  54.   # アクターエリア背景の高さ
  55.   ACTOR_BACKGROUND_HEIGHT = 112 # 规定値:112
  56.  
  57.     #------------------------------------------------------------------------
  58.     # ○ タイプ [1:グラデーション] の设定
  59.     #------------------------------------------------------------------------
  60.     # グラデーションの色([Color1, Color2])
  61.     ACTOR_BG_GRADIENT_COLOR = [Color.new(0, 0, 0, 96), Color.new(0, 0, 0, 224)]
  62.                      # 规定値:[Color.new(0, 0, 0, 96), Color.new(0, 0, 0, 224)]
  63.  
  64.   #--------------------------------------------------------------------------
  65.   # ● 设定:バトルログ
  66.   #--------------------------------------------------------------------------
  67.   # バトルログ(戦闘进行の実况)のタイプ
  68.   # 0 = VXAceデフォルト / 1 = 蓄积型 / 2 = ヘルプ表示
  69.   BATTLELOG_TYPE  =  1  # 规定値:1
  70.  
  71.     #------------------------------------------------------------------------
  72.     # ○ バトルログタイプ [1:蓄积型] の设定
  73.     #------------------------------------------------------------------------
  74.     # 一度に表示する行数
  75.     STORAGE_LINE_NUMBER     = 6     # 规定値:6
  76.  
  77.     # 一行の高さ
  78.     STORAGE_LINE_HEIGHT     = 20    # 规定値:20
  79.  
  80.     # 自动的にログが进行する时间(フレーム)
  81.     STORAGE_UP_MESSAGE_TIME = 90    # 规定値:90
  82.  
  83.     # ターン终了时にバトルログを消去する true = 有効 / false = 无効
  84.     STORAGE_TURNEND_CLEAR   = true  # 规定値:true
  85.  
  86.     # 座标の调整 :x = X座标 / :y = Y座标
  87.     STORAGE_OFFSET = {:x => 0, :y => 6}  # 规定値:{:x => 0, :y => 6}
  88.  
  89.     # フォント :size = フォントサイズ / :out_color = テキストの縁取り色
  90.     STORAGE_FONT   = {:size => 20, :out_color => Color.new(0, 0, 0, 192)}
  91.             # 规定値:{:size => 20, :out_color => Color.new(0, 0, 0, 192)}
  92.  
  93.     # 背景のグラデーションの色([Color1, Color2])
  94.     STORAGE_GRADIENT_COLOR = [Color.new(0, 0, 0, 128), Color.new(0, 0, 0, 0)]
  95.                     # 规定値:[Color.new(0, 0, 0, 128), Color.new(0, 0, 0, 0)]
  96.  
  97.     #------------------------------------------------------------------------
  98.     # ○ バトルログタイプ [2:ヘルプ表示] の设定
  99.     #------------------------------------------------------------------------
  100.     # ポップアップのウェイト
  101.     POPUP_ADD_WAIT          = 6     # 规定値:6
  102.  
  103.     # 行动の表示形式 0 = アイコン+名前 / 1 = 名前のみ
  104.     HELPDISPLAY_TYPE        = 1     # 规定値:1
  105.  
  106.     # 行动の表示始めの追加ウェイト
  107.     HELPDISPLAT_WAIT        = 20    # 规定値:20
  108.  
  109.     # 行动の表示终了までの追加ウェイト
  110.     HELPDISPLAT_END_WAIT    = 24    # 规定値:24
  111.  
  112.     # 行动の简易说明文
  113.     # :size = フォントサイズ :delimiter = 名前と简易说明文の区切り文字
  114.     HELPDISPLAY_DESCRIPTION = {:size => 20, :delimiter => " "}
  115.                      # 规定値:{:size => 20, :delimiter => " "}
  116.  
  117.   #--------------------------------------------------------------------------
  118.   # ● 设定:バトルメッセージ
  119.   #--------------------------------------------------------------------------
  120.   # バトルメッセージ(戦闘开始・逃走・リザルト等)の表示先
  121.   # 0 = メッセージウィンドウ / 1 = バトルログ / 2 = ヘルプ
  122.   MESSAGE_TYPE  =  2   # 规定値:2
  123.  
  124.     #------------------------------------------------------------------------
  125.     # ○ バトルメッセージタイプ [0:メッセージウィンドウ] の设定
  126.     #------------------------------------------------------------------------
  127.     # メッセージウィンドウの背景 0 = ウィンドウ / 1 = 背景を暗くする / 2 = 透明
  128.     MESSAGE_WINDOW_BACKGROUND  = 1     # 规定値:1
  129.  
  130.     # メッセージウィンドウの位置 0 = 上 / 1 = 中 / 2 = 下
  131.     MESSAGE_WINDOW_POSITION    = 0     # 规定値:0
  132.  
  133.     #------------------------------------------------------------------------
  134.     # ○ バトルメッセージタイプ [2:ヘルプ] の设定
  135.     #------------------------------------------------------------------------
  136.     # ヘルプバトルメッセージのウェイト
  137.     #   [ウェイト(フレーム), キー入力を待つ(true = 有効 / false = 无効)]
  138.     #  :battle_start = 戦闘开始      :victory = 胜利
  139.     #  :escape       = 逃走          :defeat  = 败北
  140.     #  :drop_item    = アイテム获得 :levelup = レベルアップ
  141.     MESSAGE_WAIT = {:battle_start => [120, false], :victory   => [ 60, false],
  142.                     :defeat       => [120, false], :escape    => [120, false],
  143.                     :drop_item    => [ 60,  true], :levelup   => [ 60,  true]}
  144.           # 规定値:{:battle_start => [120, false], :victory   => [ 60, false],
  145.           #         :defeat       => [120, false], :escape    => [120, false],
  146.           #         :drop_item    => [ 60,  true], :levelup   => [ 60,  true]}
  147.  
  148.   # 戦闘开始时の敌出现メッセージを表示する
  149.   MESSAGE_WINDOW_ENEMY_NAMES = false # 规定値:false
  150.  
  151.   # レベルアップ SE  RPG::SE.new("ファイル名", 音量, ピッチ)
  152.   LEVELUP_SE  = RPG::SE.new("Up4", 90, 100)   # 规定値:("Up4", 90, 100)
  153.  
  154.   # ドロップアイテム获得 SE  RPG::SE.new("ファイル名", 音量, ピッチ)
  155.   # * バトルメッセージタイプが 0 以外の场合のみ再生されます。
  156.   DROPITEM_SE = RPG::SE.new("Item3", 80, 125) # 规定値:("Item3", 80, 125)
  157.  
  158.   #--------------------------------------------------------------------------
  159.   # ● 设定:アクターのバトラーグラフィック
  160.   #--------------------------------------------------------------------------
  161.   # アクター表示を中央揃えにする true = 有効 / false = 左揃え
  162.   ACTOR_CENTERING  =  true    # 规定値:true
  163.  
  164.     #------------------------------------------------------------------------
  165.     # ○ アクター表示中央揃えの设定
  166.     #------------------------------------------------------------------------
  167.     # アクター间のスペースの大きさ补正
  168.     ACTOR_SPACING_ADJUST = 32 # 规定値:32
  169.  
  170.   # 座标の调整 :x = X座标 / :y = Y座标
  171.   # * アクターコマンドのX座标には影响しません。
  172.   ACTOR_OFFSET  = {:x => -16, :y => 0}       # 规定値:{:x => -16, :y => 0}
  173.  
  174.   # アクターエリアと画面端との余白 :side = 左右の余白 / :bottom = 下の余白
  175.   ACTOR_PADDING = {:side => 4, :bottom => 8} # 规定値:{:side => 4, :bottom => 8}
  176.  
  177.   # パーティに対する画面アニメーションのY座标修正
  178.   #  位置が[画面]のアニメーションをパーティの中心に表示されるようにします。
  179.   SCREEN_ANIMATION_OFFSET = 128  # 规定値:128
  180.  
  181.   #--------------------------------------------------------------------------
  182.   # ● 设定:バトルステータス
  183.   #--------------------------------------------------------------------------
  184.   # 座标の调整  :x = X座标 / :y = Y座标
  185.   #  X 座标はアクターの中心を基准とします。
  186.   # * パーティメンバーの数やステータス幅によっては、X 座标が自动的に
  187.   # 调整される场合があります。
  188.   STATUS_OFFSET = {:x => 64, :y => -12} # 规定値:{:x => 64, :y => -12}
  189.  
  190.   # 画面左右端の余白
  191.   STATUS_SIDE_PADDING   = 6     # 规定値:6
  192.  
  193.   # アクター1人あたりのステータス幅
  194.   STATUS_WIDTH          = 72    # 规定値:72
  195.  
  196.   # ステータス幅の自动调整を行う
  197.   STATUS_AUTOADJUST     = true  # 规定値:true
  198.  
  199.   # 行の高さ
  200.   STATUS_LINE_HEIGHT    = 22    # 规定値:22
  201.  
  202.   # アクターの名前のフォントサイズ 値を 0 にすると非表示になる
  203.   STATUS_NAME_SIZE      = 20    # 规定値:20
  204.  
  205.   # HP/MP/TPのフォントサイズ
  206.   STATUS_PARAM_SIZE     = 23    # 规定値:23
  207.  
  208.   # HP/MP/TPゲージの不透明度 (0-255)
  209.   STATUS_GAUGE_OPACITY  = 192   # 规定値:192
  210.  
  211.   #--------------------------------------------------------------------------
  212.   # ● 设定:アクターコマンド
  213.   #--------------------------------------------------------------------------
  214.   # コマンドの项目数が 4 を超える场合、项目がすべて见えるように
  215.   # コマンドウィンドウの高さを拡张する true = 有効 / false = 无効
  216.   ACTOR_COMMAND_NOSCROLL   = true  # 规定値:true
  217.  
  218.   # コマンドを横并びにする true = 横并び / false = 縦并び
  219.   ACTOR_COMMAND_HORIZON    = false # 规定値:false
  220.  
  221.   # 文字揃え 0 = 左揃え / 1 = 中央揃え / 2 = 右揃え
  222.   ACTOR_COMMAND_ALIGNMENT  = 0     # 规定値:0
  223.  
  224.   # ウィンドウの横幅
  225.   #  コマンドを横并びにする场合、大きめの値を设定してください。
  226.   ACTOR_COMMAND_WIDTH      = 128   # 规定値:128
  227.  
  228.   # ウィンドウの位置
  229.   #  0 = アクターの头上 / 1 = Y座标を固定 / 2 = XY座标を固定
  230.   ACTOR_COMMAND_POSITION   = 0     # 规定値:0
  231.  
  232.     #------------------------------------------------------------------------
  233.     # ○ ウィンドウの位置 [1:Y座标固定 2:XY座标] の设定
  234.     #------------------------------------------------------------------------
  235.     # 固定Y座标の基准位置
  236.     # 0 = 画面下端 - ウィンドウの高さ / 画面上端
  237.     ACTOR_COMMAND_Y_POSITION = 0   # 规定値:0
  238.  
  239.     # ウィンドウのXY座标修正 :x = X座标 / :y = Y座标
  240.     # * コマンド位置が 1 or 2 の场合、ここで设定した値で座标を固定します。
  241.     ACTOR_COMMAND_OFFSET  = {:x => 0, :y => -16} # 规定値:{:x => 0, :y => -16}
  242.  
  243.   #--------------------------------------------------------------------------
  244.   # ● 设定:パーティコマンド
  245.   #--------------------------------------------------------------------------
  246.   # コマンドを横并びにする true = 横并び / false = 縦并び
  247.   PARTY_COMMAND_HORIZON   = true  # 规定値:true
  248.  
  249.   # 文字揃え 0 = 左揃え / 1 = 中央揃え / 2 = 右揃え
  250.   PARTY_COMMAND_ALIGNMENT = 1     # 规定値:1
  251.  
  252.   # ウィンドウの幅
  253.   PARTY_COMMAND_WIDTH     = Graphics.width     # 规定値:Graphics.width
  254.  
  255.   # ウィンドウの座标 :x = X座标 / :y = Y座标
  256.   PARTY_COMMAND_XY        = {:x => 0, :y => 0} # 规定値:{:x => 0, :y => 0}
  257.  
  258.   #--------------------------------------------------------------------------
  259.   # ● 设定:ターゲットカーソル
  260.   #--------------------------------------------------------------------------
  261.   # カーソルグラフィックのファイル名 (Graphics/System/*)
  262.   #  "" を设定した场合、Bitmap の机能でカーソルを自动生成します。
  263.   CURSOR_NAME       = ""    # 规定値:""
  264.  
  265.     #------------------------------------------------------------------------
  266.     # ○ 自动生成のカーソルグラフィックの设定
  267.     #------------------------------------------------------------------------
  268.     # カーソルの色调 (Red, Green, Blue)
  269.     #  nil を设定した场合、データベースのウィンドウカラーと同じになります。
  270.     CURSOR_TONE     = Tone.new(-34, 0, 68)  # 规定値:Tone.new(-34, 0, 68)
  271.  
  272.   # アニメーションスピード
  273.   CURSOR_ANI_SPEED  = 3     # 规定値:3
  274.  
  275.   # 移动スピード
  276.   CURSOR_SPEED      = 3     # 规定値:3
  277.  
  278.   # 対象选択时にカーソルを点灭させる
  279.   CURSOR_BLINK      = true  # 规定値:true
  280.  
  281.   # カーソルのY座标の制限 :min = 最小値 / :max = 最大値
  282.   CURSOR_MINMAX     = {:min => 48, :max => Graphics.height}
  283.              # 规定値:{:min => 48, :max => Graphics.height}
  284.  
  285.   # カーソル位置のXY座标修正 :x = X座标 / :y = Y座标
  286.   CURSOR_OFFSET     = {:x => 0, :y => 0} # 规定値:{:x => 0, :y => 0}
  287.  
  288.   #--------------------------------------------------------------------------
  289.   # ● 设定:ターゲットヘルプ
  290.   #--------------------------------------------------------------------------
  291.   # バトラーの各パラメータ表示 true = 表示 / false = 非表示
  292.   HELP_ACTOR_PARAM = {:hp => true ,:mp => true ,:tp => true ,:state => true }
  293.   HELP_ENEMY_PARAM = {:hp => false,:mp => false,:tp => false,:state => true }
  294.     # アクター规定値:{:hp => true ,:mp => true ,:tp => true ,:state => true }
  295.     # 敌キャラ规定値:{:hp => false,:mp => false,:tp => false,:state => true }
  296.  
  297.   # HP/MP/TP ゲージの幅
  298.   HELP_PARAM_WIDTH    = 72  # 规定値:72
  299.  
  300.   # 敌ランダムの表示形式
  301.   # 0 = 敌全体 ランダム / 1 = 敌n体 ランダム
  302.   RANDOMSCOPE_DISPLAY = 1   # 规定値:1
  303.  
  304.   #--------------------------------------------------------------------------
  305.   # ● 设定:ポップアップ
  306.   #--------------------------------------------------------------------------
  307.   # ポップアップ位置 0 = 足元 / 1 = 中心 / 2 = 头上 / 3 = 一定(アクターのみ)
  308.   ACTOR_POPUP_POSITION   = 3  # アクター     规定値:3
  309.   ENEMY_POPUP_POSITION   = 1  # 敌キャラ     规定値:1
  310.   LEVELUP_POPUP_POSITION = 3  # レベルアップ 规定値:3
  311.  
  312.     #------------------------------------------------------------------------
  313.     # ○ ポップアップ位置 [3:一定(アクターのみ)] の设定
  314.     #------------------------------------------------------------------------
  315.     # アクターのポップアップの Y 座标
  316.     #  ゲーム画面の高さ(Graphics.height)を基准とします。
  317.     ACTOR_POPUP_Y     =  -100  # 规定値:-100
  318.  
  319.     # レベルアップのポップアップの Y 座标
  320.     #  ゲーム画面の高さ(Graphics.height)を基准とします。
  321.     LEVELUP_POPUP_Y   =  -112  # 规定値:-112
  322.  
  323.   # 数字のフォント
  324.   NUMBER_FONT   =  ["Arial Black", "VL Gothic"] # ["Arial Black", "VL Gothic"]
  325.  
  326.   # ステート等のテキストのフォント
  327.   TEXT_FONT     =  ["Arial Black", "VL Gothic"] # ["Arial Black", "VL Gothic"]
  328.   TEXT_FONT_MCS =  ["VL Gothic"]       #日本语を含む场合。规定値:["VL Gothic"]
  329.  
  330.   # 画像フォントのファイル名 (Graphics/System/*) <<ver1.10>>
  331.   #  "" を设定した场合、通常のフォントを利用します。
  332.   # 数字
  333.   LARGE_NUMBER_NAME = ""       # 规定値:""
  334.   SMALL_NUMBER_NAME = ""       # 规定値:""
  335.   # 能力强化/弱体
  336.   LARGE_BUFFS_NAME  = ""       # 规定値:""
  337.   SMALL_BUFFS_NAME  = ""       # 规定値:""
  338.  
  339.   # 数字のサイズ・字间
  340.   #  :fontsize = フォントサイズ / :spacing = 字间
  341.   #  :width    = 一字あたりの幅 / :height = 一字あたりの高さ
  342.   LARGE_NUMBER  =  {:fontsize => 38, :spacing => -4, :line_height => 26}
  343.   SMALL_NUMBER  =  {:fontsize => 28, :spacing => -4, :line_height => 20}
  344.   # 大サイズ规定値:{:fontsize => 38, :spacing => -4, :line_height => 26}
  345.   # 小サイズ规定値:{:fontsize => 28, :spacing => -4, :line_height => 20}
  346.  
  347.   # テキストのフォントサイズ倍率
  348.   #   :normal     = テキスト単体
  349.   #   :left_right = ダメージ左右   :top_bottom = ダメージ上下
  350.   # * 数字のフォントサイズからの割合で指定します。
  351.   TEXT_SIZERATE     = {:normal => 0.8, :left_right => 0.7, :top_bottom => 0.6}
  352.              # 规定値:{:normal => 0.8, :left_right => 0.7, :top_bottom => 0.6}
  353.  
  354.   # 日本语を含むテキストのフォントサイズ倍率
  355.   # * 通常のテキストフォントサイズからの倍率で指定します。
  356.   TEXT_SIZERATE_MCS = 0.9   # 规定値:0.9
  357.  
  358.   # ポップアップの修饰文字
  359.   # ["テキスト", 修饰文字の位置(2 = 下 / 4 = 左 / 6 = 右 / 8 = 上)]
  360.   # * 文字列中の \mp \tp はデータベースで设定した用语(短)に置き换わります
  361.   DECORATION_NUMBER = {            # 规定値
  362.   :critical    => ["CRITICAL", 8], # ["CRITICAL", 8] / クリティカル
  363.   :weakness    => ["WEAKNESS", 8], # ["WEAKNESS", 8] / 弱点ダメージ
  364.   :resist      => ["RESIST"  , 8], # ["RESIST"  , 8] / 耐性ダメージ
  365.   :mp_damage   => ["\mp"     , 4], # ["\mp"     , 4] / MP ダメージ・回复
  366.   :mp_plus     => ["\mp+"    , 4], # ["\mp+"    , 4] / MP 再生
  367.   :mp_minus    => ["\mp-"    , 4], # ["\mp-"    , 4] / MP 消费
  368.   :tp_plus     => ["\tp+"    , 4], # ["\tp+"    , 4] / TP 増加
  369.   :tp_minus    => ["\tp-"    , 4], # ["\tp-"    , 4] / TP 减少
  370.   }
  371.   # ステートや能力强化/弱体のポップアップの修饰文字
  372.   #  %s にステート・能力名が入る
  373.   DECORATION_TEXT = {              # 规定値
  374.   :add_state   => "+%s",           # "+%s"           / ステート付加
  375.   :rem_state   => "-%s",           # "-%s"           / ステート解除
  376.   :add_buff    => "%s UP",         # "%s UP"         / 能力强化付加
  377.   :add_debuff  => "%s DOWN",       # "%s DOWN"       / 能力弱体付加
  378.   :rem_buff    => "-%s Buff",      # "-%s Buff"      / 能力强化/弱体解除
  379.   }
  380.   # ポップアップの表示用语
  381.   POPUP_VOCAB = {                  # 规定値
  382.   :miss        => "MISS!",         # "MISS!"         / ミス
  383.   :counter     => "Counter",       # "Counter"       / 反撃
  384.   :reflection  => "Reflection",    # "Reflection"    / 反射
  385.   :substitute  => "Substitute",    # "Substitute"    / 身代わり
  386.   :levelup     => "LEVELUP!",      # "LEVELUP!"      / レベルアップ
  387.   }
  388.   # 能力强化/弱体ポップアップのパラメータ表记
  389.   # * 文字列中の \hp \mp はデータベースで设定した用语(短)に置き换わります
  390.   POPUP_VOCAB_PARAMS = [ # 规定値
  391.   "MAX\hp",              # "MAX\hp"  / 最大HP    MAXimum Hit Point
  392.   "MAX\mp",              # "MAX\mp"  / 最大MP    MAXimum Magic Point
  393.   "ATK",                 # "ATK"     / 攻撃力    ATtacK power
  394.   "DEF",                 # "MATK"    / 防御力    DEFense power
  395.   "MATK",                # "MDEF"    / 魔法力    Magic ATtacK power
  396.   "MDEF",                # "MDEF"    / 魔法防御  Magic DEFense power
  397.   "AGI",                 # "AGI"     / 敏捷性    AGIlity
  398.   "LUCK",                # "LUCK"    / 运        LUCK
  399.   ]
  400.   # ポップアップの色([Color1, Color2])
  401.   # * ハッシュの顺序を変更しないこと
  402.   POPUP_COLOR = {
  403.   # HP ダメージ(ミス)
  404.   :hp_damage     => [Color.new(255, 255, 255), Color.new(  0,   0,   0)],
  405.   # クリティカルダメージ
  406.   :critical      => [Color.new(255, 255,  80), Color.new(224,  32,   0)],
  407.   # 弱点ダメージ
  408.   :weakness      => [Color.new(255, 255, 255), Color.new(  0,  56, 144)],
  409.   # 耐性ダメージ
  410.   :resist        => [Color.new(232, 224, 216), Color.new( 56,  48,  40)],
  411.   # HP 回复(再生,吸収)
  412.   :hp_recovery   => [Color.new( 96, 255, 128), Color.new(  0,  64,  32)],
  413.   # MP ダメージ
  414.   :mp_damage     => [Color.new(248,  80, 172), Color.new( 48,   0,  32)],
  415.   # MP 回复(再生,吸収)
  416.   :mp_recovery   => [Color.new(160, 240, 255), Color.new( 32,  48, 144)],
  417.   # TP 増减
  418.   :tp_damage     => [Color.new(248, 240,  64), Color.new(  0,  80,  40)],
  419.   # 有利なステートの付加
  420.   :add_state     => [Color.new(255, 255, 255), Color.new(  0,  56, 144)],
  421.   # 有利なステートの解除
  422.   :rem_state     => [Color.new(224, 232, 240), Color.new( 32,  64, 128, 128)],
  423.   # ステートの付加
  424.   :add_badstate  => [Color.new(255, 255, 255), Color.new(  0,   0,   0)],
  425.   # ステートの解除
  426.   :rem_badstate  => [Color.new(224, 224, 224), Color.new( 32,  32,  32, 128)],
  427.   # 能力强化の付加
  428.   :add_buff      => [Color.new(255, 255, 192), Color.new( 96,  64,   0)],
  429.   # 能力弱体の付加
  430.   :add_debuff    => [Color.new(200, 224, 232), Color.new( 40,  48,  56)],
  431.   # 能力强化/弱体の解除
  432.   :rem_buff      => [Color.new(224, 224, 224), Color.new( 32,  32,  32, 128)],
  433.   # 反撃
  434.   :counter       => [Color.new(255, 255, 224), Color.new(128,  96,   0)],
  435.   # 反射
  436.   :reflection    => [Color.new(224, 255, 255), Color.new(  0,  96, 128)],
  437.   # 身代わり
  438.   :substitute    => [Color.new(224, 255, 224), Color.new(  0, 128,  64)],
  439.   # レベルアップ
  440.   :levelup       => [Color.new(255, 255, 255), Color.new(  0,   0,   0)],
  441.   }
  442.   # ポップアップのタイプ        -1 = ポップアップしない
  443.   #  0 = 跳ねるポップアップ(大)  4 = スライド(大)
  444.   #  1 = 跳ねるポップアップ(小)  5 = スライド(小)
  445.   #  2 = ゆっくり上升(大)        6 = オーバーレイ(大)
  446.   #  3 = ゆっくり上升(小)        7 = オーバーレイ(小)
  447.   POPUP_TYPE = {          # 规定値
  448.   :miss          =>   0,  #   0 / ミス
  449.   :hp_damage     =>   0,  #   0 / HP ダメージ
  450.   :hp_slipdamage =>   1,  #   1 / HP スリップダメージ
  451.   :hp_recovery   =>   0,  #   0 / HP 回复
  452.   :hp_regenerate =>   1,  #   1 / HP 再生
  453.   :hp_drain      =>   0,  #   0 / HP 被吸収
  454.   :hp_drainrecv  =>   0,  #   0 / HP 吸収回复
  455.   :mp_damage     =>   0,  #   0 / MP ダメージ
  456.   :mp_slipdamage =>   1,  #   1 / MP スリップダメージ
  457.   :mp_recovery   =>   0,  #   0 / MP 回复
  458.   :mp_regenerate =>   1,  #   1 / MP 再生
  459.   :mp_drain      =>   0,  #   0 / MP 被吸収
  460.   :mp_drainrecv  =>   0,  #   0 / MP 吸収回复
  461.   :mp_paycost    =>  -1,  #  -1 / MP 消费
  462.   :tp_damage     =>   1,  #   1 / TP 増加(ダメージ)
  463.   :tp_charge     =>  -1,  #  -1 / TP チャージ(被ダメージ时の TP 増加)
  464.   :tp_gain       =>   7,  #   7 / TP 得
  465.   :tp_regenerate =>   1,  #   1 / TP 再生(スリップダメージ)
  466.   :tp_paycost    =>  -1,  #  -1 / TP 消费
  467.   # ステート/能力
  468.   :add_state     =>   2,  #   2 / 有利なステートの付加
  469.   :rem_state     =>   2,  #   2 / 有利なステートの解除
  470.   :add_badstate  =>   2,  #   2 / 不利なステートの付加
  471.   :rem_badstate  =>   2,  #   2 / 不利なステートの解除
  472.   :add_buff      =>   3,  #   3 / 能力强化の付加
  473.   :add_debuff    =>   3,  #   3 / 能力弱体の付加
  474.   :rem_buff      =>   3,  #   3 / 能力强化/弱体の解除
  475.   # 特殊
  476.   :counter       =>   6,  #   6 / 反撃
  477.   :reflection    =>   6,  #   6 / 反射
  478.   :substitute    =>   4,  #   4 / 身代わり
  479.   }
  480.   # 0:跳ねるポップアップの动き(大)
  481.   LARGE_MOVEMENT = {
  482.   :inirate    => 6.4,  :gravity      => 0.68,  :side_scatter => 1.2,
  483.   :ref_height =>  32,  :ref_factor   => 0.60,  :ref_count    =>   2,
  484.                        :duration     =>   40,  :fadeout      =>  20 }
  485.   # 1:跳ねるポップアップの动き(小)
  486.   SMALL_MOVEMENT = {
  487.   :inirate    => 4.4,  :gravity      => 0.60,  :side_scatter => 0.0,
  488.   :ref_height =>  12,  :ref_factor   => 0.70,  :ref_count    =>   0,
  489.                        :duration     =>   60,  :fadeout      =>  16 }
  490.   # 2,3:上升ポップアップの动き
  491.   RISE_MOVEMENT     = {:rising_speed => 0.75,  :line_spacing => 0.9,
  492.                        :duration     =>   40,  :fadeout      =>   8 }
  493.   # 4,5:スライドポップアップの动き
  494.   SLIDE_MOVEMENT    = {:x_speed      =>    2,  :line_spacing => 0.9,
  495.                        :duration     =>   50,  :fadeout      =>  32 }
  496.   # 6,7:オーバーレイポップアップの动き
  497.   OVERLAY_MOVEMENT  = {:duration     =>   36,  :fadeout      =>  32 }
  498.  
  499.   # :inirate      = 初速度                :gravity    = 重力加速度
  500.   # :side_scatter = 左右移动のばらつき    :ref_height = 跳ね返り位置
  501.   # :ref_factor   = 反発系数              :ref_count  = 跳ね返り回数
  502.   # :duration     = 消え始めるまでの时间  :fadeout    = 消える速度
  503.   # :rising_speed = 上升速度              :x_speed    = 横移动速度
  504.   # :line_spacing = ポップアップの行间
  505.  
  506.   #--------------------------------------------------------------------------
  507.   # ● 设定:ユーザビリティ
  508.   #--------------------------------------------------------------------------  
  509.   # 効果范囲が 使用者/全体/ランダム のスキル・アイテムの対象确认を行う
  510.   #  true = 有効 / false = 无効
  511.   FIX_TARGET_CHECKE     = true   # 规定値:true
  512.  
  513.   # 防御コマンドの対象确认を行う     true = 有効 / false = 无効
  514.   GUARD_TARGET_CHECKE   = true   # 规定値:true
  515.  
  516.   # アクターの対象选択を最适化する   true = 有効 / false = 无効
  517.   SMART_TARGET_SELECT   = true   # 规定値:true
  518.  
  519.   # 対象选択のカーソル位置を记忆する true = 有効 / false = 无効
  520.   LAST_TARGET           = true   # 规定値:true
  521.  
  522.   # パーティコマンドのカーソル位置を记忆する    true = 有効 / false = 无効
  523.   LAST_PARTY_COMMAND    = true   # 规定値:true
  524.  
  525.   # アクターコマンドのカーソル位置を记忆する    true = 有効 / false = 无効
  526.   LAST_ACTOR_COMMAND    = true   # 规定値:true
  527.  
  528.   # 敌キャラのインデックスを X 座标でソートする true = 有効 / false = 无効
  529.   TROOP_X_SORT          = true   # 规定値:true
  530.  
  531.   # パーティコマンド入力回数を最适化する        true = 有効 / false = 无効
  532.   PARTY_COMMAND_SKIP    = true   # 规定値:true
  533.  
  534.   #--------------------------------------------------------------------------
  535.   # ● 设定:その他
  536.   #--------------------------------------------------------------------------
  537.   # スキルリストとアイテムリストを项目数に合わせてリサイズする
  538.   #  true = 有効 / false = 无効
  539.   FITTING_LIST          = true   # 规定値:true
  540.  
  541.   # バトラーの行动时の白フラッシュを强める          true = 有効 / false = 无効
  542.   ENHANCED_WHITEN       = true   # 规定値:true
  543.  
  544.   # ダメージを受けた时の画面のシェイクを行わない    true = 有効 / false = 无効
  545.   DISABLED_DAMAGE_SHAKE = true   # 规定値:true
  546.  
  547.   # 敌キャラの X 座标を画面サイズに合わせて修正する true = 有効 / false = 无効
  548.   TROOP_X_SCREEN_FIX    = true   # 规定値:true
  549.  
  550.   # 敌キャラの Y 座标の调整
  551.   TROOP_Y_OFFSET        = 0      # 规定値:0
  552.  
  553.   #
  554.   # 设定ここまで お疲れ様でした。
  555.   #
  556. end
  557. #==============================================================================
  558. # ■ LNXスクリプト导入情报
  559. #==============================================================================
  560. $lnx_include = {} if $lnx_include == nil
  561. $lnx_include[:lnx11aconf] = 110 # version
  562. p "OK:LNX11aconf_XPスタイルバトル#コンフィグ"


另外还有图档,超过可上传大小,所以没办法了,等分割后我再上传,但没关系,只用脚本也可以运行的。

评分

参与人数 1梦石 +1 收起 理由
迷糊的安安 + 1 认可答案 附赠66RPG提供的精美好人卡一张^^.

查看全部评分

修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
76 小时
注册时间
2009-10-24
帖子
172
5
 楼主| 发表于 2012-12-14 00:41:32 | 只看该作者
j433463 发表于 2012-12-13 06:36
有一个 LNX11 XPstylebattle 战斗系统,两个脚本加一些图档(数字,状态文字等等),
就是把战斗风格(包含 ...

网页打不开!

点评

额!那把范例下下来发给我吧。。。!  发表于 2012-12-14 02:10
奇怪了,我 firefox 和 ie 都打得開,網站沒問題,難道是你那邊被禁封了?  发表于 2012-12-14 02:08
还是打不开!  发表于 2012-12-14 01:33
可能是最后的 # 号造成的,已经修掉,请再试试看,应该可以的。  发表于 2012-12-14 01:13
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
4
发表于 2012-12-13 06:36:55 | 只看该作者
本帖最后由 j433463 于 2012-12-14 01:11 编辑

有一个 LNX11 XPstylebattle 战斗系统,两个脚本加一些图档(数字,状态文字等等),
就是把战斗风格(包含画面和战斗方式)都改成像 XP 的样子,我试过可以做到,
不过,因为是日语脚本,所以直接用没问题,要改设定就辛苦了,没找到中文化的版本。

LNX11 XPstylebattle 的网站

firefox 浏览器需要用到 IE tab 之类的转成 IE 界面,不然会看不到部份网页内容。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
76 小时
注册时间
2009-10-24
帖子
172
3
 楼主| 发表于 2012-12-13 02:52:19 | 只看该作者
就是在战斗中人物战斗图改为!   这种不是那种一格一格的!
---名称----HP----MP----TP-------
---名称----HP----MP----TP------
---名称----HP----MP----TP------
---名称----HP----MP----TP------
的这种
改为
--名称--名称--名称--名称--
--HP---HP-----HP-----HP----
--MP----MP----MP----MP----
--TP----TP----TP----TP----
的这种
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
616 小时
注册时间
2010-10-29
帖子
463
2
发表于 2012-12-10 01:14:48 | 只看该作者
XP是何物?
句子不太通顺⋯⋯

如果要改外形:
1:Yanfly
2:外站各种各样的

新手不推荐改界面,真的⋯⋯
我命令你给我点下面的东西!

LBQ Works
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-11 07:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表