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

Project1

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

[已经过期] 请教怎么在这个菜单脚本里添加装备扩展没效果??

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4082
在线时间
1081 小时
注册时间
2008-5-17
帖子
218

开拓者

跳转到指定楼层
1
发表于 2017-11-23 10:52:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 无名小兵 于 2017-11-23 11:09 编辑

用了MOG_Monogatari 跟 后知后觉大大的 装备扩展 的脚本 无效果,有大佬帮忙看看吗下面贴出脚本
MOG_Monogatari

RUBY 代码复制下载
  1. #==============================================================================
  2. # +++ MOG - Monogatari (物語)  (v1.5) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # [url=http://www.atelier-rgss.com/]http://www.atelier-rgss.com/[/url]
  6. #==============================================================================
  7. # Sistema avançado de menu, voltado para scripters que desejam saber sobre
  8. # técnicas de manipulação de sprites e janelas.
  9. #==============================================================================
  10.  
  11. #==============================================================================
  12. # Version History.
  13. #==============================================================================
  14. # 1.5 - Função de desabilitar o save.
  15. #       Definição dos nomes das fontes baseado na fonte padrão do sistema,
  16. #       para resolver o problema de compatibilidade de fontes de outras línguas.
  17. #       Melhoria na posição das janelas.
  18. #       Correção do bug de não atualizar o número de itens. (Dual Wield)
  19. # 1.4 - Compatibilidade com Mog Menu Cursor.
  20. # 1.3 - Corrigido o bug do som da Scene Skill.
  21. # 1.2 - Compatibilidade com Third Party scripts.
  22. #     - Scene File incorporado ao sistema Monogatari, melhorando a performance.
  23. #==============================================================================
  24.  
  25. #==============================================================================
  26. # NOTA - Como este é um script para apresentar técnicas de RGSS, não foram
  27. # adicionados comentários explicativos no modulo de configuração
  28. #==============================================================================
  29.  
  30. #==============================================================================
  31. # ■ MAIN MENU
  32. #==============================================================================
  33. module MOG_MENU
  34.    NUMBER_OF_PARTICLES = 20  
  35.    BACKGROUND_SCROLL_SPEED = [0,0]#[1,0]
  36.    COMMAND_POSITION = [150, 136]  #[32, 84]
  37.    COMMAND_POSITION_2 = [0,0]#[10,100]
  38.    COMMAND_SPACE = 4
  39.    COMMAND_NAME_POSITION = [0,-500]    #-500
  40.    COMMAND_NAME_POSITION_2 = [512,-100]#-100,表示不需要
  41.    ACTOR_SPACE = 100
  42.    ACTOR_POSITION = [240,0]
  43.  
  44.    ACTOR_LAYOUT_POSITON = [0,475]#[0,275]
  45.    ACTOR_HP1_POSITON = [28,515]#以下全部y+200
  46.    ACTOR_HP2_POSITON = [50,530]
  47.    ACTOR_MP1_POSITON = [28,546]
  48.    ACTOR_MP2_POSITON = [50,561]   
  49.    ACTOR_HP_METER_POSITON = [29,529]
  50.    ACTOR_MP_METER_POSITON = [29,560]
  51.    ACTOR_LEVEL_POSITON = [20,490]
  52.    ACTOR_STATES_POSITION = [63,483]#end
  53.  
  54.    MEMBERS_FACE_POSITION =[280,100]#[150,55]
  55.    MEMBERS_FACE_SPACE = 64
  56.    MEMBERS_ARROW_LAYOUT_POSITION = [465,80]
  57.    MEMBERS_ARROW_1_POSITION = [430,80]
  58.    MEMBERS_ARROW_2_POSITION = [550,80]
  59.    GOLD_NUMBER_POS = [445,55]#388
  60.    TIME_NUMBER_POS = [560,55]
  61.    LOCATION_POS = [755,-100] #380
  62. end
  63.  
  64. #==============================================================================
  65. # ■ MOG_MENU ITEM
  66. #==============================================================================
  67. module MOG_MENU_ITEM
  68.    NUMBER_OF_PARTICLES = 20  
  69.    BACKGROUND_SCROLL_SPEED = [0,0]#[1,0]
  70.    COMMAND_POSITION = [100, 120]#[200, 69]
  71.    BUTTON_POSITION = [195, 80] #[210, 30]
  72.    BUTTON_SPACE = 90
  73.    FONT_SIZE = 18
  74.    FONT_BOLD = true  
  75. end
  76.  
  77. #==============================================================================
  78. # ■ MOG_MENU SKILL
  79. #==============================================================================
  80. module MOG_MENU_SKILL
  81.    NUMBER_OF_PARTICLES = 20  
  82.    BACKGROUND_SCROLL_SPEED = [0,0]#[1,0]
  83.    FONT_SIZE = 18
  84.    FONT_BOLD = true  
  85. end
  86.  
  87. #==============================================================================
  88. # ■ MOG_ACTOR SKILL STATUS
  89. #==============================================================================
  90. module MOG_ACTOR_SKILL_STATUS
  91.   MEMBERS_SPACE = 80  
  92.   LAYOUT_POSITION = [225,50]
  93.   PAR_POSITION = [10,0]
  94.   FACE_POSITION = [-13,-3]
  95.   HP_METER_POSITION = [158,15]
  96.   MP_METER_POSITION = [177,35]
  97.   STATES_POSITION = [71,136]#[71,36]
  98.   STATES_SCROLLING_ANIMATION = false  
  99.   NAME_POSITION = [105,34]
  100.   FONT_SIZE = 18
  101.   FONT_BOLD = true  
  102. end
  103.  
  104. #==============================================================================
  105. # ■ MOG_MENU EQUIP
  106. #==============================================================================
  107. module MOG_MENU_EQUIP
  108.    NUMBER_OF_PARTICLES = 20  
  109.    BACKGROUND_SCROLL_SPEED = [0,0]#[1,0]
  110.    FONT_SIZE = 18
  111.    FONT_BOLD = true
  112.    FONT_ITALIC = false   
  113. end
  114.  
  115. #==============================================================================
  116. # ■ MOG_MENU STATUS
  117. #==============================================================================
  118. module MOG_EQUIP_STATUS  
  119.   LAYOUT_POSITION = [30,180]   #L
  120.   FACE_POSITION = [60,-50]
  121.   PAR_POSITION = [5,32]
  122.   NAME_POSITION = [15,-5]
  123.   FONT_SIZE = 18
  124.   FONT_BOLD = true
  125. end
  126.  
  127. #==============================================================================
  128. # ■ MOG_MENU STATUS
  129. #==============================================================================
  130. module MOG_MENU_STATUS
  131.    NUMBER_OF_PARTICLES = 20  
  132.    BACKGROUND_SCROLL_SPEED = [0,0]#[1,0]
  133. end
  134.  
  135. #==============================================================================
  136. # ■ MOG MENU PARTY
  137. #==============================================================================
  138. module MOG_MENU_PARTY
  139.    NUMBER_OF_PARTICLES = 20  
  140.    BACKGROUND_SCROLL_SPEED = [0,0]#[1,0]   
  141. end
  142.  
  143. #==============================================================================
  144. # ■ MOG MENU SAVE
  145. #==============================================================================
  146. module MOG_MENU_SAVE
  147.    FILES_MAX = 9   
  148.    NUMBER_OF_PARTICLES = 20   
  149.    BACKGROUND_SCROLL_SPEED = [0,0]#[1,0]
  150. end
  151.  
  152. #==============================================================================
  153. # ■ MOG MENU END
  154. #==============================================================================
  155. module MOG_MENU_END
  156.    NUMBER_OF_PARTICLES = 20
  157.    BACKGROUND_SCROLL_SPEED = [0,0]#[1,0]
  158. end
  159.  
  160. #==============================================================================
  161. # ■ MOG ACTOR MENU STATUS
  162. #==============================================================================
  163. module MOG_ACTOR_MENU_STATUS  
  164.   LAYOUT_POSITION = [20,335]#[385,115]
  165.   FACE_POSITION = [48,-22]
  166.   PAR_POSITION = [5,64]
  167.   STATES_POSITION = [15,25]
  168.   STATES_SCROLLING_ANIMATION = false#true#
  169.   NAME_POSITION = [10,60]
  170.   FONT_SIZE = 18
  171.   FONT_BOLD = true
  172. end
  173.  
  174. #==============================================================================
  175. # ■ MOG MEMBERS LAYOUT
  176. #==============================================================================
  177. module MOG_MEMBERS_LAYOUT  #使用物品时,显示队友菜单
  178.   MEMBERS_SPACE = 80  
  179.   LAYOUT_POSITION = [15,160]#[3,160]
  180.   PAR_POSITION = [20,25]
  181.   FACE_POSITION = [0,-2]
  182.   HP_METER_POSITION = [32,45]
  183.   MP_METER_POSITION = [106,45]
  184.   SCOPE_TEXT_POSITION = [0,170]
  185.   ARROW_1_POSITION = [50,55]
  186.   ARROW_2_POSITION = [50,4]
  187.   NAME_POSITION = [75,5]
  188.   FONT_SIZE = 18
  189.   FONT_BOLD = true  
  190. end
  191.  
  192. #==============================================================================
  193. # ■ MOG ACTOR MENU PARTY #Party 界面位置设定
  194. #==============================================================================
  195. module MOG_ACTOR_MENU_PARTY
  196.   FACE_POSITION = [640,80]#[390,96]
  197.   NAME_POSITION = [640,57]#[390,73]
  198.   FONT_SIZE = 16
  199.   FONT_BOLD = true
  200. end
  201.  
  202.  
  203. #==============================================================================
  204. # ■ MOG MENU BASE
  205. #==============================================================================
  206. module MOG_MENU_BASE
  207.  
  208. end
  209.  
  210. $imported = {} if $imported.nil?
  211. $imported[:mog_monogatari] = true
  212.  
  213. #==============================================================================
  214. # ■ Game Temp
  215. #==============================================================================
  216. class Game_Temp
  217.  
  218.   attr_accessor :menu_index
  219.   attr_accessor :actor_menu_temp
  220.   attr_accessor :item_scope
  221.   attr_accessor :temp_actor_equip
  222.  
  223.   #--------------------------------------------------------------------------
  224.   # ● Initialize
  225.   #--------------------------------------------------------------------------  
  226.   alias mog_menu_index_initialize initialize
  227.   def initialize
  228.       @menu_index = 0
  229.       @actor_menu_temp = -1      
  230.       @item_scope = 0
  231.       @temp_actor_equip = nil
  232.       mog_menu_index_initialize
  233.   end
  234.  
  235. end
  236.  
  237. #==============================================================================
  238. # ■ Scene Map
  239. #==============================================================================
  240. class Scene_Map < Scene_Base
  241.  
  242. #--------------------------------------------------------------------------
  243. # ● Update Call Menu
  244. #--------------------------------------------------------------------------   
  245. alias mog_menu_monogatari_update_call_menu update_call_menu   
  246. def update_call_menu
  247.      if $game_party.members.size == 0
  248.         @call_menu = false
  249.         return
  250.      end
  251.      mog_menu_monogatari_update_call_menu
  252. end
  253.  
  254. #--------------------------------------------------------------------------
  255. # ● Call Menu
  256. #--------------------------------------------------------------------------   
  257. alias mog_menu_monogatari_call_menu call_menu
  258. def call_menu
  259.      $game_temp.menu_index = 0     
  260.      mog_menu_monogatari_call_menu
  261. end
  262.  
  263. end
  264.  
  265. #==============================================================================
  266. # ■ Window Command
  267. #==============================================================================
  268. class Window_Command < Window_Selectable
  269.  
  270.   attr_reader :list
  271. end
  272.  
  273. #==============================================================================
  274. # ■ Game Party
  275. #==============================================================================
  276. class Game_Party < Game_Unit
  277.  
  278.    attr_accessor :menu_actor_id   
  279.  
  280. end
  281.  
  282. #==============================================================================
  283. # ■ Game Interpreter
  284. #==============================================================================
  285. class Game_Interpreter
  286.  
  287. #--------------------------------------------------------------------------
  288. # ● gain Tp
  289. #--------------------------------------------------------------------------      
  290. def gain_tp(actor_id,value)
  291.      return if $game_party.members[actor_id] == nil
  292.      $game_party.members[actor_id].tp += value.truncate
  293. end  
  294.  
  295. #--------------------------------------------------------------------------
  296. # ● Lose Tp
  297. #--------------------------------------------------------------------------      
  298. def lose_tp(actor_id,value)
  299.      return if $game_party.members[actor_id] == nil
  300.      $game_party.members[actor_id].tp -= value.truncate
  301. end   
  302.  
  303. end
  304.  
  305. #==============================================================================
  306. # ■ Cache
  307. #==============================================================================
  308. module Cache
  309.  
  310.   #--------------------------------------------------------------------------
  311.   # ● Menu
  312.   #--------------------------------------------------------------------------
  313.   def self.menu(filename)
  314.       load_bitmap("Graphics/Menus/", filename)
  315.   end  
  316.  
  317.   #--------------------------------------------------------------------------
  318.   # ● Menu Main
  319.   #--------------------------------------------------------------------------
  320.   def self.menu_main(filename)
  321.       load_bitmap("Graphics/Menus/Main/", filename)
  322.   end
  323.  
  324.   #--------------------------------------------------------------------------
  325.   # ● Menu Item
  326.   #--------------------------------------------------------------------------
  327.   def self.menu_item(filename)
  328.       load_bitmap("Graphics/Menus/Item/", filename)
  329.   end  
  330.  
  331.   #--------------------------------------------------------------------------
  332.   # ● Menu Skill
  333.   #--------------------------------------------------------------------------
  334.   def self.menu_skill(filename)
  335.       load_bitmap("Graphics/Menus/Skill/", filename)
  336.   end   
  337.  
  338.   #--------------------------------------------------------------------------
  339.   # ● Menu Equip
  340.   #--------------------------------------------------------------------------
  341.   def self.menu_equip(filename)
  342.       load_bitmap("Graphics/Menus/Equip/", filename)
  343.   end      
  344.  
  345.   #--------------------------------------------------------------------------
  346.   # ● Menu Status
  347.   #--------------------------------------------------------------------------
  348.   def self.menu_status(filename)
  349.       load_bitmap("Graphics/Menus/Status/", filename)
  350.   end   
  351.  
  352.   #--------------------------------------------------------------------------
  353.   # ● Menu Save
  354.   #--------------------------------------------------------------------------
  355.   def self.menu_save(filename)
  356.       load_bitmap("Graphics/Menus/Save/", filename)
  357.   end      
  358.  
  359.   #--------------------------------------------------------------------------
  360.   # ● Menu Party
  361.   #--------------------------------------------------------------------------
  362.   def self.menu_party(filename)
  363.       load_bitmap("Graphics/Menus/Party/", filename)
  364.   end     
  365.  
  366.   #--------------------------------------------------------------------------
  367.   # ● Menu End
  368.   #--------------------------------------------------------------------------
  369.   def self.menu_end(filename)
  370.       load_bitmap("Graphics/Menus/End/", filename)
  371.   end      
  372.  
  373. end
  374.  
  375. #==============================================================================
  376. # ■ Game_Temp
  377. #==============================================================================
  378. class Game_Temp
  379.  
  380.   attr_accessor :pre_cache_main_menu
  381.   attr_accessor :pre_cache_actor_menu
  382.   attr_accessor :pre_cache_item_menu
  383.   attr_accessor :pre_cache_skill_menu
  384.   attr_accessor :pre_cache_equip_menu
  385.   attr_accessor :pre_cache_status_menu
  386.   attr_accessor :pre_cache_party_menu
  387.   attr_accessor :pre_cache_file_menu
  388.   attr_accessor :pre_cache_end_menu
  389.   attr_accessor :pre_cache_icon
  390.   attr_accessor :pre_symbol
  391.  
  392.   #--------------------------------------------------------------------------
  393.   # ● Pre Cache Atelier Menu
  394.   #--------------------------------------------------------------------------  
  395.   def pre_cache_atelier_menu   
  396.       @pre_cache_main_menu = []
  397.       @pre_cache_item_menu = []
  398.       @pre_cache_skill_menu = []
  399.       @pre_cache_equip_menu = []
  400.       @pre_cache_status_menu = []
  401.       @pre_cache_party_menu = []
  402.       @pre_cache_file_menu = []
  403.       @pre_cache_end_menu = []
  404.       @pre_symbol = ""
  405.       execute_pre_cache_icon if can_pre_cache_icon?
  406.       execute_pre_cache_actor
  407.       execute_pre_cache_main_menu
  408.       execute_pre_cache_item_menu
  409.       execute_pre_cache_skill_menu
  410.       execute_pre_cache_equip_menu
  411.       execute_pre_cache_status_menu
  412.       execute_pre_cache_file_menu
  413.       execute_pre_cache_party_menu
  414.       execute_pre_cache_end_menu
  415.   end
  416.  
  417.   #--------------------------------------------------------------------------
  418.   # ● Pre Cache Icon
  419.   #--------------------------------------------------------------------------   
  420.   def execute_pre_cache_icon
  421.       @pre_cache_icon = Cache.system("Iconset")
  422.   end
  423.  
  424.   #--------------------------------------------------------------------------
  425.   # ● Can Pre Cache Menu?
  426.   #--------------------------------------------------------------------------  
  427.   def can_pre_cache_icon?
  428.       return true if @pre_cache_icon == nil
  429.       return true if @pre_cache_icon.disposed? rescue return false
  430.       return false
  431.   end
  432.  
  433. end
  434.  
  435. #==============================================================================
  436. # ■ Spriteset_Map
  437. #==============================================================================
  438. class Spriteset_Map  
  439.  
  440.   #--------------------------------------------------------------------------
  441.   # ● Initialize
  442.   #--------------------------------------------------------------------------
  443.   alias mog_atelier_menu_initialize initialize
  444.   def initialize
  445.       $game_temp.pre_cache_atelier_menu if $game_temp.can_pre_cache_icon?
  446.       mog_atelier_menu_initialize
  447.   end
  448.  
  449. end
  450.  
  451. #==============================================================================
  452. # ■ Particles_Menu
  453. #==============================================================================
  454. class Particles_Menu < Sprite
  455.  
  456. #--------------------------------------------------------------------------
  457. # ● Initialize
  458. #--------------------------------------------------------------------------            
  459.   def initialize(viewport = nil)
  460.       super(viewport)
  461.       @speed_x = 0
  462.       @speed_y = 0
  463.       @speed_a = 0
  464.       self.bitmap = Cache.menu("Particles")
  465.       self.blend_type = 0
  466.       self.z = 1
  467.       reset_setting(true)
  468.   end  
  469.  
  470. #~  #--------------------------------------------------------------------------
  471. #~  # ● Reset Setting
  472. #~  #--------------------------------------------------------------------------               
  473. #~   def reset_setting(initial = false)
  474. #~       zoom = (50 + rand(100)) / 100.1
  475. #~       self.zoom_x = zoom
  476. #~       self.zoom_y = zoom
  477. #~       self.x = rand(WIDTH+32) - 160 #576
  478. #~       self.y = initial == true ? rand(480) : 512
  479. #~       self.opacity = 0
  480. #~       @speed_y = -(1 + rand(3))
  481. #~       @speed_x = (1 + rand(2))
  482. #~       @speed_a = (1 + rand(2))     
  483. #~   end
  484. #--------------------------------------------------------------------------
  485. # ● Reset Setting
  486. #--------------------------------------------------------------------------               
  487.   def reset_setting(initial = false)
  488.       self.zoom_x = rand(0) + 0.5
  489.       self.zoom_y = rand(0) + 0.5
  490.       self.x = rand(WIDTH)
  491.       self.y = rand(HEIGHT)
  492.       self.angle = rand(360)
  493.       self.opacity = 0
  494.       @speed_y = (1 + rand(4))
  495.       @speed_x = (1 + rand(3))
  496.       @speed_a = (0.5 + rand(0))     
  497.   end
  498. #--------------------------------------------------------------------------
  499. # ● Dispose
  500. #--------------------------------------------------------------------------               
  501.   def dispose
  502.       super
  503.       self.bitmap.dispose if self.bitmap != nil
  504.   end  
  505.  
  506. #~  #--------------------------------------------------------------------------
  507. #~  # ● Update
  508. #~  #--------------------------------------------------------------------------
  509. #~   def update
  510. #~       super
  511. #~       self.x += @speed_x
  512. #~       self.y += @speed_y
  513. #~       self.opacity += 5
  514. #~       reset_setting if can_reset_setting?
  515. #~   end  
  516. #~   
  517. #~  #--------------------------------------------------------------------------
  518. #~  # ● Can Reset Setting
  519. #~  #--------------------------------------------------------------------------                 
  520. #~   def can_reset_setting?
  521. #~       return true if self.y < -50
  522. #~       return true if self.x > WIDTH #576
  523. #~       return false
  524. #~   end  
  525.      #--------------------------------------------------------------------------
  526. # ● Update
  527. #--------------------------------------------------------------------------
  528. #我的修改:粒子更新方式(上升还是下落)
  529.   def update
  530.       super
  531.       self.x -= @speed_x
  532.       self.y += @speed_y
  533.       self.angle += @speed_a
  534.       self.opacity += 5
  535.       reset_setting if can_reset_setting?
  536.   end  
  537.  
  538. #--------------------------------------------------------------------------
  539. # ● Can Reset Setting
  540. #--------------------------------------------------------------------------                 
  541.   def can_reset_setting?
  542.       return true if self.y > HEIGHT
  543.       return true if self.x < 0
  544.       return false
  545.   end
  546. end
  547.  
  548.  
  549.  
  550.  
  551. #==============================================================================
  552. # ■ Window_Actor_Status_0
  553. #==============================================================================
  554. class Members_Windows_Status < Window_Selectable
  555.   attr_reader   :pending_index         
  556.  
  557.   #--------------------------------------------------------------------------
  558.   # ● Initialize
  559.   #--------------------------------------------------------------------------
  560.   def initialize(x = 0, y = 0)
  561.     super(x, y, window_width, window_height)
  562.     self.windowskin = Cache.menu("")
  563.     self.opacity = 0
  564.     self.contents_opacity = 0
  565.     self.visible = false
  566.     @input_lag = 0
  567.     @old_index = -1
  568.     @pending_index = -1
  569.     refresh
  570.   end
  571.  
  572.   #--------------------------------------------------------------------------
  573.   # ● Window Width
  574.   #--------------------------------------------------------------------------
  575.   def window_width
  576.       40
  577.   end
  578.  
  579.   #--------------------------------------------------------------------------
  580.   # ● Window Height
  581.   #--------------------------------------------------------------------------
  582.   def window_height
  583.       40
  584.   end
  585.  
  586.   #--------------------------------------------------------------------------
  587.   # ● Cursor Movable?
  588.   #--------------------------------------------------------------------------  
  589.   def cursor_movable?
  590.       active && open? && !@cursor_fix && !@cursor_all && item_max > 0 && @input_lag == 0
  591.   end  
  592.  
  593.   #--------------------------------------------------------------------------
  594.   # ● Item Max
  595.   #--------------------------------------------------------------------------
  596.   def item_max
  597.       $game_party.members.size
  598.   end
  599.  
  600.   #--------------------------------------------------------------------------
  601.   # ● Item Height
  602.   #--------------------------------------------------------------------------
  603.   def item_height
  604.     (height - standard_padding * 2) / 4
  605.   end
  606.  
  607.   #--------------------------------------------------------------------------
  608.   # ● Draw Item Background
  609.   #--------------------------------------------------------------------------
  610.   def draw_item_background(index)
  611.   end
  612.  
  613.   #--------------------------------------------------------------------------
  614.   # ● Pending Index
  615.   #--------------------------------------------------------------------------
  616.   def pending_index=(index)
  617.       last_pending_index = @pending_index
  618.       @pending_index = index
  619.   end
  620.  
  621.   #--------------------------------------------------------------------------
  622.   # ● Process OK
  623.   #--------------------------------------------------------------------------
  624.   def process_ok
  625.       $game_party.target_actor = $game_party.members[index] unless @cursor_all
  626.       call_ok_handler
  627.   end
  628.  
  629.   #--------------------------------------------------------------------------
  630.   # ● Select Last
  631.   #--------------------------------------------------------------------------
  632.   def select_last
  633.       select($game_party.target_actor.index || 0)
  634.   end
  635.  
  636.   #--------------------------------------------------------------------------
  637.   # ● Select For Item
  638.   #--------------------------------------------------------------------------
  639.   def select_for_item(item)
  640.       @cursor_fix = item.for_user?
  641.       @cursor_all = item.for_all?
  642.       if @cursor_fix
  643.          select($game_party.menu_actor.index)
  644.       elsif @cursor_all
  645.          select(0)
  646.       else
  647.           @index = @index < 0 ? 0 : @index
  648.       end
  649.   end
  650.  
  651.   #--------------------------------------------------------------------------
  652.   # ● Draw Item
  653.   #--------------------------------------------------------------------------  
  654.   def draw_item(index)
  655.   end
  656.  
  657.   #--------------------------------------------------------------------------
  658.   # ● Process Cursor Move 2
  659.   #--------------------------------------------------------------------------
  660.   def process_cursor_move2
  661.       return unless cursor_movable?
  662.       last_index = @index
  663.       cursor_down (Input.trigger?(:RIGHT))  if Input.repeat?(:RIGHT)
  664.       cursor_up   (Input.trigger?(:LEFT))    if Input.repeat?(:LEFT)
  665.       Sound.play_cursor if @index != last_index
  666.   end   
  667.  
  668.   #--------------------------------------------------------------------------
  669.   # ● Update
  670.   #--------------------------------------------------------------------------  
  671.   def update
  672.       super
  673.       @input_lag -= 1 if @input_lag > 0
  674.       if @old_index != @index
  675.          @old_index = @index
  676.          @input_lag = 5
  677.       end   
  678.   end
  679.  
  680. end
  681.  
  682. #==============================================================================
  683. # ■ Members Menu
  684. #==============================================================================
  685. class Members_Menu
  686.   include MOG_MEMBERS_LAYOUT
  687.  
  688.   attr_accessor :actor
  689.  
  690.   #--------------------------------------------------------------------------
  691.   # ● Initialize
  692.   #--------------------------------------------------------------------------
  693.   def initialize(actor,index)
  694.       @actor = actor
  695.       @index = index
  696.       @index_old = -1
  697.       @com_index = 0
  698.       @max_index = $game_party.members.size - 1      
  699.       @active = false
  700.       @active_old = false
  701.       @opac = 0
  702.       @opac_active = [0,0]
  703.       @par = []
  704.       @float = [0,0,0]
  705.       set_old_parameter
  706.       create_sprites
  707.       create_sprites_support if @index == 0
  708.   end
  709.  
  710.   #--------------------------------------------------------------------------
  711.   # ● Create Sprites
  712.   #--------------------------------------------------------------------------   
  713.   def create_sprites
  714.       @meter_image = $game_temp.pre_cache_actor_menu[6]
  715.       @meter_cw = @meter_image.width
  716.       @meter_ch = @meter_image.height / 2   
  717.       @parameter_number = $game_temp.pre_cache_actor_menu[2]
  718.       @parameter_cw = @parameter_number.width / 10
  719.       @parameter_ch = @parameter_number.height
  720.       @visible = false
  721.       create_layout
  722.       create_parameter
  723.       create_face
  724.       create_name
  725.       create_hp_meter
  726.       create_mp_meter
  727.       @next_pos = [-@layout.width - 64,0]
  728.       @now_index = [-@layout.width - 64,0,0]
  729.       @before_index = [-@layout.width - 64,0,0]
  730.       @next_index = [-@layout.width - 64,0,0]
  731.       set_position(-@layout.width - 64,0)
  732.       set_opacity(0)
  733.   end
  734.  
  735.   #--------------------------------------------------------------------------
  736.   # ● Create Sprites
  737.   #--------------------------------------------------------------------------     
  738.   def create_sprites_support
  739.       create_scope_all
  740.       create_arrow
  741.   end
  742.  
  743.   #--------------------------------------------------------------------------
  744.   # ● Create Scope All
  745.   #--------------------------------------------------------------------------      
  746.   def create_scope_all
  747.       @scope = Sprite.new
  748.       @scope.bitmap = $game_temp.pre_cache_actor_menu[4]
  749.       @scope_cw = @scope.bitmap.width
  750.       @org_pos_scope = [SCOPE_TEXT_POSITION[0],SCOPE_TEXT_POSITION[1],SCOPE_TEXT_POSITION[0] - @scope_cw]
  751.       @scope.x = @org_pos_scope[2]
  752.       @scope.y = @org_pos_scope[1]
  753.       @scope.z = 15
  754.   end
  755.  
  756.   #--------------------------------------------------------------------------
  757.   # ● Update Scope
  758.   #--------------------------------------------------------------------------         
  759.   def update_scope
  760.       if @active and all_targets
  761.          if @scope.x < @org_pos_scope[0]
  762.             @scope.x += 15
  763.             if @scope.x >= @org_pos_scope[0]
  764.                @scope.x = @org_pos_scope[0]
  765.             end   
  766.          end
  767.       else
  768.          if @scope.x > @org_pos_scope[2]         
  769.             @scope.x -= 15
  770.             if @scope.x <= @org_pos_scope[2]
  771.                @scope.x = @org_pos_scope[2]
  772.             end         
  773.           end
  774.       end
  775.   end
  776.  
  777.   #--------------------------------------------------------------------------
  778.   # ● Create Arrow
  779.   #--------------------------------------------------------------------------           
  780.   def create_arrow
  781.       @arrow_float = [0,0,0]
  782.       @arrow_np_1 = [0,0]
  783.       @arrow_np_2 = [0,0]
  784.       @arrow_image = $game_temp.pre_cache_actor_menu[5]
  785.       @arrow_image_cw = @arrow_image.width
  786.       @arrow_image_ch = @arrow_image.height# / 2
  787.       @arrow_1 = Sprite.new
  788.       @arrow_1.bitmap = Bitmap.new(@arrow_image_cw,@arrow_image_ch)
  789.       @arrow_cw = @arrow_1.bitmap.width
  790.       @org_pos_arrow_1 = [ARROW_1_POSITION[0],ARROW_1_POSITION[1]]
  791.       @arrow_1.x = @org_pos_arrow_1[0]
  792.       @arrow_1.y = @org_pos_arrow_1[1]
  793.       @arrow_1.z = 15
  794.       @arrow_1.opacity = 0
  795.       @arrow_2 = Sprite.new
  796.       @arrow_2.bitmap = Bitmap.new(@arrow_image_cw,@arrow_image_ch)
  797.       @arrow_2.ox = @arrow_2.bitmap.width / 2
  798.       @arrow_2.oy = @arrow_2.bitmap.height / 2
  799.       @arrow_2.angle = 180
  800.       ar_y = (MEMBERS_SPACE * 4) + ARROW_2_POSITION[1]
  801.       @org_pos_arrow_2 = [ARROW_2_POSITION[0] + @arrow_2.ox,ar_y]
  802.       @arrow_2.x = @org_pos_arrow_2[0]
  803.       @arrow_2.y = @org_pos_arrow_2[1]
  804.       @arrow_2.z = 15  
  805.       @arrow_2.opacity = 0
  806.       @arrow_time_1 = 0
  807.       @arrow_time_2 = 0
  808.       refresh_arrow(0,@arrow_1,0)
  809.       refresh_arrow(1,@arrow_2,0)
  810.   end
  811.  
  812.   #--------------------------------------------------------------------------
  813.   # ● Refresh_arrow 1
  814.   #--------------------------------------------------------------------------            
  815.   def refresh_arrow(arrow,sprite,type)
  816.       sprite.bitmap.clear
  817.       h = @arrow_image_ch * type
  818.       a_rect = Rect.new(0,h,@arrow_image_cw,@arrow_image_ch)
  819.       sprite.bitmap.blt(0,0,@arrow_image,a_rect)
  820.       @arrow_time_1 = 20 if arrow == 0
  821.       @arrow_time_2 = 20 if arrow ==1
  822.   end
  823.  
  824.   #--------------------------------------------------------------------------
  825.   # ● Update Arrow
  826.   #--------------------------------------------------------------------------            
  827.   def update_arrow
  828.     #  update_arrow_type
  829.       update_arrow_visible
  830.       update_arrow_float_animation
  831.   end
  832.  
  833.   #--------------------------------------------------------------------------
  834.   # ● Update Arrow Type
  835.   #--------------------------------------------------------------------------               
  836.   def update_arrow_type
  837.       if @arrow_time_1 > 0
  838.          @arrow_time_1 -= 1
  839.          refresh_arrow(0,@arrow_1,0) if @arrow_time_1 == 0
  840.       end   
  841.       if @arrow_time_2 > 0
  842.          @arrow_time_2 -= 1
  843.          refresh_arrow(1,@arrow_2,0) if @arrow_time_2 == 0
  844.       end         
  845.   end
  846.  
  847.   #--------------------------------------------------------------------------
  848.   # ● Refresh Arrow Type
  849.   #--------------------------------------------------------------------------                 
  850.   def refresh_arrow_type
  851.       return
  852.       if @index_old > @com_index
  853.          refresh_arrow(0,@arrow_1,1)
  854.       else  
  855.          refresh_arrow(1,@arrow_2,1)
  856.       end  
  857.   end  
  858.  
  859.   #--------------------------------------------------------------------------
  860.   # ● Update Arrow Visible
  861.   #--------------------------------------------------------------------------              
  862.   def update_arrow_visible
  863.       if can_arrow_visible?
  864.         @arrow_1.opacity += 15
  865.         @arrow_2.opacity += 15
  866.         @arrow_np_1 = [@org_pos_arrow_1[0],@org_pos_arrow_1[1]]
  867.         @arrow_np_2 = [@org_pos_arrow_2[0],@org_pos_arrow_2[1]]
  868.       else  
  869.         @arrow_1.opacity -= 10
  870.         @arrow_2.opacity -= 10
  871.         @arrow_np_1 = [-@arrow_cw,@org_pos[1]]
  872.         @arrow_np_2 = [-@arrow_cw + @arrow_2.ox,@org_pos[1] + @arrow_2.oy]        
  873.       end  
  874.  
  875.   end
  876.  
  877. #--------------------------------------------------------------------------
  878. # ● Update Slide Arrow
  879. #--------------------------------------------------------------------------                       
  880.   def update_slide_arrow(type,sprite,cp,np)
  881.       cp -= @arrow_float[1] if type == 1
  882.       sp = 2 + ((cp - np).abs / 20)
  883.       if cp > np
  884.          cp -= sp
  885.          cp = np if cp < np
  886.       elsif cp < np
  887.          cp += sp
  888.          cp = np if cp > np
  889.       end     
  890.       sprite.x = cp if type == 0
  891.       sprite.y = cp + @arrow_float[1] if type == 1
  892.   end      
  893.  
  894.   #--------------------------------------------------------------------------
  895.   # ● Can Arrow Visiblle?
  896.   #--------------------------------------------------------------------------               
  897.   def can_arrow_visible?
  898.       return false if !@active
  899.       return false if all_targets
  900.       return false if $game_party.members.size < 2
  901.       return  true
  902.   end
  903.  
  904.   #--------------------------------------------------------------------------
  905.   # ● Update Arrow Float Animation
  906.   #--------------------------------------------------------------------------               
  907.   def update_arrow_float_animation
  908.       @arrow_float[2] += 1
  909.       if @arrow_float[2] > 2
  910.          @arrow_float[2] = 0
  911.          @arrow_float[0] += 1
  912.          case @arrow_float[0]
  913.             when 1..11
  914.               @arrow_float[1] += 1
  915.             when 12..22
  916.               @arrow_float[1] -= 1
  917.             else  
  918.               @arrow_float[0] = 0
  919.               @arrow_float[1] = 0
  920.          end  
  921.       end
  922.     update_slide_arrow(0,@arrow_1,@arrow_1.x,@arrow_np_1[0])
  923.     update_slide_arrow(1,@arrow_1,@arrow_1.y,@arrow_np_1[1])
  924.     update_slide_arrow(0,@arrow_2,@arrow_2.x,@arrow_np_2[0])
  925.     update_slide_arrow(1,@arrow_2,@arrow_2.y,@arrow_np_2[1])   
  926.   end
  927.  
  928.   #--------------------------------------------------------------------------
  929.   # ● Create Scope All
  930.   #--------------------------------------------------------------------------      
  931.   def update_support
  932.       update_scope
  933.       update_arrow
  934.   end
  935.  
  936.   #--------------------------------------------------------------------------
  937.   # ● Set Old Parameter
  938.   #--------------------------------------------------------------------------  
  939.   def set_old_parameter
  940.       @par.clear
  941.       @par = [@actor.hp,@actor.mhp,@actor.mp,@actor.mmp,@actor.level]
  942.   end   
  943.  
  944.   #--------------------------------------------------------------------------
  945.   # ● Members Spate
  946.   #--------------------------------------------------------------------------   
  947.   def members_space
  948.       LAYOUT_POSITION[1] + (@index * MEMBERS_SPACE)
  949.   end  
  950.  
  951.   #--------------------------------------------------------------------------
  952.   # ● Dispose
  953.   #--------------------------------------------------------------------------  
  954.   def dispose
  955.       dispose_layout
  956.       dispose_parameter
  957.       dispose_face
  958.       dispose_name
  959.       dispose_hp_meter
  960.       dispose_mp_meter
  961.       dispose_support if @index == 0
  962.   end
  963.  
  964.   #--------------------------------------------------------------------------
  965.   # ● Dispose Support
  966.   #--------------------------------------------------------------------------   
  967.   def dispose_support
  968.       dispose_scope
  969.       dispose_arrow
  970.   end
  971.  
  972.   #--------------------------------------------------------------------------
  973.   # ● Dispose Layout
  974.   #--------------------------------------------------------------------------   
  975.   def dispose_layout
  976.       @layout.dispose
  977.   end
  978.  
  979.   #--------------------------------------------------------------------------
  980.   # ● Dispose Scope
  981.   #--------------------------------------------------------------------------         
  982.   def dispose_scope
  983.       @scope.dispose
  984.   end  
  985.  
  986.   #--------------------------------------------------------------------------
  987.   # ● Dispose_Arrow
  988.   #--------------------------------------------------------------------------            
  989.   def dispose_arrow
  990.       @arrow_1.bitmap.dispose
  991.       @arrow_1.dispose
  992.       @arrow_2.bitmap.dispose
  993.       @arrow_2.dispose
  994.   end
  995.  
  996.   #--------------------------------------------------------------------------
  997.   # ● Dispose Parameter
  998.   #--------------------------------------------------------------------------      
  999.   def dispose_parameter
  1000.       @parameter.bitmap.dispose
  1001.       @parameter.dispose
  1002.   end  
  1003.  
  1004.   #--------------------------------------------------------------------------
  1005.   # ● Dispose Face
  1006.   #--------------------------------------------------------------------------   
  1007.   def dispose_face
  1008.       @face.dispose
  1009.   end   
  1010.  
  1011.   #--------------------------------------------------------------------------
  1012.   # ● Dispose HP Meter
  1013.   #--------------------------------------------------------------------------      
  1014.   def dispose_hp_meter
  1015.       @hp_meter.bitmap.dispose
  1016.       @hp_meter.dispose
  1017.   end
  1018.  
  1019.   #--------------------------------------------------------------------------
  1020.   # ● Dispose MP Meter
  1021.   #--------------------------------------------------------------------------      
  1022.   def dispose_mp_meter
  1023.       @mp_meter.bitmap.dispose
  1024.       @mp_meter.dispose
  1025.   end  
  1026.  
  1027.   #--------------------------------------------------------------------------
  1028.   # ● Dispose Name
  1029.   #--------------------------------------------------------------------------        
  1030.   def dispose_name
  1031.       @name.bitmap.dispose
  1032.       @name.dispose
  1033.   end  
  1034.  
  1035.   #--------------------------------------------------------------------------
  1036.   # ● Create Layout
  1037.   #--------------------------------------------------------------------------
  1038.   def create_layout
  1039.       @layout = Sprite.new
  1040.       @layout.bitmap = Cache.menu("Actor_Layout_1")
  1041.       @org_pos = [LAYOUT_POSITION[0],LAYOUT_POSITION[1]]
  1042.       @layout.x = @org_pos[0]
  1043.       @layout.y = @org_pos[1]
  1044.       @layout.z = 10
  1045.       #@layout.opacity = 0
  1046.   end
  1047.  
  1048.   #--------------------------------------------------------------------------
  1049.   # ● Create Parameter
  1050.   #--------------------------------------------------------------------------
  1051.   def create_parameter
  1052.       @parameter = Sprite.new
  1053.       @parameter.bitmap = Bitmap.new(@layout.bitmap.width,@layout.bitmap.height)
  1054.       @org_pos_par = [@org_pos[0] + PAR_POSITION[0],
  1055.                       @org_pos[1] + PAR_POSITION[1]]
  1056.       @parameter.x = @org_pos_par[0]
  1057.       @parameter.y = @org_pos_par[1]
  1058.       @parameter.z = 12
  1059. #      @parameter.opacity = 0
  1060.       refresh_parameter
  1061.   end  
  1062.  
  1063.   #--------------------------------------------------------------------------
  1064.   # ● Create HP Meter
  1065.   #--------------------------------------------------------------------------  
  1066.   def create_hp_meter
  1067.       @hp_meter_old = [-1,-1]
  1068.       @hp_meter = Sprite.new
  1069.       @hp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  1070.       @org_pos_hp = [@org_pos[0] + HP_METER_POSITION[0],
  1071.                      @org_pos[1] + HP_METER_POSITION[1]]      
  1072.       @hp_meter.x = @org_pos_hp[0]
  1073.       @hp_meter.y = @org_pos_hp[1]
  1074.       @hp_meter.z = 11
  1075.   end  
  1076.  
  1077.   #--------------------------------------------------------------------------
  1078.   # ● Refresh HP Meter
  1079.   #--------------------------------------------------------------------------   
  1080.   def refresh_hp_meter
  1081.       @hp_meter_old[0] = @actor.hp
  1082.       @hp_meter_old[1] = @actor.mhp
  1083.       @hp_meter.bitmap.clear
  1084.       width_range = @meter_cw * @actor.hp / @actor.mhp
  1085.       m_rect = Rect.new(0,0,width_range,@meter_ch)
  1086.       @hp_meter.bitmap.blt(0,0,@meter_image,m_rect)
  1087.   end
  1088.  
  1089.   #--------------------------------------------------------------------------
  1090.   # ● Create MP Meter
  1091.   #--------------------------------------------------------------------------  
  1092.   def create_mp_meter
  1093.       @mp_meter_old = [-1,-1]
  1094.       @mp_meter = Sprite.new
  1095.       @mp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  1096.       @org_pos_mp = [@org_pos[0] + MP_METER_POSITION[0],
  1097.                      @org_pos[1] + MP_METER_POSITION[1]]      
  1098.       @mp_meter.x = @org_pos_mp[0]
  1099.       @mp_meter.y = @org_pos_mp[1]
  1100.       @mp_meter.z = 11
  1101.   end  
  1102.  
  1103.   #--------------------------------------------------------------------------
  1104.   # ● Refresh MP Meter
  1105.   #--------------------------------------------------------------------------   
  1106.   def refresh_mp_meter
  1107.       @mp_meter_old[0] = @actor.mp
  1108.       @mp_meter_old[1] = @actor.mmp
  1109.       @mp_meter.bitmap.clear
  1110.       width_range = @meter_cw * @actor.mp / @actor.mmp rescue nil
  1111.       width_range = 0 if width_range == nil
  1112.       m_rect = Rect.new(0,@meter_ch,width_range,@meter_ch)
  1113.       @mp_meter.bitmap.blt(0,0,@meter_image,m_rect)
  1114.   end  
  1115.  
  1116.   #--------------------------------------------------------------------------
  1117.   # ● Create Face
  1118.   #--------------------------------------------------------------------------   
  1119.   def refresh_parameter
  1120.       set_old_parameter   
  1121.       @parameter.bitmap.clear
  1122.  
  1123.       value = @actor.level
  1124.       x = 146+30
  1125.       y = 0
  1126.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1127.  
  1128.       value = @actor.hp
  1129.       x = 72
  1130.       y = 24
  1131.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1132.  
  1133.       value = @actor.mp
  1134.       x = 146
  1135.       y = 24
  1136.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1137.  
  1138.   end  
  1139.  
  1140.   #--------------------------------------------------------------------------
  1141.   # ● Refresh Number
  1142.   #--------------------------------------------------------------------------     
  1143.   def refresh_number(sprite,image,value,number_cw,number_ch,x,y)
  1144.       number = value.abs.to_s.split(//)
  1145.       x2 = -number_cw * number.size
  1146.       for i in 0..number.size - 1
  1147.           number_abs = number[i].to_i
  1148.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  1149.           sprite.bitmap.blt(x + x2 + (number_cw  *  i), y, image, nsrc_rect)        
  1150.       end      
  1151.  
  1152.   end
  1153.  
  1154.   #--------------------------------------------------------------------------
  1155.   # ● Create Face
  1156.   #--------------------------------------------------------------------------  
  1157.   def create_face
  1158.       @face = Sprite.new
  1159.       @org_pos_face = [@org_pos[0] + FACE_POSITION[0],
  1160.                        @org_pos[1] + FACE_POSITION[1]]
  1161.       @face.x = @org_pos_face[0]
  1162.       @face.y = @org_pos_face[1]
  1163.       @face.z = 11
  1164.       #@face.opacity = 0
  1165.       refresh_face
  1166.   end  
  1167.  
  1168.   #--------------------------------------------------------------------------
  1169.   # ● Refresh Face
  1170.   #--------------------------------------------------------------------------   
  1171.   def refresh_face
  1172.       face_name = "Face_B" + @actor.id.to_s
  1173.       @face.bitmap = Cache.menu(face_name.to_s) rescue nil
  1174.   end
  1175.  
  1176.   #--------------------------------------------------------------------------
  1177.   # ● Create Name
  1178.   #--------------------------------------------------------------------------   
  1179.   def create_name
  1180.       @name = Sprite.new
  1181.       @name.bitmap = Bitmap.new(140,32)
  1182.       @name.bitmap.font.size = FONT_SIZE
  1183.       @name.bitmap.font.bold = FONT_BOLD
  1184.       @name.bitmap.font.color = Color.new(255,255,0,255) #人物名字颜色
  1185.       @org_pos_name = [@org_pos[0] + NAME_POSITION[0],
  1186.                        @org_pos[1] + NAME_POSITION[1]]
  1187.       @name.x = @org_pos_name[0]
  1188.       @name.y = @org_pos_name[1]
  1189.       @name.z = 11
  1190.       refresh_name     
  1191.   end  
  1192.  
  1193.   #--------------------------------------------------------------------------
  1194.   # ● Refresh Name
  1195.   #--------------------------------------------------------------------------      
  1196.   def refresh_name
  1197.       @name.bitmap.clear
  1198.       @name.bitmap.draw_text(0,0,140,32,@actor.name.to_s,0)
  1199.   end  
  1200.  
  1201.   #--------------------------------------------------------------------------
  1202.   # ● Set Actor
  1203.   #--------------------------------------------------------------------------        
  1204.   def set_actor(actor)
  1205.       @actor = actor
  1206.   end
  1207.  
  1208.   #--------------------------------------------------------------------------
  1209.   # ● Can Refresh HP Meter
  1210.   #--------------------------------------------------------------------------         
  1211.   def can_refresh_hp_meter?
  1212.       return true if @hp_meter_old[0] != @actor.hp
  1213.       return true if @hp_meter_old[1] != @actor.mhp
  1214.       return false
  1215.   end
  1216.  
  1217.   #--------------------------------------------------------------------------
  1218.   # ● Can Refresh MP Meter
  1219.   #--------------------------------------------------------------------------         
  1220.   def can_refresh_mp_meter?
  1221.       return true if @mp_meter_old[0] != @actor.mp
  1222.       return true if @mp_meter_old[1] != @actor.mmp
  1223.       return false
  1224.   end  
  1225.  
  1226.   #--------------------------------------------------------------------------
  1227.   # ● Can Refresh Parameter
  1228.   #--------------------------------------------------------------------------
  1229.   def can_refresh_parameter?
  1230.       return true if @par[0] != @actor.hp
  1231.       return true if @par[1] != @actor.mhp
  1232.       return true if @par[2] != @actor.mp
  1233.       return true if @par[3] != @actor.mmp
  1234.       return true if @par[4] != @actor.level
  1235.       return false
  1236.   end   
  1237.  
  1238.   #--------------------------------------------------------------------------
  1239.   # ● Refresh_Visible
  1240.   #--------------------------------------------------------------------------   
  1241.   def refresh_visible
  1242.       if can_visible?
  1243.          set_visible(true)
  1244.       else  
  1245.          set_visible(false)
  1246.       end  
  1247.   end  
  1248.  
  1249.   #--------------------------------------------------------------------------
  1250.   # ● Set Index
  1251.   #--------------------------------------------------------------------------     
  1252.   def set_index
  1253.       @now_index[0] = @com_index
  1254.       @before_index[0] = @com_index - 1
  1255.       @next_index[0] = @com_index + 1
  1256.       @before_index[0] = @max_index if @before_index[0] < 0
  1257.       @next_index[0] = 0 if @next_index[0] > @max_index   
  1258.   end
  1259.  
  1260.   #--------------------------------------------------------------------------
  1261.   # ● Can Visible?
  1262.   #--------------------------------------------------------------------------     
  1263.   def can_visible?
  1264.       return true if @index == @now_index[0]
  1265.       return true if @index == @next_index[0]
  1266.       return true if @index == @before_index[0]
  1267.       return false
  1268.   end
  1269.  
  1270.   #--------------------------------------------------------------------------
  1271.   # ● Set Visible
  1272.   #--------------------------------------------------------------------------     
  1273.   def set_visible(value)
  1274.       @visible = value
  1275.       return
  1276.       @layout.visible = @visible
  1277.       @parameter.visible = @visible
  1278.       @hp_meter.visible = @visible
  1279.       @mp_meter.visible = @visible
  1280.       @face.visible = @visible
  1281.       @name.visible = @visible
  1282.   end
  1283.  
  1284.   #--------------------------------------------------------------------------
  1285.   # ● Update Position
  1286.   #--------------------------------------------------------------------------      
  1287.   def update_position
  1288.       update_slide(0,@layout,@layout.x,@next_pos[0] + @org_pos[0])
  1289.       update_slide(1,@layout,@layout.y,@next_pos[1] + @org_pos[1])
  1290.       update_slide(0,@parameter,@parameter.x,@next_pos[0] + @org_pos_par[0])
  1291.       update_slide(1,@parameter,@parameter.y,@next_pos[1] + @org_pos_par[1])
  1292.       update_slide(0,@hp_meter,@hp_meter.x,@next_pos[0] + @org_pos_hp[0])
  1293.       update_slide(1,@hp_meter,@hp_meter.y,@next_pos[1] + @org_pos_hp[1])  
  1294.       update_slide(0,@mp_meter,@mp_meter.x,@next_pos[0] + @org_pos_mp[0])
  1295.       update_slide(1,@mp_meter,@mp_meter.y,@next_pos[1] + @org_pos_mp[1])        
  1296.       update_slide(0,@face,@face.x,@next_pos[0] + @org_pos_face[0])
  1297.       update_slide(1,@face,@face.y,@next_pos[1] + @org_pos_face[1])        
  1298.       update_slide(0,@name,@name.x,@next_pos[0] + @org_pos_name[0])
  1299.       update_slide(1,@name,@name.y,@next_pos[1] + @org_pos_name[1])      
  1300.   end
  1301.  
  1302.   #--------------------------------------------------------------------------
  1303.   # ● Update Float
  1304.   #--------------------------------------------------------------------------         
  1305.   def update_float
  1306.       @float[2] += 1
  1307.       if @float[2] > 5
  1308.          @float[2] = 0
  1309.          @float[0] += 1
  1310.          case @float[0]         
  1311.               when 1..5
  1312.                   @float[1] -= 1  
  1313.               when 6..15
  1314.                   @float[1] += 1
  1315.               when 16..20
  1316.                   @float[1] -= 1
  1317.               else
  1318.                  @float = [0,0,0]
  1319.           end
  1320.        end
  1321.   end
  1322.  
  1323. #--------------------------------------------------------------------------
  1324. # ● Update Slide
  1325. #--------------------------------------------------------------------------                       
  1326.   def update_slide(type,sprite,cp,np)
  1327.       cp -= @float[1] if type == 1
  1328.       sp = 3 + ((cp - np).abs / 10)
  1329.       if cp > np
  1330.          cp -= sp
  1331.          cp = np if cp < np
  1332.       elsif cp < np
  1333.          cp += sp
  1334.          cp = np if cp > np
  1335.       end     
  1336.       sprite.x = cp if type == 0
  1337.       sprite.y = cp + @float[1] if type == 1
  1338.   end   
  1339.  
  1340.   #--------------------------------------------------------------------------
  1341.   # ● All Targets
  1342.   #--------------------------------------------------------------------------                        
  1343.   def all_targets
  1344.       return true if $game_temp.item_scope == 8
  1345.       return true if $game_temp.item_scope == 10
  1346.       return false
  1347.   end  
  1348.  
  1349.   #--------------------------------------------------------------------------
  1350.   # ● Update Opacity
  1351.   #--------------------------------------------------------------------------  
  1352.   def update_opacity
  1353.       if @visible
  1354.          if all_targets
  1355.             if @max_index == 0
  1356.                @next_pos = [0,0]
  1357.             else   
  1358.                if @index == @before_index[0]
  1359.                   @next_pos = [0,-MEMBERS_SPACE]
  1360.                elsif @index == @next_index[0]
  1361.                   @next_pos = [0,MEMBERS_SPACE]
  1362.                else  
  1363.                   @next_pos = [0,0]
  1364.                end      
  1365.             end            
  1366.             update_opacity_active
  1367.             update_float
  1368.          else  
  1369.              if ((@index == @before_index[0]) or (@index == @next_index[0])) and
  1370.                   @max_index != 0
  1371.                   opac_limit = 170
  1372.                   if @opac > opac_limit
  1373.                      @opac -= 10
  1374.                      @opac = opac_limit if @opac < opac_limit
  1375.                   elsif @opac < opac_limit
  1376.                      @opac += 10
  1377.                      @opac = opac_limit if @opac > opac_limit
  1378.                   end   
  1379.                   @float = [0,0,0]
  1380.              else  
  1381.                  update_opacity_active
  1382.                  update_float
  1383.              end  
  1384.          end   
  1385.       else
  1386.           @opac -= 10 if @opac > 0
  1387.           @opac = 0 if @opac < 0
  1388.           @float = [0,0,0]
  1389.       end
  1390.       set_opacity(@opac)
  1391.   end
  1392.  
  1393.   #--------------------------------------------------------------------------
  1394.   # ● Update Opacity Active
  1395.   #--------------------------------------------------------------------------   
  1396.   def update_opacity_active
  1397.       @opac_active[0] += 1
  1398.       case @opac_active[0]
  1399.          when 1..30
  1400.             @opac_active[1] +=  4
  1401.          when 31..60           
  1402.             @opac_active[1] -=  4
  1403.          else
  1404.            @opac_active[1] = 0
  1405.            @opac_active[0] = 0
  1406.       end
  1407.       @opac = 160 + @opac_active[1]
  1408.   end         
  1409.  
  1410.   #--------------------------------------------------------------------------
  1411.   # ● Set Opacity
  1412.   #--------------------------------------------------------------------------   
  1413.   def set_opacity(opac)
  1414.       @layout.opacity = opac
  1415.       @layout.opacity = opac
  1416.       @parameter.opacity = opac
  1417.       @parameter.opacity = opac
  1418.       @hp_meter.opacity = opac
  1419.       @hp_meter.opacity = opac
  1420.       @mp_meter.opacity = opac
  1421.       @mp_meter.opacity = opac
  1422.       @face.opacity = opac
  1423.       @face.opacity = opac
  1424.       @name.opacity = opac
  1425.       @name.opacity = opac
  1426.   end   
  1427.  
  1428.   #--------------------------------------------------------------------------
  1429.   # ● Refresh Index
  1430.   #--------------------------------------------------------------------------   
  1431.   def refresh_index
  1432.       refresh_arrow_type if @index == 0
  1433.       @index_old = @com_index
  1434.       set_index
  1435.       refresh_visible
  1436.       set_next_position
  1437.   end
  1438.  
  1439.   #--------------------------------------------------------------------------
  1440.   # ● Set Next Position
  1441.   #--------------------------------------------------------------------------      
  1442.   def set_next_position
  1443.       if @max_index == 0
  1444.          @next_pos = [0,0]
  1445.          return
  1446.       end  
  1447.       if @visible
  1448.       if @index == @before_index[0]
  1449.          @next_pos = [-32,-MEMBERS_SPACE]
  1450.          if @layout.opacity < 150
  1451.             set_position(@next_pos[0],-MEMBERS_SPACE * 2)
  1452.             set_opacity(0)
  1453.          end   
  1454.       elsif @index == @next_index[0]
  1455.          @next_pos = [-32,MEMBERS_SPACE]
  1456.          if @layout.opacity < 150  
  1457.             set_position(@next_pos[0],MEMBERS_SPACE * 2)
  1458.             set_opacity(0)
  1459.          end   
  1460.       else  
  1461.          @next_pos = [0,0]
  1462.       end   
  1463.       else
  1464.          @next_pos = [-64,0]
  1465.       end  
  1466.   end
  1467.  
  1468.   #--------------------------------------------------------------------------
  1469.   # ● Update Position
  1470.   #--------------------------------------------------------------------------      
  1471.   def set_position(pos_x,pos_y)
  1472.       @layout.x = @org_pos[0] + pos_x
  1473.       @layout.y = @org_pos[1] + pos_y
  1474.       @parameter.x = @org_pos_par[0] + pos_x
  1475.       @parameter.y = @org_pos_par[1] + pos_y
  1476.       @hp_meter.x = @org_pos_hp[0] + pos_x
  1477.       @hp_meter.y = @org_pos_hp[1] + pos_y
  1478.       @mp_meter.x = @org_pos_mp[0] + pos_x
  1479.       @mp_meter.y = @org_pos_mp[1] + pos_y
  1480.       @face.x = @org_pos_face[0] + pos_x
  1481.       @face.y = @org_pos_face[1] + pos_y
  1482.       @name.x = @org_pos_name[0] + pos_x
  1483.       @name.y = @org_pos_name[1] + pos_y
  1484.   end  
  1485.  
  1486.   #--------------------------------------------------------------------------
  1487.   # ● Refresh Active
  1488.   #--------------------------------------------------------------------------         
  1489.   def refresh_active
  1490.       @active_old = @active
  1491.       @visible = @active
  1492.       refresh_index
  1493.       if !@active
  1494.          @visible = @active
  1495.          @next_pos = [-@layout.width - 64,0]
  1496.       else   
  1497.          set_position(-@layout.width - 64,0)
  1498.       end   
  1499.   end
  1500.  
  1501.   #--------------------------------------------------------------------------
  1502.   # ● Update
  1503.   #--------------------------------------------------------------------------  
  1504.   def update(active,com_index)
  1505.       @active = active
  1506.       @com_index = com_index
  1507.       refresh_active if @active != @active_old
  1508.       update_opacity
  1509.       update_position
  1510.       update_support if @index == 0
  1511.       return if !@active
  1512.       refresh_index if @index_old != @com_index
  1513.       return if !@active or !@visible
  1514.       refresh_hp_meter if can_refresh_hp_meter?
  1515.       refresh_mp_meter if can_refresh_mp_meter?
  1516.       refresh_parameter if can_refresh_parameter?
  1517.   end
  1518.  
  1519.   #--------------------------------------------------------------------------
  1520.   # ● Current Actor
  1521.   #--------------------------------------------------------------------------   
  1522.   def current_actor
  1523.       return true if @com_index == @index
  1524.       return false
  1525.   end
  1526.  
  1527. end
  1528.  
  1529. #==============================================================================
  1530. # ■ Game_Temp
  1531. #==============================================================================
  1532. class Game_Temp
  1533.  
  1534.   #--------------------------------------------------------------------------
  1535.   # ● Execute Pre Cache Actor
  1536.   #--------------------------------------------------------------------------  
  1537.   def execute_pre_cache_actor
  1538.       @pre_cache_actor_menu = []
  1539.       @pre_cache_actor_menu.push(Cache.menu("Actor_Layout_1"))
  1540.       @pre_cache_actor_menu.push(Cache.menu("Actor_Layout_2"))      
  1541.       @pre_cache_actor_menu.push(Cache.menu("Actor_Number_1"))
  1542.       @pre_cache_actor_menu.push(Cache.menu("Actor_Number_2"))
  1543.       @pre_cache_actor_menu.push(Cache.menu("Actor_Scope_All"))
  1544.       @pre_cache_actor_menu.push(Cache.menu("Actor_Members_Arrow"))
  1545.       @pre_cache_actor_menu.push(Cache.menu("Actor_Meter"))
  1546.   end
  1547.  
  1548. end
  1549.  
  1550. #==============================================================================
  1551. # ■ Actor Menu Status
  1552. #==============================================================================
  1553. class Actor_Menu_Status
  1554.  
  1555.   include MOG_ACTOR_MENU_STATUS
  1556.  
  1557.   #--------------------------------------------------------------------------
  1558.   # ● Initialize
  1559.   #--------------------------------------------------------------------------
  1560.   def initialize(actor)
  1561.       @actor = actor
  1562.       @active = false
  1563.       set_old_parameter
  1564.       create_sprites
  1565.   end
  1566.  
  1567.   #--------------------------------------------------------------------------
  1568.   # ● Create Sprites
  1569.   #--------------------------------------------------------------------------  
  1570.   def create_sprites
  1571.       @parameter_number = $game_temp.pre_cache_actor_menu[3]
  1572.       @parameter_cw = @parameter_number.width / 10
  1573.       @parameter_ch = @parameter_number.height   
  1574.       create_layout
  1575.       create_face
  1576.       create_parameter
  1577.       create_name
  1578.       create_states  
  1579.   #    update(true,@actor)
  1580.   end
  1581.  
  1582.   #--------------------------------------------------------------------------
  1583.   # ● Dispose
  1584.   #--------------------------------------------------------------------------  
  1585.   def dispose
  1586.       dispose_layout
  1587.       dispose_face
  1588.       dispose_parameter
  1589.       dispose_name
  1590.       dispose_states
  1591.   end
  1592.  
  1593.   #--------------------------------------------------------------------------
  1594.   # ● Dispose Layout
  1595.   #--------------------------------------------------------------------------   
  1596.   def dispose_layout
  1597.       @layout.dispose
  1598.   end
  1599.  
  1600.   #--------------------------------------------------------------------------
  1601.   # ● Dispose Face
  1602.   #--------------------------------------------------------------------------   
  1603.   def dispose_face
  1604.       @face.bitmap.dispose if @face.bitmap != nil
  1605.       @face.dispose
  1606.   end  
  1607.  
  1608.   #--------------------------------------------------------------------------
  1609.   # ● Dispose Parameter
  1610.   #--------------------------------------------------------------------------      
  1611.   def dispose_parameter
  1612.       @parameter.bitmap.dispose
  1613.       @parameter.dispose
  1614.   end
  1615.  
  1616.   #--------------------------------------------------------------------------
  1617.   # ● Dispose Name
  1618.   #--------------------------------------------------------------------------        
  1619.   def dispose_name
  1620.       @name.bitmap.dispose
  1621.       @name.dispose
  1622.   end
  1623.  
  1624.   #--------------------------------------------------------------------------
  1625.   # ● Dispose States
  1626.   #--------------------------------------------------------------------------            
  1627.    def dispose_states
  1628.        return if @status == nil
  1629.        @status.bitmap.dispose
  1630.        @status.dispose
  1631.        if @actor_status != nil
  1632.           @actor_status.dispose
  1633.           @actor_status = nil
  1634.        end   
  1635.    end   
  1636.   #风宥雪
  1637.   #--------------------------------------------------------------------------
  1638.   # ● Set Old Parameter
  1639.   #--------------------------------------------------------------------------  
  1640.   def set_old_parameter
  1641.       @par = [] if @par == nil
  1642.       @par.clear
  1643.       @par = [@actor.hp,@actor.mhp,@actor.mp,@actor.mmp,@actor.atk,@actor.def,
  1644.               @actor.mat,@actor.mdf,@actor.agi,@actor.luk,@actor.level,@actor.tp]
  1645.   end   
  1646.  
  1647.   #--------------------------------------------------------------------------
  1648.   # ● Create Layout
  1649.   #--------------------------------------------------------------------------
  1650.   def create_layout
  1651.       @layout = Sprite.new
  1652.       @layout.bitmap = $game_temp.pre_cache_actor_menu[1]
  1653.       @org_pos = [LAYOUT_POSITION[0],LAYOUT_POSITION[1]]
  1654.       @layout.x = @org_pos[0] + 150
  1655.       @layout.y = @org_pos[1]
  1656.       @layout.z = 10
  1657.       @layout.opacity = 0
  1658.   end
  1659.  
  1660.   #--------------------------------------------------------------------------
  1661.   # ● Create Parameter
  1662.   #--------------------------------------------------------------------------
  1663.   def create_parameter
  1664.       @parameter = Sprite.new
  1665.       @parameter.bitmap = Bitmap.new(@layout.bitmap.width,@layout.bitmap.height)
  1666.       @org_pos_par = [@org_pos[0] + PAR_POSITION[0],
  1667.                       @org_pos[1] + PAR_POSITION[1]]
  1668.       @parameter.x = @org_pos_par[0] + 150
  1669.       @parameter.y = @org_pos_par[1]
  1670.       @parameter.z = 11
  1671.       @parameter.opacity = 0
  1672.       refresh_parameter
  1673.   end
  1674.  
  1675.   #--------------------------------------------------------------------------
  1676.   # ● Create Face
  1677.   #--------------------------------------------------------------------------  
  1678.   def create_face
  1679.       @face = Sprite.new
  1680.       @face.bitmap = Bitmap.new(96,96)
  1681.       @org_pos_face = [@org_pos[0] + FACE_POSITION[0],
  1682.                        @org_pos[1] + FACE_POSITION[1]]
  1683.       @face.x = @org_pos_face[0] + 150
  1684.       @face.y = @org_pos_face[1]
  1685.       @face.z = 11
  1686.       @face.opacity = 0
  1687.       refresh_face
  1688.   end
  1689.  
  1690.   #--------------------------------------------------------------------------
  1691.   # ● Create Name
  1692.   #--------------------------------------------------------------------------   
  1693.   def create_name
  1694.       @name = Sprite.new
  1695.       @name.bitmap = Bitmap.new(140,32)
  1696.       @name.bitmap.font.size = FONT_SIZE
  1697.       @name.bitmap.font.bold = FONT_BOLD
  1698.       @org_pos_name = [@org_pos[0] + NAME_POSITION[0],
  1699.                        @org_pos[1] + NAME_POSITION[1]]
  1700.       @name.x = @org_pos_name[0] + 150
  1701.       @name.y = @org_pos_name[1]
  1702.       @name.z = 11
  1703.       @name.opacity = 0
  1704.       refresh_name     
  1705.   end  
  1706.  
  1707.   #--------------------------------------------------------------------------
  1708.   # ● Create_States
  1709.   #--------------------------------------------------------------------------      
  1710.   def create_states
  1711.       @status_old = nil
  1712.       @status_flow = [-24,0]   
  1713.       @status = Sprite.new
  1714.       @status.bitmap = Bitmap.new(24,24)
  1715.       @org_pos_states = [@org_pos[0] + STATES_POSITION[0],
  1716.                          @org_pos[1] + STATES_POSITION[1]]      
  1717.       @status.x = @org_pos_states[0] + 150
  1718.       @status.y = @org_pos_states[1]
  1719.       @status.z = 11
  1720.   end      
  1721.  
  1722.   #--------------------------------------------------------------------------
  1723.   # * Refresh States
  1724.   #--------------------------------------------------------------------------        
  1725.   def refresh_states
  1726.       check_icon_image
  1727.       @status_old = @actor.states
  1728.       @status_flow = [0,0]
  1729.       @actor_status.dispose if @actor_status != nil
  1730.       @states_size = @actor.states.size > 0 ? (26 * @actor.states.size) : 24
  1731.       @actor_status = Bitmap.new(@states_size,24)
  1732.       index = 0
  1733.       for i in @actor.states
  1734.          rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
  1735.          @actor_status.blt(26 * index , 0, @icon_image, rect)
  1736.          index += 1
  1737.       end
  1738.   end   
  1739.  
  1740.   #--------------------------------------------------------------------------
  1741.   # * Flow_Status
  1742.   #--------------------------------------------------------------------------         
  1743.   def flow_states
  1744.       return if @actor_status == nil
  1745.       @status.bitmap.clear
  1746.       return if @actor.states.size == 0
  1747.       st_src_rect = Rect.new(@status_flow[0],0, 24,24)
  1748.       @status.bitmap.blt(0,0, @actor_status, st_src_rect)
  1749.       if STATES_SCROLLING_ANIMATION
  1750.          @status_flow[0] += 1
  1751.          @status_flow[0] = -24 if @status_flow[0] >= @states_size + 2
  1752.       else   
  1753.          @status_flow[1] += 1 unless @actor.states.size <= 1
  1754.          if @status_flow[1] > 30
  1755.             @status_flow[1] = 0
  1756.             @status_flow[0] += 26
  1757.             @status_flow[0] = 0 if @status_flow[0] >= (@states_size - 0)
  1758.          end   
  1759.      end   
  1760.   end        
  1761.  
  1762.   #--------------------------------------------------------------------------
  1763.   # * Check Icon Image
  1764.   #--------------------------------------------------------------------------         
  1765.   def check_icon_image
  1766.       if @icon_image == nil or @icon_image.disposed?
  1767.          @icon_image = Cache.system("Iconset")
  1768.       end   
  1769.   end   
  1770.  
  1771.   #--------------------------------------------------------------------------
  1772.   # ● Can Refresh Parameter
  1773.   #--------------------------------------------------------------------------
  1774.   def can_refresh_parameter?
  1775.       return false if !@active
  1776.       return true if @par[0] != @actor.hp
  1777.       return true if @par[1] != @actor.mhp
  1778.       return true if @par[2] != @actor.mp
  1779.       return true if @par[3] != @actor.mmp
  1780.       return true if @par[4] != @actor.atk
  1781.       return true if @par[5] != @actor.def
  1782.       return true if @par[6] != @actor.mat
  1783.       return true if @par[7] != @actor.mdf
  1784.       return true if @par[8] != @actor.agi
  1785.       return true if @par[9] != @actor.luk
  1786.       return true if @par[10] != @actor.level
  1787.       return true if @par[11] != @actor.tp
  1788.       return false
  1789.   end  
  1790.  
  1791.   #--------------------------------------------------------------------------
  1792.   # ● Refresh All
  1793.   #--------------------------------------------------------------------------  
  1794.   def refresh_all(actor)      
  1795.       @actor = actor
  1796.       refresh_parameter
  1797.       refresh_face
  1798.       refresh_name
  1799.   end  
  1800.  
  1801.   #--------------------------------------------------------------------------
  1802.   # ● Refresh Name
  1803.   #--------------------------------------------------------------------------      
  1804.   def refresh_name   
  1805.       @name.bitmap.clear
  1806.       @name.bitmap.draw_text(0,0,140,32,@actor.name.to_s,0)
  1807.   end
  1808.  
  1809.   #--------------------------------------------------------------------------
  1810.   # ● Create Face
  1811.   #--------------------------------------------------------------------------   
  1812.   def refresh_parameter
  1813.       set_old_parameter
  1814.       @parameter.bitmap.clear      
  1815.       value = @actor.level
  1816.       x = 67
  1817.       y = 24
  1818.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1819.  
  1820.       value = @actor.tp
  1821.       x = 140
  1822.       y = 24
  1823.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1824.  
  1825.       value = @actor.hp
  1826.       x = 70
  1827.       y = 46
  1828.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1829.  
  1830.       value = @actor.mhp
  1831.       x = 140
  1832.       y = 46
  1833.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1834.  
  1835.       value = @actor.mp
  1836.       x = 70
  1837.       y = 46 + 22 * 1
  1838.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1839.  
  1840.       value = @actor.mmp
  1841.       x = 140
  1842.       y = 46 + 22 * 1
  1843.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1844.  
  1845.       value = @actor.atk
  1846.       x = 70
  1847.       y = 46 + 22 * 2
  1848.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1849.  
  1850.       value = @actor.def
  1851.       x = 70
  1852.       y = 46 + 22 * 3
  1853.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1854.  
  1855.       value = @actor.agi
  1856.       x = 70
  1857.       y = 46 + 22 * 4
  1858.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1859.  
  1860.       value = @actor.mat
  1861.       x = 140
  1862.       y = 46 + 22 * 2
  1863.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1864.  
  1865.       value = @actor.mdf
  1866.       x = 140
  1867.       y = 46 + 22 * 3
  1868.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1869.  
  1870.       value = @actor.luk
  1871.       x = 140
  1872.       y = 46 + 22 * 4
  1873.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1874.   end
  1875.  
  1876.   #--------------------------------------------------------------------------
  1877.   # ● Refresh Number
  1878.   #--------------------------------------------------------------------------     
  1879.   def refresh_number(sprite,image,value,number_cw,number_ch,x,y)
  1880.       number = value.truncate.abs.to_s.split(//)
  1881.       x2 = -number_cw * number.size
  1882.       for i in 0..number.size - 1
  1883.           number_abs = number[i].to_i
  1884.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  1885.           sprite.bitmap.blt(x + x2 + (number_cw  *  i), y, image, nsrc_rect)        
  1886.       end      
  1887.   end
  1888.  
  1889.   #--------------------------------------------------------------------------
  1890.   # ● Refresh Face
  1891.   #--------------------------------------------------------------------------  
  1892.   def refresh_face
  1893.       #return
  1894.       @face.bitmap.clear
  1895.       face_image = Cache.face(@actor.face_name)
  1896.       arect = Rect.new(@actor.face_index  % 4 * 96, @actor.face_index / 4 * 96, 96, 96)
  1897.       @face.bitmap.blt(0,0, face_image, arect)
  1898.      # face_image.dispose
  1899.   end
  1900.  
  1901.   #--------------------------------------------------------------------------
  1902.   # ● Update Slide
  1903.   #--------------------------------------------------------------------------  
  1904.   def update_slide
  1905.       slide_speed = 10
  1906.       opac_speed = 23
  1907.       @slide_range = (@org_pos[0] + 150)
  1908.       if @active
  1909.          if @layout.x > @org_pos[0]
  1910.             @layout.x -= slide_speed
  1911.             @parameter.x -= slide_speed
  1912.             @face.x -= slide_speed
  1913.             @name.x -= slide_speed
  1914.             @status.x -= slide_speed
  1915.             @layout.opacity += opac_speed
  1916.             @parameter.opacity += opac_speed
  1917.             @face.opacity += opac_speed
  1918.             @name.opacity += opac_speed
  1919.             @status.opacity += opac_speed
  1920.             if @layout.x <= @org_pos[0]
  1921.                @layout.x = @org_pos[0]
  1922.                @parameter.x = @org_pos_par[0]
  1923.                @face.x = @org_pos_face[0]
  1924.                @name.x = @org_pos_name[0]
  1925.                @status.x = @org_pos_states[0]
  1926.                @layout.opacity = 255
  1927.                @parameter.opacity = 255
  1928.                @face.opacity = 255
  1929.                @name.opacity = 255  
  1930.                @status.opacity = 255
  1931.             end  
  1932.          end   
  1933.       else
  1934.          if @layout.x <  @slide_range
  1935.             @layout.x += slide_speed
  1936.             @parameter.x += slide_speed
  1937.             @face.x += slide_speed
  1938.             @name.x += slide_speed
  1939.             @status.x += slide_speed
  1940.             @layout.opacity -= opac_speed
  1941.             @parameter.opacity -= opac_speed
  1942.             @face.opacity -= opac_speed
  1943.             @name.opacity -= opac_speed
  1944.             @status.opacity -= opac_speed
  1945.             if @layout.x >=  @slide_range
  1946.                @layout.x =  @slide_range
  1947.                @parameter.x = @org_pos_par[0] + 150
  1948.                @face.x = @org_pos_face[0] + 150
  1949.                @name.x = @org_pos_name[0] + 150
  1950.                @status.x = @org_pos_states[0] + 150
  1951.                @layout.opacity = 0
  1952.                @parameter.opacity = 0
  1953.                @face.opacity = 0
  1954.                @name.opacity = 0   
  1955.                @status.opacity = 0   
  1956.             end  
  1957.          end   
  1958.  
  1959.       end  
  1960.   end
  1961.  
  1962.   #--------------------------------------------------------------------------
  1963.   # ● Update
  1964.   #--------------------------------------------------------------------------
  1965.   def update(active,actor)
  1966.       @active = active
  1967.       update_slide
  1968.       return if !@active
  1969.       refresh_all(actor) if actor != @actor
  1970.       refresh_parameter if can_refresh_parameter?
  1971.       refresh_states if @status_old != @actor.states      
  1972.       flow_states
  1973.   end      
  1974.  
  1975. end
  1976.  
  1977.  
  1978.  
  1979. #==============================================================================
  1980. # ■ Game_Temp
  1981. #==============================================================================
  1982. class Game_Temp
  1983.  
  1984.   #--------------------------------------------------------------------------
  1985.   # ● Execute Pre Cache Main Menu
  1986.   #--------------------------------------------------------------------------   
  1987.   def execute_pre_cache_main_menu
  1988.       @pre_cache_main_menu = []
  1989.       @pre_cache_main_menu.push(Cache.menu_main("Background"))
  1990.       @pre_cache_main_menu.push(Cache.menu_main("Layout"))
  1991.       @pre_cache_main_menu.push(Cache.menu_main("Time_Number"))
  1992.       @pre_cache_main_menu.push(Cache.menu_main("Gold_Number"))
  1993.       @pre_cache_main_menu.push(Cache.menu_main("Members_Layout"))
  1994.       @pre_cache_main_menu.push(Cache.menu_main("Members_Arrow"))
  1995.       @pre_cache_main_menu.push(Cache.menu_main("Par_Number_1"))
  1996.       @pre_cache_main_menu.push(Cache.menu_main("Par_Number_2"))
  1997.       @pre_cache_main_menu.push(Cache.menu_main("Par_Meter"))
  1998.       @pre_cache_main_menu.push(Cache.menu_main("Par_Layout"))
  1999.   end   
  2000.  
  2001. end
  2002.  
  2003. #==============================================================================
  2004. # ■ Scene_Menu
  2005. #==============================================================================
  2006. class Scene_Menu
  2007.   include MOG_MENU
  2008.   include MOG_MENU_BASE
  2009.  
  2010.   #--------------------------------------------------------------------------
  2011.   # ● Main
  2012.   #--------------------------------------------------------------------------        
  2013.   def main
  2014.       execute_setup
  2015.       execute_loop
  2016.       execute_dispose
  2017.   end  
  2018.  
  2019.   #--------------------------------------------------------------------------
  2020.   # ● Execute Setup
  2021.   #--------------------------------------------------------------------------        
  2022.   def execute_setup
  2023.       $game_temp.execute_pre_cache_icon if $game_temp.can_pre_cache_icon?
  2024.       @phase = 0
  2025.       @members_windows_active = false
  2026.       @members_index = 0
  2027.       create_sprites
  2028.   end
  2029.  
  2030.   #--------------------------------------------------------------------------
  2031.   # ● Execute Lopp
  2032.   #--------------------------------------------------------------------------        
  2033.   def execute_loop
  2034.       Graphics.transition(10)
  2035.       loop do
  2036.          Input.update
  2037.          update
  2038.          Graphics.update
  2039.          break if SceneManager.scene != self
  2040.       end
  2041.   end  
  2042.  
  2043. end
  2044.  
  2045. #==============================================================================
  2046. # ■ Face Members
  2047. #==============================================================================
  2048. class Face_Members_Sprite < Sprite
  2049.   include MOG_MENU
  2050.   attr_accessor :index
  2051.   attr_accessor :active
  2052.   attr_accessor :actor_id
  2053.  
  2054. #--------------------------------------------------------------------------
  2055. # ● Initialize
  2056. #--------------------------------------------------------------------------                  
  2057.   def initialize(viewport = nil, index, actor_id)
  2058.       super(viewport)
  2059.       @active = false
  2060.       @index = index
  2061.       @actor_id = actor_id
  2062.       @active = false
  2063.       self.bitmap = Cache.menu("Face" + @actor_id.to_s)
  2064.       self.z = 12
  2065.       self.ox = self.bitmap.width / 2
  2066.       self.oy = self.bitmap.height / 2
  2067.       members_size = $game_party.members.size - 1
  2068.       members_size = 3 if members_size > 3
  2069.       space_base = (MEMBERS_FACE_SPACE * @index)
  2070.       space = space_base - ((ACTOR_SPACE * members_size ) / 2) +  MEMBERS_FACE_POSITION[0]
  2071.       @org_pos =  [space + self.ox , self.oy   ]
  2072.       @ny = 0
  2073.       @zoom_duration = [0,0,false]
  2074.       self.x = @org_pos[0]
  2075.       self.y = @org_pos[1]
  2076.   end  
  2077.  
  2078. #--------------------------------------------------------------------------
  2079. # ● Dispose
  2080. #--------------------------------------------------------------------------                     
  2081.   def dispose
  2082.       super
  2083.       self.bitmap.dispose
  2084.   end  
  2085.  
  2086. #--------------------------------------------------------------------------
  2087. # ● Update
  2088. #--------------------------------------------------------------------------                     
  2089.   def update_command(index, ny)
  2090.       @active = index == @index ? true : false
  2091.       @ny = ny
  2092.       update_slide(index)
  2093.       update_opacity
  2094.       update_zoom   
  2095.   end  
  2096.  
  2097. #--------------------------------------------------------------------------
  2098. # ● Update Opacity
  2099. #--------------------------------------------------------------------------                       
  2100.   def update_opacity
  2101.       if @active
  2102.          self.opacity += 12
  2103.       else  
  2104.          self.opacity -= 6 if self.opacity > 120
  2105.       end  
  2106.   end  
  2107.  
  2108. #--------------------------------------------------------------------------
  2109. # ● Update Zoom
  2110. #--------------------------------------------------------------------------                       
  2111.   def update_zoom
  2112.       if @active
  2113.          if !@zoom_duration[2]
  2114.             update_zoom_out
  2115.             @zoom_duration = [0,0,true] if self.zoom_x == 1.00  
  2116.          else  
  2117.             update_zoom_effect
  2118.          end
  2119.       else
  2120.          @zoom_duration[2] = false   
  2121.          update_zoom_in
  2122.       end  
  2123.   end   
  2124.  
  2125. #--------------------------------------------------------------------------
  2126. # ● Update Zoom Out
  2127. #--------------------------------------------------------------------------                        
  2128.   def update_zoom_out
  2129.       return if self.zoom_x == 1.00
  2130.       self.zoom_x += 0.03
  2131.       self.zoom_y += 0.03
  2132.       if self.zoom_x >= 1.00
  2133.             self.zoom_x = 1.00
  2134.             self.zoom_y = 1.00
  2135.       end   
  2136.    end   
  2137.  
  2138. #--------------------------------------------------------------------------
  2139. # ● Update Zoom In
  2140. #--------------------------------------------------------------------------                           
  2141.   def update_zoom_in
  2142.       return if self.zoom_x == 0.80
  2143.       self.zoom_x -= 0.03
  2144.       self.zoom_y -= 0.03
  2145.       if self.zoom_x <= 0.80
  2146.          self.zoom_x = 0.80
  2147.          self.zoom_y = 0.80
  2148.       end   
  2149.   end      
  2150.  
  2151. #--------------------------------------------------------------------------
  2152. # ● Update Zoom_effect
  2153. #--------------------------------------------------------------------------                        
  2154. def update_zoom_effect
  2155.      @zoom_duration[0] += 1
  2156.      return if @zoom_duration[0] < 1
  2157.      @zoom_duration[0] = 0
  2158.      @zoom_duration[1] += 1
  2159.      case @zoom_duration[1]
  2160.           when 1..30
  2161.              self.zoom_x -= 0.005
  2162.              self.zoom_y -= 0.005                 
  2163.           when 31..60
  2164.              self.zoom_x += 0.005
  2165.              self.zoom_y += 0.005           
  2166.           when 61..999  
  2167.           @zoom_duration[1] = 0
  2168.           self.zoom_x = 1.00
  2169.           self.zoom_y = 1.00
  2170.      end
  2171. end  
  2172.  
  2173. #--------------------------------------------------------------------------
  2174. # ● Update Slide
  2175. #--------------------------------------------------------------------------                       
  2176.   def update_slide(index)
  2177.       np = @org_pos[0] - (index * MEMBERS_FACE_SPACE) + @ny
  2178.       cp = self.x
  2179.       sp = 5 + ((cp - np).abs / 5)
  2180.       if cp > np
  2181.          cp -= sp
  2182.          cp = np if cp < np
  2183.       elsif cp < np
  2184.          cp += sp
  2185.          cp = np if cp > np
  2186.       end     
  2187.       self.x = cp      
  2188.   end  
  2189.  
  2190. #--------------------------------------------------------------------------
  2191. # ● Active
  2192. #--------------------------------------------------------------------------                        
  2193.   def active(value)
  2194.       @active = value
  2195.   end   
  2196.  
  2197. end
  2198.  
  2199. #==============================================================================
  2200. # ■ Members Arrow Sprite
  2201. #==============================================================================
  2202. class Members_Arrow_Sprite
  2203.    include MOG_MENU
  2204.    attr_accessor :active
  2205.  
  2206. #--------------------------------------------------------------------------
  2207. # ● Initialize
  2208. #--------------------------------------------------------------------------
  2209.   def initialize
  2210.       @active = false
  2211.       create_members_layout
  2212.       create_arrows
  2213.   end
  2214.  
  2215. #--------------------------------------------------------------------------
  2216. # ● Create Members Layout
  2217. #--------------------------------------------------------------------------  
  2218.   def create_members_layout
  2219.       @layout_members = Sprite.new
  2220.       @layout_members.bitmap = $game_temp.pre_cache_main_menu[4]
  2221.       @layout_members.z = 13
  2222.       @layout_members_pos = [MEMBERS_ARROW_LAYOUT_POSITION[0], MEMBERS_ARROW_LAYOUT_POSITION[1]]
  2223.       @layout_members.x = @layout_members_pos[0]
  2224.       @layout_members.y = @layout_members_pos[1]
  2225.       @layout_members.opacity = 0
  2226.   end
  2227.  
  2228. #--------------------------------------------------------------------------
  2229. # ● Create Arrows
  2230. #--------------------------------------------------------------------------  
  2231.   def create_arrows
  2232.       @arrow_animation_duration = [0,0]
  2233.       @arrow_1 = Sprite.new
  2234.       @arrow_1.bitmap = $game_temp.pre_cache_main_menu[5]
  2235.       @arrow_1.z = 13
  2236.       @arrow1_pos = [MEMBERS_ARROW_1_POSITION[0], MEMBERS_ARROW_1_POSITION[1]]
  2237.       @arrow_1.x = @arrow1_pos[0]
  2238.       @arrow_1.y = @arrow1_pos[1]
  2239.       @arrow_1.opacity = 0
  2240.       @arrow_2 = Sprite.new
  2241.       @arrow_2.bitmap = $game_temp.pre_cache_main_menu[5]
  2242.       @arrow_2.z = 13
  2243.       @arrow_2.mirror = true
  2244.       @arrow2_pos = [MEMBERS_ARROW_2_POSITION[0], MEMBERS_ARROW_2_POSITION[1]]
  2245.       @arrow_2.x = @arrow2_pos[0]
  2246.       @arrow_2.y = @arrow2_pos[1]
  2247.       @arrow_2.opacity = 0
  2248.       @nx = 0
  2249.       @nx2 = 0
  2250.   end  
  2251.  
  2252. #--------------------------------------------------------------------------
  2253. # ● Dispose
  2254. #--------------------------------------------------------------------------                              
  2255.   def dispose
  2256.       dispose_members_layout
  2257.       dispose_arrows
  2258.   end
  2259.  
  2260. #--------------------------------------------------------------------------
  2261. # ● Dispose Arrows
  2262. #--------------------------------------------------------------------------                                
  2263. def dispose_arrows
  2264.      return if @arrow_1 == nil
  2265.      @arrow_1.dispose
  2266.      @arrow_2.dispose
  2267.      @arrow_1 = nil
  2268. end  
  2269.  
  2270. #--------------------------------------------------------------------------
  2271. # ● Dispose Members Layout
  2272. #--------------------------------------------------------------------------   
  2273.   def dispose_members_layout
  2274.       return if @layout_members == nil
  2275.       @layout_members.dispose
  2276.       @layout_members = nil
  2277.   end
  2278.  
  2279. #--------------------------------------------------------------------------
  2280. # ● Update
  2281. #--------------------------------------------------------------------------                              
  2282.   def update
  2283.       update_arrow_animation
  2284.       update_position
  2285.       @layout_members.opacity += 15
  2286.       @arrow_1.opacity += 15
  2287.       @arrow_2.opacity += 15
  2288.   end  
  2289.  
  2290. #--------------------------------------------------------------------------
  2291. # ● Update Position
  2292. #--------------------------------------------------------------------------                                
  2293.   def update_position
  2294.       @arrow_1.x = @arrow1_pos[0] + @nx + @nx2
  2295.       @arrow_2.x = @arrow2_pos[0] + @nx - @nx2   
  2296.       @layout_members.x = @layout_members_pos[0] + @nx
  2297.   end
  2298.  
  2299. #--------------------------------------------------------------------------
  2300. # ● Update Arrow Animation
  2301. #--------------------------------------------------------------------------                                
  2302.   def update_arrow_animation
  2303.       @arrow_animation_duration[0] += 1
  2304.       return if @arrow_animation_duration[0] < 2
  2305.       @arrow_animation_duration[0] = 0
  2306.       @arrow_animation_duration[1] += 1
  2307.       case @arrow_animation_duration[1]
  2308.          when 1..20
  2309.            @nx2 -= 1
  2310.          when 21..40
  2311.            @nx2 += 1
  2312.          when 41..999  
  2313.            @nx2 = 0
  2314.            @arrow_animation_duration[1] = 0            
  2315.       end
  2316.   end
  2317.  
  2318. #--------------------------------------------------------------------------
  2319. # ● Active
  2320. #--------------------------------------------------------------------------                        
  2321.   def nx(value)
  2322.       @nx = value
  2323.   end   
  2324.  
  2325. end
  2326.  
  2327. #==============================================================================
  2328. # ■ Command Menu Sprite
  2329. #==============================================================================
  2330. class Command_Menu_Sprite < Sprite
  2331.   include MOG_MENU
  2332.   attr_accessor :index
  2333.  
  2334. #--------------------------------------------------------------------------
  2335. # ● Initialize
  2336. #--------------------------------------------------------------------------                  
  2337.   def initialize(viewport = nil,index,command_name)
  2338.       super(viewport)
  2339.       @index = index
  2340.       @command_name = command_name
  2341.       self.bitmap = Cache.menu_main("CM_" + @command_name.to_s)
  2342.       @cw = self.bitmap.width
  2343.       @ch = self.bitmap.height      
  2344.       cw1 = self.bitmap.height / 2
  2345.       cw2 = (self.bitmap.width + COMMAND_SPACE) * index
  2346.       self.ox = self.bitmap.width / 2
  2347.       self.oy = self.bitmap.height / 2
  2348.       @org_pos = [COMMAND_POSITION[0] + cw2 + self.ox, COMMAND_POSITION[1] + self.oy]
  2349.       @slide_max = @org_pos[1] + cw1
  2350.       @zoom_duration = [0,0,false]
  2351.       @zoom_limit = [1.00, 1.20]
  2352.       self.x = -@cw
  2353.       self.y = -@ch
  2354.       self.z = 10
  2355.       @active = false
  2356.       @visible_old = true
  2357.       @np = [-@cw,-@ch]
  2358.       @sprite_name = Sprite.new
  2359.       @sprite_name.bitmap = Bitmap.new(100,32)
  2360.       @sprite_name.bitmap.font.bold = true
  2361.       @sprite_name.bitmap.font.color = Color.new(255,0,255)
  2362.       @sprite_name.bitmap.draw_text(0,0,100,32,@command_name.to_s,0)
  2363.       @sprite_name.z = 11
  2364.       @np_name = [-@cw,-@ch]
  2365.       @cw_name_pos = [@cw - self.ox + 4, -self.oy + 4]
  2366.   end  
  2367.  
  2368. #--------------------------------------------------------------------------
  2369. # ● Dispose
  2370. #--------------------------------------------------------------------------                     
  2371.   def dispose_command
  2372.       self.bitmap.dispose
  2373.       @sprite_name.bitmap.dispose
  2374.       @sprite_name.dispose
  2375.   end  
  2376.  
  2377. #--------------------------------------------------------------------------
  2378. # ● Update
  2379. #--------------------------------------------------------------------------                     
  2380.   def update_command(index, visible)
  2381.       @active = index == @index ? true : false
  2382.       refresh_active(visible) if @visible_old != visible
  2383.       update_position
  2384.       if !visible
  2385.           if @active
  2386.              self.opacity += 15
  2387.           else
  2388.              self.opacity -= 15
  2389.           end   
  2390.           return
  2391.       end  
  2392.       update_zoom
  2393.       update_opacity
  2394.   end   
  2395.  
  2396. #--------------------------------------------------------------------------
  2397. # ● Update Slide
  2398. #--------------------------------------------------------------------------                       
  2399.   def update_slide(type,cp,np)
  2400.       sp = 2 + ((cp - np).abs / 15)
  2401.       if cp > np
  2402.          cp -= sp
  2403.          cp = np if cp < np
  2404.       elsif cp < np
  2405.          cp += sp
  2406.          cp = np if cp > np
  2407.       end     
  2408.       self.x = cp if type == 0
  2409.       self.y = cp if type == 1
  2410.       @sprite_name.x = cp if type == 2
  2411.       @sprite_name.y = cp if type == 3
  2412.   end
  2413.  
  2414. #--------------------------------------------------------------------------
  2415. # ● Update Position
  2416. #--------------------------------------------------------------------------  
  2417.   def update_position
  2418.       unless !@visible_old
  2419.       if @active
  2420.          @np[0] = @org_pos[0]
  2421.          @np[1] = @slide_max
  2422.       else
  2423.          @np[0] = @org_pos[0]
  2424.          @np[1] = @org_pos[1]
  2425.       end  
  2426.       end
  2427.       update_slide(0,self.x,@np[0])
  2428.       update_slide(1,self.y,@np[1])
  2429.       update_sprite_name_position
  2430.   end      
  2431.  
  2432. #--------------------------------------------------------------------------
  2433. # ● Update Sprite Name Position
  2434. #--------------------------------------------------------------------------  
  2435. def update_sprite_name_position
  2436.       if (@active and !@visible_old) or !@active
  2437.          @np_name[0] = self.x + @cw_name_pos[0] + COMMAND_NAME_POSITION[0]
  2438.          @np_name[1] = self.y + @cw_name_pos[1] + COMMAND_NAME_POSITION[1]
  2439.       else
  2440.          @np_name[0] = COMMAND_NAME_POSITION_2[0]
  2441.          @np_name[1] = COMMAND_NAME_POSITION_2[1]
  2442.       end
  2443.       update_slide(2,@sprite_name.x,@np_name[0])
  2444.       update_slide(3,@sprite_name.y,@np_name[1])      
  2445.       @sprite_name.visible = @active ? true : false
  2446.   end     
  2447.  
  2448.  
  2449. #--------------------------------------------------------------------------
  2450. # ● Refresh Active
  2451. #--------------------------------------------------------------------------                       
  2452.   def refresh_active(visible)
  2453.       if @active and !visible
  2454.          @np[0] = COMMAND_POSITION_2[0] + (@cw / 2)
  2455.          @np[1] = COMMAND_POSITION_2[1]  
  2456.          self.zoom_x = @zoom_limit[0]
  2457.          self.zoom_y = @zoom_limit[0]
  2458.       else
  2459.          @np[0] = @org_pos[0]
  2460.          @np[1] = @org_pos[1]     
  2461.       end
  2462.       @visible_old = visible
  2463.   end
  2464.  
  2465. #--------------------------------------------------------------------------
  2466. # ● Update Opacity
  2467. #--------------------------------------------------------------------------  
  2468.   def update_opacity
  2469.       if @active
  2470.          self.opacity += 15
  2471.       else
  2472.          self.opacity -= 15 if self.opacity > 160
  2473.          if self.opacity < 160
  2474.             self.opacity += 15
  2475.             self.opacity = 160 if self.opacity > 160
  2476.          end   
  2477.       end   
  2478.   end  
  2479.  
  2480. #--------------------------------------------------------------------------
  2481. # ● Update Zoom
  2482. #--------------------------------------------------------------------------                       
  2483.   def update_zoom
  2484.       if @active
  2485.          if !@zoom_duration[2]
  2486.             update_zoom_out
  2487.             @zoom_duration = [0,0,true] if self.zoom_x == @zoom_limit[1]
  2488.          else  
  2489.             update_zoom_effect
  2490.          end
  2491.       else
  2492.          @zoom_duration[2] = false   
  2493.          update_zoom_in
  2494.       end  
  2495.   end   
  2496.  
  2497. #--------------------------------------------------------------------------
  2498. # ● Update Zoom Out
  2499. #--------------------------------------------------------------------------                        
  2500.   def update_zoom_out
  2501.       return if self.zoom_x == @zoom_limit[1]
  2502.       self.zoom_x += 0.03
  2503.       self.zoom_y += 0.03
  2504.       if self.zoom_x >= @zoom_limit[1]
  2505.             self.zoom_x = @zoom_limit[1]
  2506.             self.zoom_y = @zoom_limit[1]
  2507.       end   
  2508.    end   
  2509.  
  2510. #--------------------------------------------------------------------------
  2511. # ● Update Zoom In
  2512. #--------------------------------------------------------------------------                           
  2513.   def update_zoom_in
  2514.       return if self.zoom_x == @zoom_limit[0]
  2515.       self.zoom_x -= 0.03
  2516.       self.zoom_y -= 0.03
  2517.       if self.zoom_x <= @zoom_limit[0]
  2518.          self.zoom_x = @zoom_limit[0]
  2519.          self.zoom_y = @zoom_limit[0]
  2520.       end   
  2521.   end      
  2522.  
  2523. #--------------------------------------------------------------------------
  2524. # ● Update Zoom_effect
  2525. #--------------------------------------------------------------------------                        
  2526. def update_zoom_effect
  2527.      @zoom_duration[0] += 1
  2528.      return if @zoom_duration[0] < 1
  2529.      @zoom_duration[0] = 0
  2530.      @zoom_duration[1] += 1
  2531.      case @zoom_duration[1]
  2532.           when 1..30
  2533.              self.zoom_x -= 0.005
  2534.              self.zoom_y -= 0.005                 
  2535.           when 31..60
  2536.              self.zoom_x += 0.005
  2537.              self.zoom_y += 0.005           
  2538.           when 61..999  
  2539.           @zoom_duration[1] = 0
  2540.           self.zoom_x = @zoom_limit[1]
  2541.           self.zoom_y = @zoom_limit[1]
  2542.      end
  2543. end   
  2544.  
  2545. end
  2546.  
  2547. #==============================================================================
  2548. # ■ Actor Menu Pictures
  2549. #==============================================================================
  2550. class Actor_Menu_Pictures < Sprite
  2551.   include MOG_MENU
  2552.   attr_accessor :index
  2553.  
  2554. #--------------------------------------------------------------------------
  2555. # ● Initialize
  2556. #--------------------------------------------------------------------------                  
  2557.   def initialize(viewport = nil,index,actor_id)
  2558.       super(viewport)
  2559.       @index = index
  2560.       @actor_id = actor_id
  2561.       self.bitmap = Cache.menu("Actor" + @actor_id.to_s)
  2562.       self.z = 2
  2563.       set_position
  2564.       @slide_max = @org_pos[0] + 24
  2565.       auto_y = Graphics.height - self.bitmap.height
  2566.       self.ox = self.bitmap.width / 2
  2567.       self.x = @org_pos[0] - 15
  2568.       self.y = auto_y
  2569.       self.opacity = 0
  2570.       @op_time = 10 * @index
  2571.   end  
  2572.  
  2573. #--------------------------------------------------------------------------
  2574. # ● Set Position
  2575. #--------------------------------------------------------------------------  
  2576.   def set_position
  2577.       members_size = $game_party.members.size
  2578.       members_size = $game_party.max_battle_members if members_size > $game_party.max_battle_members
  2579.       space_members = ((Graphics.width ) / members_size)
  2580.       space_members_2 = (space_members * @index)
  2581.       space_members_3 = ((space_members / 2) * (members_size - 1))
  2582.       center = Graphics.width / 2
  2583.       space = center + space_members_2 - space_members_3
  2584.       @org_pos =  [space, ACTOR_POSITION[1]]   
  2585.   end
  2586.  
  2587. #--------------------------------------------------------------------------
  2588. # ● Dispose
  2589. #--------------------------------------------------------------------------                     
  2590.   def dispose_picture
  2591.       self.bitmap.dispose
  2592.   end  
  2593.  
  2594. #--------------------------------------------------------------------------
  2595. # ● Update Picture
  2596. #--------------------------------------------------------------------------  
  2597.   def update_picture
  2598.       @op_time -= 1 if @op_time > 0
  2599.       return if @op_time > 0
  2600.       self.opacity += 15
  2601.       self.x += 1 if self.x < @org_pos[0]
  2602.   end
  2603.  
  2604. end
  2605.  
  2606. #==============================================================================
  2607. # ■ Actor Menu Parameter
  2608. #==============================================================================
  2609. class Actor_Menu_Parameter
  2610.  
  2611.   include MOG_MENU
  2612.   attr_accessor :index
  2613.  
  2614.   #--------------------------------------------------------------------------
  2615.   # ● Initialize
  2616.   #--------------------------------------------------------------------------                     
  2617.   def initialize(index, actor)
  2618.       setup(index, actor)
  2619.       create_layout_par
  2620.       create_hp_number
  2621.       create_hp2_number
  2622.       create_mp_number
  2623.       create_mp2_number
  2624.       create_hp_meter
  2625.       create_mp_meter
  2626.       create_level
  2627.       create_states
  2628.       create_name
  2629.   end
  2630.  
  2631.   #--------------------------------------------------------------------------
  2632.   # ● Setup
  2633.   #--------------------------------------------------------------------------                       
  2634.   def setup(index, actor)
  2635.       @actor = actor
  2636.       @index = index
  2637.       set_position
  2638.       @number_image_1 = $game_temp.pre_cache_main_menu[6]
  2639.       @number_image_1_cw = @number_image_1.width / 10
  2640.       @number_image_1_ch = @number_image_1.height / 3
  2641.       @number_image_2 = $game_temp.pre_cache_main_menu[7]
  2642.       @number_image_2_cw = @number_image_2.width / 10
  2643.       @number_image_2_ch = @number_image_2.height
  2644.       @par_meter_image = $game_temp.pre_cache_main_menu[8]
  2645.       @par_meter_cw = @par_meter_image.width / 3
  2646.       @par_meter_ch = @par_meter_image.height / 2
  2647.       @par_meter_flow = 0
  2648.       @par_meter_flow_max = @par_meter_image.width - @par_meter_cw
  2649.       @icon_image = $game_temp.pre_cache_icon
  2650.   end
  2651.  
  2652.   #--------------------------------------------------------------------------
  2653.   # ● Set Position
  2654.   #--------------------------------------------------------------------------                       
  2655.   def set_position
  2656.       members_size = $game_party.members.size
  2657.       members_size = $game_party.max_battle_members if members_size >= $game_party.max_battle_members
  2658.       space_members = ((Graphics.width ) / members_size)
  2659.       space_members_2 = (space_members * @index)
  2660.       space_members_3 = ((space_members / 2) * (members_size - 1))
  2661.       center = Graphics.width / 2
  2662.       layout_ox = $game_temp.pre_cache_main_menu[9].width / 2
  2663.       @base_x = center - layout_ox + space_members_2 - space_members_3  
  2664.   end
  2665.  
  2666.   #--------------------------------------------------------------------------
  2667.   # ● Create Layout Par
  2668.   #--------------------------------------------------------------------------                       
  2669.   def create_layout_par
  2670.       @layout_par = Sprite.new
  2671.       @layout_par.bitmap = $game_temp.pre_cache_main_menu[9]
  2672.       @layout_par.z = 10
  2673.       @layout_par.x = @base_x + ACTOR_LAYOUT_POSITON[0]      
  2674.       @layout_par.y = ACTOR_LAYOUT_POSITON[1]
  2675.   end
  2676.  
  2677.   #--------------------------------------------------------------------------
  2678.   # ● Create Name
  2679.   #--------------------------------------------------------------------------  
  2680.   def create_name
  2681.       @actor_name = Sprite.new
  2682.       @actor_name.bitmap = Bitmap.new(160,32)
  2683.       @actor_name.bitmap.font.size = 18
  2684.       @actor_name.bitmap.font.bold = true
  2685.       @actor_name.bitmap.font.italic = false#true
  2686.       actor_name = @actor.name
  2687.       @actor_name.bitmap.font.color = Color.new(0,0,0)
  2688.       @actor_name.bitmap.draw_text(1,1,140,32,actor_name,1)
  2689.       @actor_name.bitmap.font.color = Color.new(255,255,0) #角色名字
  2690.       @actor_name.bitmap.draw_text(0,0,140,32,actor_name,1)
  2691.       @actor_name.z = 12
  2692.       @actor_name.x = @base_x + 30# - 20
  2693.       @actor_name.y = 450#250                                     #角色名字位置
  2694.   end
  2695.  
  2696.   #--------------------------------------------------------------------------
  2697.   # ● Create HP Number
  2698.   #--------------------------------------------------------------------------  
  2699.   def create_hp_number
  2700.       @hp_number = Sprite.new
  2701.       @hp_number.bitmap = Bitmap.new(@number_image_1_cw * 5,@number_image_1_ch)
  2702.       @hp_number.z = 12
  2703.       @hp_number.x = @base_x + ACTOR_HP1_POSITON[0]
  2704.       @hp_number.y =  ACTOR_HP1_POSITON[1]
  2705.       refresh_hp
  2706.   end
  2707.  
  2708.   #--------------------------------------------------------------------------
  2709.   # ● Refresh HP
  2710.   #--------------------------------------------------------------------------   
  2711.   def refresh_hp
  2712.       @hp_number.bitmap.clear
  2713.       number = @actor.hp.abs.to_s.split(//)
  2714.       number_cw = @number_image_1_cw
  2715.       number_ch = @number_image_1_ch
  2716.       for i in 0..number.size - 1
  2717.           number_abs = number[i].to_i
  2718.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  2719.           @hp_number.bitmap.blt(number_cw  *  i, 0, @number_image_1, nsrc_rect)        
  2720.       end
  2721.   end
  2722.  
  2723.   #--------------------------------------------------------------------------
  2724.   # ● Create HP2 Number
  2725.   #--------------------------------------------------------------------------  
  2726.   def create_hp2_number
  2727.       @hp2_number = Sprite.new
  2728.       @hp2_number.bitmap = Bitmap.new(@number_image_2_cw * 5,@number_image_2_ch)
  2729.       @hp2_number.z = 12
  2730.       @hp2_number.x = @base_x + ACTOR_HP2_POSITON[0]
  2731.       @hp2_number.y =  ACTOR_HP2_POSITON[1]
  2732.       refresh_hp2
  2733.   end
  2734.  
  2735.   #--------------------------------------------------------------------------
  2736.   # ● Refresh HP2
  2737.   #--------------------------------------------------------------------------   
  2738.   def refresh_hp2
  2739.       @hp2_number.bitmap.clear
  2740.       number = @actor.mhp.abs.to_s.split(//)
  2741.       number_cw = @number_image_2_cw
  2742.       number_ch = @number_image_2_ch
  2743.       for i in 0..number.size - 1
  2744.           number_abs = number[i].to_i
  2745.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  2746.           @hp2_number.bitmap.blt(number_cw  *  i, 0, @number_image_2, nsrc_rect)        
  2747.       end
  2748.   end  
  2749.  
  2750.   #--------------------------------------------------------------------------
  2751.   # ● Create MP Number
  2752.   #--------------------------------------------------------------------------  
  2753.   def create_mp_number
  2754.       @mp_number = Sprite.new
  2755.       @mp_number.bitmap = Bitmap.new(@number_image_1_cw * 5,@number_image_1_ch)
  2756.       @mp_number.z = 12
  2757.       @mp_number.x = @base_x + ACTOR_MP1_POSITON[0]
  2758.       @mp_number.y =  ACTOR_MP1_POSITON[1]
  2759.       refresh_mp
  2760.   end
  2761.  
  2762.   #--------------------------------------------------------------------------
  2763.   # ● Refresh MP
  2764.   #--------------------------------------------------------------------------   
  2765.   def refresh_mp
  2766.       @mp_number.bitmap.clear
  2767.       number = @actor.mp.abs.to_s.split(//)
  2768.       number_cw = @number_image_1_cw
  2769.       number_ch = @number_image_1_ch
  2770.       for i in 0..number.size - 1
  2771.           number_abs = number[i].to_i
  2772.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  2773.           @mp_number.bitmap.blt(number_cw  *  i, 0, @number_image_1, nsrc_rect)        
  2774.       end
  2775.     end
  2776.  
  2777.   #--------------------------------------------------------------------------
  2778.   # ● Create MP2 Number
  2779.   #--------------------------------------------------------------------------  
  2780.   def create_mp2_number
  2781.       @mp2_number = Sprite.new
  2782.       @mp2_number.bitmap = Bitmap.new(@number_image_2_cw * 5,@number_image_2_ch)
  2783.       @mp2_number.z = 12
  2784.       @mp2_number.x = @base_x + ACTOR_MP2_POSITON[0]
  2785.       @mp2_number.y =  ACTOR_MP2_POSITON[1]
  2786.       refresh_mp2
  2787.   end
  2788.  
  2789.   #--------------------------------------------------------------------------
  2790.   # ● Refresh MP2
  2791.   #--------------------------------------------------------------------------   
  2792.   def refresh_mp2
  2793.       @mp2_number.bitmap.clear
  2794.       number = @actor.mmp.abs.to_s.split(//)
  2795.       number_cw = @number_image_2_cw
  2796.       number_ch = @number_image_2_ch
  2797.       for i in 0..number.size - 1
  2798.           number_abs = number[i].to_i
  2799.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  2800.           @mp2_number.bitmap.blt(number_cw  *  i, 0, @number_image_2, nsrc_rect)        
  2801.       end
  2802.   end      
  2803.  
  2804.   #--------------------------------------------------------------------------
  2805.   # ● Create Level
  2806.   #--------------------------------------------------------------------------      
  2807.   def create_level
  2808.       @level = Sprite.new
  2809.       @level.bitmap = Bitmap.new(@number_image_1_cw * 3, @number_image_1_ch)
  2810.       @level.z = 12
  2811.       @level.x = @base_x + ACTOR_LEVEL_POSITON[0]
  2812.       @level.y = ACTOR_LEVEL_POSITON[1]
  2813.       refresh_level
  2814.   end
  2815.  
  2816.   #--------------------------------------------------------------------------
  2817.   # ● Refresh Level
  2818.   #--------------------------------------------------------------------------        
  2819.   def refresh_level
  2820.       @level.bitmap.clear
  2821.       number = @actor.level.abs.to_s.split(//)
  2822.       number_cw = @number_image_1_cw
  2823.       number_ch = @number_image_1_ch
  2824.       for i in 0..number.size - 1
  2825.           number_abs = number[i].to_i
  2826.           nsrc_rect = Rect.new(number_cw * number_abs, number_ch * 2, number_cw , number_ch)
  2827.           @level.bitmap.blt(number_cw  *  i, 0, @number_image_1, nsrc_rect)        
  2828.       end      
  2829.   end  
  2830.  
  2831.   #--------------------------------------------------------------------------
  2832.   # ● Create HP Meter
  2833.   #--------------------------------------------------------------------------      
  2834.   def create_hp_meter
  2835.       @hp_meter = Sprite.new
  2836.       @hp_meter.bitmap = Bitmap.new(@par_meter_cw,@par_meter_ch)
  2837.       @hp_meter.z = 11
  2838.       @hp_meter.x = @base_x + ACTOR_HP_METER_POSITON[0]
  2839.       @hp_meter.y = ACTOR_HP_METER_POSITON[1]
  2840.       update_flow_hp
  2841.   end
  2842.  
  2843.   #--------------------------------------------------------------------------
  2844.   # ● Update Flow HP
  2845.   #--------------------------------------------------------------------------        
  2846.   def update_flow_hp
  2847.       @hp_meter.bitmap.clear
  2848.       par_width = @par_meter_cw * @actor.hp / @actor.mhp
  2849.       m_scr = Rect.new(@par_meter_flow,0, par_width, @par_meter_ch)
  2850.       @hp_meter.bitmap.blt(0,0,@par_meter_image, m_scr)
  2851.   end  
  2852.  
  2853.   #--------------------------------------------------------------------------
  2854.   # ● Create MP Meter
  2855.   #--------------------------------------------------------------------------      
  2856.   def create_mp_meter
  2857.       @mp_meter = Sprite.new
  2858.       @mp_meter.bitmap = Bitmap.new(@par_meter_cw,@par_meter_ch)
  2859.       @mp_meter.z = 11
  2860.       @mp_meter.x = @base_x + ACTOR_MP_METER_POSITON[0]
  2861.       @mp_meter.y = ACTOR_MP_METER_POSITON[1]
  2862.       update_flow_mp
  2863.   end
  2864.  
  2865.   #--------------------------------------------------------------------------
  2866.   # ● Update Flow MP
  2867.   #--------------------------------------------------------------------------        
  2868.   def update_flow_mp
  2869.       @mp_meter.bitmap.clear
  2870.       par_width = @par_meter_cw * @actor.mp / @actor.mmp rescue nil
  2871.       par_width = 0 if par_width == nil
  2872.       m_scr = Rect.new(@par_meter_flow,@par_meter_ch, par_width, @par_meter_ch)
  2873.       @mp_meter.bitmap.blt(0,0,@par_meter_image, m_scr)
  2874.       @par_meter_flow += 3
  2875.       @par_meter_flow = 0 if @par_meter_flow > @par_meter_flow_max
  2876.   end   
  2877.  
  2878.   #--------------------------------------------------------------------------
  2879.   # ● Create_States
  2880.   #--------------------------------------------------------------------------      
  2881.   def create_states
  2882.       refresh_states
  2883.       @status = Sprite.new
  2884.       @status.bitmap = Bitmap.new(24,24)
  2885.       @status.x = @base_x +  ACTOR_STATES_POSITION[0]
  2886.       @status.y = ACTOR_STATES_POSITION[1]
  2887.       @status_flow = -24
  2888.       @states_speed = 50
  2889.       @status.z = 503
  2890.       @old_states = @actor.states
  2891.       refresh_states
  2892.       update_flow_states
  2893.   end      
  2894.  
  2895.   #--------------------------------------------------------------------------
  2896.   # ● Upate Flow_Status
  2897.   #--------------------------------------------------------------------------         
  2898.   def update_flow_states
  2899.       return if @actor.states.size == 0 and !@status.visible
  2900.       @states_speed = 0
  2901.       @status.bitmap.clear
  2902.       src_rect = Rect.new(@status_flow,0, 24,24)
  2903.       @status.bitmap.blt(0,0, @actor_status, src_rect)
  2904.       @status.visible = @actor.states.size == 0 ? false : true
  2905.       @status_flow += 1
  2906.       @status_flow = -24 if @status_flow >= @states_size - 24
  2907.   end   
  2908.  
  2909.   #--------------------------------------------------------------------------
  2910.   # ● Refresh States
  2911.   #--------------------------------------------------------------------------        
  2912.   def refresh_states
  2913.       @old_states = @actor.states
  2914.       if @actor_status != nil
  2915.          @actor_status.dispose
  2916.          @actor_status = nil
  2917.       end
  2918.       @states_size = @actor.states.size > 0 ? (48 * @actor.states.size) : 24
  2919.       @actor_status = Bitmap.new(@states_size,24)
  2920.       index = 0
  2921.       for i in  @actor.states
  2922.          rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
  2923.          @actor_status.blt(48 * index , 0, @icon_image, rect)
  2924.          index += 1
  2925.       end
  2926.   end   
  2927.  
  2928.   #--------------------------------------------------------------------------
  2929.   # ● Update
  2930.   #--------------------------------------------------------------------------         
  2931.   def update
  2932.       update_flow_hp
  2933.       update_flow_mp
  2934.       update_flow_states
  2935.   end  
  2936.  
  2937. end
  2938.  
  2939.  
  2940. #==============================================================================
  2941. # ■ Actor Menu Parameter
  2942. #==============================================================================
  2943. class Actor_Menu_Parameter
  2944.  
  2945.   #--------------------------------------------------------------------------
  2946.   # ● Dispose
  2947.   #--------------------------------------------------------------------------                     
  2948.   def dispose
  2949.       dispose_actor_layout_par
  2950.       dispose_name
  2951.       dispose_hp_number
  2952.       dispose_mp_number
  2953.       dispose_hp_meter
  2954.       dispose_mp_meter
  2955.       dispose_states
  2956.       dispose_level
  2957.   end  
  2958.  
  2959.   #--------------------------------------------------------------------------
  2960.   # ● Dispose Actor Layout Par
  2961.   #--------------------------------------------------------------------------                        
  2962.   def dispose_actor_layout_par
  2963.       return if @layout_par == nil
  2964.       @layout_par.dispose
  2965.       @layout_par = nil
  2966.   end   
  2967.  
  2968.   #--------------------------------------------------------------------------
  2969.   # ● Dispose Name
  2970.   #--------------------------------------------------------------------------  
  2971.   def dispose_name
  2972.       return if @actor_name == nil
  2973.       @actor_name.bitmap.dispose
  2974.       @actor_name.dispose
  2975.       @actor_name = nil
  2976.   end
  2977.  
  2978.   #--------------------------------------------------------------------------
  2979.   # ● Dispose HP Number
  2980.   #--------------------------------------------------------------------------      
  2981.   def dispose_hp_number
  2982.       return if @hp_number == nil
  2983.       @hp_number.bitmap.dispose
  2984.       @hp_number.dispose
  2985.       @hp_number = nil
  2986.       @hp2_number.bitmap.dispose
  2987.       @hp2_number.dispose
  2988.       @hp2_number = nil      
  2989.  
  2990.   end   
  2991.  
  2992.   #--------------------------------------------------------------------------
  2993.   # ● Dispose MP Number
  2994.   #--------------------------------------------------------------------------      
  2995.   def dispose_mp_number
  2996.       return if @mp_number == nil
  2997.       @mp_number.bitmap.dispose
  2998.       @mp_number.dispose
  2999.       @mp_number = nil
  3000.       @mp2_number.bitmap.dispose
  3001.       @mp2_number.dispose
  3002.       @mp2_number = nil      
  3003.   end   
  3004.  
  3005.   #--------------------------------------------------------------------------
  3006.   # ● Dispose States
  3007.   #--------------------------------------------------------------------------            
  3008.    def dispose_states
  3009.        return if @status == nil
  3010.        @status.bitmap.dispose
  3011.        @status.dispose
  3012.        if @actor_status != nil
  3013.           @actor_status.dispose
  3014.           @actor_status = nil
  3015.        end   
  3016.    end  
  3017.  
  3018.   #--------------------------------------------------------------------------
  3019.   # ● Dispose MP Meter
  3020.   #--------------------------------------------------------------------------        
  3021.   def dispose_mp_meter
  3022.       return if @mp_meter == nil
  3023.       @mp_meter.bitmap.dispose
  3024.       @mp_meter.dispose
  3025.       @mp_meter = nil
  3026.   end     
  3027.  
  3028.   #--------------------------------------------------------------------------
  3029.   # ● Dispose HP Meter
  3030.   #--------------------------------------------------------------------------        
  3031.   def dispose_hp_meter
  3032.       return if @hp_meter == nil
  3033.       @hp_meter.bitmap.dispose
  3034.       @hp_meter.dispose
  3035.       @hp_meter = nil
  3036.   end
  3037.  
  3038.   #--------------------------------------------------------------------------
  3039.   # ● Dispose Level
  3040.   #--------------------------------------------------------------------------        
  3041.   def dispose_level
  3042.       return if @level == nil
  3043.       @level.bitmap.dispose
  3044.       @level.dispose
  3045.       @level = nil
  3046.   end
  3047.  
  3048. end  
  3049.  
  3050. #==============================================================================
  3051. # ■ Scene_Menu
  3052. #==============================================================================
  3053. class Scene_Menu
  3054.  
  3055.   #--------------------------------------------------------------------------
  3056.   # ● Create Sprites
  3057.   #--------------------------------------------------------------------------         
  3058.   def create_sprites
  3059.       create_menu_background
  3060.       create_layout
  3061.       create_particles
  3062.       create_command
  3063.       create_actor_pictures
  3064.       create_timer_sprite
  3065.       create_gold_number
  3066.       create_location
  3067.       create_actor_parameter
  3068.       create_members
  3069.       create_members_layout
  3070.       update_members_face
  3071.   end
  3072.  
  3073.   #--------------------------------------------------------------------------
  3074.   # ● Create Menu Background
  3075.   #--------------------------------------------------------------------------            
  3076.   def create_menu_background
  3077.       @background = Plane.new
  3078.       @background.bitmap = $game_temp.pre_cache_main_menu[0]
  3079.       @background.z = 0
  3080.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  3081.   end  
  3082.  
  3083.   #--------------------------------------------------------------------------
  3084.   # ● Create Menu Background
  3085.   #--------------------------------------------------------------------------              
  3086.   def create_layout
  3087.       @layout = Sprite.new
  3088.       @layout.bitmap = $game_temp.pre_cache_main_menu[1]
  3089.       @layout.z = 3
  3090.   end
  3091.  
  3092.   #--------------------------------------------------------------------------
  3093.   # ● Create Particles
  3094.   #--------------------------------------------------------------------------  
  3095.   def create_particles
  3096.       @particles_sprite =[]
  3097.       for i in 0...NUMBER_OF_PARTICLES
  3098.           @particles_sprite.push(Particles_Menu.new(nil))
  3099.       end
  3100.   end
  3101.  
  3102.   #--------------------------------------------------------------------------
  3103.   # ● Create Command
  3104.   #--------------------------------------------------------------------------   
  3105.   def create_command
  3106.       create_command_window
  3107.       @command_window.visible = false
  3108.       @command_window.x -= WIDTH #544      
  3109.       @command_max = @command_window.list.size
  3110.       @commnad_name = []
  3111.       index = 0
  3112.       for i in @command_window.list
  3113.          @commnad_name.push(i[:name])
  3114.          index += 1
  3115.       end   
  3116.       @command_scroll_max = @command_max > 6 ? 6 : @command_max
  3117.       @command_ny = 0
  3118.       @command_sprites = []
  3119.       index = 0
  3120.       for i in 0...@command_max
  3121.           @command_sprites.push(Command_Menu_Sprite.new(nil, index,@commnad_name[index]) )
  3122.           index += 1
  3123.       end
  3124.   end  
  3125.  
  3126.   #--------------------------------------------------------------------------
  3127.   # ● Create Command Window
  3128.   #--------------------------------------------------------------------------     
  3129.   def create_command_window
  3130.       @command_window = Window_MenuCommand.new
  3131.       @command_window.set_handler(:item,      method(:command_item))
  3132.       @command_window.set_handler(:skill,     method(:command_personal))
  3133.       @command_window.set_handler(:equip,     method(:command_personal))
  3134.       @command_window.set_handler(:status,    method(:command_personal))
  3135.       @command_window.set_handler(:formation, method(:command_formation))
  3136.       @command_window.set_handler(:save,      method(:command_save))
  3137.       @command_window.set_handler(:game_end,  method(:command_game_end))
  3138.       @command_window.set_handler(:cancel,    method(:return_scene))  
  3139.       @command_window.index = $game_temp.menu_index
  3140.    end   
  3141.  
  3142.   #--------------------------------------------------------------------------
  3143.   # ● Create Actor Pictures
  3144.   #--------------------------------------------------------------------------     
  3145.   def create_actor_pictures
  3146.       @actor_pictures = []
  3147.       members_size = $game_party.members.size
  3148.       members_size = $game_party.max_battle_members if members_size >= $game_party.max_battle_members
  3149.       for i in 0...members_size
  3150.          @actor_pictures.push(Actor_Menu_Pictures.new(nil,i,$game_party.members[i].id))
  3151.       end   
  3152.   end
  3153.  
  3154.   #--------------------------------------------------------------------------
  3155.   # ● Create Timer Number
  3156.   #--------------------------------------------------------------------------      
  3157.   def create_timer_sprite
  3158.       update_timer
  3159.       @sec_old = @sec
  3160.       @timer_image = $game_temp.pre_cache_main_menu[2]
  3161.       @timer_cw = @timer_image.width / 10
  3162.       @timer_ch = @timer_image.height
  3163.       @timer_sprite = Sprite.new
  3164.       @timer_sprite.bitmap = Bitmap.new(@timer_image.width*2 ,@timer_image.height)
  3165.       @timer_sprite.z = 11
  3166.       @timer_sprite.x = TIME_NUMBER_POS[0]
  3167.       @timer_sprite.y = TIME_NUMBER_POS[1]
  3168.       refresh_timer
  3169.   end
  3170.  
  3171.   #--------------------------------------------------------------------------
  3172.   # ● Create Gold Number
  3173.   #--------------------------------------------------------------------------         
  3174.   def create_gold_number
  3175.       @gold = $game_party.gold
  3176.       @gold_image = $game_temp.pre_cache_main_menu[3]
  3177.       @gold_cw = @gold_image.width / 10
  3178.       @gold_ch = @gold_image.height
  3179.       @gold_sprite = Sprite.new
  3180.       @gold_sprite.bitmap = Bitmap.new(@gold_image.width ,@gold_image.height)
  3181.       @gold_sprite.z = 11
  3182.       @gold_sprite.x = GOLD_NUMBER_POS[0]
  3183.       @gold_sprite.y = GOLD_NUMBER_POS[1]
  3184.       refresh_gold
  3185.   end  
  3186.  
  3187.   #--------------------------------------------------------------------------
  3188.   # ● Create Location
  3189.   #--------------------------------------------------------------------------         
  3190.   def create_location
  3191.       @location = Sprite.new
  3192.       @location.bitmap = Bitmap.new(200,40)
  3193.       @location.bitmap.font.size = 20
  3194.       @location.bitmap.font.bold = true
  3195.       @location.bitmap.font.italic = false#true
  3196.       @location.z = 12
  3197.       @location.x = LOCATION_POS[0]
  3198.       @location.y = LOCATION_POS[1]
  3199.       refresh_location
  3200.   end
  3201.  
  3202.   #--------------------------------------------------------------------------
  3203.   # ● Refresh Location
  3204.   #--------------------------------------------------------------------------            
  3205.   def refresh_location
  3206.       location_name = $game_map.display_name
  3207.       @location.bitmap.clear
  3208.       @location.bitmap.font.color = Color.new(120,120,120,120)
  3209.       @location.bitmap.draw_text(6,4,190,32, location_name.to_s,2)
  3210.       @location.bitmap.font.color = Color.new(255,0,0)   #地名颜色
  3211.       @location.bitmap.draw_text(0,0,190,32, location_name.to_s,2)
  3212.   end
  3213.  
  3214.   #--------------------------------------------------------------------------
  3215.   # ● Create Actor Parameter
  3216.   #--------------------------------------------------------------------------              
  3217.   def create_actor_parameter
  3218.       @actor_par = []
  3219.       members_size = $game_party.members.size
  3220.       members_size = $game_party.max_battle_members if members_size >= $game_party.max_battle_members
  3221.       for i in 0...members_size
  3222.           @actor_par.push(Actor_Menu_Parameter.new(i,$game_party.members[i]))
  3223.       end   
  3224.   end
  3225.  
  3226.   #--------------------------------------------------------------------------
  3227.   # ● Create Members
  3228.   #--------------------------------------------------------------------------               
  3229.   def create_members
  3230.       @members_viewport = Viewport.new(MEMBERS_FACE_POSITION[0],MEMBERS_FACE_POSITION[1],400,96)
  3231.       @members_viewport.z = 12
  3232.       @members_viewport.ox = WIDTH #-544
  3233.       @members_slide_max = (MEMBERS_FACE_POSITION[0] - WIDTH) #544
  3234.       @members = []
  3235.       for i in 0...$game_party.members.size        
  3236.           @members.push(Face_Members_Sprite.new(@members_viewport,i, $game_party.members[i].id))
  3237.       end
  3238.   end
  3239.  
  3240.   #--------------------------------------------------------------------------
  3241.   # ● Create Members Layout
  3242.   #--------------------------------------------------------------------------                  
  3243.   def create_members_layout
  3244.       @members_layout = Members_Arrow_Sprite.new
  3245.   end  
  3246.  
  3247. end
  3248.  
  3249. #==============================================================================
  3250. # ■ Scene_Menu
  3251. #==============================================================================
  3252. class Scene_Menu
  3253.  
  3254.   #--------------------------------------------------------------------------
  3255.   # ● Execute Dispose
  3256.   #--------------------------------------------------------------------------        
  3257.   def execute_dispose
  3258.       Graphics.freeze
  3259.       dispose_background
  3260.       dispose_layout
  3261.       dispose_particles
  3262.       dispose_command_sprites
  3263.       dispose_actor_sprites
  3264.       dispose_actor_parameter
  3265.       dispose_timer_sprite
  3266.       dispose_gold_number
  3267.       dispose_location
  3268.       dispose_members
  3269.   end
  3270.  
  3271.   #--------------------------------------------------------------------------
  3272.   # ● Dispose Background
  3273.   #--------------------------------------------------------------------------  
  3274.   def dispose_background
  3275.       return if @background == nil
  3276.       @background.dispose
  3277.       @background = nil
  3278.   end
  3279.  
  3280.   #--------------------------------------------------------------------------
  3281.   # ● Dispose Layout
  3282.   #--------------------------------------------------------------------------               
  3283.   def dispose_layout
  3284.       return if @layout == nil
  3285.       @layout.dispose
  3286.       @layout = nil
  3287.   end  
  3288.  
  3289. #--------------------------------------------------------------------------
  3290. # ● Dispose Particles
  3291. #--------------------------------------------------------------------------   
  3292. def dispose_particles
  3293.      return if @particles_sprite == nil
  3294.      @particles_sprite.each {|sprite| sprite.dispose }
  3295. end
  3296.  
  3297.   #--------------------------------------------------------------------------
  3298.   # ● Dispose Command Sprites
  3299.   #--------------------------------------------------------------------------     
  3300.   def dispose_command_sprites
  3301.       return if @command_sprites == nil
  3302.       @command_sprites.each {|sprite| sprite.dispose_command }
  3303.       @command_sprites = nil
  3304.       @command_window.dispose
  3305.   end   
  3306.  
  3307.   #--------------------------------------------------------------------------
  3308.   # ● Dispose Actor Sprites
  3309.   #--------------------------------------------------------------------------     
  3310.   def dispose_actor_sprites
  3311.       return if @actor_pictures == nil
  3312.       @actor_pictures.each {|sprite| sprite.dispose_picture }
  3313.       @actor_pictures = nil
  3314.   end     
  3315.  
  3316.   #--------------------------------------------------------------------------
  3317.   # ● Dispose timer Sprite
  3318.   #--------------------------------------------------------------------------         
  3319.   def dispose_timer_sprite
  3320.       return if @timer_sprite == nil
  3321.       @timer_sprite.dispose
  3322.   end
  3323.  
  3324.   #--------------------------------------------------------------------------
  3325.   # ● Dispose Gold Number
  3326.   #--------------------------------------------------------------------------           
  3327.   def dispose_gold_number
  3328.       return if @gold_image == nil
  3329.       @gold_sprite.dispose
  3330.       @gold_sprite = nil
  3331.   end
  3332.  
  3333.   #--------------------------------------------------------------------------
  3334.   # ● Dispose Location
  3335.   #--------------------------------------------------------------------------            
  3336.   def dispose_location
  3337.       return if @location == nil
  3338.       @location.bitmap.dispose
  3339.       @location.dispose
  3340.       @location = nil
  3341.   end   
  3342.  
  3343.   #--------------------------------------------------------------------------
  3344.   # ● Dispose Actor Parameter
  3345.   #--------------------------------------------------------------------------               
  3346.   def dispose_actor_parameter
  3347.       return if @actor_par == nil
  3348.       @actor_par.each {|sprite| sprite.dispose }
  3349.       @actor_par = nil
  3350.   end
  3351.  
  3352.   #--------------------------------------------------------------------------
  3353.   # ● Dispose Members
  3354.   #--------------------------------------------------------------------------                  
  3355.   def dispose_members
  3356.       return if @members == nil
  3357.       @members.each {|sprite| sprite.dispose }
  3358.       @members = nil
  3359.       @members_layout.dispose
  3360.       @members_viewport.dispose
  3361.   end  
  3362.  
  3363. end
  3364.  
  3365. #==============================================================================
  3366. # ■ Scene_Menu
  3367. #==============================================================================
  3368. class Scene_Menu
  3369.  
  3370.   #--------------------------------------------------------------------------
  3371.   # ● Update Sprites
  3372.   #--------------------------------------------------------------------------         
  3373.   def update_sprites   
  3374.       update_background
  3375.       update_particles
  3376.       update_command_sprites
  3377.       update_actor_parameter
  3378.       update_actor_sprites
  3379.       update_members_face
  3380.       refresh_timer if @sec_old != @sec
  3381.       refresh_gold if @gold != $game_party.gold      
  3382.   end
  3383.  
  3384.   #--------------------------------------------------------------------------
  3385.   # ● Update Background
  3386.   #--------------------------------------------------------------------------              
  3387.   def update_background
  3388.       return if @background == nil
  3389.       @background.ox += @background_scroll[0]
  3390.       @background.oy += @background_scroll[1]
  3391.   end   
  3392.  
  3393.   #--------------------------------------------------------------------------
  3394.   # ● Update Particles
  3395.   #--------------------------------------------------------------------------  
  3396.   def update_particles
  3397.       return if @particles_sprite == nil
  3398.       @particles_sprite.each {|sprite| sprite.update }
  3399.   end
  3400.  
  3401.   #--------------------------------------------------------------------------
  3402.   # ● Update Command Sprites
  3403.   #--------------------------------------------------------------------------     
  3404.   def update_command_sprites
  3405.       return if @command_window == nil
  3406.       visible = @phase == 0 ? true : false
  3407.       @command_sprites.each {|sprite| sprite.update_command(@command_window.index,visible) }
  3408.   end     
  3409.  
  3410. #~   #--------------------------------------------------------------------------
  3411. #~   # ● Refresh Number
  3412. #~   #--------------------------------------------------------------------------  
  3413. #~   def refresh_timer
  3414. #~       @min_old = @min
  3415. #~       @timer_sprite.bitmap.clear
  3416. #~       draw_number(@timer_cw * 1,0,0) if @hour < 10              
  3417. #~       draw_number(@timer_cw * 2,0,@hour)
  3418. #~       draw_number(@timer_cw * 4,0,0) if @min < 10            
  3419. #~       draw_number(@timer_cw * 5,0,@min)
  3420. #~   end  
  3421.   #--------------------------------------------------------------------------
  3422.   # ● Refresh Number
  3423.   #--------------------------------------------------------------------------  
  3424.   def refresh_timer
  3425.       @sec_old = @sec
  3426.       @timer_sprite.bitmap.clear
  3427.       draw_number(@timer_cw * 1,0,0) if @hour < 10              
  3428.       draw_number(@timer_cw * 2,0,@hour)
  3429.       draw_number(@timer_cw * 6.2,0,0) if @min < 10            
  3430.       draw_number(@timer_cw * 7.2,0,@min)
  3431.       draw_number(@timer_cw * 10.8,0,0) if @sec < 10            
  3432.       draw_number(@timer_cw * 11.8,0,@sec)
  3433.   end  
  3434.   #--------------------------------------------------------------------------
  3435.   # ● Draw Number
  3436.   #--------------------------------------------------------------------------  
  3437.   def draw_number(x,y,value)
  3438.       @number_text = value.abs.to_s.split(//)
  3439.       plus_x = -@timer_cw * @number_text.size
  3440.       for r in 0..@number_text.size - 1
  3441.          @number_abs = @number_text[r].to_i
  3442.          nsrc_rect = Rect.new(@timer_cw * @number_abs, 0, @timer_cw, @timer_ch)
  3443.          @timer_sprite.bitmap.blt(plus_x + x + (@timer_cw  *  r), y, @timer_image, nsrc_rect)        
  3444.       end     
  3445.   end     
  3446.  
  3447.   #--------------------------------------------------------------------------
  3448.   # ● update
  3449.   #--------------------------------------------------------------------------  
  3450.   def update_timer
  3451.       time = $game_system.playtime
  3452.       @hour = time / 60 / 60
  3453.       @min = time / 60 % 60
  3454.       @sec = time % 60
  3455.   end      
  3456.  
  3457.   #--------------------------------------------------------------------------
  3458.   # ● Refresh Gold
  3459.   #--------------------------------------------------------------------------           
  3460.   def refresh_gold
  3461.       @gold = $game_party.gold
  3462.       @gold_sprite.bitmap.clear
  3463.       value_text = @gold.abs.to_s.split(//)
  3464.       index = 0
  3465.       for i in 0..value_text.size - 1
  3466.           value_abs = value_text[i].to_i
  3467.           nsrc_rect = Rect.new(@gold_cw * value_abs, 0, @gold_cw, @gold_ch)
  3468.           @gold_sprite.bitmap.blt(@gold_cw *  i, 0, @gold_image, nsrc_rect)
  3469.           index += 1
  3470.       end
  3471.       ey = (index * @gold_cw)  
  3472.       @gold_sprite.x = GOLD_NUMBER_POS[0] -  ey
  3473.   end
  3474.  
  3475.   #--------------------------------------------------------------------------
  3476.   # ● Update Actor Parameter
  3477.   #--------------------------------------------------------------------------               
  3478.   def update_actor_parameter
  3479.       return if @actor_par == nil
  3480.       @actor_par.each {|sprite| sprite.update }
  3481.   end
  3482.  
  3483.   #--------------------------------------------------------------------------
  3484.   # ● Update Actor Sprites
  3485.   #--------------------------------------------------------------------------     
  3486.   def update_actor_sprites
  3487.       return if @actor_pictures == nil
  3488.       @actor_pictures.each {|sprite| sprite.update_picture }
  3489.   end     
  3490.  
  3491.   #--------------------------------------------------------------------------
  3492.   # ● Update Members Face
  3493.   #--------------------------------------------------------------------------                  
  3494.   def update_members_face
  3495.       return if @members == nil or @members == 0
  3496.       if @members_index > 4
  3497.          ny = (5 * 64)
  3498.          else
  3499.          ny = 64 * @members_index
  3500.       end
  3501.       @members.each {|sprite| sprite.update_command(@members_index, ny) }
  3502.       @members_layout.update
  3503.       if @members_windows_active
  3504.          if @members_viewport.ox < 0
  3505.             @members_viewport.ox += 25
  3506.          end
  3507.        else   
  3508.          if @members_viewport.ox > -WIDTH #-544
  3509.             @members_viewport.ox -= 25
  3510.           end         
  3511.       end
  3512.       @members_layout.nx(@members_viewport.ox)
  3513.   end  
  3514.  
  3515. end
  3516.  
  3517. #==============================================================================
  3518. # ■ Scene_Menu
  3519. #==============================================================================
  3520. class Scene_Menu
  3521.  
  3522.   #--------------------------------------------------------------------------
  3523.   # ● Update
  3524.   #--------------------------------------------------------------------------      
  3525.   def update
  3526.       update_timer
  3527.       update_sprites
  3528.       update_command
  3529.       @members_windows_active = @phase == 100 ? true : false
  3530.   end
  3531.  
  3532. end
  3533.  
  3534. #==============================================================================
  3535. # ■ Scene_Menu
  3536. #==============================================================================
  3537. class Scene_Menu
  3538.  
  3539.   #--------------------------------------------------------------------------
  3540.   # ● Update Command
  3541.   #--------------------------------------------------------------------------      
  3542.   def update_command
  3543.       case @phase
  3544.         when 0;       update_main_command
  3545.         when 100;      update_select_members            
  3546.      end   
  3547.   end
  3548.  
  3549.   #--------------------------------------------------------------------------
  3550.   # ● Update Main Command
  3551.   #--------------------------------------------------------------------------        
  3552.   def update_main_command
  3553.       if Input.trigger?(:UP) or Input.trigger?(:LEFT)
  3554.          move_command_index(-1)
  3555.       elsif Input.trigger?(:DOWN) or Input.trigger?(:RIGHT)
  3556.          move_command_index(1)
  3557.       elsif Input.trigger?(:C)
  3558.          execute_select
  3559.          #我的修改(添加):避免MOG菜单与原菜单脚本重复响应!
  3560.          Input.update
  3561.          #end
  3562.       elsif Input.trigger?(:B)
  3563.          return_to_map
  3564.       end  
  3565.   end
  3566.  
  3567.   #--------------------------------------------------------------------------
  3568.   # ● Update Main Command
  3569.   #--------------------------------------------------------------------------   
  3570.   def move_command_index(value)
  3571.       Sound.play_cursor
  3572.       @command_window.index += value
  3573.       @command_window.index = 0 if @command_window.index >= @command_max
  3574.       @command_window.index = (@command_max - 1) if @command_window.index < 0
  3575.   end   
  3576.  
  3577.   #--------------------------------------------------------------------------
  3578.   # ● Execute Select
  3579.   #--------------------------------------------------------------------------     
  3580.   def execute_select
  3581.       if @command_window.current_symbol == :save and $game_system.save_disabled
  3582.          Sound.play_buzzer
  3583.          return
  3584.        end
  3585.        #我的修改;添加了菜单有效判定
  3586.       if @command_window.command_enabled?(@command_window.index)
  3587.         @phase = @command_window.index
  3588.         $game_temp.menu_index = @phase
  3589.         Sound.play_ok
  3590.         $game_temp.pre_symbol = @command_window.current_symbol
  3591.         @command_window.call_handler(@command_window.current_symbol)
  3592.       else
  3593.         Sound.play_buzzer
  3594.         return
  3595.       end
  3596.   end
  3597.  
  3598.   #--------------------------------------------------------------------------
  3599.   # ● Update Select Members
  3600.   #--------------------------------------------------------------------------        
  3601.   def update_select_members  
  3602.       if $game_party.members.size == 0
  3603.          execute_cancel
  3604.          return
  3605.       end  
  3606.       if Input.trigger?(:LEFT)
  3607.          move_members_index(-1)
  3608.       elsif Input.trigger?(:RIGHT)
  3609.          move_members_index(1)
  3610.       elsif Input.trigger?(:C)
  3611.          execute_select_members
  3612.       elsif Input.trigger?(:B)
  3613.          execute_cancel
  3614.       end   
  3615.   end  
  3616.  
  3617.   #--------------------------------------------------------------------------
  3618.   # ● Execute Cancel
  3619.   #--------------------------------------------------------------------------         
  3620.   def execute_cancel
  3621.       Sound.play_cancel
  3622.       @phase = 0
  3623.       @members_index = 0
  3624.   end
  3625.  
  3626.   #--------------------------------------------------------------------------
  3627.   # ● Move Members Index
  3628.   #--------------------------------------------------------------------------         
  3629.   def move_members_index(value)
  3630.       Sound.play_cursor
  3631.       @members_index += value
  3632.       @members_index = 0 if @members_index >= $game_party.members.size
  3633.       @members_index = ($game_party.members.size - 1) if @members_index < 0
  3634.   end
  3635.  
  3636.   #--------------------------------------------------------------------------
  3637.   # ● Command Formation
  3638.   #--------------------------------------------------------------------------
  3639.   def command_formation
  3640.       SceneManager.call(Scene_Party)
  3641.   end  
  3642.  
  3643.   #--------------------------------------------------------------------------
  3644.   # ● Can Access Scene
  3645.   #--------------------------------------------------------------------------              
  3646.   def can_access_scene?
  3647.       if $game_party.members.size == 0
  3648.          #Sound.play_buzzer   
  3649.          execute_cancel
  3650.          return false
  3651.       end   
  3652.       return true
  3653.   end
  3654.  
  3655.   #--------------------------------------------------------------------------
  3656.   # ● Execute Select Members
  3657.   #--------------------------------------------------------------------------     
  3658.   def execute_select_members
  3659.       @phase = @command_window.index
  3660.       $game_temp.menu_index = @phase
  3661.       Sound.play_ok
  3662.       on_personal_ok
  3663.   end  
  3664.  
  3665.   #--------------------------------------------------------------------------
  3666.   # ● ON Personal OK
  3667.   #--------------------------------------------------------------------------            
  3668.   alias mog_monogatari_on_personal_ok on_personal_ok
  3669.   def on_personal_ok
  3670.       $game_temp.actor_menu_temp =  $game_party.members[@members_index]
  3671.       $game_party.menu_actor = $game_party.members[@members_index]
  3672.       mog_monogatari_on_personal_ok
  3673.   end   
  3674.  
  3675.   #--------------------------------------------------------------------------
  3676.   # ● Return To Map
  3677.   #--------------------------------------------------------------------------              
  3678.   def return_to_map
  3679.       $game_temp.menu_index = 0
  3680.       Sound.play_cancel
  3681.       SceneManager.return
  3682.   end  
  3683.  
  3684.   #--------------------------------------------------------------------------
  3685.   # ● Command Personal
  3686.   #--------------------------------------------------------------------------
  3687.   def command_personal
  3688.       @phase = 100
  3689.   end
  3690.  
  3691. end
  3692.  
  3693. #==============================================================================
  3694. # ■ Game_Temp
  3695. #==============================================================================
  3696. class Game_Temp
  3697.  
  3698.   #--------------------------------------------------------------------------
  3699.   # ● Execute Pre Cache Item Menu
  3700.   #--------------------------------------------------------------------------   
  3701.   def execute_pre_cache_item_menu
  3702.       @pre_cache_item_menu = []
  3703.       @pre_cache_item_menu.push(Cache.menu_item("Background"))
  3704.       @pre_cache_item_menu.push(Cache.menu_item("Layout"))
  3705.   end   
  3706.  
  3707. end
  3708.  
  3709. #==============================================================================
  3710. # ■ Scene_Menu
  3711. #==============================================================================
  3712. class Scene_Item
  3713.   include MOG_MENU_ITEM
  3714.   include MOG_MENU_BASE
  3715.  
  3716.   #--------------------------------------------------------------------------
  3717.   # ● Main
  3718.   #--------------------------------------------------------------------------        
  3719.   def main
  3720.       execute_setup
  3721.       execute_loop
  3722.       execute_dispose
  3723.   end  
  3724.  
  3725.   #--------------------------------------------------------------------------
  3726.   # ● Execute Setup
  3727.   #--------------------------------------------------------------------------        
  3728.   def execute_setup
  3729.       @phase = 0
  3730.       @command_index = 0
  3731.       @actor = $game_party.members[0]
  3732.       @wait_time = 0
  3733.       create_sprites
  3734.   end
  3735.  
  3736.   #--------------------------------------------------------------------------
  3737.   # ● Execute Lopp
  3738.   #--------------------------------------------------------------------------        
  3739.   def execute_loop
  3740.       Graphics.transition(10)
  3741.       loop do
  3742.          Input.update
  3743.          update
  3744.          Graphics.update
  3745.          break if SceneManager.scene != self
  3746.       end
  3747.   end  
  3748.  
  3749. end
  3750.  
  3751. #==============================================================================
  3752. # ■ Window_ItemList Z
  3753. #==============================================================================
  3754. class Window_ItemList_Z < Window_Selectable
  3755.  
  3756.   #--------------------------------------------------------------------------
  3757.   # ● Initialize
  3758.   #--------------------------------------------------------------------------
  3759.   def initialize(x, y, width, height)
  3760.       super
  3761.       @category = :none
  3762.       @data = []
  3763.   end
  3764.  
  3765.   #--------------------------------------------------------------------------
  3766.   # ● Category
  3767.   #--------------------------------------------------------------------------
  3768.   def category=(category)
  3769.       return if @category == category
  3770.       @category = category
  3771.       self.oy = 0
  3772.   end
  3773.  
  3774.   #--------------------------------------------------------------------------
  3775.   # ● Col Max
  3776.   #--------------------------------------------------------------------------
  3777.   def col_max
  3778.       return 1
  3779.   end
  3780.   #--------------------------------------------------------------------------
  3781.   # ● Item Max
  3782.   #--------------------------------------------------------------------------
  3783.   def item_max
  3784.       @data ? @data.size : 1
  3785.   end
  3786.   #--------------------------------------------------------------------------
  3787.   # ● Item
  3788.   #--------------------------------------------------------------------------
  3789.   def item
  3790.       @data && index >= 0 ? @data[index] : nil
  3791.   end
  3792.  
  3793.   #--------------------------------------------------------------------------
  3794.   # ● Current Item Enabled?
  3795.   #--------------------------------------------------------------------------
  3796.   def current_item_enabled?
  3797.       enable?(@data[index])
  3798.   end
  3799.  
  3800.   #--------------------------------------------------------------------------
  3801.   # ● Include?
  3802.   #--------------------------------------------------------------------------
  3803.   def include?(item)
  3804.       case @category
  3805.       when :item
  3806.            item.is_a?(RPG::Item) && !item.key_item?
  3807.       when :weapon
  3808.            item.is_a?(RPG::Weapon)
  3809.       when :armor
  3810.            item.is_a?(RPG::Armor)
  3811.       when :key_item
  3812.            item.is_a?(RPG::Item) && item.key_item?
  3813.       else
  3814.            false
  3815.       end
  3816.   end
  3817.  
  3818.   #--------------------------------------------------------------------------
  3819.   # ● Enable?
  3820.   #--------------------------------------------------------------------------
  3821.   def enable?(item)
  3822.       $game_party.usable?(item)
  3823.   end
  3824.  
  3825.   #--------------------------------------------------------------------------
  3826.   # ● Make Item List
  3827.   #--------------------------------------------------------------------------
  3828.   def make_item_list
  3829.       @data = $game_party.all_items.select {|item| include?(item) }
  3830.       @data.push(nil) if include?(nil)
  3831.   end
  3832.  
  3833.   #--------------------------------------------------------------------------
  3834.   # ● Select Last
  3835.   #--------------------------------------------------------------------------
  3836.   def select_last
  3837.       select(@data.index($game_party.last_item.object) || 0)
  3838.   end
  3839.  
  3840.   #--------------------------------------------------------------------------
  3841.   # ● Draw Item
  3842.   #--------------------------------------------------------------------------
  3843.   def draw_item(index)
  3844.       item = @data[index]
  3845.       if item
  3846.          rect = item_rect(index)
  3847.          rect.width -= 4
  3848.          draw_item_name(item, rect.x, rect.y, enable?(item))
  3849.          draw_item_number(rect, item)
  3850.       end
  3851.   end
  3852.  
  3853.   #--------------------------------------------------------------------------
  3854.   # ● Draw Item Number
  3855.   #--------------------------------------------------------------------------
  3856.   def draw_item_number(rect, item)
  3857.       draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  3858.   end
  3859.  
  3860.   #--------------------------------------------------------------------------
  3861.   # ● Update Help
  3862.   #--------------------------------------------------------------------------
  3863.   def update_help
  3864.       @help_window.set_item(item)
  3865.   end
  3866.  
  3867.   #--------------------------------------------------------------------------
  3868.   # ● Refresh
  3869.   #--------------------------------------------------------------------------
  3870.   def refresh
  3871.       make_item_list
  3872.       create_contents
  3873.       draw_all_items
  3874.   end
  3875.  
  3876. end
  3877.  
  3878. #==============================================================================
  3879. # ■ Window_ItemList Z
  3880. #==============================================================================
  3881. class Window_ItemList_Item_1 < Window_Selectable
  3882.  
  3883.   #--------------------------------------------------------------------------
  3884.   # ● Initialize
  3885.   #--------------------------------------------------------------------------
  3886.   def initialize(x, y, width, height)
  3887.       super
  3888.       @category = :none
  3889.       @data = []
  3890.   end
  3891.  
  3892.   #--------------------------------------------------------------------------
  3893.   # ● Category
  3894.   #--------------------------------------------------------------------------
  3895.   def category=(category)
  3896.       return if @category == category
  3897.       @category = category
  3898.       self.oy = 0
  3899.   end
  3900.  
  3901.   #--------------------------------------------------------------------------
  3902.   # ● Col Max
  3903.   #--------------------------------------------------------------------------
  3904.   def col_max
  3905.       return 1
  3906.   end
  3907.   #--------------------------------------------------------------------------
  3908.   # ● Item Max
  3909.   #--------------------------------------------------------------------------
  3910.   def item_max
  3911.       @data ? @data.size : 1
  3912.   end
  3913.   #--------------------------------------------------------------------------
  3914.   # ● Item
  3915.   #--------------------------------------------------------------------------
  3916.   def item
  3917.       @data && index >= 0 ? @data[index] : nil
  3918.   end
  3919.  
  3920.   #--------------------------------------------------------------------------
  3921.   # ● Current Item Enabled?
  3922.   #--------------------------------------------------------------------------
  3923.   def current_item_enabled?
  3924.       enable?(@data[index])
  3925.   end
  3926.  
  3927.   #--------------------------------------------------------------------------
  3928.   # ● Include?
  3929.   #--------------------------------------------------------------------------
  3930.   def include?(item)
  3931.       case @category
  3932.       when :item   ;   item.is_a?(RPG::Item) && !item.key_item?
  3933.       else
  3934.            false
  3935.       end
  3936.   end
  3937.  
  3938.   #--------------------------------------------------------------------------
  3939.   # ● Enable?
  3940.   #--------------------------------------------------------------------------
  3941.   def enable?(item)
  3942.       $game_party.usable?(item)
  3943.   end
  3944.  
  3945.   #--------------------------------------------------------------------------
  3946.   # ● Make Item List
  3947.   #--------------------------------------------------------------------------
  3948.   def make_item_list
  3949.       @data = $game_party.all_items.select {|item| include?(item) }
  3950.       @data.push(nil) if include?(nil)
  3951.   end
  3952.  
  3953.   #--------------------------------------------------------------------------
  3954.   # ● Select Last
  3955.   #--------------------------------------------------------------------------
  3956.   def select_last
  3957.       select(@data.index($game_party.last_item.object) || 0)
  3958.   end
  3959.  
  3960.   #--------------------------------------------------------------------------
  3961.   # ● Draw Item
  3962.   #--------------------------------------------------------------------------
  3963.   def draw_item(index)
  3964.       item = @data[index]
  3965.       if item
  3966.          rect = item_rect(index)
  3967.          rect.width -= 4
  3968.          draw_item_number(rect, item)
  3969.       end
  3970.   end
  3971.  
  3972.   #--------------------------------------------------------------------------
  3973.   # ● Draw Item Number
  3974.   #--------------------------------------------------------------------------
  3975.   def draw_item_number(rect, item)
  3976.       draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  3977.   end  
  3978.  
  3979.   #--------------------------------------------------------------------------
  3980.   # ● Update Help
  3981.   #--------------------------------------------------------------------------
  3982.   def update_help
  3983.       @help_window.set_item(item)
  3984.   end
  3985.  
  3986.   #--------------------------------------------------------------------------
  3987.   # ● Refresh
  3988.   #--------------------------------------------------------------------------
  3989.   def refresh
  3990.       make_item_list
  3991.       create_contents
  3992.       draw_all_items
  3993.    end
  3994.  
  3995. end
  3996.  
  3997. #==============================================================================
  3998. # ■ Window_ItemList Z
  3999. #==============================================================================
  4000. class Window_ItemList_Item_2 < Window_Selectable
  4001.  
  4002.   #--------------------------------------------------------------------------
  4003.   # ● Initialize
  4004.   #--------------------------------------------------------------------------
  4005.   def initialize(x, y, width, height)
  4006.       super
  4007.       @category = :none
  4008.       @data = []
  4009.   end
  4010.  
  4011.   #--------------------------------------------------------------------------
  4012.   # ● Category
  4013.   #--------------------------------------------------------------------------
  4014.   def category=(category)
  4015.       return if @category == category
  4016.       @category = category
  4017.       self.oy = 0
  4018.   end
  4019.  
  4020.   #--------------------------------------------------------------------------
  4021.   # ● Col Max
  4022.   #--------------------------------------------------------------------------
  4023.   def col_max
  4024.       return 1
  4025.   end
  4026.   #--------------------------------------------------------------------------
  4027.   # ● Item Max
  4028.   #--------------------------------------------------------------------------
  4029.   def item_max
  4030.       @data ? @data.size : 1
  4031.   end
  4032.   #--------------------------------------------------------------------------
  4033.   # ● Item
  4034.   #--------------------------------------------------------------------------
  4035.   def item
  4036.       @data && index >= 0 ? @data[index] : nil
  4037.   end
  4038.  
  4039.   #--------------------------------------------------------------------------
  4040.   # ● Current Item Enabled?
  4041.   #--------------------------------------------------------------------------
  4042.   def current_item_enabled?
  4043.       enable?(@data[index])
  4044.   end
  4045.  
  4046.   #--------------------------------------------------------------------------
  4047.   # ● Include?
  4048.   #--------------------------------------------------------------------------
  4049.   def include?(item)
  4050.       case @category
  4051.       when :item   ;   item.is_a?(RPG::Item) && !item.key_item?
  4052.       else
  4053.            false
  4054.       end
  4055.   end
  4056.  
  4057.   #--------------------------------------------------------------------------
  4058.   # ● Enable?
  4059.   #--------------------------------------------------------------------------
  4060.   def enable?(item)
  4061.       $game_party.usable?(item)
  4062.   end
  4063.  
  4064.   #--------------------------------------------------------------------------
  4065.   # ● Make Item List
  4066.   #--------------------------------------------------------------------------
  4067.   def make_item_list
  4068.       @data = $game_party.all_items.select {|item| include?(item) }
  4069.       @data.push(nil) if include?(nil)
  4070.   end
  4071.  
  4072.   #--------------------------------------------------------------------------
  4073.   # ● Select Last
  4074.   #--------------------------------------------------------------------------
  4075.   def select_last
  4076.       select(@data.index($game_party.last_item.object) || 0)
  4077.   end
  4078.  
  4079.   #--------------------------------------------------------------------------
  4080.   # ● Draw Item
  4081.   #--------------------------------------------------------------------------
  4082.   def draw_item(index)
  4083.       item = @data[index]
  4084.       if item
  4085.          rect = item_rect(index)
  4086.          rect.width -= 4
  4087.          draw_item_name(item, rect.x, rect.y, enable?(item))
  4088.          draw_item_number(rect, item)
  4089.       end
  4090.   end
  4091.  
  4092.   #--------------------------------------------------------------------------
  4093.   # ● Draw Item Number
  4094.   #--------------------------------------------------------------------------
  4095.   def draw_item_number(rect, item)
  4096.       draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  4097.   end
  4098.  
  4099.   #--------------------------------------------------------------------------
  4100.   # ● Update Help
  4101.   #--------------------------------------------------------------------------
  4102.   def update_help      
  4103.   end
  4104.  
  4105.   #--------------------------------------------------------------------------
  4106.   # ● Refresh
  4107.   #--------------------------------------------------------------------------
  4108.   def refresh
  4109.       make_item_list
  4110.       create_contents
  4111.       draw_all_items
  4112.   end
  4113.  
  4114. end
  4115.  
  4116. #==============================================================================
  4117. # ■ Scene_Item
  4118. #==============================================================================
  4119. class Scene_Item
  4120.  
  4121.   #--------------------------------------------------------------------------
  4122.   # ● Create Sprites
  4123.   #--------------------------------------------------------------------------         
  4124.   def create_sprites
  4125.       create_menu_background
  4126.       create_layout
  4127.       create_particles
  4128.       create_command
  4129.       create_button
  4130.       create_help_window
  4131.       create_item_window
  4132.       create_weapon_window
  4133.       create_armor_window
  4134.       create_key_window
  4135.       create_actor_window
  4136.       set_initial_visible
  4137.   end
  4138.  
  4139.   #--------------------------------------------------------------------------
  4140.   # ● Create Actor Window
  4141.   #--------------------------------------------------------------------------
  4142.   def create_actor_window
  4143.       @actor_window = Members_Windows_Status.new
  4144.       @actor_window.set_handler(:ok,     method(:on_actor_ok))
  4145.       @actor_window.set_handler(:cancel, method(:on_actor_cancel))
  4146.       @actor_window.opacity = 0      
  4147.       @actor_window.x = -10
  4148.       @actor_window.y = 36
  4149.       @actor_window_slide_range = [@actor_window.x, -@actor_window.width]
  4150.       @actor_window.x = @actor_window_slide_range[1]
  4151.       @actor_window.visible = true
  4152.       @actor_window_index_old = @actor_window.index
  4153.       create_members_window
  4154.       create_actor_status
  4155.       update_active_window
  4156.       update_command_sprites
  4157.   end
  4158.  
  4159.   #--------------------------------------------------------------------------
  4160.   # ● Create Members Window
  4161.   #--------------------------------------------------------------------------  
  4162.   def create_members_window
  4163.       index = 0
  4164.       @members_status = []      
  4165.       for actor in $game_party.members
  4166.           @members_status.push(Members_Menu.new(actor,index))
  4167.           index += 1
  4168.       end   
  4169.   end
  4170.  
  4171.   #--------------------------------------------------------------------------
  4172.   # ● Create Actor Status
  4173.   #--------------------------------------------------------------------------  
  4174.   def create_actor_status
  4175.       @actor_status = Actor_Menu_Status.new(@actor)
  4176.   end  
  4177.  
  4178.   #--------------------------------------------------------------------------
  4179.   # ● Create Item Window
  4180.   #--------------------------------------------------------------------------
  4181.   def create_item_window
  4182.       @item_window = Window_ItemList_Item_1.new(162-80,150,225+80,240)  
  4183.       @item_window.help_window = @help_window
  4184.       @item_window.set_handler(:ok,     method(:on_item_ok))
  4185.       @item_window.set_handler(:cancel, method(:on_item_cancel))
  4186.       @item_window.category = :item
  4187.       @item_window.active = true
  4188.       @item_window.refresh
  4189.       @item_window.index = 0
  4190.       @item_window.opacity = 0      
  4191.       @item_window_2 = Window_ItemList_Item_2.new(162-80,150,225+80,240)  
  4192.       @item_window_2.help_window = @help_window
  4193.       @item_window_2.set_handler(:ok,     method(:on_item_ok))
  4194.       @item_window_2.set_handler(:cancel, method(:on_item_cancel))
  4195.       @item_window_2.category = :item
  4196.       @item_window_2.active = true
  4197.       @item_window_2.refresh
  4198.       @item_window_2.index = 0
  4199.       @item_window_2.opacity = 0      
  4200.   end  
  4201.  
  4202.   #--------------------------------------------------------------------------
  4203.   # ● Create Weapon Window
  4204.   #--------------------------------------------------------------------------
  4205.   def create_weapon_window
  4206.       @weapon_window = Window_ItemList_Z.new(162-80,150,225+80,240)  
  4207.       @weapon_window.help_window = @help_window
  4208.       @weapon_window.set_handler(:ok,     method(:on_item_ok))
  4209.       @weapon_window.set_handler(:cancel, method(:on_item_cancel))
  4210.       @weapon_window.category = :weapon
  4211.       @weapon_window.active = true
  4212.       @weapon_window.refresh
  4213.       @weapon_window.index = 0
  4214.       @weapon_window.opacity = 0
  4215.   end  
  4216.  
  4217.   #--------------------------------------------------------------------------
  4218.   # ● Create Armor Window
  4219.   #--------------------------------------------------------------------------
  4220.   def create_armor_window
  4221.       @armor_window = Window_ItemList_Z.new(162-80,150,225+80,240)  
  4222.       @armor_window.help_window = @help_window
  4223.       @armor_window.set_handler(:ok,     method(:on_item_ok))
  4224.       @armor_window.set_handler(:cancel, method(:on_item_cancel))
  4225.       @armor_window.category = :armor
  4226.       @armor_window.active = true
  4227.       @armor_window.refresh
  4228.       @armor_window.index = 0
  4229.       @armor_window.opacity = 0
  4230.   end   
  4231.  
  4232.   #--------------------------------------------------------------------------
  4233.   # ● Create Key Window
  4234.   #--------------------------------------------------------------------------
  4235.   def create_key_window
  4236.       @key_window = Window_ItemList_Z.new(162-80,150,225+80,240)  
  4237.       @key_window.help_window = @help_window
  4238.       @key_window.set_handler(:ok,     method(:on_item_ok))
  4239.       @key_window.set_handler(:cancel, method(:on_item_cancel))
  4240.       @key_window.category = :key_item
  4241.       @key_window.active = true
  4242.       @key_window.refresh
  4243.       @key_window.index = 0
  4244.       @key_window.opacity = 0
  4245.   end   
  4246.  
  4247.   #--------------------------------------------------------------------------
  4248.   # ● Create Help Window
  4249.   #--------------------------------------------------------------------------              
  4250.   def create_help_window
  4251.       @help_window = Window_Help.new
  4252.       @help_window.x = 0
  4253.       @help_window.y = Graphics.height - @help_window.height
  4254.       @help_window.opacity = 0
  4255.   end  
  4256.  
  4257.   #--------------------------------------------------------------------------
  4258.   # ● Create Menu Background
  4259.   #--------------------------------------------------------------------------            
  4260.   def create_menu_background
  4261.       @background = Plane.new
  4262.       @background.bitmap = $game_temp.pre_cache_item_menu[0]
  4263.       @background.z = 0
  4264.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  4265.   end  
  4266.  
  4267.   #--------------------------------------------------------------------------
  4268.   # ● Create Layout
  4269.   #--------------------------------------------------------------------------              
  4270.   def create_layout
  4271.       @layout = Sprite.new
  4272.       @layout.bitmap = $game_temp.pre_cache_item_menu[1]
  4273.       @layout.z = 3
  4274.   end
  4275.  
  4276.   #--------------------------------------------------------------------------
  4277.   # ● Create Particles
  4278.   #--------------------------------------------------------------------------  
  4279.   def create_particles
  4280.       @particles_sprite =[]
  4281.       for i in 0...NUMBER_OF_PARTICLES
  4282.           @particles_sprite.push(Particles_Menu.new(nil))
  4283.       end
  4284.   end
  4285.  
  4286.   #--------------------------------------------------------------------------
  4287.   # ● Create Command
  4288.   #--------------------------------------------------------------------------   
  4289.   def create_command
  4290.       @command_sprites = []
  4291.       index = 0      
  4292.       for i in 0...4
  4293.           @command_sprites.push(Layout_Window_Sprite.new(nil, index) )
  4294.           index += 1
  4295.       end
  4296.   end   
  4297.  
  4298.   #--------------------------------------------------------------------------
  4299.   # ● Create Button
  4300.   #--------------------------------------------------------------------------   
  4301.   def create_button
  4302.       @button_sprites = []
  4303.       index = 0      
  4304.       for i in 0...4
  4305.           @button_sprites.push(Item_Button_Sprite.new(nil, index) )
  4306.           index += 1
  4307.       end
  4308.   end      
  4309.  
  4310.   #--------------------------------------------------------------------------
  4311.   # ● Set Initial Visible
  4312.   #--------------------------------------------------------------------------            
  4313.   def set_initial_visible
  4314.       @item_window.visible = false
  4315.       @item_window_2.visible = false
  4316.       @weapon_window.visible = false
  4317.       @armor_window.visible = false
  4318.       @key_window.visible = false  
  4319.   end  
  4320.  
  4321. end
  4322.  
  4323. #==============================================================================
  4324. # ■ Layout Window Sprite
  4325. #==============================================================================
  4326. class Layout_Window_Sprite < Sprite
  4327.   include MOG_MENU_ITEM
  4328.   attr_accessor :index
  4329.   attr_accessor :position
  4330.  
  4331. #--------------------------------------------------------------------------
  4332. # ● Initialize
  4333. #--------------------------------------------------------------------------                  
  4334.   def initialize(viewport = nil,index)
  4335.       super(viewport)
  4336.       @index = index
  4337.       self.bitmap = Cache.menu_item("Item_Window" + @index.to_s)
  4338.       self.z = 10
  4339.       @org_pos = [COMMAND_POSITION[0],COMMAND_POSITION[1]]
  4340.       @slide_max = @org_pos[0] + 24
  4341.       @center = (WIDTH - self.bitmap.width) - (WIDTH / 2) + (self.bitmap.width / 2)#544
  4342.       @center -= 170#75  # 我的修改 -100
  4343.       @left = -self.bitmap.width
  4344.       @right = WIDTH #544
  4345.       @position = 0
  4346.       @direction = 0
  4347.       @org_pos = [@left ,COMMAND_POSITION[1]]
  4348.       self.x = @org_pos[0]
  4349.       self.y = @org_pos[1]
  4350.       self.visible = false if @index > 0
  4351.   end  
  4352.  
  4353. #--------------------------------------------------------------------------
  4354. # ● Dispose
  4355. #--------------------------------------------------------------------------                     
  4356.   def dispose_sprite
  4357.       self.bitmap.dispose
  4358.   end  
  4359.  
  4360. #--------------------------------------------------------------------------
  4361. # ● Update
  4362. #--------------------------------------------------------------------------                     
  4363.   def update_command(index)
  4364.       slide_speed = 30
  4365.       if @index == index
  4366.          if self.x < @center
  4367.             self.x += slide_speed
  4368.             self.x = @center if self.x >= @center
  4369.          elsif self.x > @center
  4370.             self.x -= slide_speed
  4371.             self.x = @center if self.x <= @center
  4372.          end
  4373.        else   
  4374.           if @direction == -1
  4375.              self.x -= slide_speed if self.x > @left
  4376.           else
  4377.              self.x += slide_speed if self.x < @right
  4378.           end   
  4379.       end  
  4380.   end   
  4381.  
  4382. #--------------------------------------------------------------------------
  4383. # ● New P
  4384. #--------------------------------------------------------------------------  
  4385.   def newp(index,direction)
  4386.       now_command = index
  4387.       if direction == -1
  4388.          pre_command = index + 1
  4389.          pre_command = 0 if pre_command > 3
  4390.       else   
  4391.          pre_command = index - 1
  4392.          pre_command = 3 if pre_command < 0
  4393.         end
  4394.       if index == @index
  4395.          self.visible = true
  4396.          self.x = @right if direction == -1
  4397.          self.x = @left if direction == 1
  4398.       elsif pre_command ==  @index
  4399.          self.visible = true
  4400.       else   
  4401.          self.visible = false
  4402.       end   
  4403.       @direction = direction
  4404.   end
  4405.  
  4406. end
  4407.  
  4408. #==============================================================================
  4409. # ■ Item Button Sprite
  4410. #==============================================================================
  4411. class Item_Button_Sprite < Sprite
  4412.   include MOG_MENU_ITEM
  4413.   attr_accessor :index
  4414.  
  4415. #--------------------------------------------------------------------------
  4416. # ● Initialize
  4417. #--------------------------------------------------------------------------                  
  4418.   def initialize(viewport = nil,index)
  4419.       super(viewport)
  4420.       @index = index
  4421.       self.bitmap = Cache.menu_item("Button" + @index.to_s)
  4422.       self.z = 12
  4423.       self.ox = self.bitmap.width / 2
  4424.       self.oy = self.bitmap.height / 2
  4425.       @org_pos = [(BUTTON_SPACE * @index) + BUTTON_POSITION[0],BUTTON_POSITION[1]]
  4426.       @slide_max = @org_pos[1] + 24
  4427.       @next_pos = [@org_pos[0],@org_pos[1]]
  4428.       self.x = @org_pos[0]
  4429.       self.y = @org_pos[1] - 128 - (128 * @index)
  4430.       @zoom_duration = [0,0,false]
  4431.       @active = false
  4432.   end  
  4433.  
  4434. #--------------------------------------------------------------------------
  4435. # ● Dispose
  4436. #--------------------------------------------------------------------------                     
  4437.   def dispose_sprite
  4438.       self.bitmap.dispose
  4439.   end  
  4440.  
  4441. #--------------------------------------------------------------------------
  4442. # ● Update
  4443. #--------------------------------------------------------------------------                     
  4444.   def update_command(index)
  4445.       if @index == index
  4446.         # self.y += 2
  4447.         # self.y = @slide_max if self.y > @slide_max
  4448.          @next_pos[1] =@slide_max
  4449.          self.opacity += 15
  4450.          @active = true
  4451.       else
  4452.         # self.y -= 2
  4453.         # self.y = @org_pos[1] if self.y < @org_pos[1]
  4454.          @next_pos[1] = @org_pos[1]
  4455.         self.opacity -= 15 if self.opacity > 160
  4456.          @active = false
  4457.       end
  4458.       update_slide(1,self.y,@next_pos[1])
  4459.       update_zoom
  4460.   end   
  4461.  
  4462.  
  4463. #--------------------------------------------------------------------------
  4464. # ● Update Slide
  4465. #--------------------------------------------------------------------------                       
  4466.   def update_slide(type,cp,np)
  4467.       sp = 3 + ((cp - np).abs / 10)
  4468.       if cp > np
  4469.          cp -= sp
  4470.          cp = np if cp < np
  4471.       elsif cp < np
  4472.          cp += sp
  4473.          cp = np if cp > np
  4474.       end     
  4475.       self.x = cp if type == 0
  4476.       self.y = cp if type == 1
  4477.   end  
  4478.  
  4479. #--------------------------------------------------------------------------
  4480. # ● Update Zoom
  4481. #--------------------------------------------------------------------------                       
  4482.   def update_zoom
  4483.       if @active
  4484.          if !@zoom_duration[2]
  4485.             update_zoom_in
  4486.             @zoom_duration = [0,0,true] if self.zoom_x == 1.00  
  4487.          else  
  4488.             update_zoom_effect
  4489.          end
  4490.       else
  4491.          @zoom_duration[2] = false   
  4492.          update_zoom_in
  4493.       end  
  4494.   end   
  4495.  
  4496. #--------------------------------------------------------------------------
  4497. # ● Update Zoom Out
  4498. #--------------------------------------------------------------------------                        
  4499.   def update_zoom_out
  4500.       return if self.zoom_x == 1.00
  4501.       self.zoom_x += 0.03
  4502.       self.zoom_y += 0.03
  4503.       if self.zoom_x >= 1.00
  4504.             self.zoom_x = 1.00
  4505.             self.zoom_y = 1.00
  4506.       end   
  4507.    end   
  4508.  
  4509. #--------------------------------------------------------------------------
  4510. # ● Update Zoom In
  4511. #--------------------------------------------------------------------------                           
  4512.   def update_zoom_in
  4513.       return if self.zoom_x == 1.00
  4514.       self.zoom_x -= 0.03
  4515.       self.zoom_y -= 0.03
  4516.       if self.zoom_x <= 1.00
  4517.          self.zoom_x = 1.00
  4518.          self.zoom_y = 1.00
  4519.       end   
  4520.   end      
  4521.  
  4522. #--------------------------------------------------------------------------
  4523. # ● Update Zoom_effect
  4524. #--------------------------------------------------------------------------                        
  4525. def update_zoom_effect
  4526.      @zoom_duration[0] += 1
  4527.      return if @zoom_duration[0] < 1
  4528.      @zoom_duration[0] = 0
  4529.      @zoom_duration[1] += 1
  4530.      case @zoom_duration[1]
  4531.           when 1..30
  4532.              self.zoom_x += 0.005
  4533.              self.zoom_y += 0.005                 
  4534.           when 31..60
  4535.              self.zoom_x -= 0.005
  4536.              self.zoom_y -= 0.005           
  4537.           when 61..999  
  4538.           @zoom_duration[1] = 0
  4539.           self.zoom_x = 1.00
  4540.           self.zoom_y = 1.00
  4541.      end
  4542. end      
  4543.  
  4544. end
  4545.  
  4546. #==============================================================================
  4547. # ■ Scene_Item
  4548. #==============================================================================
  4549. class Scene_Item
  4550.  
  4551.   #--------------------------------------------------------------------------
  4552.   # ● Execute Dispose
  4553.   #--------------------------------------------------------------------------        
  4554.   def execute_dispose
  4555.       Graphics.freeze
  4556.       dispose_background
  4557.       dispose_layout
  4558.       dispose_particles
  4559.       dispose_command_sprites
  4560.       dispose_button_sprites
  4561.       dispose_windows
  4562.       dispose_members_status
  4563.   end
  4564.  
  4565.   #--------------------------------------------------------------------------
  4566.   # ● Dispose Background
  4567.   #--------------------------------------------------------------------------  
  4568.   def dispose_background
  4569.       return if @background == nil
  4570.       @background.dispose
  4571.       @background = nil
  4572.   end
  4573.  
  4574.   #--------------------------------------------------------------------------
  4575.   # ● Dispose Layout
  4576.   #--------------------------------------------------------------------------               
  4577.   def dispose_layout
  4578.       return if @layout == nil
  4579.       @layout.dispose
  4580.       @layout = nil
  4581.   end  
  4582.  
  4583. #--------------------------------------------------------------------------
  4584. # ● Dispose Particles
  4585. #--------------------------------------------------------------------------   
  4586. def dispose_particles
  4587.      return if @particles_sprite == nil
  4588.      @particles_sprite.each {|sprite| sprite.dispose }
  4589. end
  4590.  
  4591.   #--------------------------------------------------------------------------
  4592.   # ● Dispose Command Sprites
  4593.   #--------------------------------------------------------------------------     
  4594.   def dispose_command_sprites
  4595.       return if @command_sprites == nil
  4596.       @command_sprites.each {|sprite| sprite.dispose_sprite }
  4597.       @command_sprites = nil
  4598.   end   
  4599.  
  4600.   #--------------------------------------------------------------------------
  4601.   # ● Dispose Button Sprites
  4602.   #--------------------------------------------------------------------------     
  4603.   def dispose_button_sprites
  4604.       return if @button_sprites == nil
  4605.       @button_sprites.each {|sprite| sprite.dispose_sprite }
  4606.       @button_sprites = nil
  4607.   end   
  4608.  
  4609.   #--------------------------------------------------------------------------
  4610.   # ● Dispose Members Status
  4611.   #--------------------------------------------------------------------------            
  4612.   def dispose_members_status
  4613.       return if @members_status == nil
  4614.       @members_status.each {|sprite| sprite.dispose }
  4615.   end  
  4616.  
  4617.   #--------------------------------------------------------------------------
  4618.   # ● Dispose Winndows
  4619.   #--------------------------------------------------------------------------         
  4620.   def dispose_windows
  4621.       return if @item_window == nil
  4622.       @item_window.dispose
  4623.       @item_window_2.dispose
  4624.       @weapon_window.dispose
  4625.       @armor_window.dispose
  4626.       @key_window.dispose
  4627.       @actor_window.dispose
  4628.       @actor_status.dispose
  4629.       @help_window.dispose
  4630.   end  
  4631.  
  4632. end
  4633.  
  4634. #==============================================================================
  4635. # ■ Scene_Item
  4636. #==============================================================================
  4637. class Scene_Item
  4638.  
  4639.   #--------------------------------------------------------------------------
  4640.   # ● Update Sprites
  4641.   #--------------------------------------------------------------------------         
  4642.   def update_sprites   
  4643.       update_background
  4644.       update_particles
  4645.       update_command_sprites
  4646.       update_button_sprites
  4647.       update_windows
  4648.       update_members_status
  4649.   end
  4650.  
  4651.   #--------------------------------------------------------------------------
  4652.   # ● Update Members Status
  4653.   #--------------------------------------------------------------------------            
  4654.   def update_members_status
  4655.       @members_status.each {|sprite| sprite.update(@actor_window.active,@actor_window.index) }
  4656.   end
  4657.  
  4658.   #--------------------------------------------------------------------------
  4659.   # ● Update Background
  4660.   #--------------------------------------------------------------------------              
  4661.   def update_background
  4662.       return if @background == nil
  4663.       @background.ox += @background_scroll[0]
  4664.       @background.oy += @background_scroll[1]
  4665.   end   
  4666.  
  4667.   #--------------------------------------------------------------------------
  4668.   # ● Update Particles
  4669.   #--------------------------------------------------------------------------  
  4670.   def update_particles
  4671.       return if @particles_sprite == nil
  4672.       @particles_sprite.each {|sprite| sprite.update }
  4673.   end
  4674.  
  4675.   #--------------------------------------------------------------------------
  4676.   # ● Update Command Sprites
  4677.   #--------------------------------------------------------------------------     
  4678.   def update_command_sprites
  4679.       return if @command_sprites == nil
  4680.       for i in @command_sprites
  4681.           i.update_command(@command_index)
  4682.           if i.index == 0
  4683.              @item_window.x = i.x
  4684.              @item_window.visible = i.visible
  4685.              @item_window_2.x = i.x
  4686.              @item_window_2.visible = i.visible            
  4687.            elsif i.index == 1
  4688.              @weapon_window.x = i.x
  4689.              @weapon_window.visible = i.visible            
  4690.            elsif i.index == 2
  4691.              @armor_window.x = i.x
  4692.              @armor_window.visible = i.visible
  4693.            elsif i.index == 3
  4694.              @key_window.x = i.x
  4695.              @key_window.visible = i.visible               
  4696.          end
  4697.       end      
  4698.   end   
  4699.  
  4700.   #--------------------------------------------------------------------------
  4701.   # ● Update Button Sprites
  4702.   #--------------------------------------------------------------------------     
  4703.   def update_button_sprites
  4704.       return if @button_sprites == nil
  4705.       @button_sprites.each {|sprite| sprite.update_command(@command_index) }
  4706.   end     
  4707.  
  4708.   #--------------------------------------------------------------------------
  4709.   # ● Update Winndow
  4710.   #--------------------------------------------------------------------------      
  4711.   def update_windows
  4712.       return if @item_window == nil
  4713.       @item_window_2.index = @item_window.index
  4714.       @item_window.update
  4715.       @weapon_window.update   
  4716.       @armor_window.update
  4717.       @key_window.update         
  4718.       @actor_window.update      
  4719.       update_actor_window_slide
  4720.       update_actor_window2_slide
  4721.   end
  4722.  
  4723.   #--------------------------------------------------------------------------
  4724.   # ● Update Actor Window Slide
  4725.   #--------------------------------------------------------------------------  
  4726.   def update_actor_window_slide
  4727.       if @actor_window.active
  4728.          if @actor_window.x < @actor_window_slide_range[0]
  4729.             @actor_window.x += 15
  4730.             @actor_window.contents_opacity += 23
  4731.             if @actor_window.x >= @actor_window_slide_range[0]
  4732.                @actor_window.x = @actor_window_slide_range[0]
  4733.                @actor_window.contents_opacity = 255
  4734.             end  
  4735.          end  
  4736.       else         
  4737.          if @actor_window.x >= @actor_window_slide_range[1]
  4738.             @actor_window.x -= 15
  4739.             @actor_window.contents_opacity -= 3
  4740.             if @actor_window.x <= @actor_window_slide_range[1]
  4741.                @actor_window.x = @actor_window_slide_range[1]
  4742.                @actor_window.contents_opacity = 0
  4743.             end         
  4744.          end
  4745.       end
  4746.   end   
  4747.  
  4748.   #--------------------------------------------------------------------------
  4749.   # ● Update Actor Window Slide
  4750.   #--------------------------------------------------------------------------  
  4751.   def update_actor_window2_slide
  4752.       @actor_status.update(@actor_window.active,@actor)
  4753.   end   
  4754.  
  4755. end
  4756.  
  4757. #==============================================================================
  4758. # ■ Scene_Item
  4759. #==============================================================================
  4760. class Scene_Item
  4761.  
  4762.   #--------------------------------------------------------------------------
  4763.   # ● Update
  4764.   #--------------------------------------------------------------------------      
  4765.   def update
  4766.       update_command   
  4767.       update_sprites
  4768.   end
  4769.  
  4770. end
  4771.  
  4772. #==============================================================================
  4773. # ■ Scene_Item
  4774. #==============================================================================
  4775. class Scene_Item
  4776.  
  4777.   #--------------------------------------------------------------------------
  4778.   # ● Update Command
  4779.   #--------------------------------------------------------------------------      
  4780.   def update_command
  4781.       if @actor_window.active
  4782.          update_target_select         
  4783.       else
  4784.          update_main_command
  4785.          update_active_window
  4786.       end  
  4787.   end
  4788.  
  4789.   #--------------------------------------------------------------------------
  4790.   # ● Update Active Window
  4791.   #--------------------------------------------------------------------------        
  4792.   def update_active_window
  4793.       @item_window_2.active = false
  4794.       if @command_index == 0
  4795.          @item_window.active = true
  4796.          @weapon_window.active = false
  4797.          @armor_window.active = false
  4798.          @key_window.active = false
  4799.       elsif @command_index == 1           
  4800.          @item_window.active = false
  4801.          @weapon_window.active = true
  4802.          @armor_window.active = false
  4803.          @key_window.active = false
  4804.       elsif @command_index == 2   
  4805.          @item_window.active = false
  4806.          @weapon_window.active = false
  4807.          @armor_window.active = true
  4808.          @key_window.active = false
  4809.       elsif @command_index == 3
  4810.          @item_window.active = false
  4811.          @weapon_window.active = false
  4812.          @armor_window.active = false
  4813.          @key_window.active = true
  4814.       end         
  4815.   end
  4816.  
  4817.   #--------------------------------------------------------------------------
  4818.   # ● Update Main Command
  4819.   #--------------------------------------------------------------------------        
  4820.   def update_main_command
  4821.       @wait_time -= 1 if @wait_time > 0
  4822.       if Input.trigger?(:LEFT)
  4823.          move_command_index(-1)
  4824.       elsif Input.trigger?(:RIGHT)
  4825.          move_command_index(1)
  4826.       elsif Input.trigger?(:B)
  4827.          return_scene
  4828.       end  
  4829.   end
  4830.  
  4831.   #--------------------------------------------------------------------------
  4832.   # ● Return Scene
  4833.   #--------------------------------------------------------------------------         
  4834.   def return_scene
  4835.       Sound.play_cancel
  4836.       SceneManager.return
  4837.   end
  4838.  
  4839.   #--------------------------------------------------------------------------
  4840.   # ● Cancel_Selection
  4841.   #--------------------------------------------------------------------------         
  4842.   def cancel_selection
  4843.       Sound.play_cancel
  4844.       @phase = 0
  4845.   end
  4846.  
  4847.   #--------------------------------------------------------------------------
  4848.   # ● Update Main Command
  4849.   #--------------------------------------------------------------------------   
  4850.   def move_command_index(value)
  4851.       return if @wait_time > 0
  4852.       @wait_time = 7
  4853.       pre_index = @command_index
  4854.       @command_index += value
  4855.       @command_index = 0 if @command_index > 3
  4856.       @command_index = 3 if @command_index < 0
  4857.       for i in @command_sprites
  4858.           i.newp(@command_index,value)
  4859.       end         
  4860.       Sound.play_cursor
  4861.   end      
  4862.  
  4863.   #--------------------------------------------------------------------------
  4864.   # ● ON Category OK
  4865.   #--------------------------------------------------------------------------
  4866.   def on_category_ok
  4867.       if @command_index == 0
  4868.          @item_window.activate
  4869.          @item_window.select_last
  4870.       elsif @command_index == 1   
  4871.          @weapon_window.activate
  4872.          @weapon_window.select_last         
  4873.       elsif @command_index == 2   
  4874.          @armor_window.activate
  4875.          @armor_window.select_last
  4876.       elsif @command_index == 3   
  4877.          @key_window.activate
  4878.          @key_window.select_last
  4879.       end
  4880.       refresh_actor_status  
  4881.   end
  4882.  
  4883.   #--------------------------------------------------------------------------
  4884.   # ● ON Item OK
  4885.   #--------------------------------------------------------------------------
  4886.   def on_item_ok
  4887.       $game_party.last_item.object = item
  4888.       determine_item
  4889.   end
  4890.  
  4891.   #--------------------------------------------------------------------------
  4892.   # ● ON Item Cancel
  4893.   #--------------------------------------------------------------------------
  4894.   def on_item_cancel
  4895.      @item_window.unselect
  4896.   end
  4897.  
  4898.   #--------------------------------------------------------------------------
  4899.   # ● Play SE For Item
  4900.   #--------------------------------------------------------------------------
  4901.   def play_se_for_item
  4902.       Sound.play_use_item
  4903.   end  
  4904.  
  4905.   #--------------------------------------------------------------------------
  4906.   # ● Item
  4907.   #--------------------------------------------------------------------------
  4908.   def item
  4909.       if @command_index == 0
  4910.          @item_window.item
  4911.       elsif @command_index == 1   
  4912.          @weapon_window.item   
  4913.       elsif @command_index == 2   
  4914.          @armor_window.item
  4915.       elsif @command_index == 3   
  4916.          @key_window.item         
  4917.       end        
  4918.   end
  4919.  
  4920.   #--------------------------------------------------------------------------
  4921.   # ● User
  4922.   #--------------------------------------------------------------------------
  4923.   def user
  4924.       $game_party.movable_members.max_by {|member| member.pha }
  4925.   end
  4926.  
  4927.   #--------------------------------------------------------------------------
  4928.   # ● Cursor Left
  4929.   #--------------------------------------------------------------------------
  4930.   def cursor_left?
  4931.       @item_window.index % 2 == 0
  4932.   end
  4933.  
  4934.   #--------------------------------------------------------------------------
  4935.   # ● Show Sub Window
  4936.   #--------------------------------------------------------------------------
  4937.   def show_sub_window(window)
  4938.     window.show.activate
  4939.   end
  4940.  
  4941.   #--------------------------------------------------------------------------
  4942.   # ● Hide Sub Window
  4943.   #--------------------------------------------------------------------------
  4944.   def hide_sub_window(window)
  4945.       window.deactivate
  4946.       activate_item_window
  4947.   end
  4948.  
  4949.   #--------------------------------------------------------------------------
  4950.   # ● ON Actor OK
  4951.   #--------------------------------------------------------------------------
  4952.   def on_actor_ok
  4953.       if item_usable?
  4954.          use_item
  4955.          refresh_window
  4956.       else
  4957.         Sound.play_buzzer
  4958.       end
  4959.   end
  4960.  
  4961.   #--------------------------------------------------------------------------
  4962.   # ● Refresh Window
  4963.   #--------------------------------------------------------------------------  
  4964.   def refresh_window
  4965.       if @command_index == 0
  4966.          old_item = @item_window.item
  4967.          @item_window.refresh
  4968. #         set_actor_for_members_menu
  4969.          if @item_window.item  == nil
  4970.             @item_window.index -= 1
  4971.             @item_window.index = 0 if @item_window.index < 0
  4972.             @item_window.update
  4973.          end
  4974.          if old_item != @item_window.item
  4975.             on_actor_cancel
  4976.             cancel_selection
  4977.             @item_window_2.refresh
  4978.             @item_window.update_help
  4979.          end
  4980.       elsif @command_index == 1   
  4981.          @weapon_window.refresh
  4982.       elsif @command_index == 2   
  4983.          @armor_window.refresh
  4984.       elsif @command_index == 3   
  4985.          @key_window.refresh      
  4986.       end
  4987.   end
  4988.  
  4989.   #--------------------------------------------------------------------------
  4990.   # ● Set Actor for Members Menu
  4991.   #--------------------------------------------------------------------------   
  4992.   def set_actor_for_members_menu
  4993.       index = 0
  4994.       for actor in $game_party.members
  4995.           @members_status[index].set_actor(actor)
  4996.           index += 1
  4997.       end  
  4998.   end
  4999.  
  5000.   #--------------------------------------------------------------------------
  5001.   # ● ON Actor Cancel
  5002.   #--------------------------------------------------------------------------
  5003.   def on_actor_cancel
  5004.       hide_sub_window(@actor_window)
  5005.   end
  5006.  
  5007.   #--------------------------------------------------------------------------
  5008.   # ● Determine Item
  5009.   #--------------------------------------------------------------------------
  5010.   def determine_item
  5011.       if item.for_friend?
  5012.          show_sub_window(@actor_window)
  5013.          @actor_window.select_for_item(item)
  5014.          $game_temp.item_scope = @item_window.item.scope rescue nil
  5015.       else
  5016.          use_item
  5017.          activate_item_window
  5018.       end
  5019.   end
  5020.  
  5021.   #--------------------------------------------------------------------------
  5022.   # ● Activate Item Window
  5023.   #--------------------------------------------------------------------------
  5024.   def activate_item_window
  5025.       if @command_index == 0
  5026.          @item_window.refresh
  5027.          @item_window.activate
  5028.       elsif @command_index == 1   
  5029.          @weapon_window.refresh
  5030.          @weapon_window.activate
  5031.       elsif @command_index == 2   
  5032.          @armor_window.refresh
  5033.          @armor_window.activate
  5034.       elsif @command_index == 3   
  5035.          @key_window.refresh     
  5036.          @key_window.activate
  5037.       end   
  5038.   end
  5039.  
  5040.   #--------------------------------------------------------------------------
  5041.   # ● Item Target Actors
  5042.   #--------------------------------------------------------------------------
  5043.   def item_target_actors
  5044.       if !item.for_friend?
  5045.         []
  5046.       elsif item.for_all?
  5047.         $game_party.members
  5048.       else
  5049.         [$game_party.members[@actor_window.index]]
  5050.       end
  5051.   end
  5052.  
  5053.   #--------------------------------------------------------------------------
  5054.   # ● Item Usable?
  5055.   #--------------------------------------------------------------------------
  5056.   def item_usable?
  5057.       user.usable?(item) && item_effects_valid?
  5058.   end
  5059.  
  5060.   #--------------------------------------------------------------------------
  5061.   # ● Item Effects Valid?
  5062.   #--------------------------------------------------------------------------
  5063.   def item_effects_valid?
  5064.       item_target_actors.any? do |target|
  5065.            target.item_test(user, item)
  5066.       end
  5067.   end
  5068.  
  5069.   #--------------------------------------------------------------------------
  5070.   # ● Use Item to Actors
  5071.   #--------------------------------------------------------------------------
  5072.   def use_item_to_actors
  5073.       item_target_actors.each do |target|
  5074.         item.repeats.times { target.item_apply(user, item) }
  5075.       end
  5076.   end
  5077.  
  5078.   #--------------------------------------------------------------------------
  5079.   # ● Use Item
  5080.   #--------------------------------------------------------------------------
  5081.   def use_item
  5082.       play_se_for_item
  5083.       user.use_item(item)
  5084.       use_item_to_actors
  5085.       check_common_event
  5086.       check_gameover
  5087.       @actor_window.refresh
  5088.   end
  5089.  
  5090.   #--------------------------------------------------------------------------
  5091.   # ● Check Common Event
  5092.   #--------------------------------------------------------------------------
  5093.   def check_common_event
  5094.       SceneManager.goto(Scene_Map) if $game_temp.common_event_reserved?
  5095.   end
  5096.  
  5097.   #--------------------------------------------------------------------------
  5098.   # ● Update Target Select
  5099.   #--------------------------------------------------------------------------  
  5100.   def update_target_select
  5101.       @actor = $game_party.members[@actor_window.index]
  5102.       if Input.trigger?(:B)         
  5103.          cancel_selection
  5104.       end      
  5105.   end  
  5106.  
  5107. end
  5108.  
  5109.  
  5110. #==============================================================================
  5111. # ■ Game_Temp
  5112. #==============================================================================
  5113. class Game_Temp
  5114.  
  5115.   #--------------------------------------------------------------------------
  5116.   # ● Execute Pre Cache Skill Menu
  5117.   #--------------------------------------------------------------------------   
  5118.   def execute_pre_cache_skill_menu
  5119.       @pre_cache_skill_menu = []
  5120.       @pre_cache_skill_menu.push(Cache.menu_skill("Background"))
  5121.       @pre_cache_skill_menu.push(Cache.menu_skill("Layout"))
  5122.       @pre_cache_skill_menu.push(Cache.menu_skill("Type_Layout"))
  5123.       @pre_cache_skill_menu.push(Cache.menu_skill("List_Layout"))
  5124.       @pre_cache_skill_menu.push(Cache.menu_skill("Actor_Layout"))
  5125.  
  5126.   end   
  5127.  
  5128. end
  5129.  
  5130. #==============================================================================
  5131. # ■ Scene_Skill
  5132. #==============================================================================
  5133. class Scene_Skill
  5134.   include MOG_MENU_SKILL
  5135.   include MOG_MENU_BASE
  5136.  
  5137.   #--------------------------------------------------------------------------
  5138.   # ● Main
  5139.   #--------------------------------------------------------------------------        
  5140.   def main
  5141.       execute_setup
  5142.       execute_loop
  5143.       execute_dispose
  5144.   end  
  5145.  
  5146.   #--------------------------------------------------------------------------
  5147.   # ● Execute Setup
  5148.   #--------------------------------------------------------------------------        
  5149.   def execute_setup
  5150.       @actor = $game_temp.actor_menu_temp
  5151.       @index_max = (@actor.added_skill_types.size - 1)
  5152.       @index_max = 0 if @index_max < 0      
  5153.       @phase = 0
  5154.       @press_time = 0
  5155.       @press_lag = 0
  5156.       @scene_active = @actor.added_skill_types.size > 0 ? true : false
  5157.       create_sprites
  5158.   end
  5159.  
  5160.   #--------------------------------------------------------------------------
  5161.   # ● Execute Lopp
  5162.   #--------------------------------------------------------------------------        
  5163.   def execute_loop
  5164.       Graphics.transition(10)
  5165.       loop do
  5166.          Input.update
  5167.          update
  5168.          Graphics.update
  5169.          break if SceneManager.scene != self
  5170.       end
  5171.   end
  5172.  
  5173. end
  5174.  
  5175. #==============================================================================
  5176. # ■ Actor Skill Status
  5177. #==============================================================================
  5178. class Actor_Skill_Status
  5179.   include MOG_ACTOR_SKILL_STATUS
  5180.  
  5181.   #--------------------------------------------------------------------------
  5182.   # ● Initialize
  5183.   #--------------------------------------------------------------------------
  5184.   def initialize(actor)
  5185.       @actor = actor
  5186.       set_old_parameter
  5187.       create_sprites
  5188.   end
  5189.  
  5190.   #--------------------------------------------------------------------------
  5191.   # ● Create Sprites
  5192.   #--------------------------------------------------------------------------   
  5193.   def create_sprites
  5194.       @meter_image = $game_temp.pre_cache_actor_menu[6]
  5195.       @meter_cw = @meter_image.width
  5196.       @meter_ch = @meter_image.height / 2   
  5197.       @parameter_number = $game_temp.pre_cache_actor_menu[2]
  5198.       @parameter_cw = @parameter_number.width / 10
  5199.       @parameter_ch = @parameter_number.height
  5200.       @opac = 0
  5201.       create_layout
  5202.       create_parameter
  5203.       create_face
  5204.       create_name
  5205.       create_hp_meter
  5206.       create_mp_meter
  5207.       create_states
  5208.       set_position(0,-@layout.bitmap.height - 48)
  5209.   end
  5210.  
  5211.   #--------------------------------------------------------------------------
  5212.   # ● Set Old Parameter
  5213.   #--------------------------------------------------------------------------  
  5214.   def set_old_parameter
  5215.       @par = [] if @par == nil
  5216.       @par.clear
  5217.       @par = [@actor.hp,@actor.mhp,@actor.mp,@actor.mmp,@actor.level]
  5218.   end   
  5219.  
  5220.   #--------------------------------------------------------------------------
  5221.   # ● Dispose
  5222.   #--------------------------------------------------------------------------  
  5223.   def dispose
  5224.       dispose_layout
  5225.       dispose_parameter
  5226.       dispose_face
  5227.       dispose_name
  5228.       dispose_hp_meter
  5229.       dispose_mp_meter
  5230.       dispose_states
  5231.   end
  5232.  
  5233.   #--------------------------------------------------------------------------
  5234.   # ● Dispose Layout
  5235.   #--------------------------------------------------------------------------   
  5236.   def dispose_layout
  5237.       @layout.dispose
  5238.   end
  5239.  
  5240.   #--------------------------------------------------------------------------
  5241.   # ● Dispose Parameter
  5242.   #--------------------------------------------------------------------------      
  5243.   def dispose_parameter
  5244.       @parameter.bitmap.dispose
  5245.       @parameter.dispose
  5246.   end  
  5247.  
  5248.   #--------------------------------------------------------------------------
  5249.   # ● Dispose Face
  5250.   #--------------------------------------------------------------------------   
  5251.   def dispose_face
  5252.       @face.bitmap.dispose if @face.bitmap != nil
  5253.       @face.dispose
  5254.   end   
  5255.  
  5256.   #--------------------------------------------------------------------------
  5257.   # ● Dispose HP Meter
  5258.   #--------------------------------------------------------------------------      
  5259.   def dispose_hp_meter
  5260.       @hp_meter.bitmap.dispose
  5261.       @hp_meter.dispose
  5262.   end
  5263.  
  5264.   #--------------------------------------------------------------------------
  5265.   # ● Dispose MP Meter
  5266.   #--------------------------------------------------------------------------      
  5267.   def dispose_mp_meter
  5268.       @mp_meter.bitmap.dispose
  5269.       @mp_meter.dispose
  5270.   end  
  5271.  
  5272.   #--------------------------------------------------------------------------
  5273.   # ● Dispose Name
  5274.   #--------------------------------------------------------------------------        
  5275.   def dispose_name
  5276.       @name.bitmap.dispose
  5277.       @name.dispose
  5278.   end  
  5279.  
  5280.   #--------------------------------------------------------------------------
  5281.   # ● Dispose States
  5282.   #--------------------------------------------------------------------------            
  5283.    def dispose_states
  5284.        return if @status == nil
  5285.        @status.bitmap.dispose
  5286.        @status.dispose
  5287.        if @actor_status != nil
  5288.           @actor_status.dispose
  5289.           @actor_status = nil
  5290.        end   
  5291.     end   
  5292.  
  5293.   #--------------------------------------------------------------------------
  5294.   # ● Create Layout
  5295.   #--------------------------------------------------------------------------
  5296.   def create_layout
  5297.       @layout = Sprite.new
  5298.       @layout.bitmap = $game_temp.pre_cache_skill_menu[4]
  5299.       @org_pos = [LAYOUT_POSITION[0],LAYOUT_POSITION[1]]
  5300.       @layout.x = @org_pos[0]
  5301.       @layout.y = @org_pos[1]
  5302.       @layout.z = 10
  5303.       #@layout.opacity = 0
  5304.   end
  5305.  
  5306.   #--------------------------------------------------------------------------
  5307.   # ● Create Parameter
  5308.   #--------------------------------------------------------------------------
  5309.   def create_parameter
  5310.       @parameter = Sprite.new
  5311.       @parameter.bitmap = Bitmap.new(@layout.bitmap.width,@layout.bitmap.height)
  5312.       @org_pos_par = [@org_pos[0] + PAR_POSITION[0],
  5313.                       @org_pos[1] + PAR_POSITION[1]]
  5314.       @parameter.x = @org_pos_par[0]
  5315.       @parameter.y = @org_pos_par[1]
  5316.       @parameter.z = 12
  5317. #      @parameter.opacity = 0
  5318.       refresh_parameter
  5319.   end  
  5320.  
  5321.   #--------------------------------------------------------------------------
  5322.   # ● Create HP Meter
  5323.   #--------------------------------------------------------------------------  
  5324.   def create_hp_meter
  5325.       @hp_meter_old = [-1,-1]
  5326.       @hp_meter = Sprite.new
  5327.       @hp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  5328.       @org_pos_hp = [@org_pos[0] + HP_METER_POSITION[0],
  5329.                      @org_pos[1] + HP_METER_POSITION[1]]      
  5330.       @hp_meter.x = @org_pos_hp[0]
  5331.       @hp_meter.y = @org_pos_hp[1]
  5332.       @hp_meter.z = 11
  5333.   end  
  5334.  
  5335.   #--------------------------------------------------------------------------
  5336.   # ● Refresh HP Meter
  5337.   #--------------------------------------------------------------------------   
  5338.   def refresh_hp_meter
  5339.       @hp_meter_old[0] = @actor.hp
  5340.       @hp_meter_old[1] = @actor.mhp
  5341.       @hp_meter.bitmap.clear
  5342.       width_range = @meter_cw * @actor.hp / @actor.mhp
  5343.       m_rect = Rect.new(0,0,width_range,@meter_ch)
  5344.       @hp_meter.bitmap.blt(0,0,@meter_image,m_rect)
  5345.   end
  5346.  
  5347.   #--------------------------------------------------------------------------
  5348.   # ● Create MP Meter
  5349.   #--------------------------------------------------------------------------  
  5350.   def create_mp_meter
  5351.       @mp_meter_old = [-1,-1]
  5352.       @mp_meter = Sprite.new
  5353.       @mp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  5354.       @org_pos_mp = [@org_pos[0] + MP_METER_POSITION[0],
  5355.                      @org_pos[1] + MP_METER_POSITION[1]]      
  5356.       @mp_meter.x = @org_pos_mp[0]
  5357.       @mp_meter.y = @org_pos_mp[1]
  5358.       @mp_meter.z = 11
  5359.   end  
  5360.  
  5361.   #--------------------------------------------------------------------------
  5362.   # ● Create_States
  5363.   #--------------------------------------------------------------------------      
  5364.   def create_states
  5365.       @status_old = nil
  5366.       @status_flow = [-24,0]   
  5367.       @status = Sprite.new
  5368.       @status.bitmap = Bitmap.new(24,24)
  5369.       @org_pos_states = [@org_pos[0] + STATES_POSITION[0],
  5370.                          @org_pos[1] + STATES_POSITION[1]]      
  5371.       @status.x = @org_pos_states[0] + 1
  5372.       @status.y = @org_pos_states[1]
  5373.       @status.z = 11
  5374.   end      
  5375.  
  5376.   #--------------------------------------------------------------------------
  5377.   # * Refresh States
  5378.   #--------------------------------------------------------------------------        
  5379.   def refresh_states
  5380.       check_icon_image
  5381.       @status_old = @actor.states
  5382.       @status_flow = [0,0]
  5383.       @actor_status.dispose if @actor_status != nil
  5384.       @states_size = @actor.states.size > 0 ? (26 * @actor.states.size) : 24
  5385.       @actor_status = Bitmap.new(@states_size,24)
  5386.       index = 0
  5387.       for i in @actor.states
  5388.          rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
  5389.          @actor_status.blt(26 * index , 0, @icon_image, rect)
  5390.          index += 1
  5391.       end
  5392.   end   
  5393.  
  5394.   #--------------------------------------------------------------------------
  5395.   # * Flow_Status
  5396.   #--------------------------------------------------------------------------         
  5397.   def flow_states
  5398.       return if @actor_status == nil
  5399.       @status.bitmap.clear
  5400.       return if @actor.states.size == 0
  5401.       st_src_rect = Rect.new(@status_flow[0],0, 24,24)
  5402.       @status.bitmap.blt(0,0, @actor_status, st_src_rect)
  5403.       if STATES_SCROLLING_ANIMATION
  5404.          @status_flow[0] += 1
  5405.          @status_flow[0] = -24 if @status_flow[0] >= @states_size + 2
  5406.       else   
  5407.          @status_flow[1] += 1 unless @actor.states.size <= 1
  5408.          if @status_flow[1] > 30
  5409.             @status_flow[1] = 0
  5410.             @status_flow[0] += 26
  5411.             @status_flow[0] = 0 if @status_flow[0] >= (@states_size - 0)
  5412.          end   
  5413.      end   
  5414.   end        
  5415.  
  5416.   #--------------------------------------------------------------------------
  5417.   # * Check Icon Image
  5418.   #--------------------------------------------------------------------------         
  5419.   def check_icon_image
  5420.       if @icon_image == nil or @icon_image.disposed?
  5421.          @icon_image = Cache.system("Iconset")
  5422.       end   
  5423.   end   
  5424.  
  5425.  
  5426.   #--------------------------------------------------------------------------
  5427.   # ● Refresh MP Meter
  5428.   #--------------------------------------------------------------------------   
  5429.   def refresh_mp_meter
  5430.       @mp_meter_old[0] = @actor.mp
  5431.       @mp_meter_old[1] = @actor.mmp
  5432.       @mp_meter.bitmap.clear
  5433.       width_range = @meter_cw * @actor.mp / @actor.mmp rescue nil
  5434.       width_range = 0 if width_range == nil
  5435.       m_rect = Rect.new(0,@meter_ch,width_range,@meter_ch)
  5436.       @mp_meter.bitmap.blt(0,0,@meter_image,m_rect)
  5437.   end  
  5438.  
  5439.   #--------------------------------------------------------------------------
  5440.   # ● Create Face
  5441.   #--------------------------------------------------------------------------   
  5442.   def refresh_parameter
  5443.       set_old_parameter   
  5444.       @parameter.bitmap.clear
  5445.  
  5446.       value = @actor.level
  5447.       x = 115
  5448.       y = 8
  5449.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  5450.  
  5451.       value = @actor.hp
  5452.       x = 218
  5453.       y = 2
  5454.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  5455.  
  5456.       value = @actor.mp
  5457.       x = 225
  5458.       y = 22
  5459.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  5460.  
  5461.   end  
  5462.  
  5463.   #--------------------------------------------------------------------------
  5464.   # ● Refresh Number
  5465.   #--------------------------------------------------------------------------     
  5466.   def refresh_number(sprite,image,value,number_cw,number_ch,x,y)
  5467.       number = value.abs.to_s.split(//)
  5468.       x2 = -number_cw * number.size
  5469.       for i in 0..number.size - 1
  5470.           number_abs = number[i].to_i
  5471.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  5472.           sprite.bitmap.blt(x + x2 + (number_cw  *  i), y, image, nsrc_rect)        
  5473.       end      
  5474.  
  5475.   end
  5476.  
  5477.   #--------------------------------------------------------------------------
  5478.   # ● Create Face
  5479.   #--------------------------------------------------------------------------  
  5480.   def create_face
  5481.       @face = Sprite.new
  5482.       @org_pos_face = [@org_pos[0] + FACE_POSITION[0],
  5483.                        @org_pos[1] + FACE_POSITION[1]]
  5484.       @face.x = @org_pos_face[0]
  5485.       @face.y = @org_pos_face[1]
  5486.       @face.z = 11
  5487.    #   @face.opacity = 0
  5488.       refresh_face
  5489.   end  
  5490.  
  5491.   #--------------------------------------------------------------------------
  5492.   # ● Refresh Face
  5493.   #--------------------------------------------------------------------------   
  5494.   def refresh_face
  5495.       face_name = "Face" + @actor.id.to_s
  5496.       @face.bitmap = Cache.menu(face_name.to_s)
  5497.   end
  5498.  
  5499.   #--------------------------------------------------------------------------
  5500.   # ● Create Name
  5501.   #--------------------------------------------------------------------------   
  5502.   def create_name
  5503.       @name = Sprite.new
  5504.       @name.bitmap = Bitmap.new(140,32)
  5505.       @name.bitmap.font.size = FONT_SIZE
  5506.       @name.bitmap.font.bold = FONT_BOLD
  5507.       @org_pos_name = [@org_pos[0] + NAME_POSITION[0],
  5508.                        @org_pos[1] + NAME_POSITION[1]]
  5509.       @name.x = @org_pos_name[0]
  5510.       @name.y = @org_pos_name[1]
  5511.       @name.z = 11
  5512.      #@name.opacity = 0
  5513.       refresh_name     
  5514.   end  
  5515.  
  5516.   #--------------------------------------------------------------------------
  5517.   # ● Refresh Name
  5518.   #--------------------------------------------------------------------------      
  5519.   def refresh_name
  5520.       @name.bitmap.clear
  5521.       @name.bitmap.draw_text(0,0,140,32,@actor.name.to_s,0)
  5522.   end  
  5523.  
  5524.   #--------------------------------------------------------------------------
  5525.   # ● Set Actor
  5526.   #--------------------------------------------------------------------------        
  5527.   def set_actor(actor)
  5528.       @actor = actor
  5529.   end
  5530.  
  5531.   #--------------------------------------------------------------------------
  5532.   # ● Can Refresh HP Meter
  5533.   #--------------------------------------------------------------------------         
  5534.   def can_refresh_hp_meter?
  5535.       return true if @hp_meter_old[0] != @actor.hp
  5536.       return true if @hp_meter_old[1] != @actor.mhp
  5537.       return false
  5538.   end
  5539.  
  5540.   #--------------------------------------------------------------------------
  5541.   # ● Can Refresh MP Meter
  5542.   #--------------------------------------------------------------------------         
  5543.   def can_refresh_mp_meter?
  5544.       return true if @mp_meter_old[0] != @actor.mp
  5545.       return true if @mp_meter_old[1] != @actor.mmp
  5546.       return false
  5547.   end  
  5548.  
  5549.   #--------------------------------------------------------------------------
  5550.   # ● Can Refresh Parameter
  5551.   #--------------------------------------------------------------------------
  5552.   def can_refresh_parameter?
  5553.       return true if @par[0] != @actor.hp
  5554.       return true if @par[1] != @actor.mhp
  5555.       return true if @par[2] != @actor.mp
  5556.       return true if @par[3] != @actor.mmp
  5557.       return false
  5558.   end
  5559.  
  5560.   #--------------------------------------------------------------------------
  5561.   # ● Update Position
  5562.   #--------------------------------------------------------------------------      
  5563.   def update_position
  5564.       update_slide(0,@layout,@layout.x,@org_pos[0])
  5565.       update_slide(1,@layout,@layout.y,@org_pos[1])
  5566.       update_slide(0,@parameter,@parameter.x,@org_pos_par[0])
  5567.       update_slide(1,@parameter,@parameter.y,@org_pos_par[1])
  5568.       update_slide(0,@hp_meter,@hp_meter.x,@org_pos_hp[0])
  5569.       update_slide(1,@hp_meter,@hp_meter.y,@org_pos_hp[1])  
  5570.       update_slide(0,@mp_meter,@mp_meter.x,@org_pos_mp[0])
  5571.       update_slide(1,@mp_meter,@mp_meter.y,@org_pos_mp[1])        
  5572.       update_slide(0,@face,@face.x,@org_pos_face[0])
  5573.       update_slide(1,@face,@face.y,@org_pos_face[1])        
  5574.       update_slide(0,@name,@name.x,@org_pos_name[0])
  5575.       update_slide(1,@name,@name.y,@org_pos_name[1])      
  5576.       update_slide(0,@status,@status.x,@org_pos_states[0])
  5577.       update_slide(1,@status,@status.y,@org_pos_states[1])         
  5578.   end
  5579.  
  5580. #--------------------------------------------------------------------------
  5581. # ● Update Slide
  5582. #--------------------------------------------------------------------------                       
  5583.   def update_slide(type,sprite,cp,np)
  5584.       sp = 3 + ((cp - np).abs / 10)
  5585.       if cp > np
  5586.          cp -= sp
  5587.          cp = np if cp < np
  5588.       elsif cp < np
  5589.          cp += sp
  5590.          cp = np if cp > np
  5591.       end     
  5592.       sprite.x = cp if type == 0
  5593.       sprite.y = cp if type == 1
  5594.   end   
  5595.  
  5596.   #--------------------------------------------------------------------------
  5597.   # ● Update Opacity
  5598.   #--------------------------------------------------------------------------  
  5599.   def update_opacity
  5600.       @opac += 10
  5601.       @opac = 255 if @opac > 255
  5602.       set_opacity(@opac)
  5603.   end
  5604.  
  5605.   #--------------------------------------------------------------------------
  5606.   # ● Set Opacity
  5607.   #--------------------------------------------------------------------------   
  5608.   def set_opacity(opac)
  5609.       @layout.opacity = opac
  5610.       @layout.opacity = opac
  5611.       @parameter.opacity = opac
  5612.       @parameter.opacity = opac
  5613.       @hp_meter.opacity = opac
  5614.       @hp_meter.opacity = opac
  5615.       @mp_meter.opacity = opac
  5616.       @mp_meter.opacity = opac
  5617.       @face.opacity = opac
  5618.       @face.opacity = opac
  5619.       @name.opacity = opac
  5620.       @name.opacity = opac
  5621.       @status.opacity = opac
  5622.   end   
  5623.  
  5624.   #--------------------------------------------------------------------------
  5625.   # ● Update Position
  5626.   #--------------------------------------------------------------------------      
  5627.   def set_position(pos_x,pos_y)
  5628.       @layout.x = @org_pos[0] + pos_x
  5629.       @layout.y = @org_pos[1] + pos_y
  5630.       @parameter.x = @org_pos_par[0] + pos_x
  5631.       @parameter.y = @org_pos_par[1] + pos_y
  5632.       @hp_meter.x = @org_pos_hp[0] + pos_x
  5633.       @hp_meter.y = @org_pos_hp[1] + pos_y
  5634.       @mp_meter.x = @org_pos_mp[0] + pos_x
  5635.       @mp_meter.y = @org_pos_mp[1] + pos_y
  5636.       @face.x = @org_pos_face[0] + pos_x
  5637.       @face.y = @org_pos_face[1] + pos_y
  5638.       @name.x = @org_pos_name[0] + pos_x
  5639.       @name.y = @org_pos_name[1] + pos_y
  5640.       @status.x = @org_pos_states[0] + pos_x
  5641.       @status.y = @org_pos_states[1] + pos_y
  5642.   end   
  5643.  
  5644.   #--------------------------------------------------------------------------
  5645.   # ● Update
  5646.   #--------------------------------------------------------------------------  
  5647.   def update
  5648.       refresh_hp_meter if can_refresh_hp_meter?
  5649.       refresh_mp_meter if can_refresh_mp_meter?
  5650.       refresh_parameter if can_refresh_parameter?
  5651.       refresh_states if @status_old != @actor.states
  5652.       update_opacity
  5653.       update_position
  5654.       flow_states      
  5655.   end
  5656.  
  5657. end
  5658.  
  5659. #==============================================================================
  5660. # ■ Window_SkillCommand
  5661. #==============================================================================
  5662. class Window_SkillCommand_2 < Window_Command
  5663.  
  5664.   attr_reader   :skill_window
  5665.  
  5666.   #--------------------------------------------------------------------------
  5667.   # ● Initialize
  5668.   #--------------------------------------------------------------------------
  5669.   def initialize(x, y)
  5670.     super(x, y)
  5671.     @actor = nil
  5672.     @index_max = 0
  5673.   end
  5674.  
  5675.   #--------------------------------------------------------------------------
  5676.   # ● Window Width
  5677.   #--------------------------------------------------------------------------
  5678.   def window_width
  5679.     return 140
  5680.   end
  5681.  
  5682.   #--------------------------------------------------------------------------
  5683.   # ● Actor
  5684.   #--------------------------------------------------------------------------
  5685.   def actor=(actor)
  5686.       return if @actor == actor
  5687.       @actor = actor
  5688.       @index_max = (@actor.added_skill_types.size - 1)
  5689.       @index_max = 0 if @index_max < 0
  5690.       refresh
  5691.       select_last
  5692.   end
  5693.  
  5694.   #--------------------------------------------------------------------------
  5695.   # ● Visible Line Number
  5696.   #--------------------------------------------------------------------------
  5697.   def visible_line_number
  5698.       return 5
  5699.   end
  5700.  
  5701.   #--------------------------------------------------------------------------
  5702.   # ● Make Command List
  5703.   #--------------------------------------------------------------------------
  5704.   def make_command_list
  5705.       return unless @actor
  5706.          @actor.added_skill_types.sort.each do |stype_id|
  5707.          name = $data_system.skill_types[stype_id]
  5708.          add_command(name, :skill, true, stype_id)
  5709.       end
  5710.   end
  5711.  
  5712.   #--------------------------------------------------------------------------
  5713.   # ● Update
  5714.   #--------------------------------------------------------------------------
  5715.   def update
  5716.       super
  5717.       @skill_window.stype_id = current_ext if @skill_window
  5718.      # update_index
  5719.   end
  5720.  
  5721.   #--------------------------------------------------------------------------
  5722.   # ● Update
  5723.   #--------------------------------------------------------------------------  
  5724.   def update_index
  5725.       return if @index_max <= 0
  5726.       if Input.trigger?(:RIGHT)
  5727.          add_index(1)
  5728.       elsif Input.trigger?(:LEFT)   
  5729.          add_index(-1)
  5730.       end  
  5731.   end
  5732.  
  5733.   #--------------------------------------------------------------------------
  5734.   # ● Add Index
  5735.   #--------------------------------------------------------------------------   
  5736.   def add_index(value)
  5737.       Sound.play_cursor
  5738.       @index += value
  5739.       @index = 0 if @index > @index_max
  5740.       @index = @index_max if @index < 0
  5741.   end
  5742.  
  5743.   #--------------------------------------------------------------------------
  5744.   # ● Skill Window
  5745.   #--------------------------------------------------------------------------
  5746.   def skill_window=(skill_window)
  5747.       @skill_window = skill_window
  5748.       update
  5749.   end  
  5750.  
  5751.   #--------------------------------------------------------------------------
  5752.   # ● Select Last
  5753.   #--------------------------------------------------------------------------
  5754.   def select_last
  5755.       skill = @actor.last_skill.object
  5756.       if skill
  5757.          select_ext(skill.stype_id)
  5758.       else
  5759.          select(0)
  5760.       end
  5761.   end
  5762.  
  5763. end
  5764.  
  5765. #==============================================================================
  5766. # ■ Window_SkillList
  5767. #==============================================================================
  5768. class Window_SkillList_Menu < Window_Selectable
  5769.  
  5770.   attr_accessor :windows_index
  5771.  
  5772.   #--------------------------------------------------------------------------
  5773.   # ● Initialize
  5774.   #--------------------------------------------------------------------------
  5775.   def initialize(x, y, width, height)
  5776.       super
  5777.       @stype_id = 0
  5778.       @data = []
  5779.       @windows_index = 0
  5780.       self.opacity = 0
  5781.       @actor = nil
  5782.   end
  5783.  
  5784.   #--------------------------------------------------------------------------
  5785.   # ● Actor
  5786.   #--------------------------------------------------------------------------
  5787.   def actor=(actor)
  5788.       return if @actor == actor
  5789.       @actor = actor
  5790.       self.oy = 0
  5791.   end
  5792.  
  5793.   #--------------------------------------------------------------------------
  5794.   # ● Setup
  5795.   #--------------------------------------------------------------------------  
  5796.   def setup(actor,skill_type,index)
  5797.       @actor = actor
  5798.       @stype_id = skill_type
  5799.       @windows_index = index
  5800.       refresh
  5801.   end
  5802.  
  5803.   #--------------------------------------------------------------------------
  5804.   # ● Stype ID
  5805.   #--------------------------------------------------------------------------
  5806.   def stype_id=(stype_id)
  5807.   end
  5808.  
  5809.   #--------------------------------------------------------------------------
  5810.   # ● Col Max
  5811.   #--------------------------------------------------------------------------
  5812.   def col_max
  5813.       return 1
  5814.   end
  5815.  
  5816.   #--------------------------------------------------------------------------
  5817.   # ● Item Max
  5818.   #--------------------------------------------------------------------------
  5819.   def item_max
  5820.       @data ? @data.size : 1
  5821.   end
  5822.  
  5823.   #--------------------------------------------------------------------------
  5824.   # ● Item
  5825.   #--------------------------------------------------------------------------
  5826.   def item
  5827.       @data && index >= 0 ? @data[index] : nil
  5828.   end
  5829.  
  5830.   #--------------------------------------------------------------------------
  5831.   # ● Current Item Enabled
  5832.   #--------------------------------------------------------------------------
  5833.   def current_item_enabled?
  5834.       enable?(@data[index])
  5835.   end
  5836.  
  5837.   #--------------------------------------------------------------------------
  5838.   # ● Include
  5839.   #--------------------------------------------------------------------------
  5840.   def include?(item)
  5841.       item && item.stype_id == @stype_id
  5842.   end
  5843.  
  5844.   #--------------------------------------------------------------------------
  5845.   # ● Enable
  5846.   #--------------------------------------------------------------------------
  5847.   def enable?(item)
  5848.       @actor && @actor.usable?(item)
  5849.   end
  5850.  
  5851.   #--------------------------------------------------------------------------
  5852.   # ● Male Item List
  5853.   #--------------------------------------------------------------------------
  5854.   def make_item_list
  5855.       @data = @actor ? @actor.skills.select {|skill| include?(skill) } : []
  5856.   end
  5857.  
  5858.   #--------------------------------------------------------------------------
  5859.   # ● Select Last
  5860.   #--------------------------------------------------------------------------
  5861.   def select_last
  5862.       select(@data.index(@actor.last_skill.object) || 0)
  5863.   end
  5864.  
  5865.   #--------------------------------------------------------------------------
  5866.   # ● Draw Item
  5867.   #--------------------------------------------------------------------------
  5868.   def draw_item(index)
  5869.       self.contents.font.size = 18
  5870.       self.contents.font.bold = true
  5871.       skill = @data[index]
  5872.       if skill
  5873.          rect = item_rect(index)
  5874.          rect.width -= 4
  5875.          draw_item_name(skill, rect.x, rect.y, enable?(skill),110)
  5876.          draw_skill_cost(rect, skill)
  5877.       end
  5878.   end
  5879.  
  5880.   #--------------------------------------------------------------------------
  5881.   # ● Draw Skill Cost
  5882.   #--------------------------------------------------------------------------
  5883.   def draw_skill_cost(rect, skill)
  5884.       if @actor.skill_tp_cost(skill) > 0
  5885.          change_color(tp_cost_color, enable?(skill))
  5886.          draw_text(rect, @actor.skill_tp_cost(skill), 2)
  5887.       elsif @actor.skill_mp_cost(skill) > 0
  5888.          change_color(mp_cost_color, enable?(skill))
  5889.          draw_text(rect, @actor.skill_mp_cost(skill), 2)
  5890.       end
  5891.   end
  5892.  
  5893.   #--------------------------------------------------------------------------
  5894.   # ● Update Help
  5895.   #--------------------------------------------------------------------------
  5896.   def update_help
  5897.       @help_window.set_item(item)
  5898.   end
  5899.  
  5900.   #--------------------------------------------------------------------------
  5901.   # ● Refresh
  5902.   #--------------------------------------------------------------------------
  5903.   def refresh
  5904.       make_item_list
  5905.       create_contents
  5906.       draw_all_items
  5907.   end
  5908.  
  5909. end
  5910.  
  5911. #==============================================================================
  5912. # ■ Scene Skill
  5913. #==============================================================================
  5914. class Scene_Skill
  5915.  
  5916.   #--------------------------------------------------------------------------
  5917.   # ● Create Sprites
  5918.   #--------------------------------------------------------------------------         
  5919.   def create_sprites
  5920.       create_menu_background
  5921.       create_layout
  5922.       create_particles
  5923.       create_actor_status
  5924.       create_help_window
  5925.       create_command_window
  5926.       create_type_layout
  5927.       create_item_window
  5928.       create_list_layout
  5929.       create_actor_window
  5930.       create_type_name
  5931.       @command_window.active = true        
  5932.   end
  5933.  
  5934.   #--------------------------------------------------------------------------
  5935.   # ● Create Menu Background
  5936.   #--------------------------------------------------------------------------            
  5937.   def create_menu_background
  5938.       @background = Plane.new
  5939.       @background.bitmap = $game_temp.pre_cache_skill_menu[0]
  5940.       @background.z = 0
  5941.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  5942.   end  
  5943.  
  5944.   #--------------------------------------------------------------------------
  5945.   # ● Create Layout
  5946.   #--------------------------------------------------------------------------              
  5947.   def create_layout
  5948.       @layout = Sprite.new
  5949.       @layout.bitmap = $game_temp.pre_cache_skill_menu[1]
  5950.       @layout.z = 3
  5951.   end
  5952.  
  5953.   #--------------------------------------------------------------------------
  5954.   # ● Create Particles
  5955.   #--------------------------------------------------------------------------  
  5956.   def create_particles
  5957.       @particles_sprite =[]
  5958.       for i in 0...NUMBER_OF_PARTICLES
  5959.           @particles_sprite.push(Particles_Menu.new(nil))
  5960.       end
  5961.   end
  5962.  
  5963.   #--------------------------------------------------------------------------
  5964.   # ● Create Actor Status
  5965.   #--------------------------------------------------------------------------   
  5966.   def create_actor_status
  5967.       @actor_skill_status = Actor_Skill_Status.new(@actor)
  5968.   end  
  5969.  
  5970.   #--------------------------------------------------------------------------
  5971.   # ● Create Help Window
  5972.   #--------------------------------------------------------------------------              
  5973.   def create_help_window
  5974.       @help_window = Window_Help.new
  5975.       @help_window.x = 0
  5976.       @help_window.y = Graphics.height - @help_window.height
  5977.       @help_window.opacity = 0
  5978.   end   
  5979.  
  5980.   #--------------------------------------------------------------------------
  5981.   # ● Create Command Window
  5982.   #--------------------------------------------------------------------------
  5983.   def create_command_window
  5984.       @command_window = Window_SkillCommand_2.new(175,200)#(0, 84)
  5985.       @command_window.help_window = @help_window
  5986.       @command_window.actor = @actor
  5987.       @command_window.set_handler(:skill,    method(:command_skill))
  5988.       @command_window.set_handler(:pagedown, method(:next_actor))
  5989.       @command_window.set_handler(:pageup,   method(:prev_actor))
  5990.       @command_window.active = false
  5991.       @command_window.opacity = 0
  5992.       @command_window.index = 0
  5993.       @command_window.visible = @scene_active
  5994.       @skill_list_slide_range = [@command_window.x, -(@command_window.x + @command_window.width)]
  5995.       @command_window.x = @skill_list_slide_range[1] - 80
  5996.       @command_window.opacity = 0
  5997.   end  
  5998.  
  5999.   #--------------------------------------------------------------------------
  6000.   # ● Create Type Layout
  6001.   #--------------------------------------------------------------------------
  6002.   def create_type_layout
  6003.       @type_layout = Sprite.new
  6004.       @type_layout.bitmap = $game_temp.pre_cache_skill_menu[2]
  6005.       @type_layout.z = @command_window.z - 1
  6006.       @type_layout.x = @command_window.x
  6007.       @type_layout.y = @command_window.y - 30
  6008.       @type_layout.opacity = 0      
  6009.   end  
  6010.  
  6011.   #--------------------------------------------------------------------------
  6012.   # ● Create Item Window
  6013.   #--------------------------------------------------------------------------
  6014.   def create_item_window
  6015.       @skill_window = []
  6016.       index = 0
  6017.       window_max = @actor.added_skill_types.size
  6018.       window_max = 1 if window_max == 0
  6019.       for item in 0...window_max
  6020.           @skill_window.push(Window_SkillList_Menu.new(345,165,205,240))
  6021.           @skill_window[index].setup(@actor,@actor.added_skill_types[index],index)
  6022.           @skill_window[index].help_window = @help_window
  6023.           @skill_window[index].set_handler(:ok,     method(:on_item_ok))
  6024.           @skill_window[index].set_handler(:cancel, method(:on_item_cancel))
  6025.           @skill_window[index].active = false
  6026.           @skill_window[index].index = -1
  6027.           @skill_window[index].opacity = 0
  6028.           @skill_window[index].contents_opacity = 0
  6029.           @item_slide_range = [@skill_window[index].x, @skill_window[index].x + 50]
  6030.           @skill_window[index].x = @item_slide_range[1]
  6031.           index += 1
  6032.       end  
  6033.       @item_pre_index = @skill_window[@command_window.index].index
  6034.       @old_command_index = @skill_window[@command_window.index].index
  6035.   end  
  6036.  
  6037.   #--------------------------------------------------------------------------
  6038.   # ● Create List Layout
  6039.   #--------------------------------------------------------------------------  
  6040.   def create_list_layout
  6041.       @list_layout = Sprite.new
  6042.       @list_layout.bitmap = $game_temp.pre_cache_skill_menu[3]
  6043.       @list_layout.z = @skill_window[@command_window.index].z - 1
  6044.       @list_layout.x = @item_slide_range[0] - 4
  6045.       @list_layout.y = @skill_window[@command_window.index].y - 20
  6046.       @list_layout.opacity = 0
  6047.       @list_layout_slide_range = [@list_layout.x,@list_layout.x + 50]
  6048.       @list_layout.x = @list_layout_slide_range[1]
  6049.   end
  6050.  
  6051.   #--------------------------------------------------------------------------
  6052.   # ● Create Actor Window
  6053.   #--------------------------------------------------------------------------
  6054.   def create_actor_window
  6055.       @actor_window = Members_Windows_Status.new
  6056.       @actor_window.set_handler(:ok,     method(:on_actor_ok))
  6057.       @actor_window.set_handler(:cancel, method(:on_actor_cancel))
  6058.       @actor_window.opacity = 0
  6059.       @actor_window.x = -10
  6060.       @actor_window.y = 36
  6061.       @actor_window_slide_range = [@actor_window.x, -@actor_window.width]
  6062.       @actor_window.x = @actor_window_slide_range[1]
  6063.       @actor_window.visible = true
  6064.       @actor_window_index_old = @actor_window.index
  6065.       create_members_window
  6066.       update_active
  6067.   end
  6068.  
  6069.   #--------------------------------------------------------------------------
  6070.   # ● Create Members Window
  6071.   #--------------------------------------------------------------------------  
  6072.   def create_members_window
  6073.       @actor_status = Actor_Menu_Status.new(@actor)
  6074.       index = 0
  6075.       @members_status = []      
  6076.       for actor in $game_party.members
  6077.           @members_status.push(Members_Menu.new(actor,index))
  6078.           index += 1
  6079.       end   
  6080.   end  
  6081.  
  6082.   #技能类型名称位置:
  6083.   #--------------------------------------------------------------------------
  6084.   # ● Create Type Name
  6085.   #--------------------------------------------------------------------------  
  6086.   def create_type_name
  6087.       @type_name = Sprite.new
  6088.       @type_name.x = 365#260
  6089.       @type_name.y = 140#60
  6090.       @type_name.z = @list_layout.z + 2
  6091.       @type_name.bitmap = Bitmap.new(100,32)
  6092.       @type_name.bitmap.font.size = 18
  6093.       @type_name.bitmap.font.bold = true
  6094.       @type_name.opacity = 0
  6095.       refresh_type_name
  6096.   end
  6097.  
  6098.   #--------------------------------------------------------------------------
  6099.   # ● Refresh Type Name
  6100.   #--------------------------------------------------------------------------   
  6101.   def refresh_type_name
  6102.      @type_name.bitmap.clear
  6103.      return if !@scene_active
  6104.      stype_id = @actor.added_skill_types[@command_window.index]
  6105.      type_name = $data_system.skill_types[stype_id]
  6106.      @type_name.bitmap.draw_text(0,0,100,32,type_name,2)
  6107.   end
  6108.  
  6109. end
  6110.  
  6111. #==============================================================================
  6112. # ■ Scene_Skill
  6113. #==============================================================================
  6114. class Scene_Skill
  6115.  
  6116.   #--------------------------------------------------------------------------
  6117.   # ● Execute Dispose
  6118.   #--------------------------------------------------------------------------        
  6119.   def execute_dispose
  6120.       Graphics.freeze
  6121.       dispose_background
  6122.       dispose_layout
  6123.       dispose_list_layout
  6124.       dispose_particles
  6125.       dispose_windows
  6126.       dispose_members_status
  6127.       dispose_type_name
  6128.   end
  6129.  
  6130.   #--------------------------------------------------------------------------
  6131.   # ● Dispose Background
  6132.   #--------------------------------------------------------------------------  
  6133.   def dispose_background
  6134.       return if @background == nil
  6135.       @background.dispose
  6136.       @background = nil
  6137.   end
  6138.  
  6139.  
  6140.   #--------------------------------------------------------------------------
  6141.   # ● Dispose Layout
  6142.   #--------------------------------------------------------------------------               
  6143.   def dispose_layout
  6144.       return if @layout == nil
  6145.       @layout.dispose
  6146.       @layout = nil
  6147.   end  
  6148.  
  6149. #--------------------------------------------------------------------------
  6150. # ● Dispose Particles
  6151. #--------------------------------------------------------------------------   
  6152. def dispose_particles
  6153.      return if @particles_sprite == nil
  6154.      @particles_sprite.each {|sprite| sprite.dispose }
  6155. end   
  6156.  
  6157. #--------------------------------------------------------------------------
  6158. # ● Dispose Window
  6159. #--------------------------------------------------------------------------     
  6160. def dispose_windows
  6161.      return if @command_window == nil
  6162.      @skill_window.each {|sprite| sprite.dispose }
  6163.      @command_window.dispose
  6164.      @actor_window.dispose
  6165.      @help_window.dispose
  6166. end
  6167.  
  6168. #--------------------------------------------------------------------------
  6169. # ● Dispose List Layout
  6170. #--------------------------------------------------------------------------      
  6171. def dispose_list_layout
  6172.      return if @list_layout == nil
  6173.      @list_layout.dispose
  6174.      @type_layout.dispose
  6175.      @list_layout = nil
  6176. end
  6177.  
  6178.   #--------------------------------------------------------------------------
  6179.   # ● Dispose Members Status
  6180.   #--------------------------------------------------------------------------            
  6181.   def dispose_members_status
  6182.       return if @members_status == nil
  6183.       @actor_status.dispose
  6184.       @actor_skill_status.dispose
  6185.       @members_status.each {|sprite| sprite.dispose }
  6186.   end   
  6187.  
  6188.   #--------------------------------------------------------------------------
  6189.   # ● Dispose Type Name
  6190.   #--------------------------------------------------------------------------   
  6191.   def dispose_type_name
  6192.       @type_name.bitmap.dispose
  6193.       @type_name.dispose
  6194.   end  
  6195.  
  6196. end
  6197.  
  6198. #==============================================================================
  6199. # ■ Scene Skill
  6200. #==============================================================================
  6201. class Scene_Skill
  6202.  
  6203.   #--------------------------------------------------------------------------
  6204.   # ● Update Sprites
  6205.   #--------------------------------------------------------------------------         
  6206.   def update_sprites   
  6207.       update_background
  6208.       update_particles     
  6209.       update_actor_status
  6210.       update_slide_item
  6211.       update_members_status
  6212.       update_windows
  6213.   end
  6214.  
  6215.   #--------------------------------------------------------------------------
  6216.   # ● Update Background
  6217.   #--------------------------------------------------------------------------              
  6218.   def update_background
  6219.       return if @background == nil
  6220.       @background.ox += @background_scroll[0]
  6221.       @background.oy += @background_scroll[1]
  6222.   end   
  6223.  
  6224.   #--------------------------------------------------------------------------
  6225.   # ● Update Particles
  6226.   #--------------------------------------------------------------------------  
  6227.   def update_particles
  6228.       return if @particles_sprite == nil
  6229.       @particles_sprite.each {|sprite| sprite.update }
  6230.   end
  6231.  
  6232.   #--------------------------------------------------------------------------
  6233.   # ● Update Windows
  6234.   #--------------------------------------------------------------------------   
  6235.   def update_windows
  6236.       @press_lag -= 1 if @press_lag > 0
  6237.       return if @command_window == nil
  6238.       for skw in @skill_window
  6239.           skw.update unless @press_lag > 0
  6240.           if skw.windows_index == @command_window.index
  6241.              skw.active = true
  6242.              if @phase == 0
  6243.                 skw.index = 0 if skw.index < 0 or skw.index >= skw.item_max
  6244.              end   
  6245.              skw.visible = true
  6246.           else   
  6247.              skw.visible = false
  6248.              skw.active = false
  6249.           end  
  6250.       end
  6251.       #@skill_window[@command_window.index].update
  6252.       @command_window.update   
  6253.       @actor_window.update
  6254.       update_actor_window_slide
  6255.       update_skill_list_slide
  6256.   end
  6257.  
  6258.   #--------------------------------------------------------------------------
  6259.   # ● Update Skill List Slide
  6260.   #--------------------------------------------------------------------------      
  6261.   def update_skill_list_slide
  6262.       return if @phase == 999
  6263.       if @actor_window.active or !@command_window.active
  6264.          if @command_window.x > @skill_list_slide_range[1]
  6265.             @command_window.x -= 15
  6266.             @command_window.x = @skill_list_slide_range[1] if @command_window.x < @skill_list_slide_range[1]
  6267.          end  
  6268.       else
  6269.          if @command_window.x < @skill_list_slide_range[0]
  6270.             @command_window.x += 15
  6271.             @command_window.x = @skill_list_slide_range[0] if @command_window.x > @skill_list_slide_range[0]
  6272.          end         
  6273.       end  
  6274.       @type_layout.x = @command_window.x
  6275.   end
  6276.  
  6277.   #--------------------------------------------------------------------------
  6278.   # ● Update Actor Window Slide
  6279.   #--------------------------------------------------------------------------  
  6280.   def update_actor_window_slide
  6281.       if @actor_window.active
  6282.          if @actor_window.x < @actor_window_slide_range[0]
  6283.             @actor_window.x += 15
  6284.             @actor_window.contents_opacity += 23
  6285.             if @actor_window.x >= @actor_window_slide_range[0]
  6286.                @actor_window.x = @actor_window_slide_range[0]
  6287.                @actor_window.contents_opacity = 255
  6288.             end  
  6289.          end  
  6290.       else         
  6291.          if @actor_window.x >= @actor_window_slide_range[1]
  6292.             @actor_window.x -= 15
  6293.             @actor_window.contents_opacity -= 3
  6294.             if @actor_window.x <= @actor_window_slide_range[1]
  6295.                @actor_window.x = @actor_window_slide_range[1]
  6296.                @actor_window.contents_opacity = 0
  6297.             end         
  6298.          end
  6299.       end
  6300.   end   
  6301.  
  6302.   #--------------------------------------------------------------------------
  6303.   # ● Update Actor Status
  6304.   #--------------------------------------------------------------------------               
  6305.   def update_actor_status
  6306.       refresh_actor_status(true) if @actor_window_index_old != @actor_window.index
  6307.   end  
  6308.  
  6309.   #--------------------------------------------------------------------------
  6310.   # ● Refresh Actor Status
  6311.   #--------------------------------------------------------------------------               
  6312.   def refresh_actor_status(reset = false)
  6313. #      @actor = $game_party.members[@actor_window.index]
  6314. #      @actor_window_index_old = @actor_window.index
  6315.   end  
  6316.  
  6317.   #--------------------------------------------------------------------------
  6318.   # ● Update Slide Item
  6319.   #--------------------------------------------------------------------------  
  6320.   def update_slide_item
  6321.       if @phase == 0
  6322.          @command_window.contents_opacity += 10
  6323.       else   
  6324.          @command_window.contents_opacity -= 10 if @command_window.contents_opacity > 160
  6325.       end  
  6326.       @type_layout.opacity = @command_window.contents_opacity
  6327.       @type_name.opacity = @skill_window[@command_window.index].contents_opacity
  6328.       if @phase == 1
  6329.          @skill_window[@command_window.index].contents_opacity += 5
  6330.          @list_layout.opacity += 5
  6331.       else   
  6332.          @skill_window[@command_window.index].contents_opacity -= 10 if @skill_window[@command_window.index].contents_opacity > 165
  6333.          @list_layout.opacity -= 10 if @list_layout.opacity > 160
  6334.       end  
  6335.       if @skill_window[@command_window.index].x > @item_slide_range[0]
  6336.          @skill_window[@command_window.index].x -= 3
  6337.          @list_layout.x -= 3
  6338.          if @skill_window[@command_window.index].x <= @item_slide_range[0]
  6339.             @skill_window[@command_window.index].x = @item_slide_range[0]
  6340.             @list_layout.x = @list_layout_slide_range[0]
  6341.          end  
  6342.       end  
  6343.   end   
  6344.  
  6345.   #--------------------------------------------------------------------------
  6346.   # ● Update Members Status
  6347.   #--------------------------------------------------------------------------            
  6348.   def update_members_status
  6349.       for members in @members_status
  6350.           members.update(@actor_window.active,@actor_window.index)
  6351.           @actor_2 = members.actor if members.current_actor
  6352.       end  
  6353.       @actor_2 = @actor if @actor_2 == nil
  6354.       @actor_skill_status.update
  6355.       @actor_status.update(@actor_window.active,@actor_2)
  6356.       #@members_status.each {|sprite| sprite.update(@actor_window.active,@actor_window.index) }
  6357.   end  
  6358.  
  6359. end
  6360.  
  6361. #==============================================================================
  6362. # ■ Scene_Skill
  6363. #==============================================================================
  6364. class Scene_Skill
  6365.  
  6366.   #--------------------------------------------------------------------------
  6367.   # ● Update
  6368.   #--------------------------------------------------------------------------      
  6369.   def update
  6370.       unless @skill_window[@command_window.index].index < 0
  6371.           @item_pre_index = @skill_window[@command_window.index].index
  6372.       end   
  6373.       update_command
  6374.       update_sprites
  6375.   end
  6376.  
  6377.   #--------------------------------------------------------------------------
  6378.   # ● Show Sub Window
  6379.   #--------------------------------------------------------------------------
  6380.   def show_sub_window(window)
  6381.       window.show.activate
  6382.   end
  6383.   #--------------------------------------------------------------------------
  6384.   # ● Hide Sub Window
  6385.   #--------------------------------------------------------------------------
  6386.   def hide_sub_window(window)
  6387.       window.hide.deactivate
  6388.       activate_item_window     
  6389.   end
  6390.  
  6391.   #--------------------------------------------------------------------------
  6392.   # ● Determine Item
  6393.   #--------------------------------------------------------------------------
  6394.   def determine_item
  6395.       if item.for_friend?         
  6396.          @phase = 2
  6397.          show_sub_window(@actor_window)
  6398.          @actor_window.select_for_item(item)   
  6399.          $game_temp.item_scope = @skill_window[@command_window.index].item.scope rescue nil
  6400.       else
  6401.          use_item
  6402.          activate_item_window
  6403.       end
  6404.   end  
  6405.  
  6406.   #--------------------------------------------------------------------------
  6407.   # ● ON Item OK
  6408.   #--------------------------------------------------------------------------
  6409.   def on_item_ok
  6410.       return if @press_time > 1
  6411.       @actor.last_skill.object = item
  6412.       determine_item
  6413.   end
  6414.  
  6415.   #--------------------------------------------------------------------------
  6416.   # ● Item
  6417.   #--------------------------------------------------------------------------
  6418.   def item
  6419.     @skill_window[@command_window.index].item
  6420.   end  
  6421.  
  6422.   #--------------------------------------------------------------------------
  6423.   # ● Use Item
  6424.   #--------------------------------------------------------------------------
  6425.   def use_item
  6426.       super
  6427.       @skill_window[@command_window.index].refresh if can_refresh_item_window?
  6428.   end  
  6429.  
  6430.   #--------------------------------------------------------------------------
  6431.   # ● Activate Item Window
  6432.   #--------------------------------------------------------------------------
  6433.   def activate_item_window   
  6434.     @skill_window[@command_window.index].refresh if can_refresh_item_window?
  6435.     @skill_window[@command_window.index].activate
  6436.   end  
  6437.  
  6438.   #--------------------------------------------------------------------------
  6439.   # ● On Item Cancel
  6440.   #--------------------------------------------------------------------------
  6441.   def on_item_cancel
  6442.       @skill_window[@command_window.index].unselect
  6443.       @command_window.activate
  6444.   end  
  6445.  
  6446.   #--------------------------------------------------------------------------
  6447.   # ● Can Refresh Item Window
  6448.   #--------------------------------------------------------------------------  
  6449.   def can_refresh_item_window?
  6450.       return true if @actor.mp < @skill_window[@command_window.index].item.mp_cost
  6451.       return true if @actor.tp < @skill_window[@command_window.index].item.tp_cost
  6452.       return false
  6453.   end
  6454.  
  6455. end
  6456.  
  6457. #==============================================================================
  6458. # ■ Scene_Item
  6459. #==============================================================================
  6460. class Scene_Skill
  6461.  
  6462.   #--------------------------------------------------------------------------
  6463.   # ● Update Command
  6464.   #--------------------------------------------------------------------------      
  6465.   def update_command
  6466.       @skill_window[@command_window.index].index = @item_pre_index        
  6467.       if @phase == 0
  6468.          update_main_command
  6469.       elsif @phase == 1
  6470.          update_item_window
  6471.       elsif @phase == 2        
  6472.          update_target_window
  6473.       end        
  6474.       update_active
  6475.   end
  6476.  
  6477.   #--------------------------------------------------------------------------
  6478.   # ● Command Skill
  6479.   #--------------------------------------------------------------------------
  6480.   def command_skill
  6481.       @skill_window[@command_window.index].activate
  6482.       @skill_window[@command_window.index].select_last
  6483.       #@item_window.activate
  6484.       #@item_window.select_last
  6485.   end  
  6486.  
  6487.   #--------------------------------------------------------------------------
  6488.   # ● Update Active
  6489.   #--------------------------------------------------------------------------      
  6490.   def update_active
  6491.       if @phase == 0
  6492.          @skill_window[@command_window.index].active = false
  6493.          @command_window.active = true
  6494.          @actor_window.active = false
  6495.       elsif @phase == 1
  6496.          @skill_window[@command_window.index].active = true
  6497.          @command_window.active = false
  6498.          @actor_window.active = false
  6499.       elsif @phase == 2
  6500.          @skill_window[@command_window.index].active = false
  6501.          @command_window.active = false
  6502.          @actor_window.active = true
  6503.       end
  6504.   end
  6505.  
  6506.   #--------------------------------------------------------------------------
  6507.   # ● Update Main Command
  6508.   #--------------------------------------------------------------------------        
  6509.   def update_main_command
  6510.       reset_item_index
  6511.       if Input.trigger?(:C) and @scene_active
  6512.          Sound.play_ok
  6513.          @phase = 1
  6514.          @press_time = 2
  6515.          @press_lag = 2
  6516.          @skill_window[@command_window.index].index = 0 if @skill_window[@command_window.index].index == -1
  6517.       elsif Input.trigger?(:B)
  6518.          return_scene
  6519.       end  
  6520.   end
  6521.  
  6522.   #--------------------------------------------------------------------------
  6523.   # ● Return Scene
  6524.   #--------------------------------------------------------------------------         
  6525.   def return_scene
  6526.       Sound.play_cancel
  6527.       SceneManager.return
  6528.     end
  6529.  
  6530.   #--------------------------------------------------------------------------
  6531.   # ● ON Actor Charge
  6532.   #--------------------------------------------------------------------------
  6533.   def on_actor_change
  6534.       @phase = 999
  6535.       $game_temp.actor_menu_temp = @actor
  6536.       SceneManager.goto(Scene_Skill)
  6537.   end
  6538.  
  6539.   #--------------------------------------------------------------------------
  6540.   # ● Reset Item Index
  6541.   #--------------------------------------------------------------------------            
  6542.   def reset_item_index
  6543.        return if @old_command_index == @command_window.index
  6544.        return if @command_window.index == -1
  6545.        @old_command_index = @command_window.index
  6546.        refresh_type_name
  6547.        reset_item_position
  6548.   end  
  6549.  
  6550.   #--------------------------------------------------------------------------
  6551.   # ● Reset Item Position
  6552.   #--------------------------------------------------------------------------              
  6553.   def reset_item_position
  6554.       @skill_window[@command_window.index].x = @item_slide_range[1]
  6555.       @skill_window[@command_window.index].contents_opacity = 160
  6556.       @list_layout.x = @list_layout_slide_range[1]
  6557.       @list_layout.opacity = 160
  6558.   end  
  6559.  
  6560. end
  6561.  
  6562. #==============================================================================
  6563. # ■ Scene_Skill
  6564. #==============================================================================
  6565. class Scene_Skill
  6566.  
  6567.   #--------------------------------------------------------------------------
  6568.   # ● Update Item Window
  6569.   #--------------------------------------------------------------------------               
  6570.   def update_item_window
  6571.       @press_time -= 1 if @press_time > 0
  6572.       update_item_command
  6573.       update_index_type
  6574.   end
  6575.  
  6576.   #--------------------------------------------------------------------------
  6577.   # ● Update Main Command
  6578.   #--------------------------------------------------------------------------        
  6579.   def update_item_command
  6580.       if Input.trigger?(:B)
  6581.          @phase = 0
  6582.          Sound.play_cancel
  6583.       end  
  6584.   end  
  6585.  
  6586.   #--------------------------------------------------------------------------
  6587.   # ● Update
  6588.   #--------------------------------------------------------------------------  
  6589.   def update_index_type
  6590.       return if @index_max <= 0
  6591.       return if @command_window == nil
  6592.       if Input.trigger?(:RIGHT)
  6593.          add_index(1)
  6594.       elsif Input.trigger?(:LEFT)   
  6595.          add_index(-1)
  6596.       end  
  6597.   end
  6598.  
  6599.   #--------------------------------------------------------------------------
  6600.   # ● Add Index
  6601.   #--------------------------------------------------------------------------   
  6602.   def add_index(value)
  6603.       Sound.play_cursor      
  6604.       @command_window.index += value
  6605.       @command_window.index = 0 if @command_window.index > @index_max
  6606.       @command_window.index = @index_max if @command_window.index < 0
  6607.       reset_item_index
  6608.   end   
  6609.  
  6610. end
  6611.  
  6612. #==============================================================================
  6613. # ■ Scene_Skill
  6614. #==============================================================================
  6615. class Scene_Skill
  6616.  
  6617.   #--------------------------------------------------------------------------
  6618.   # ● Update Item Window
  6619.   #--------------------------------------------------------------------------               
  6620.   def update_target_window
  6621.       update_target_command
  6622.   end
  6623.  
  6624.   #--------------------------------------------------------------------------
  6625.   # ● Update Main Command
  6626.   #--------------------------------------------------------------------------        
  6627.   def update_target_command
  6628.       if Input.trigger?(:B)
  6629.          @phase = 1
  6630.          @skill_window[@command_window.index].index = @item_pre_index
  6631.        end  
  6632.   end  
  6633.  
  6634. end
  6635.  
  6636.  
  6637. #==============================================================================
  6638. # ■ Game_Temp
  6639. #==============================================================================
  6640. class Game_Temp
  6641.  
  6642.   #--------------------------------------------------------------------------
  6643.   # ● Execute Pre Cache Skill Menu
  6644.   #--------------------------------------------------------------------------   
  6645.   def execute_pre_cache_equip_menu
  6646.       @pre_cache_equip_menu = []
  6647.       @pre_cache_equip_menu.push(Cache.menu_equip("Background"))
  6648.       @pre_cache_equip_menu.push(Cache.menu_equip("Layout_U"))
  6649.       @pre_cache_equip_menu.push(Cache.menu_equip("Layout_R"))
  6650.       @pre_cache_equip_menu.push(Cache.menu_equip("Layout_D"))
  6651.       @pre_cache_equip_menu.push(Cache.menu_equip("Layout_L"))
  6652.       @pre_cache_equip_menu.push(Cache.menu_equip("Par_Number"))
  6653.   end   
  6654.  
  6655. end
  6656.  
  6657. #==============================================================================
  6658. # ■ Scene_Skill
  6659. #==============================================================================
  6660. class Scene_Equip
  6661.   include MOG_MENU_EQUIP
  6662.   include MOG_MENU_BASE
  6663.  
  6664.   #--------------------------------------------------------------------------
  6665.   # ● Main
  6666.   #--------------------------------------------------------------------------        
  6667.   def main
  6668.       execute_setup
  6669.       execute_loop
  6670.       execute_dispose
  6671.   end  
  6672.  
  6673.   #--------------------------------------------------------------------------
  6674.   # ● Execute Setup
  6675.   #--------------------------------------------------------------------------        
  6676.   def execute_setup
  6677.       @actor = $game_temp.actor_menu_temp
  6678.       @actor_old = @actor
  6679.       @phase = 0
  6680.       create_sprites
  6681.   end
  6682.  
  6683.   #--------------------------------------------------------------------------
  6684.   # ● Execute Lopp
  6685.   #--------------------------------------------------------------------------        
  6686.   def execute_loop
  6687.       Graphics.transition(10)
  6688.       loop do
  6689.          Input.update
  6690.          update
  6691.          Graphics.update
  6692.          break if SceneManager.scene != self
  6693.       end
  6694.   end
  6695.  
  6696. end
  6697.  
  6698. #==============================================================================
  6699. # ■ Window_EquipStatus
  6700. #==============================================================================
  6701. class Window_EquipStatus < Window_Base
  6702.  
  6703.   #--------------------------------------------------------------------------
  6704.   # ● Initializee
  6705.   #--------------------------------------------------------------------------
  6706.   def initialize(x, y)
  6707.       super(x, y, window_width, window_height)
  6708.       @actor = nil
  6709.       @temp_actor = nil
  6710.       self.visible = false
  6711.   end
  6712.  
  6713.   #--------------------------------------------------------------------------
  6714.   # ● Window Width
  6715.   #--------------------------------------------------------------------------
  6716.   def window_width
  6717.       return 208
  6718.   end
  6719.  
  6720.   #--------------------------------------------------------------------------
  6721.   # ● Window Height
  6722.   #--------------------------------------------------------------------------
  6723.   def window_height
  6724.       return 296
  6725.   end
  6726.  
  6727.   #--------------------------------------------------------------------------
  6728.   # ● Visible Line Number
  6729.   #--------------------------------------------------------------------------
  6730.   def visible_line_number
  6731.       return 1
  6732.   end
  6733.   #--------------------------------------------------------------------------
  6734.   # ● Actor
  6735.   #--------------------------------------------------------------------------
  6736.   def actor=(actor)
  6737.       return if @actor == actor
  6738.       @actor = actor
  6739.   end
  6740.  
  6741.   #--------------------------------------------------------------------------
  6742.   # ● Refresh
  6743.   #--------------------------------------------------------------------------
  6744.   def refresh
  6745.       contents.clear
  6746.   end
  6747.  
  6748.   #--------------------------------------------------------------------------
  6749.   # ● Set Temp Actor
  6750.   #--------------------------------------------------------------------------
  6751.   def set_temp_actor(temp_actor)
  6752.       return if @temp_actor == temp_actor
  6753.       @temp_actor = temp_actor
  6754.       $game_temp.temp_actor_equip = @temp_actor
  6755.   end
  6756.  
  6757. end
  6758.  
  6759. #==============================================================================
  6760. # ■ Window_EquipCommand
  6761. #==============================================================================
  6762. class Window_EquipCommand < Window_HorzCommand
  6763.  
  6764.   #--------------------------------------------------------------------------
  6765.   # ● Initialize
  6766.   #--------------------------------------------------------------------------
  6767.   def initialize(x, y, width)
  6768.       @window_width = width
  6769.       super(x, y)
  6770.   end
  6771.  
  6772.   #--------------------------------------------------------------------------
  6773.   # ● Window Width
  6774.   #--------------------------------------------------------------------------
  6775.   def window_width
  6776.       @window_width
  6777.   end
  6778.  
  6779.   #--------------------------------------------------------------------------
  6780.   # ● Col Max
  6781.   #--------------------------------------------------------------------------
  6782.   def col_max
  6783.       return 3
  6784.   end
  6785.  
  6786.   #--------------------------------------------------------------------------
  6787.   # ● Make Command List
  6788.   #--------------------------------------------------------------------------
  6789.   def make_command_list
  6790.       add_command(Vocab::equip2,   :equip)
  6791.       add_command(Vocab::optimize, :optimize)
  6792.       add_command(Vocab::clear,    :clear)
  6793.   end
  6794.  
  6795.   #--------------------------------------------------------------------------
  6796.   # ● Draw Item
  6797.   #--------------------------------------------------------------------------  
  6798.   def draw_item(index)
  6799.   end  
  6800.  
  6801. end
  6802.  
  6803. #==============================================================================
  6804. # ■ Window_EquipSlot
  6805. #==============================================================================
  6806. class Window_EquipSlot < Window_Selectable
  6807.  
  6808.   attr_reader   :status_window        
  6809.   attr_reader   :item_window
  6810.  
  6811.   include MOG_MENU_EQUIP
  6812.  
  6813.   #--------------------------------------------------------------------------
  6814.   # ● Set Equip Font
  6815.   #--------------------------------------------------------------------------         
  6816.   def set_font_equip
  6817.       return if self.disposed?
  6818.       return if self.contents == nil
  6819.       self.contents.font.size = FONT_SIZE
  6820.       self.contents.font.bold = FONT_BOLD
  6821.   end  
  6822.  
  6823.   #--------------------------------------------------------------------------
  6824.   # ● Initialize
  6825.   #--------------------------------------------------------------------------
  6826.   def initialize(x, y, width)
  6827.       super(x, y, width, window_height)
  6828.       @actor = nil   
  6829.       refresh
  6830.   end
  6831.  
  6832.   #--------------------------------------------------------------------------
  6833.   # ● Window Height
  6834.   #--------------------------------------------------------------------------
  6835.   def window_height
  6836.       fitting_height(visible_line_number)
  6837.   end
  6838.  
  6839.   #--------------------------------------------------------------------------
  6840.   # ● Visible Line Number
  6841.   #--------------------------------------------------------------------------
  6842.   def visible_line_number
  6843.       return 5
  6844.   end
  6845.  
  6846.   #--------------------------------------------------------------------------
  6847.   # ● Actor
  6848.   #--------------------------------------------------------------------------
  6849.   def actor=(actor)
  6850.       return if @actor == actor
  6851.       @actor = actor
  6852.       refresh
  6853.   end
  6854.  
  6855.   #--------------------------------------------------------------------------
  6856.   # ● Update
  6857.   #--------------------------------------------------------------------------
  6858.   def update
  6859.       super
  6860.       @item_window.slot_id = index if @item_window
  6861.   end
  6862.  
  6863.   #--------------------------------------------------------------------------
  6864.   # ● Item Max
  6865.   #--------------------------------------------------------------------------
  6866.   def item_max
  6867.       @actor ? @actor.equip_slots.size : 0
  6868.   end
  6869.  
  6870.   #--------------------------------------------------------------------------
  6871.   # ● Item
  6872.   #--------------------------------------------------------------------------
  6873.   def item
  6874.       @actor ? @actor.equips[index] : nil
  6875.   end
  6876.  
  6877.   #--------------------------------------------------------------------------
  6878.   # ● Draw Item
  6879.   #--------------------------------------------------------------------------
  6880.   def draw_item(index)
  6881.       return unless @actor
  6882.       rect = item_rect_for_text(index)
  6883.       change_color(system_color, enable?(index))
  6884.       set_font_equip
  6885.       draw_item_name(@actor.equips[index], rect.x + 92, rect.y, enable?(index))
  6886.   end
  6887.  
  6888.   #--------------------------------------------------------------------------
  6889.   # ● Slot Name
  6890.   #--------------------------------------------------------------------------
  6891.   def slot_name(index)
  6892.       @actor ? Vocab::etype(@actor.equip_slots[index]) : ""
  6893.   end
  6894.  
  6895.   #--------------------------------------------------------------------------
  6896.   # ● Enable
  6897.   #--------------------------------------------------------------------------
  6898.   def enable?(index)
  6899.       @actor ? @actor.equip_change_ok?(index) : false
  6900.   end
  6901.  
  6902.   #--------------------------------------------------------------------------
  6903.   # ● Current Item Enabled
  6904.   #--------------------------------------------------------------------------
  6905.   def current_item_enabled?
  6906.     enable?(index)
  6907.   end
  6908.  
  6909.   #--------------------------------------------------------------------------
  6910.   # ● Status  Window
  6911.   #--------------------------------------------------------------------------
  6912.   def status_window=(status_window)
  6913.       @status_window = status_window
  6914.       call_update_help
  6915.   end
  6916.  
  6917.   #--------------------------------------------------------------------------
  6918.   # ● Item Window
  6919.   #--------------------------------------------------------------------------
  6920.   def item_window=(item_window)
  6921.       @item_window = item_window
  6922.       update
  6923.   end
  6924.  
  6925.   #--------------------------------------------------------------------------
  6926.   # ● Update Help
  6927.   #--------------------------------------------------------------------------
  6928.   def update_help
  6929.       super
  6930.       @help_window.set_item(item) if @help_window
  6931.       $game_temp.temp_actor_equip = nil if @status_window
  6932.   end
  6933.  
  6934. end
  6935.  
  6936. #==============================================================================
  6937. # ■ Window_EquipItem
  6938. #==============================================================================
  6939. class Window_EquipItem_Menu < Window_ItemList
  6940.  
  6941.   attr_reader   :status_window   
  6942.   attr_accessor :windows_index
  6943.  
  6944.   include MOG_MENU_EQUIP
  6945.  
  6946.   #--------------------------------------------------------------------------
  6947.   # ● Set Equip Font
  6948.   #--------------------------------------------------------------------------         
  6949.   def set_font_equip
  6950.       return if self.disposed?
  6951.       return if self.contents == nil
  6952.       self.contents.font.size = FONT_SIZE
  6953.       self.contents.font.bold = FONT_BOLD
  6954.   end  
  6955.  
  6956.   #--------------------------------------------------------------------------
  6957.   # ● Initialize
  6958.   #--------------------------------------------------------------------------
  6959.   def initialize(x, y, width, height)
  6960.       super
  6961.       @actor = nil
  6962.       @slot_id = 0
  6963.       @windows_index = 0
  6964.       self.visible = false
  6965.       self.opacity = 0
  6966.   end
  6967.  
  6968.   #--------------------------------------------------------------------------
  6969.   # ● Col Max
  6970.   #--------------------------------------------------------------------------
  6971.   def col_max
  6972.       return 1
  6973.   end  
  6974.  
  6975.   #--------------------------------------------------------------------------
  6976.   # ● Col Max
  6977.   #--------------------------------------------------------------------------
  6978.   def col_max
  6979.       return 1
  6980.   end  
  6981.   #--------------------------------------------------------------------------
  6982.   # ● Actor
  6983.   #--------------------------------------------------------------------------
  6984.   def actor=(actor)
  6985.       return if @actor == actor
  6986.       @actor = actor
  6987.       self.oy = 0
  6988.   end
  6989.  
  6990.   #--------------------------------------------------------------------------
  6991.   # ● Setup
  6992.   #--------------------------------------------------------------------------  
  6993.   def setup(actor,equip_type,index)
  6994.       @actor = actor
  6995.       @slot_id = equip_type
  6996.       @windows_index = index      
  6997.       refresh
  6998.   end  
  6999.  
  7000.   #--------------------------------------------------------------------------
  7001.   # ● Slot ID
  7002.   #--------------------------------------------------------------------------
  7003.   def slot_id=(slot_id)
  7004.   end
  7005.  
  7006.   #--------------------------------------------------------------------------
  7007.   # ● Include?
  7008.   #--------------------------------------------------------------------------
  7009.   def include?(item)
  7010.       return true if item == nil
  7011.       return false unless item.is_a?(RPG::EquipItem)
  7012.       return false if @slot_id < 0
  7013.       return false if item.etype_id != @actor.equip_slots[@slot_id]
  7014.       return @actor.equippable?(item)
  7015.   end
  7016.  
  7017.   #--------------------------------------------------------------------------
  7018.   # ● Enable?
  7019.   #--------------------------------------------------------------------------
  7020.   def enable?(item)
  7021.       return true
  7022.   end
  7023.  
  7024.   #--------------------------------------------------------------------------
  7025.   # ● Select Last
  7026.   #--------------------------------------------------------------------------
  7027.   def select_last
  7028.   end
  7029.  
  7030.   #--------------------------------------------------------------------------
  7031.   # ● Status Window
  7032.   #--------------------------------------------------------------------------
  7033.   def status_window=(status_window)
  7034.       @status_window = status_window
  7035.       call_update_help
  7036.   end
  7037.  
  7038.   #--------------------------------------------------------------------------
  7039.   # ● Update Help
  7040.   #--------------------------------------------------------------------------
  7041.   def update_help
  7042.       super
  7043.       if @actor && @status_window
  7044.          temp_actor = Marshal.load(Marshal.dump(@actor))
  7045.          temp_actor.force_change_equip(@slot_id, item)
  7046.          $game_temp.temp_actor_equip = temp_actor
  7047.       end
  7048.   end
  7049.  
  7050.   #--------------------------------------------------------------------------
  7051.   # ● Draw Item
  7052.   #--------------------------------------------------------------------------
  7053.   def draw_item(index)
  7054.       item = @data[index]
  7055.       if item
  7056.           set_font_equip
  7057.           rect = item_rect(index)
  7058.           rect.width -= 4
  7059.           draw_item_name(item, rect.x, rect.y, enable?(item))
  7060.           draw_item_number(rect, item)
  7061.       end
  7062.   end      
  7063.  
  7064.   #--------------------------------------------------------------------------
  7065.   # ● Draw Item Number
  7066.   #--------------------------------------------------------------------------
  7067.   def draw_item_number(rect, item)
  7068.       draw_text(rect, sprintf(": %2d", $game_party.item_number(item)), 2)
  7069.   end  
  7070.  
  7071. end
  7072.  
  7073. #==============================================================================
  7074. # ■ Actor Menu Status
  7075. #==============================================================================
  7076. class Actor_Equip_Status
  7077.  
  7078.   include MOG_EQUIP_STATUS  
  7079.  
  7080.   #--------------------------------------------------------------------------
  7081.   # ● Initialize
  7082.   #--------------------------------------------------------------------------
  7083.   def initialize(actor)
  7084.       @actor = actor
  7085.       @actor_old = @actor
  7086.       $game_temp.temp_actor_equip = nil
  7087.       @old_temp_actor = $game_temp.temp_actor_equip
  7088.       set_old_parameter
  7089.       create_sprites
  7090.   end
  7091.  
  7092.   #--------------------------------------------------------------------------
  7093.   # ● Create Sprites
  7094.   #--------------------------------------------------------------------------  
  7095.   def create_sprites
  7096.       @parameter_number = $game_temp.pre_cache_equip_menu[5]
  7097.       @parameter_cw = @parameter_number.width / 11
  7098.       @parameter_ch = @parameter_number.height / 3
  7099.       create_layout
  7100.       create_face
  7101.       create_parameter
  7102.       create_name
  7103.   end
  7104.  
  7105.   #--------------------------------------------------------------------------
  7106.   # ● Dispose
  7107.   #--------------------------------------------------------------------------  
  7108.   def dispose
  7109.       dispose_layout
  7110.       dispose_face
  7111.       dispose_parameter
  7112.       dispose_name
  7113.   end
  7114.  
  7115.   #--------------------------------------------------------------------------
  7116.   # ● Dispose Layout
  7117.   #--------------------------------------------------------------------------   
  7118.   def dispose_layout
  7119.       @layout.dispose
  7120.   end
  7121.  
  7122.   #--------------------------------------------------------------------------
  7123.   # ● Dispose Face
  7124.   #--------------------------------------------------------------------------   
  7125.   def dispose_face
  7126.       @face.dispose
  7127.   end  
  7128.  
  7129.   #--------------------------------------------------------------------------
  7130.   # ● Dispose Parameter
  7131.   #--------------------------------------------------------------------------      
  7132.   def dispose_parameter
  7133.       @parameter.bitmap.dispose
  7134.       @parameter.dispose
  7135.   end
  7136.  
  7137.   #--------------------------------------------------------------------------
  7138.   # ● Dispose Name
  7139.   #--------------------------------------------------------------------------        
  7140.   def dispose_name
  7141.       @name.bitmap.dispose
  7142.       @name.dispose
  7143.   end
  7144.  
  7145.   #--------------------------------------------------------------------------
  7146.   # ● Create Layout
  7147.   #--------------------------------------------------------------------------
  7148.   def create_layout
  7149.       @layout = Sprite.new
  7150.       @layout.bitmap = $game_temp.pre_cache_equip_menu[4]
  7151.       @org_pos = [LAYOUT_POSITION[0],LAYOUT_POSITION[1]]
  7152.       @layout.x = @org_pos[0] - 150
  7153.       @layout.y = @org_pos[1]
  7154.       @layout.z = 10
  7155.       @layout.opacity = 0
  7156.       @slide_range = (@org_pos[0] - 150)
  7157.   end
  7158.  
  7159.   #--------------------------------------------------------------------------
  7160.   # ● Create Parameter
  7161.   #--------------------------------------------------------------------------
  7162.   def create_parameter
  7163.       @parameter = Sprite.new
  7164.       @parameter.bitmap = Bitmap.new(@layout.bitmap.width,@layout.bitmap.height)
  7165.       @org_pos_par = [@org_pos[0] + PAR_POSITION[0],
  7166.                       @org_pos[1] + PAR_POSITION[1]]
  7167.       @parameter.x = @org_pos_par[0] - 150
  7168.       @parameter.y = @org_pos_par[1]
  7169.       @parameter.z = 11
  7170.       @parameter.opacity = 0
  7171.       refresh_parameter
  7172.   end
  7173.  
  7174.   #--------------------------------------------------------------------------
  7175.   # ● Create Face
  7176.   #--------------------------------------------------------------------------  
  7177.   def create_face
  7178.       @face = Sprite.new
  7179.       @org_pos_face = [@org_pos[0] + FACE_POSITION[0],
  7180.                        @org_pos[1] + FACE_POSITION[1]]
  7181.       @face.x = @org_pos_face[0] - 150
  7182.       @face.y = @org_pos_face[1]
  7183.       @face.z = 11
  7184.       @face.opacity = 0
  7185.       refresh_face
  7186.   end
  7187.  
  7188.   #--------------------------------------------------------------------------
  7189.   # ● Create Name
  7190.   #--------------------------------------------------------------------------   
  7191.   def create_name
  7192.       @name = Sprite.new
  7193.       @name.bitmap = Bitmap.new(140,32)
  7194.       @name.bitmap.font.size = FONT_SIZE
  7195.       @name.bitmap.font.bold = FONT_BOLD
  7196.       @org_pos_name = [@org_pos[0] + NAME_POSITION[0],
  7197.                        @org_pos[1] + NAME_POSITION[1]]
  7198.       @name.x = @org_pos_name[0] - 150
  7199.       @name.y = @org_pos_name[1]
  7200.       @name.z = 11
  7201.       @name.opacity = 0
  7202.       refresh_name     
  7203.   end  
  7204.  
  7205.   #--------------------------------------------------------------------------
  7206.   # ● Set Old Parameter
  7207.   #--------------------------------------------------------------------------  
  7208.   def set_old_parameter
  7209.       @par = [] if @par == nil
  7210.       @par.clear
  7211.       @par = [
  7212.       @actor.param(0),@actor.param(1),@actor.param(2),@actor.param(3),
  7213.       @actor.param(4),@actor.param(5),@actor.param(6),@actor.param(7),
  7214.       @old_temp_actor
  7215.       ]
  7216.   end   
  7217.  
  7218.   #--------------------------------------------------------------------------
  7219.   # ● Can Refresh Parameter
  7220.   #--------------------------------------------------------------------------
  7221.   def can_refresh_parameter?
  7222.       return true if @par[0] != @actor.param(0)
  7223.       return true if @par[1] != @actor.param(1)
  7224.       return true if @par[2] != @actor.param(2)
  7225.       return true if @par[3] != @actor.param(3)
  7226.       return true if @par[4] != @actor.param(4)
  7227.       return true if @par[5] != @actor.param(5)
  7228.       return true if @par[6] != @actor.param(6)
  7229.       return true if @par[7] != @actor.param(7)
  7230.       return true if @old_temp_actor != $game_temp.temp_actor_equip
  7231.       return false
  7232.   end  
  7233.  
  7234.   #--------------------------------------------------------------------------
  7235.   # ● Refresh Name
  7236.   #--------------------------------------------------------------------------      
  7237.   def refresh_name   
  7238.       @name.bitmap.clear
  7239.       @name.bitmap.draw_text(0,0,140,32,@actor.name.to_s,0)
  7240.   end
  7241.  
  7242.   #--------------------------------------------------------------------------
  7243.   # ● Create Face
  7244.   #--------------------------------------------------------------------------   
  7245.   def refresh_parameter
  7246.       set_old_parameter
  7247.       @parameter.bitmap.clear
  7248.       @old_temp_actor = $game_temp.temp_actor_equip
  7249.       x = 180      
  7250.       for p in 0...8
  7251.           y = 24 * p
  7252.           refresh_number(@parameter,@parameter_number,p,@parameter_cw,@parameter_ch,x,y,0)
  7253.       end      
  7254.       if $game_temp.temp_actor_equip != nil
  7255.          x = 180 - (@parameter_cw * 7)
  7256.          for p in 0...8
  7257.              y = 24 * p
  7258.              refresh_number(@parameter,@parameter_number,p,@parameter_cw,@parameter_ch,x,y,1)
  7259.          end     
  7260.      end
  7261.   end
  7262.  
  7263.   #--------------------------------------------------------------------------
  7264.   # ● Refresh Number
  7265.   #--------------------------------------------------------------------------     
  7266.   def refresh_number(sprite,image,p,number_cw,number_ch,x,y,type)
  7267.       value = @actor.param(p)
  7268.       new_value = 0
  7269.       ch = 0
  7270.       if type == 1         
  7271.          if $game_temp.temp_actor_equip != nil
  7272.             new_value = $game_temp.temp_actor_equip.param(p)
  7273.          end         
  7274.          d_value = new_value - value
  7275.          if d_value < 0
  7276.             ch = 2
  7277.          elsif d_value > 0
  7278.             ch = 1
  7279.          else
  7280.             ch = 0
  7281.          end   
  7282.          value = new_value
  7283.       end
  7284.       draw_arrow(sprite,image,number_cw,number_ch,x,y,ch)
  7285.       draw_number(sprite,image,value,number_cw,number_ch,x,y,ch)
  7286.   end
  7287.  
  7288.   #--------------------------------------------------------------------------
  7289.   # ● Draw Arrow
  7290.   #--------------------------------------------------------------------------        
  7291.   def draw_arrow(sprite,image,number_cw,number_ch,x,y,ch)
  7292.       nsrc_rect = Rect.new(number_cw * 10, number_ch * ch , number_cw , number_ch)
  7293.       sprite.bitmap.blt(x + number_cw, y, image, nsrc_rect)     
  7294.   end
  7295.  
  7296.   #--------------------------------------------------------------------------
  7297.   # ● Draw Number
  7298.   #--------------------------------------------------------------------------      
  7299.   def draw_number(sprite,image,value,number_cw,number_ch,x,y,ch)
  7300.       number = value.truncate.abs.to_s.split(//)
  7301.       x2 = -number_cw * number.size
  7302.       for i in 0..number.size  - 1
  7303.           number_abs = number[i].to_i
  7304.           nsrc_rect = Rect.new(number_cw * number_abs, number_ch * ch , number_cw , number_ch)
  7305.           sprite.bitmap.blt(x + x2 + (number_cw  *  i), y, image, nsrc_rect)        
  7306.       end      
  7307.   end
  7308.  
  7309.   #--------------------------------------------------------------------------
  7310.   # ● Refresh Face
  7311.   #--------------------------------------------------------------------------  
  7312.   def refresh_face
  7313.       face_name = "Face" + @actor.id.to_s
  7314.       @face.bitmap = Cache.menu(face_name.to_s)
  7315.   end
  7316.  
  7317.   #--------------------------------------------------------------------------
  7318.   # ● Update Move
  7319.   #--------------------------------------------------------------------------  
  7320.   def update_move
  7321.       update_slide(0,@layout,@layout.x,@org_pos[0])
  7322.       update_slide(1,@layout,@layout.y,@org_pos[1])      
  7323.       update_slide(0,@parameter,@parameter.x,@org_pos_par[0])
  7324.       update_slide(1,@parameter,@parameter.y,@org_pos_par[1])
  7325.       update_slide(0,@face,@face.x,@org_pos_face[0])
  7326.       update_slide(1,@face,@face.y,@org_pos_face[1])
  7327.       update_slide(0,@name,@name.x,@org_pos_name[0])
  7328.       update_slide(1,@name,@name.y,@org_pos_name[1])
  7329.   end
  7330.  
  7331. #--------------------------------------------------------------------------
  7332. # ● Update Slide
  7333. #--------------------------------------------------------------------------                       
  7334.   def update_slide(type,sprite,cp,np)
  7335.       sprite.opacity += 5
  7336.       sp = 3 + ((cp - np).abs / 10)
  7337.       if cp > np
  7338.          cp -= sp
  7339.          cp = np if cp < np
  7340.       elsif cp < np
  7341.          cp += sp
  7342.          cp = np if cp > np
  7343.       end     
  7344.       sprite.x = cp if type == 0
  7345.       sprite.y = cp if type == 1
  7346.   end      
  7347.  
  7348.   #--------------------------------------------------------------------------
  7349.   # ● Refresh All
  7350.   #--------------------------------------------------------------------------  
  7351.   def refresh_all(actor)      
  7352.       @actor = actor
  7353.       refresh_parameter
  7354.       refresh_face
  7355.       refresh_name
  7356.   end   
  7357.  
  7358.   #--------------------------------------------------------------------------
  7359.   # ● Update
  7360.   #--------------------------------------------------------------------------
  7361.   def update(actor)
  7362.       update_move
  7363.       refresh_all(actor) if actor != @actor
  7364.       refresh_parameter if can_refresh_parameter?
  7365.   end      
  7366.  
  7367. end
  7368.  
  7369. #==============================================================================
  7370. # ■ Scene_Equip
  7371. #==============================================================================
  7372. class Scene_Equip
  7373.  
  7374.   #--------------------------------------------------------------------------
  7375.   # ● Create Sprites
  7376.   #--------------------------------------------------------------------------
  7377.   def create_sprites
  7378.       create_menu_background
  7379.       create_layout
  7380.       create_particles
  7381.       create_help_window
  7382.       create_status_window
  7383.       create_command_window
  7384.       create_slot_window
  7385.       create_item_window
  7386.       create_actor_status
  7387.       set_sprite_position
  7388.   end
  7389.  
  7390.   #--------------------------------------------------------------------------
  7391.   # ● Set Sprite Position
  7392.   #--------------------------------------------------------------------------  
  7393.   def set_sprite_position
  7394.       @status_window.opacity = 0
  7395.       @command_window.opacity = 0
  7396.       @slot_window.opacity = 0
  7397.       @help_window.opacity = 0
  7398.       @status_window.contents_opacity = 0
  7399.       @command_window.contents_opacity = 0
  7400.       @slot_window.contents_opacity = 0
  7401.       @help_window.contents_opacity = 0      
  7402.       @layout2.opacity = 0
  7403.       @layout3.opacity = 0
  7404.       @layout4.opacity = 0
  7405.       @org_pos_help = [@help_window.x,@help_window.y]
  7406.       @help_window.x = @org_pos_help[0]
  7407.       @help_window.y = @org_pos_help[1] + 150     
  7408.       @org_pos_com = [@command_window.x,@command_window.y]
  7409.       @command_window.x = @org_pos_com[0]
  7410.       @command_window.y = @org_pos_com[1] - 150
  7411.       @org_pos_slot = [@slot_window.x,@slot_window.y]
  7412.       @slot_window.x = @org_pos_slot[0] + 150
  7413.       @slot_window.y = @org_pos_slot[1]      
  7414.       @layout2.y = -150
  7415.       @layout3.x = 150
  7416.       @layout4.y = 150      
  7417.   end
  7418.  
  7419.   #--------------------------------------------------------------------------
  7420.   # ● Create Actor Status
  7421.   #--------------------------------------------------------------------------  
  7422.   def create_actor_status
  7423.       @actor_status = Actor_Equip_Status.new(@actor)
  7424.   end  
  7425.  
  7426.   #--------------------------------------------------------------------------
  7427.   # ● Create Menu Background
  7428.   #--------------------------------------------------------------------------            
  7429.   def create_menu_background
  7430.       @background = Plane.new
  7431.       @background.bitmap = $game_temp.pre_cache_equip_menu[0]
  7432.       @background.z = 0
  7433.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  7434.   end   
  7435.  
  7436.   #--------------------------------------------------------------------------
  7437.   # ● Create Layout
  7438.   #--------------------------------------------------------------------------              
  7439.   def create_layout     
  7440.       @layout2 = Sprite.new
  7441.       @layout2.bitmap = $game_temp.pre_cache_equip_menu[1] # U
  7442.       @layout2.z = 3
  7443.       @layout3 = Sprite.new
  7444.       @layout3.bitmap = $game_temp.pre_cache_equip_menu[2] # R
  7445.       @layout3.z = 3
  7446.       @layout4 = Sprite.new
  7447.       @layout4.bitmap = $game_temp.pre_cache_equip_menu[3] # D
  7448.       @layout4.z = 3
  7449.   end  
  7450.  
  7451.   #--------------------------------------------------------------------------
  7452.   # ● Create Particles
  7453.   #--------------------------------------------------------------------------  
  7454.   def create_particles
  7455.       @particles_sprite =[]
  7456.       for i in 0...NUMBER_OF_PARTICLES
  7457.           @particles_sprite.push(Particles_Menu.new(nil))
  7458.       end
  7459.   end   
  7460.  
  7461.   #--------------------------------------------------------------------------
  7462.   # ● Create Help Window
  7463.   #--------------------------------------------------------------------------              
  7464.   def create_help_window
  7465.       @help_window = Window_Help.new
  7466.       @help_window.x = 0
  7467.       @help_window.y = Graphics.height - @help_window.height
  7468.   end     
  7469.  
  7470.   #--------------------------------------------------------------------------
  7471.   # ● Create Status Window
  7472.   #--------------------------------------------------------------------------
  7473.   def create_status_window
  7474.       @status_window = Window_EquipStatus.new(0, @help_window.height)
  7475.       @status_window.viewport = @viewport
  7476.       @status_window.actor = @actor
  7477.       @status_window.y = 48
  7478.   end
  7479.  
  7480.   #--------------------------------------------------------------------------
  7481.   # ● Create Command Window
  7482.   #--------------------------------------------------------------------------
  7483.   def create_command_window
  7484.       @command_window = Window_EquipCommand.new(208+30, 0+30, 336)
  7485.       @command_window.help_window = @help_window
  7486.       @command_window.set_handler(:equip,    method(:command_equip))
  7487.       @command_window.set_handler(:optimize, method(:command_optimize))
  7488.       @command_window.set_handler(:clear,    method(:command_clear))
  7489.       @command_window.set_handler(:cancel,   method(:return_scene))
  7490.       @command_window.set_handler(:pagedown, method(:next_actor))
  7491.       @command_window.set_handler(:pageup,   method(:prev_actor))
  7492.   end
  7493.  
  7494.   #--------------------------------------------------------------------------
  7495.   # ● Create Slot Window
  7496.   #--------------------------------------------------------------------------
  7497.   def create_slot_window
  7498.       wx = @status_window.width
  7499.       wy = @command_window.y + @command_window.height + 5
  7500.       ww = 544 - @status_window.width
  7501.       @slot_window = Window_EquipSlot.new(wx+30, wy, ww)
  7502.       @slot_window.help_window = @help_window
  7503.       @slot_window.status_window = @status_window
  7504.       @slot_window.actor = @actor
  7505.       @slot_window.set_handler(:ok,       method(:on_slot_ok))
  7506.       @slot_window.set_handler(:cancel,   method(:on_slot_cancel))
  7507.       @slot_window.set_handler(:pagedown, method(:next_actor))
  7508.       @slot_window.set_handler(:pageup,   method(:prev_actor))  
  7509.   end
  7510.  
  7511.   #--------------------------------------------------------------------------
  7512.   # ● Create Item Window
  7513.   #--------------------------------------------------------------------------
  7514.   def create_item_window
  7515.       @equip_window = []
  7516.       index = 0
  7517.       window_max = 5
  7518.       for item in 0...window_max     
  7519.           wx = @slot_window.x
  7520.           wy = @slot_window.y + @slot_window.height + 5
  7521.           ww = @slot_window.width
  7522.           wh = 280#@slot_window.height - 5
  7523.           @equip_window.push(Window_EquipItem_Menu.new(wx, wy, ww, wh))
  7524.           @equip_window[item].setup(@actor,item, index)
  7525.           @equip_window[item].visible = false
  7526.           @equip_window[item].help_window = @help_window
  7527.           @equip_window[item].status_window = @status_window
  7528.           @equip_window[item].actor = @actor
  7529.           @equip_window[item].set_handler(:ok,     method(:on_item_ok))
  7530.           @equip_window[item].set_handler(:cancel, method(:on_item_cancel))
  7531.           @equip_window[item].opacity = 0
  7532.           @org_pos_equip = [@equip_window[item].x,@equip_window[item].y]
  7533.           index += 1
  7534.        end     
  7535.  
  7536.    end
  7537.  
  7538. end
  7539.  
  7540. #==============================================================================
  7541. # ■ Scene_Equip
  7542. #==============================================================================
  7543. class Scene_Equip
  7544.  
  7545.   #--------------------------------------------------------------------------
  7546.   # ● Execute Dispose
  7547.   #--------------------------------------------------------------------------        
  7548.   def execute_dispose
  7549.       Graphics.freeze
  7550.       dispose_background
  7551.       dispose_layout
  7552.       dispose_particles
  7553.       dispose_window
  7554.       dispose_actor_status
  7555.   end
  7556.  
  7557.   #--------------------------------------------------------------------------
  7558.   # ● Dispose Background
  7559.   #--------------------------------------------------------------------------  
  7560.   def dispose_background
  7561.       return if @background == nil
  7562.       @background.dispose
  7563.       @background = nil
  7564.   end
  7565.  
  7566.   #--------------------------------------------------------------------------
  7567.   # ● Dispose Layout
  7568.   #--------------------------------------------------------------------------               
  7569.   def dispose_layout
  7570.       return if @layout2 == nil
  7571.       @layout2.dispose
  7572.       @layout3.dispose
  7573.       @layout4.dispose
  7574.       @layout2 = nil
  7575.   end  
  7576.  
  7577. #--------------------------------------------------------------------------
  7578. # ● Dispose Particles
  7579. #--------------------------------------------------------------------------   
  7580. def dispose_particles
  7581.      return if @particles_sprite == nil
  7582.      @particles_sprite.each {|sprite| sprite.dispose }
  7583. end     
  7584.  
  7585.   #--------------------------------------------------------------------------
  7586.   # ● Dispose Window
  7587.   #--------------------------------------------------------------------------         
  7588.   def dispose_window
  7589.       @status_window.dispose
  7590.       @command_window.dispose
  7591.       @slot_window.dispose
  7592.       @equip_window.each {|sprite| sprite.dispose }
  7593.       @help_window.dispose
  7594.   end  
  7595.  
  7596.   #--------------------------------------------------------------------------
  7597.   # ● Dispose Actor Status
  7598.   #--------------------------------------------------------------------------  
  7599.   def dispose_actor_status
  7600.       return if @actor_status == nil
  7601.       @actor_status.dispose
  7602.   end   
  7603.  
  7604. end
  7605.  
  7606. #==============================================================================
  7607. # ■ Scene_Equip
  7608. #==============================================================================
  7609. class Scene_Equip   
  7610.  
  7611.   #--------------------------------------------------------------------------
  7612.   # ● Update Sprites
  7613.   #--------------------------------------------------------------------------         
  7614.   def update_sprites
  7615.       update_actor_status
  7616.       update_background
  7617.       update_particles
  7618.       update_window
  7619.       update_move
  7620.   end
  7621.  
  7622.   #--------------------------------------------------------------------------
  7623.   # ● Update Move
  7624.   #--------------------------------------------------------------------------
  7625.   def update_move
  7626.  
  7627.       update_slide(0,@command_window,@org_pos_com[0],0)
  7628.       update_slide(1,@command_window,@org_pos_com[1],0)
  7629.  
  7630.       update_slide(0,@help_window,@org_pos_help[0],0)
  7631.       update_slide(1,@help_window,@org_pos_help[1],0)      
  7632.  
  7633.       update_slide(0,@slot_window,@org_pos_slot[0],0)
  7634.       update_slide(1,@slot_window,@org_pos_slot[1],0)        
  7635.  
  7636.       update_slide(0,@layout2,0,1)
  7637.       update_slide(1,@layout2,0,1)
  7638.  
  7639.       update_slide(0,@layout3,0,1)
  7640.       update_slide(1,@layout3,0,1)      
  7641.  
  7642.       update_slide(0,@layout4,0,1)
  7643.       update_slide(1,@layout4,0,1)      
  7644.  
  7645.   end
  7646.  
  7647. #--------------------------------------------------------------------------
  7648. # ● Update Slide
  7649. #--------------------------------------------------------------------------                       
  7650.   def update_slide(type,sprite,np,op_type)
  7651.       if op_type == 0
  7652.          sprite.contents_opacity += 5
  7653.       else
  7654.          sprite.opacity += 5
  7655.       end
  7656.       cp = type == 0 ? sprite.x : sprite.y
  7657.       sp = 3 + ((cp - np).abs / 10)
  7658.       if cp > np
  7659.          cp -= sp
  7660.          cp = np if cp < np
  7661.       elsif cp < np
  7662.          cp += sp
  7663.          cp = np if cp > np
  7664.       end     
  7665.       sprite.x = cp if type == 0
  7666.       sprite.y = cp if type == 1
  7667.   end   
  7668.  
  7669.   #--------------------------------------------------------------------------
  7670.   # ● Update Actor Status
  7671.   #--------------------------------------------------------------------------            
  7672.   def update_actor_status
  7673.       return if @actor_status == nil
  7674.       @actor_status.update(@actor)
  7675.   end
  7676.  
  7677.   #--------------------------------------------------------------------------
  7678.   # ● Update Background
  7679.   #--------------------------------------------------------------------------              
  7680.   def update_background
  7681.       return if @background == nil
  7682.       @background.ox += @background_scroll[0]
  7683.       @background.oy += @background_scroll[1]
  7684.   end   
  7685.  
  7686.   #--------------------------------------------------------------------------
  7687.   # ● Update Particles
  7688.   #--------------------------------------------------------------------------  
  7689.   def update_particles
  7690.       return if @particles_sprite == nil
  7691.       @particles_sprite.each {|sprite| sprite.update }
  7692.   end  
  7693.  
  7694.   #--------------------------------------------------------------------------
  7695.   # ● Update Window
  7696.   #--------------------------------------------------------------------------            
  7697.   def update_window
  7698.       @status_window.update
  7699.       @command_window.update
  7700.       @slot_window.update
  7701.       for equip in @equip_window
  7702.           update_slide(0,equip,@org_pos_equip[0],0)
  7703.           update_slide(1,equip,@org_pos_equip[1],0)           
  7704.           if equip.windows_index == @slot_window.index
  7705.              equip.visible = true
  7706.              equip.update  
  7707.           else
  7708.              equip.visible = false
  7709.           end
  7710.       end  
  7711.   end
  7712.  
  7713. end
  7714.  
  7715. #==============================================================================
  7716. # ■ Scene_Equip
  7717. #==============================================================================
  7718. class Scene_Equip
  7719.  
  7720.   #--------------------------------------------------------------------------
  7721.   # ● Update
  7722.   #--------------------------------------------------------------------------      
  7723.   def update
  7724.       update_sprites
  7725.       update_command
  7726.   end
  7727.  
  7728.   #--------------------------------------------------------------------------
  7729.   # ● Command Equip
  7730.   #--------------------------------------------------------------------------
  7731.   def command_equip
  7732.       @slot_window.activate
  7733.       @slot_window.select(0)
  7734.   end
  7735.  
  7736.   #--------------------------------------------------------------------------
  7737.   # ● Command Optimize
  7738.   #--------------------------------------------------------------------------
  7739.   def command_optimize
  7740.       Sound.play_equip
  7741.       @actor.optimize_equipments
  7742.       @status_window.refresh
  7743.       @slot_window.refresh
  7744.       @command_window.activate
  7745.   end
  7746.  
  7747.   #--------------------------------------------------------------------------
  7748.   # ● Command Clear
  7749.   #--------------------------------------------------------------------------
  7750.   def command_clear
  7751.       Sound.play_equip
  7752.       @actor.clear_equipments
  7753.       @status_window.refresh
  7754.       @slot_window.refresh
  7755.       @command_window.activate
  7756.   end
  7757.  
  7758.   #--------------------------------------------------------------------------
  7759.   # ● On Slot OK
  7760.   #--------------------------------------------------------------------------
  7761.   def on_slot_ok
  7762.       @equip_window[@slot_window.index].activate
  7763.       @equip_window[@slot_window.index].select(0)
  7764.   end
  7765.  
  7766.   #--------------------------------------------------------------------------
  7767.   # ● On Slot Cancel
  7768.   #--------------------------------------------------------------------------
  7769.   def on_slot_cancel
  7770.       @slot_window.unselect
  7771.       @command_window.activate
  7772.   end
  7773.  
  7774.   #--------------------------------------------------------------------------
  7775.   # ● On Item OK
  7776.   #--------------------------------------------------------------------------
  7777.   def on_item_ok
  7778.       Sound.play_equip
  7779.       @actor.change_equip(@slot_window.index, @equip_window[@slot_window.index].item)
  7780.       @slot_window.activate
  7781.       @slot_window.refresh
  7782.       @equip_window.each do |i| i.refresh; i.index = 0; i.unselect end
  7783.   end
  7784.  
  7785.   #--------------------------------------------------------------------------
  7786.   # ● On Item Cancel
  7787.   #--------------------------------------------------------------------------
  7788.   def on_item_cancel
  7789.       @slot_window.activate
  7790.       @equip_window[@slot_window.index].unselect
  7791.   end
  7792.  
  7793.   #--------------------------------------------------------------------------
  7794.   # ● Return Scene
  7795.   #--------------------------------------------------------------------------         
  7796.   def return_scene
  7797.       Sound.play_cancel
  7798.       SceneManager.return
  7799.     end
  7800.  
  7801.   #--------------------------------------------------------------------------
  7802.   # ● ON Actor Charge
  7803.   #--------------------------------------------------------------------------
  7804.   def on_actor_change
  7805.       $game_temp.actor_menu_temp = @actor
  7806.       SceneManager.goto(Scene_Equip)
  7807.   end  
  7808.  
  7809. end
  7810.  
  7811. #==============================================================================
  7812. # ■ Scene_Equip
  7813. #==============================================================================
  7814. class Scene_Equip
  7815.  
  7816.   #--------------------------------------------------------------------------
  7817.   # ● Update Command
  7818.   #--------------------------------------------------------------------------      
  7819.   def update_command
  7820.  
  7821.   end
  7822.  
  7823. end
  7824.  
  7825. #==============================================================================
  7826. # ■ Game_Temp
  7827. #==============================================================================
  7828. class Game_Temp
  7829.  
  7830.   #--------------------------------------------------------------------------
  7831.   # ● Execute Pre Cache Status Menu
  7832.   #--------------------------------------------------------------------------   
  7833.   def execute_pre_cache_status_menu
  7834.       @pre_cache_status_menu = []
  7835.       @pre_cache_status_menu.push(Cache.menu_status("Background"))
  7836.       @pre_cache_status_menu.push(Cache.menu_status("Layout"))
  7837.   end   
  7838.  
  7839. end
  7840.  
  7841.  
  7842. module MOG_STATUS_PARAMETER
  7843.   PICTURE_POS = [-105,0]
  7844.   METER_POSITION = [53+240,101+80]
  7845.   STATES_POSITION = [21,46]
  7846.   STATES_SCROLLING_ANIMATION = false
  7847.   MAX_PARAMETER_VALUE = 999
  7848. end
  7849. #==============================================================================
  7850. # ■ Status Parameter
  7851. #==============================================================================
  7852. class Status_Parameter
  7853.  
  7854.   include MOG_STATUS_PARAMETER
  7855.  
  7856.   #--------------------------------------------------------------------------
  7857.   # ● Initialize
  7858.   #--------------------------------------------------------------------------
  7859.   def initialize(actor)
  7860.       @actor = actor
  7861.       create_picture
  7862.       create_states
  7863.       create_meter
  7864.   end
  7865.  
  7866.   #--------------------------------------------------------------------------
  7867.   # ● Create Picture
  7868.   #--------------------------------------------------------------------------   
  7869.   def create_picture
  7870.       @picture = Sprite.new
  7871.       pic_name = "Actor_S" + @actor.id.to_s
  7872.       @picture.bitmap = Cache.menu_status(pic_name.to_s)
  7873.       @picture.ox = @picture.bitmap.width / 2
  7874.       pos = [Graphics.width,Graphics.height - @picture.bitmap.height]
  7875.       @pos_org_pic = [PICTURE_POS[0] + pos[0] ,PICTURE_POS[1] + pos[1]]
  7876.       @picture.x = @pos_org_pic[0]
  7877.       @picture.y = @pos_org_pic[1] + 150
  7878.       @picture.opacity = 0
  7879.       @picture.z = 3
  7880.   end  
  7881.  
  7882.   #--------------------------------------------------------------------------
  7883.   # ● Create_States
  7884.   #--------------------------------------------------------------------------      
  7885.   def create_states
  7886.       @status_old = nil
  7887.       @status_flow = [-24,0]   
  7888.       @status = Sprite.new
  7889.       @status.bitmap = Bitmap.new(24,24)
  7890.       @org_pos_states = [STATES_POSITION[0],STATES_POSITION[1]]      
  7891.       @status.x = @org_pos_states[0] + 150
  7892.       @status.y = @org_pos_states[1]
  7893.       @status.z = 11
  7894.       @status.opacity = 0
  7895.   end      
  7896.  
  7897.   #--------------------------------------------------------------------------
  7898.   # * Refresh States
  7899.   #--------------------------------------------------------------------------        
  7900.   def refresh_states
  7901.       check_icon_image
  7902.       @status_old = @actor.states
  7903.       @status_flow = [0,0]
  7904.       @actor_status.dispose if @actor_status != nil
  7905.       @states_size = @actor.states.size > 0 ? (26 * @actor.states.size) : 24
  7906.       @actor_status = Bitmap.new(@states_size,24)
  7907.       index = 0
  7908.       for i in @actor.states
  7909.          rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
  7910.          @actor_status.blt(26 * index , 0, @icon_image, rect)
  7911.          index += 1
  7912.       end
  7913.   end   
  7914.  
  7915.   #--------------------------------------------------------------------------
  7916.   # * Flow_Status
  7917.   #--------------------------------------------------------------------------         
  7918.   def flow_states
  7919.       return if @actor_status == nil
  7920.       @status.bitmap.clear
  7921.       return if @actor.states.size == 0
  7922.       st_src_rect = Rect.new(@status_flow[0],0, 24,24)
  7923.       @status.bitmap.blt(0,0, @actor_status, st_src_rect)
  7924.       if STATES_SCROLLING_ANIMATION
  7925.          @status_flow[0] += 1
  7926.          @status_flow[0] = -24 if @status_flow[0] >= @states_size + 2
  7927.       else   
  7928.          @status_flow[1] += 1 unless @actor.states.size <= 1
  7929.          if @status_flow[1] > 30
  7930.             @status_flow[1] = 0
  7931.             @status_flow[0] += 26
  7932.             @status_flow[0] = 0 if @status_flow[0] >= (@states_size - 0)
  7933.          end   
  7934.      end   
  7935.   end        
  7936.  
  7937.   #--------------------------------------------------------------------------
  7938.   # * Check Icon Image
  7939.   #--------------------------------------------------------------------------         
  7940.   def check_icon_image
  7941.       if @icon_image == nil or @icon_image.disposed?
  7942.          @icon_image = Cache.system("Iconset")
  7943.       end   
  7944.   end   
  7945.  
  7946.   #--------------------------------------------------------------------------
  7947.   # * Create Meter
  7948.   #--------------------------------------------------------------------------            
  7949.   def create_meter
  7950.       @meter_image = Cache.menu_status("Par_Meter")
  7951.       @meter_cw = @meter_image.width / 3
  7952.       @meter_ch = @meter_image.height / 4
  7953.       @meter = Sprite.new
  7954.       @meter.bitmap = Bitmap.new(380,140)
  7955.       @org_pos_meter = [METER_POSITION[0],METER_POSITION[1]]      
  7956.       @meter.x = @org_pos_meter[0] + 150
  7957.       @meter.y = @org_pos_meter[1]
  7958.       @meter.z = 11  
  7959.       @meter.opacity = 0
  7960.       @meter_flow = [0,@meter_cw * 2]      
  7961.       refresh_meter
  7962.   end  
  7963.  
  7964.   #--------------------------------------------------------------------------
  7965.   # * Refresh Meter
  7966.   #--------------------------------------------------------------------------            
  7967.   def refresh_meter
  7968.       @meter.bitmap.clear
  7969.       max_par = MAX_PARAMETER_VALUE
  7970.       value = @actor.hp
  7971.       value_max = @actor.mhp
  7972.       pos = [0,0]
  7973.       draw_meter(value,value_max,0,pos[0],pos[1])
  7974.       value = @actor.mp
  7975.       value_max = @actor.mmp
  7976.       pos = [120,0]
  7977.       draw_meter(value,value_max,1,pos[0],pos[1])
  7978.       value = @actor.tp
  7979.       value_max = @actor.max_tp
  7980.       pos = [240,0]
  7981.       draw_meter(value,value_max,2,pos[0],pos[1])
  7982.       value = @actor.atk
  7983.       value_max = max_par
  7984.       pos = [0,34]
  7985.       draw_meter(value,value_max,3,pos[0],pos[1])      
  7986.       value = @actor.mat
  7987.       value_max = max_par
  7988.       pos = [120,34]
  7989.       draw_meter(value,value_max,3,pos[0],pos[1])         
  7990.       value = @actor.agi
  7991.       value_max = max_par
  7992.       pos = [240,34]
  7993.       draw_meter(value,value_max,3,pos[0],pos[1])      
  7994.       value = @actor.def
  7995.       value_max = max_par
  7996.       pos = [0,68]
  7997.       draw_meter(value,value_max,3,pos[0],pos[1])      
  7998.       value = @actor.mdf
  7999.       value_max = max_par
  8000.       pos = [120,68]
  8001.       draw_meter(value,value_max,3,pos[0],pos[1])         
  8002.       value = @actor.luk
  8003.       value_max = max_par
  8004.       pos = [240,68]
  8005.       draw_meter(value,value_max,3,pos[0],pos[1])      
  8006.       @meter_flow[0] += 5
  8007.       @meter_flow[0] = 0 if @meter_flow[0] > @meter_flow[1]
  8008.   end
  8009.  
  8010.   #--------------------------------------------------------------------------
  8011.   # * Draw Meter
  8012.   #--------------------------------------------------------------------------              
  8013.   def draw_meter(value,value_max,type,x,y)
  8014.       value_max = 1 if value_max <= 0
  8015.       #修改:攻防可以在999以上:
  8016.       value_max = value if value_max < value
  8017.       #end
  8018.       range = @meter_cw * value.truncate / value_max.truncate
  8019.       ch = @meter_ch * type
  8020.       meter_scr = Rect.new(@meter_flow[0],ch,range,@meter_ch)
  8021.       @meter.bitmap.blt(x,y,@meter_image,meter_scr)
  8022.   end
  8023.  
  8024.   #--------------------------------------------------------------------------
  8025.   # ● Dispose
  8026.   #--------------------------------------------------------------------------  
  8027.   def dispose
  8028.       dispose_picture
  8029.       dispose_states
  8030.       dispose_meter
  8031.   end
  8032.  
  8033.   #--------------------------------------------------------------------------
  8034.   # ● Dispose Picture
  8035.   #--------------------------------------------------------------------------   
  8036.   def dispose_picture
  8037.       @picture.bitmap.dispose
  8038.       @picture.dispose
  8039.   end
  8040.  
  8041.   #--------------------------------------------------------------------------
  8042.   # ● Dispose States
  8043.   #--------------------------------------------------------------------------            
  8044.    def dispose_states
  8045.        return if @status == nil
  8046.        @status.bitmap.dispose
  8047.        @status.dispose
  8048.        if @actor_status != nil
  8049.           @actor_status.dispose
  8050.           @actor_status = nil
  8051.        end   
  8052.    end     
  8053.  
  8054.   #--------------------------------------------------------------------------
  8055.   # ● Dispose Meter
  8056.   #--------------------------------------------------------------------------            
  8057.    def dispose_meter
  8058.        return if @meter == nil
  8059.        @meter.bitmap.dispose
  8060.        @meter.dispose
  8061.    end     
  8062.  
  8063.   #--------------------------------------------------------------------------
  8064.   # ● Update
  8065.   #--------------------------------------------------------------------------  
  8066.   def update
  8067.       update_slide(0,@picture,@pos_org_pic[0])
  8068.       update_slide(1,@picture,@pos_org_pic[1])
  8069.       update_slide(0,@status,@org_pos_states[0])
  8070.       update_slide(1,@status,@org_pos_states[1])   
  8071.       update_slide(0,@meter,@org_pos_meter[0])
  8072.       update_slide(1,@meter,@org_pos_meter[1])         
  8073.       refresh_states if @status_old != @actor.states
  8074.       refresh_meter
  8075.       flow_states      
  8076.   end
  8077.  
  8078.  
  8079. #--------------------------------------------------------------------------
  8080. # ● Update Slide
  8081. #--------------------------------------------------------------------------                       
  8082.   def update_slide(type,sprite,np)
  8083.       sprite.opacity += 5
  8084.       cp = type == 0 ? sprite.x : sprite.y
  8085.       sp = 3 + ((cp - np).abs / 10)
  8086.       if cp > np
  8087.          cp -= sp
  8088.          cp = np if cp < np
  8089.       elsif cp < np
  8090.          cp += sp
  8091.          cp = np if cp > np
  8092.       end     
  8093.       sprite.x = cp if type == 0
  8094.       sprite.y = cp if type == 1
  8095.   end   
  8096.  
  8097. end
  8098.  
  8099. #~ #==============================================================================
  8100. #~ # ■ Scene_Status
  8101. #~ #==============================================================================
  8102. #~ class Scene_Status
  8103. #~   
  8104. #~   #--------------------------------------------------------------------------
  8105. #~   # ● Create Sprites
  8106. #~   #--------------------------------------------------------------------------
  8107. #~   def create_sprites
  8108. #~       create_menu_background
  8109. #~       create_layout
  8110. #~       create_particles
  8111. #~       create_status_window
  8112. #~       create_parameter
  8113. #~   end
  8114.  
  8115. #~   #--------------------------------------------------------------------------
  8116. #~   # ● Create Menu Background
  8117. #~   #--------------------------------------------------------------------------            
  8118. #~   def create_menu_background
  8119. #~       @background = Plane.new
  8120. #~       @background.bitmap = $game_temp.pre_cache_status_menu[0]
  8121. #~       @background.z = 0
  8122. #~       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  8123. #~   end   
  8124. #~   
  8125. #~   #--------------------------------------------------------------------------
  8126. #~   # ● Create Layout
  8127. #~   #--------------------------------------------------------------------------              
  8128. #~   def create_layout     
  8129. #~       @layout = Sprite.new
  8130. #~       @layout.bitmap = $game_temp.pre_cache_status_menu[1]
  8131. #~       @layout.z = 9
  8132. #~       @layout.x = -150
  8133. #~       @layout.opacity = 0
  8134. #~   end  
  8135. #~   
  8136. #~   #--------------------------------------------------------------------------
  8137. #~   # ● Create Particles
  8138. #~   #--------------------------------------------------------------------------  
  8139. #~   def create_particles
  8140. #~       @particles_sprite =[]
  8141. #~       for i in 0...NUMBER_OF_PARTICLES
  8142. #~           @particles_sprite.push(Particles_Menu.new(nil))
  8143. #~       end
  8144. #~   end   
  8145. #~     
  8146. #~   #--------------------------------------------------------------------------
  8147. #~   # ● Create Status Window
  8148. #~   #--------------------------------------------------------------------------  
  8149. #~   def create_status_window
  8150. #~       @status_window = Window_Status.new(@actor)
  8151. #~       @status_window.set_handler(:cancel,   method(:return_scene))
  8152. #~       @status_window.set_handler(:pagedown, method(:next_actor))
  8153. #~       @status_window.set_handler(:pageup,   method(:prev_actor))
  8154. #~       @org_pos_win = [@status_window.x,@status_window.y]
  8155. #~       @status_window.x += 150
  8156. #~       @status_window.opacity = 0
  8157. #~       @status_window.contents_opacity = 0
  8158. #~   end  
  8159. #~   
  8160. #~   #--------------------------------------------------------------------------
  8161. #~   # ● Create Parameter
  8162. #~   #--------------------------------------------------------------------------   
  8163. #~   def create_parameter
  8164. #~       @parameter = Status_Parameter.new(@actor)
  8165. #~   end
  8166. #~   
  8167. #~ end
  8168.  
  8169. #~ #==============================================================================
  8170. #~ # ■ Scene_Status
  8171. #~ #==============================================================================
  8172. #~ class Scene_Status
  8173. #~   
  8174. #~   #--------------------------------------------------------------------------
  8175. #~   # ● Execute Dispose
  8176. #~   #--------------------------------------------------------------------------        
  8177. #~   def execute_dispose
  8178. #~       Graphics.freeze
  8179. #~       dispose_background
  8180. #~       dispose_layout
  8181. #~       dispose_particles
  8182. #~       dispose_status_window
  8183. #~       dispose_parameter
  8184. #~    end
  8185. #~   
  8186. #~   #--------------------------------------------------------------------------
  8187. #~   # ● Dispose Background
  8188. #~   #--------------------------------------------------------------------------  
  8189. #~   def dispose_background
  8190. #~       return if @background == nil
  8191. #~       @background.dispose
  8192. #~       @background = nil
  8193. #~   end
  8194. #~   
  8195. #~   #--------------------------------------------------------------------------
  8196. #~   # ● Dispose Layout
  8197. #~   #--------------------------------------------------------------------------               
  8198. #~   def dispose_layout
  8199. #~       return if @layout == nil
  8200. #~       @layout.dispose
  8201. #~       @layout = nil
  8202. #~   end  
  8203. #~   
  8204. #~  #--------------------------------------------------------------------------
  8205. #~  # ● Dispose Particles
  8206. #~  #--------------------------------------------------------------------------   
  8207. #~  def dispose_particles
  8208. #~      return if @particles_sprite == nil
  8209. #~      @particles_sprite.each {|sprite| sprite.dispose }
  8210. #~  end     
  8211. #~   
  8212. #~   #--------------------------------------------------------------------------
  8213. #~   # ● Dispose Status Window
  8214. #~   #--------------------------------------------------------------------------  
  8215. #~   def dispose_status_window
  8216. #~       return if @status_window == nil
  8217. #~       @status_window.dispose
  8218. #~   end  
  8219. #~  
  8220. #~   #--------------------------------------------------------------------------
  8221. #~   # ● Dispose Parameter
  8222. #~   #--------------------------------------------------------------------------   
  8223. #~   def dispose_parameter
  8224. #~       return if @parameter == nil
  8225. #~       @parameter.dispose
  8226. #~   end  
  8227. #~   
  8228. #~ end
  8229.  
  8230. #~ #==============================================================================
  8231. #~ # ■ Scene Status
  8232. #~ #==============================================================================
  8233. #~ class Scene_Status
  8234. #~   
  8235. #~   #--------------------------------------------------------------------------
  8236. #~   # ● Update Sprites
  8237. #~   #--------------------------------------------------------------------------         
  8238. #~   def update_sprites   
  8239. #~       update_background
  8240. #~       update_particles     
  8241. #~       update_status_window
  8242. #~       update_parameter
  8243. #~       update_move
  8244. #~   end
  8245.  
  8246. #~   #--------------------------------------------------------------------------
  8247. #~   # ● Update Background
  8248. #~   #--------------------------------------------------------------------------              
  8249. #~   def update_background
  8250. #~       return if @background == nil
  8251. #~       @background.ox += @background_scroll[0]
  8252. #~       @background.oy += @background_scroll[1]
  8253. #~   end   
  8254. #~   
  8255. #~   #--------------------------------------------------------------------------
  8256. #~   # ● Update Particles
  8257. #~   #--------------------------------------------------------------------------  
  8258. #~   def update_particles
  8259. #~       return if @particles_sprite == nil
  8260. #~       @particles_sprite.each {|sprite| sprite.update }
  8261. #~   end
  8262. #~   
  8263. #~   #--------------------------------------------------------------------------
  8264. #~   # ● Update Sprites
  8265. #~   #--------------------------------------------------------------------------  
  8266. #~   def update_status_window
  8267. #~       return if @status_window == nil
  8268. #~       @status_window.update
  8269. #~   end
  8270. #~     
  8271. #~   #--------------------------------------------------------------------------
  8272. #~   # ● Update Move
  8273. #~   #--------------------------------------------------------------------------      
  8274. #~   def update_move
  8275. #~       update_slide(0,@status_window,@org_pos_win[0],0)
  8276. #~       update_slide(1,@status_window,@org_pos_win[1],0)
  8277. #~       update_slide(0,@layout,0,1)
  8278. #~       update_slide(1,@layout,0,1)     
  8279. #~   end  
  8280. #~   
  8281. #~  #--------------------------------------------------------------------------
  8282. #~  # ● Update Slide
  8283. #~  #--------------------------------------------------------------------------                       
  8284. #~   def update_slide(type,sprite,np,opa)
  8285. #~       if opa == 0
  8286. #~          sprite.contents_opacity += 5
  8287. #~       else   
  8288. #~          sprite.opacity += 5
  8289. #~       end  
  8290. #~       cp = type == 0 ? sprite.x : sprite.y
  8291. #~       sp = 3 + ((cp - np).abs / 10)
  8292. #~       if cp > np
  8293. #~          cp -= sp
  8294. #~          cp = np if cp < np
  8295. #~       elsif cp < np
  8296. #~          cp += sp
  8297. #~          cp = np if cp > np
  8298. #~       end     
  8299. #~       sprite.x = cp if type == 0
  8300. #~       sprite.y = cp if type == 1
  8301. #~   end   
  8302. #~   
  8303. #~   #--------------------------------------------------------------------------
  8304. #~   # ● Update Parameter
  8305. #~   #--------------------------------------------------------------------------   
  8306. #~   def update_parameter
  8307. #~       return if @parameter == nil
  8308. #~       @parameter.update
  8309. #~   end   
  8310. #~   
  8311. #~ end
  8312.  
  8313. #~ #==============================================================================
  8314. #~ # ■ Scene_Status
  8315. #~ #==============================================================================
  8316. #~ class Scene_Status
  8317. #~   
  8318. #~   #--------------------------------------------------------------------------
  8319. #~   # ● Update
  8320. #~   #--------------------------------------------------------------------------      
  8321. #~   def update
  8322. #~       update_sprites
  8323. #~       update_command
  8324. #~   end
  8325.  
  8326. #~   #--------------------------------------------------------------------------
  8327. #~   # ● Return Scene
  8328. #~   #--------------------------------------------------------------------------         
  8329. #~   def return_scene
  8330. #~       Sound.play_cancel
  8331. #~       SceneManager.return
  8332. #~   end
  8333. #~  
  8334. #~   #--------------------------------------------------------------------------
  8335. #~   # ● ON Actor Charge
  8336. #~   #--------------------------------------------------------------------------
  8337. #~   def on_actor_change
  8338. #~       Sound.play_cursor
  8339. #~       $game_temp.actor_menu_temp = @actor
  8340. #~       SceneManager.goto(Scene_Status)
  8341. #~   end  
  8342. #~   
  8343. #~ end
  8344.  
  8345. #~ #==============================================================================
  8346. #~ # ■ Scene_Status
  8347. #~ #==============================================================================
  8348. #~ class Scene_Status
  8349.  
  8350. #~   #--------------------------------------------------------------------------
  8351. #~   # ● Update Command
  8352. #~   #--------------------------------------------------------------------------      
  8353. #~   def update_command
  8354. #~       update_next_actor
  8355. #~   end
  8356. #~   
  8357. #~   #--------------------------------------------------------------------------
  8358. #~   # ● Update Next Actor
  8359. #~   #--------------------------------------------------------------------------        
  8360. #~   def update_next_actor
  8361. #~       if Input.trigger?(:RIGHT)
  8362. #~          @status_window.next_actor
  8363. #~        elsif Input.trigger?(:LEFT)
  8364. #~          @status_window.prev_actor
  8365. #~       end
  8366. #~   end
  8367. #~   
  8368. #~ end
  8369.  
  8370.  
  8371.  
  8372. #==============================================================================
  8373. # ■ Game_Temp
  8374. #==============================================================================
  8375. class Game_Temp
  8376.  
  8377.   #--------------------------------------------------------------------------
  8378.   # ● Execute Pre Cache Party Menu
  8379.   #--------------------------------------------------------------------------   
  8380.   def execute_pre_cache_party_menu
  8381.       @pre_cache_party_menu = []
  8382.       @pre_cache_party_menu.push(Cache.menu_party("Background"))
  8383.       @pre_cache_party_menu.push(Cache.menu_party("Layout"))
  8384.   end   
  8385.  
  8386. end
  8387.  
  8388. #==============================================================================
  8389. # ■ Scene_Party
  8390. #==============================================================================
  8391. class Scene_Party
  8392.   include MOG_MENU_PARTY
  8393.   include MOG_MENU_BASE
  8394.  
  8395.   #--------------------------------------------------------------------------
  8396.   # ● Main
  8397.   #--------------------------------------------------------------------------        
  8398.   def main
  8399.       execute_setup
  8400.       execute_loop
  8401.       execute_dispose
  8402.   end  
  8403.  
  8404.   #--------------------------------------------------------------------------
  8405.   # ● Execute Setup
  8406.   #--------------------------------------------------------------------------        
  8407.   def execute_setup
  8408.       @phase = 0
  8409.       @actor = $game_party.members[0]
  8410.       @actor_old = @actor
  8411.       create_sprites
  8412.   end
  8413.  
  8414.   #--------------------------------------------------------------------------
  8415.   # ● Execute Lopp
  8416.   #--------------------------------------------------------------------------        
  8417.   def execute_loop
  8418.       Graphics.transition(10)
  8419.       loop do
  8420.          Input.update
  8421.          update
  8422.          Graphics.update
  8423.          break if SceneManager.scene != self
  8424.       end
  8425.   end
  8426.  
  8427. end
  8428.  
  8429. #==============================================================================
  8430. # ■ Actor Menu Status Party
  8431. #==============================================================================
  8432. class Actor_Menu_Status_Party
  8433.  
  8434.   include MOG_ACTOR_MENU_PARTY
  8435.  
  8436.   #--------------------------------------------------------------------------
  8437.   # ● Initialize
  8438.   #--------------------------------------------------------------------------
  8439.   def initialize
  8440.       @active = false
  8441.       @max_members = $game_party.max_battle_members
  8442.       @max_members = $game_party.members.size if @max_members > $game_party.members.size
  8443.       create_sprites
  8444.   end
  8445.  
  8446.   #--------------------------------------------------------------------------
  8447.   # ● Create Sprites
  8448.   #--------------------------------------------------------------------------  
  8449.   def create_sprites
  8450.       @face = []
  8451.       @face_org = []
  8452.       @name = []
  8453.       @name_org = []
  8454.       @actor_id = []
  8455.       #space = 70
  8456.       space = 124
  8457.       index = 0
  8458.       for actor in $game_party.members  
  8459.          @face.push(Sprite.new)
  8460.          @face_org[index] = [FACE_POSITION[0],FACE_POSITION[1] + space * index]
  8461.          @face[index].x = @face_org[index][0] + 150 + (150 * index)
  8462.          @face[index].y = @face_org[index][1]
  8463.          @face[index].z = 10   
  8464.          @name.push(Sprite.new)
  8465.          @name[index].bitmap = Bitmap.new(200,120)
  8466.          @name[index].bitmap.font.size = FONT_SIZE
  8467.          @name[index].bitmap.font.bold = FONT_BOLD
  8468.          @name_org[index] = [NAME_POSITION[0],NAME_POSITION[1] + space * index]
  8469.          @name[index].x = @name_org[index][0] + 150 + (150 * index)
  8470.          @name[index].y = @name_org[index][1]
  8471.          @name[index].z = 11
  8472.          @actor_id[index] = actor.id
  8473.          index += 1
  8474.          break if index >= @max_members
  8475.       end
  8476.       refresh
  8477.   end
  8478.  
  8479.   #--------------------------------------------------------------------------
  8480.   # ● Refresh Position
  8481.   #--------------------------------------------------------------------------   
  8482.   def refresh_position(actor,index)
  8483.       @actor_id[index] = actor.id
  8484.       @face[index].x = @face_org[index][0] + 150 + (150 * index)
  8485.       @name[index].x = @name_org[index][0] + 150 + (150 * index)   
  8486.   end
  8487.  
  8488.   #--------------------------------------------------------------------------
  8489.   # ● Dispose
  8490.   #--------------------------------------------------------------------------      
  8491.   def dispose
  8492.       @face.each {|sprite| sprite.dispose }
  8493.       @name.each {|sprite| sprite.bitmap.dispose }
  8494.       @name.each {|sprite| sprite.dispose }
  8495.   end
  8496.  
  8497.   #--------------------------------------------------------------------------
  8498.   # ● Refresh
  8499.   #--------------------------------------------------------------------------      
  8500.   def refresh
  8501.     #Party界面,不需要小图
  8502. #~       index = 0
  8503. #~       for actor in $game_party.members  
  8504. #~           face_name = "Face_B" + actor.id.to_s
  8505. #~           @face[index].bitmap = Cache.menu(face_name.to_s)
  8506. #~           @name[index].bitmap.clear
  8507. #~           @name[index].bitmap.draw_text(100,28,64,32,"LV " + actor.level.to_s,0)
  8508. #~           aname = actor.name
  8509. #~           @name[index].bitmap.draw_text(0,0,100,32,aname.to_s,0)
  8510. #~           refresh_position(actor,index) if @actor_id[index] != actor.id
  8511. #~           index += 1
  8512. #~           break if index >= @max_members
  8513. #~       end
  8514.   end
  8515.  
  8516. #--------------------------------------------------------------------------
  8517. # ● Update Slide
  8518. #--------------------------------------------------------------------------                       
  8519.   def update_slide(type,sprite,np)
  8520.       sprite.opacity += 5
  8521.       cp = type == 0 ? sprite.x : sprite.y
  8522.       sp = 3 + ((cp - np).abs / 10)
  8523.       if cp > np
  8524.          cp -= sp
  8525.          cp = np if cp < np
  8526.       elsif cp < np
  8527.          cp += sp
  8528.          cp = np if cp > np
  8529.       end     
  8530.       sprite.x = cp if type == 0
  8531.       sprite.y = cp if type == 1
  8532.   end      
  8533.  
  8534.   #--------------------------------------------------------------------------
  8535.   # ● Update
  8536.   #--------------------------------------------------------------------------
  8537.   def update(actor)
  8538.       for index in 0...@name.size
  8539.           update_slide(0,@face[index],@face_org[index][0])
  8540.           update_slide(1,@face[index],@face_org[index][1])
  8541.           update_slide(0,@name[index],@name_org[index][0])
  8542.           update_slide(1,@name[index],@name_org[index][1])
  8543.       end      
  8544.   end      
  8545.  
  8546. end
  8547.  
  8548. #==============================================================================
  8549. # ■ Window_MenuStatus Party
  8550. #==============================================================================
  8551. class Window_MenuStatus_Party < Window_Selectable
  8552.   attr_reader   :pending_index           
  8553.  
  8554.   #--------------------------------------------------------------------------
  8555.   # ● Initialize
  8556.   #--------------------------------------------------------------------------
  8557.   def initialize(x, y)
  8558.       super(x, y+10, window_width, window_height)
  8559.       @pending_index = -1
  8560.       self.opacity = 0
  8561.       self.contents.font.bold = true
  8562.       self.contents.font.size = 18
  8563.       refresh
  8564.   end
  8565.  
  8566.   #--------------------------------------------------------------------------
  8567.   # ● Window Width
  8568.   #--------------------------------------------------------------------------
  8569.   def window_width
  8570.       Graphics.width - 320 #我的修改:160->320
  8571.   end
  8572.  
  8573.   #--------------------------------------------------------------------------
  8574.   # ● Window Height
  8575.   #--------------------------------------------------------------------------
  8576.   def window_height
  8577.       Graphics.height - 80 # -80我的修改
  8578.   end
  8579.  
  8580.   #--------------------------------------------------------------------------
  8581.   # ● Item Max
  8582.   #--------------------------------------------------------------------------
  8583.   def item_max
  8584.       $game_party.members.size
  8585.   end
  8586.  
  8587.   #--------------------------------------------------------------------------
  8588.   # ● Item Height
  8589.   #--------------------------------------------------------------------------
  8590.   def item_height
  8591.     (height - standard_padding * 2) / 4
  8592.   end
  8593.  
  8594.   #--------------------------------------------------------------------------
  8595.   # ● Draw Item
  8596.   #--------------------------------------------------------------------------
  8597.   def draw_item(index)
  8598.     actor = $game_party.members[index]
  8599.     enabled = $game_party.battle_members.include?(actor)
  8600.     rect = item_rect(index)
  8601.     draw_item_background(index)
  8602.     draw_actor_face(actor, rect.x + 1, rect.y + 1, enabled)
  8603.     self.contents.font.bold = true
  8604.     self.contents.font.color = Color.new(255,155,55,255)#颜色
  8605.     draw_text(rect.x + 60,rect.y + 23,80,32,"等级",2)
  8606.     draw_text(rect.x + 60,rect.y + 43,80,32,Vocab::param(0),2)
  8607.     draw_text(rect.x + 60,rect.y + 63,80,32,Vocab::param(1),2)
  8608.  
  8609.     draw_text(rect.x + 156,rect.y + 23,80,32,Vocab::param(2),2)
  8610.     draw_text(rect.x + 156,rect.y + 43,80,32,Vocab::param(3),2)
  8611.     draw_text(rect.x + 156,rect.y + 63,80,32,Vocab::param(6),2)   
  8612.  
  8613.     draw_text(rect.x + 252,rect.y + 23,80,32,Vocab::param(4),2)
  8614.     draw_text(rect.x + 252,rect.y + 43,80,32,Vocab::param(5),2)
  8615.     draw_text(rect.x + 252,rect.y + 63,80,32,Vocab::param(7),2)      
  8616.  
  8617.     self.contents.font.color = Color.new(255,255,55,255)#颜色
  8618.     draw_text(rect.x + 105,rect.y,105,32,actor.name,0)
  8619.  
  8620.     self.contents.font.bold = false
  8621.     self.contents.font.color = Color.new(0,255,0,255)#颜色
  8622.     draw_text(rect.x + 111,rect.y + 23,80,32,actor.level,2)
  8623.     draw_text(rect.x + 111,rect.y + 43,80,32,actor.mhp,2)
  8624.     draw_text(rect.x + 111,rect.y + 63,80,32,actor.mmp,2)   
  8625.  
  8626.     self.contents.font.color = Color.new(0,0,255,255)#颜色
  8627.     draw_text(rect.x + 200,rect.y + 23,80,32,actor.atk,2)
  8628.     draw_text(rect.x + 200,rect.y + 43,80,32,actor.def,2)
  8629.     draw_text(rect.x + 200,rect.y + 63,80,32,actor.agi,2)   
  8630.  
  8631.     self.contents.font.color = Color.new(255,0,0,255)#颜色
  8632.     draw_text(rect.x + 300,rect.y + 23,80,32,actor.mat,2)
  8633.     draw_text(rect.x + 300,rect.y + 43,80,32,actor.mdf,2)
  8634.     draw_text(rect.x + 300,rect.y + 63,80,32,actor.luk,2)      
  8635.  
  8636.     # 我的修改(添加更详细的属性)
  8637.     self.contents.font.bold = true
  8638.     self.contents.font.color = Color.new(255,155,55,255)#颜色
  8639.     draw_text(rect.x + 348,rect.y + 23,80,32,"命中",2)
  8640.     draw_text(rect.x + 348,rect.y + 43,80,32,"闪避",2)
  8641.     draw_text(rect.x + 348,rect.y + 63,80,32,"反击",2)
  8642.  
  8643.     draw_text(rect.x + 464,rect.y + 23,80,32,"暴击",2)
  8644.     draw_text(rect.x + 464,rect.y + 43,80,32,"回血",2)
  8645.     draw_text(rect.x + 464,rect.y + 63,80,32,"回蓝",2)
  8646.  
  8647.     self.contents.font.bold = false
  8648.     self.contents.font.color = Color.new(255,255,0,255)#颜色
  8649.     draw_text(rect.x + 420,rect.y + 23,80,32,sprintf("%1.2f%%", actor.hit * 100),2)
  8650.     draw_text(rect.x + 420,rect.y + 43,80,32,sprintf("%1.2f%%", actor.eva * 100),2)
  8651.     draw_text(rect.x + 420,rect.y + 63,80,32,sprintf("%1.2f%%", actor.cnt * 100),2)
  8652.  
  8653.     self.contents.font.color = Color.new(0,255,255)#颜色
  8654.     draw_text(rect.x + 536,rect.y + 23,80,32,sprintf("%1.2f%%", actor.cri * 100),2)
  8655.     draw_text(rect.x + 536,rect.y + 43,80,32,sprintf("%1.2f%%", actor.hrg * 100),2)
  8656.     draw_text(rect.x + 536,rect.y + 63,80,32,sprintf("%1.2f%%", actor.mrg * 100),2)
  8657.     #end
  8658.   end
  8659.  
  8660.  
  8661.   #--------------------------------------------------------------------------
  8662.   # ● Draw Item Background
  8663.   #--------------------------------------------------------------------------
  8664.   def draw_item_background(index)
  8665.       if index == @pending_index
  8666.         contents.fill_rect(item_rect(index), pending_color)
  8667.       end
  8668.   end
  8669.  
  8670.   #--------------------------------------------------------------------------
  8671.   # ● Process OK
  8672.   #--------------------------------------------------------------------------
  8673.   def process_ok
  8674.       super
  8675.       $game_party.menu_actor = $game_party.members[index]
  8676.   end
  8677.  
  8678.   #--------------------------------------------------------------------------
  8679.   # ● Select Last
  8680.   #--------------------------------------------------------------------------
  8681.   def select_last
  8682.       select($game_party.menu_actor.index || 0)
  8683.   end
  8684.  
  8685.   #--------------------------------------------------------------------------
  8686.   # ● Pending Index
  8687.   #--------------------------------------------------------------------------
  8688.   def pending_index=(index)
  8689.       last_pending_index = @pending_index
  8690.       @pending_index = index
  8691.       redraw_item(@pending_index)
  8692.       redraw_item(last_pending_index)
  8693.   end
  8694. end
  8695.  
  8696. #==============================================================================
  8697. # ■ Scene_Party
  8698. #==============================================================================
  8699. class Scene_Party
  8700.  
  8701.   #--------------------------------------------------------------------------
  8702.   # ● Create Sprites
  8703.   #--------------------------------------------------------------------------
  8704.   def create_sprites
  8705.       create_menu_background
  8706.       create_layout
  8707.       create_particles
  8708.       create_status_window
  8709.       create_actor_menu
  8710.   end
  8711.  
  8712.   #--------------------------------------------------------------------------
  8713.   # ● Create Status Window
  8714.   #--------------------------------------------------------------------------
  8715.   def create_status_window
  8716.       @status_window = Window_MenuStatus_Party.new(0,50) #我的修改(0,0)
  8717.  
  8718.       command_formation
  8719.   end  
  8720.  
  8721.   #--------------------------------------------------------------------------
  8722.   # ● Create Actor Menu
  8723.   #--------------------------------------------------------------------------  
  8724.   def create_actor_menu
  8725.       @actor_status = Actor_Menu_Status_Party.new   
  8726.   end
  8727.  
  8728.   #--------------------------------------------------------------------------
  8729.   # ● Command Personal
  8730.   #--------------------------------------------------------------------------
  8731.   def command_personal
  8732.     @status_window.select_last
  8733.     @status_window.activate
  8734.     @status_window.set_handler(:ok,     method(:on_personal_ok))
  8735.     @status_window.set_handler(:cancel, method(:on_personal_cancel))
  8736.   end
  8737.  
  8738.   #--------------------------------------------------------------------------
  8739.   # ● Command Formation
  8740.   #--------------------------------------------------------------------------
  8741.   def command_formation
  8742.     @status_window.index = 0
  8743.     @old_index = @status_window.index
  8744.     @status_window.activate
  8745.     @status_window.set_handler(:ok,     method(:on_formation_ok))
  8746.     @status_window.set_handler(:cancel, method(:on_formation_cancel))
  8747.   end
  8748.  
  8749.   #--------------------------------------------------------------------------
  8750.   # ● On Personal Cancel
  8751.   #--------------------------------------------------------------------------
  8752.   def on_personal_cancel
  8753.       @status_window.unselect
  8754.   end
  8755.  
  8756.   #--------------------------------------------------------------------------
  8757.   # ● On Formation OK
  8758.   #--------------------------------------------------------------------------
  8759.   def on_formation_ok   
  8760.       if @status_window.pending_index >= 0
  8761.         $game_party.swap_order(@status_window.index,
  8762.                                @status_window.pending_index)
  8763.         @status_window.pending_index = -1
  8764.         @status_window.redraw_item(@status_window.index)
  8765.         @actor_status.refresh
  8766.       else
  8767.         @status_window.pending_index = @status_window.index        
  8768.       end
  8769.       @status_window.activate
  8770.   end
  8771.  
  8772.   #--------------------------------------------------------------------------
  8773.   # ● On Formation Cancel
  8774.   #--------------------------------------------------------------------------
  8775.   def on_formation_cancel
  8776.       if @status_window.pending_index >= 0
  8777.          @status_window.pending_index = -1
  8778.          @status_window.activate         
  8779.       else
  8780.          return_scene
  8781.       end
  8782.   end  
  8783.  
  8784.   #--------------------------------------------------------------------------
  8785.   # ● Create Menu Background
  8786.   #--------------------------------------------------------------------------            
  8787.   def create_menu_background
  8788.       @background = Plane.new
  8789.       @background.bitmap = $game_temp.pre_cache_party_menu[0]
  8790.       @background.z = 0
  8791.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  8792.   end   
  8793.  
  8794.   #--------------------------------------------------------------------------
  8795.   # ● Create Layout
  8796.   #--------------------------------------------------------------------------              
  8797.   def create_layout     
  8798.       @layout = Sprite.new
  8799.       @layout.bitmap = $game_temp.pre_cache_party_menu[1]
  8800.       @layout.z = 3
  8801.   end  
  8802.  
  8803.   #--------------------------------------------------------------------------
  8804.   # ● Create Particles
  8805.   #--------------------------------------------------------------------------  
  8806.   def create_particles
  8807.       @particles_sprite =[]
  8808.       for i in 0...NUMBER_OF_PARTICLES
  8809.           @particles_sprite.push(Particles_Menu.new(nil))
  8810.       end
  8811.   end   
  8812.  
  8813. end
  8814.  
  8815. #==============================================================================
  8816. # ■ Scene_Party
  8817. #==============================================================================
  8818. class Scene_Party
  8819.  
  8820.   #--------------------------------------------------------------------------
  8821.   # ● Execute Dispose
  8822.   #--------------------------------------------------------------------------        
  8823.   def execute_dispose
  8824.       Graphics.freeze
  8825.       dispose_background
  8826.       dispose_layout
  8827.       dispose_particles
  8828.       dispose_status_window
  8829.       dispose_actor_menu
  8830.    end
  8831.  
  8832.   #--------------------------------------------------------------------------
  8833.   # ● Dispose Status Window
  8834.   #--------------------------------------------------------------------------           
  8835.    def dispose_status_window
  8836.        @status_window.dispose
  8837.    end
  8838.  
  8839.   #--------------------------------------------------------------------------
  8840.   # ● Dispose Background
  8841.   #--------------------------------------------------------------------------  
  8842.   def dispose_background
  8843.       return if @background == nil
  8844.       @background.dispose
  8845.       @background = nil
  8846.   end   
  8847.  
  8848.   #--------------------------------------------------------------------------
  8849.   # ● Dispose Layout
  8850.   #--------------------------------------------------------------------------               
  8851.   def dispose_layout
  8852.       return if @layout == nil
  8853.       @layout.dispose
  8854.       @layout = nil
  8855.   end  
  8856.  
  8857. #--------------------------------------------------------------------------
  8858. # ● Dispose Particles
  8859. #--------------------------------------------------------------------------   
  8860. def dispose_particles
  8861.      return if @particles_sprite == nil
  8862.      @particles_sprite.each {|sprite| sprite.dispose }
  8863. end     
  8864.  
  8865. #--------------------------------------------------------------------------
  8866. # ● Dispose Actor Menu
  8867. #--------------------------------------------------------------------------   
  8868. def dispose_actor_menu
  8869.      return if @actor_status == nil
  8870.      @actor_status.dispose
  8871. end   
  8872.  
  8873. end
  8874.  
  8875. #==============================================================================
  8876. # ■ Scene_Party
  8877. #==============================================================================
  8878. class Scene_Party
  8879.  
  8880.   #--------------------------------------------------------------------------
  8881.   # ● Update Sprites
  8882.   #--------------------------------------------------------------------------         
  8883.   def update_sprites   
  8884.       update_background
  8885.       update_particles
  8886.       update_status_window
  8887.   end
  8888.  
  8889.   #--------------------------------------------------------------------------
  8890.   # ● Update Background
  8891.   #--------------------------------------------------------------------------              
  8892.   def update_background
  8893.       return if @background == nil
  8894.       @background.ox += @background_scroll[0]
  8895.       @background.oy += @background_scroll[1]
  8896.   end   
  8897.  
  8898.   #--------------------------------------------------------------------------
  8899.   # ● Update Particles
  8900.   #--------------------------------------------------------------------------  
  8901.   def update_particles
  8902.       return if @particles_sprite == nil
  8903.       @particles_sprite.each {|sprite| sprite.update }
  8904.   end
  8905.  
  8906.   #--------------------------------------------------------------------------
  8907.   # ● Update Status Window
  8908.   #--------------------------------------------------------------------------   
  8909.   def update_status_window
  8910.       return if @status_window == nil
  8911.       @status_window.update
  8912.       update_slide(0,@status_window,160) #我的修改,原为0,靠左
  8913.       update_slide(1,@status_window,40)  #我的修改,原为0,靠上
  8914.       @actor = $game_party.members[@status_window.index]
  8915.       @actor_status.update(@actor)
  8916.   end
  8917.  
  8918. #--------------------------------------------------------------------------
  8919. # ● Update Slide
  8920. #--------------------------------------------------------------------------                       
  8921.   def update_slide(type,sprite,np)
  8922.       sprite.contents_opacity += 5
  8923.       cp = type == 0 ? sprite.x : sprite.y
  8924.       sp = 3 + ((cp - np).abs / 10)
  8925.       if cp > np
  8926.          cp -= sp
  8927.          cp = np if cp < np
  8928.       elsif cp < np
  8929.          cp += sp
  8930.          cp = np if cp > np
  8931.       end     
  8932.       sprite.x = cp if type == 0
  8933.       sprite.y = cp if type == 1
  8934.   end   
  8935.  
  8936. end
  8937.  
  8938. #==============================================================================
  8939. # ■ Scene_Party
  8940. #==============================================================================
  8941. class Scene_Party
  8942.  
  8943.   #--------------------------------------------------------------------------
  8944.   # ● Update
  8945.   #--------------------------------------------------------------------------      
  8946.   def update
  8947.       update_sprites
  8948.       update_command
  8949.   end
  8950.  
  8951.   #--------------------------------------------------------------------------
  8952.   # ● Return Scene
  8953.   #--------------------------------------------------------------------------         
  8954.   def return_scene
  8955.       Sound.play_cancel
  8956.       SceneManager.return
  8957.   end
  8958.  
  8959.   #--------------------------------------------------------------------------
  8960.   # ● ON Actor Charge
  8961.   #--------------------------------------------------------------------------
  8962.   def on_actor_change
  8963.       $game_temp.actor_menu_temp = @actor
  8964.       SceneManager.goto(Scene_Status)
  8965.   end  
  8966.  
  8967. end
  8968.  
  8969. #==============================================================================
  8970. # ■ Scene_Party
  8971. #==============================================================================
  8972. class Scene_Party
  8973.  
  8974.   #--------------------------------------------------------------------------
  8975.   # ● Update Command
  8976.   #--------------------------------------------------------------------------      
  8977.   def update_command
  8978.  
  8979.   end
  8980.  
  8981. end
  8982.  
  8983. #==============================================================================
  8984. # ■ Game_Temp
  8985. #==============================================================================
  8986. class Game_Temp
  8987.  
  8988.   #--------------------------------------------------------------------------
  8989.   # ● Execute Pre Cache File Menu
  8990.   #--------------------------------------------------------------------------   
  8991.   def execute_pre_cache_file_menu
  8992.       @pre_cache_file_menu = []
  8993.       @pre_cache_file_menu.push(Cache.menu_save("Background"))
  8994.       @pre_cache_file_menu.push(Cache.menu_save("Layout"))
  8995.       @pre_cache_file_menu.push(Cache.menu_save("File_Mode"))
  8996.       @pre_cache_file_menu.push(Cache.menu_save("File_layout_1"))
  8997.       @pre_cache_file_menu.push(Cache.menu_save("File_layout_2"))
  8998.       @pre_cache_file_menu.push(Cache.menu_save("File_layout_3"))
  8999.       @pre_cache_file_menu.push(Cache.menu_save("Character_Floor"))
  9000.       @pre_cache_file_menu.push(Cache.menu_save("File_Number"))
  9001.   end   
  9002.  
  9003. end
  9004.  
  9005. #==============================================================================
  9006. # ■ Game Temp
  9007. #==============================================================================
  9008. class Game_Temp
  9009.  
  9010.   attr_accessor :scene_save
  9011.   #--------------------------------------------------------------------------
  9012.   # ● Initialize
  9013.   #--------------------------------------------------------------------------
  9014.   alias mog_scene_file_initialize initialize
  9015.   def initialize
  9016.       mog_scene_file_initialize
  9017.       @scene_save = false  
  9018.   end
  9019.  
  9020. end
  9021.  
  9022. #==============================================================================
  9023. # ■ Window_Base
  9024. #==============================================================================
  9025. class Window_Base < Window
  9026.  
  9027.   #--------------------------------------------------------------------------
  9028.   # ● draw_picture_number(x,y,value,file_name,align, space, frame_max ,frame_index)     
  9029.   #--------------------------------------------------------------------------
  9030.   # X - Posição na horizontal
  9031.   # Y - Posição na vertical
  9032.   # VALUE - Valor Numérico
  9033.   # FILE_NAME - Nome do arquivo
  9034.   # ALIGN - Centralizar 0 - Esquerda 1- Centro 2 - Direita  
  9035.   # SPACE - Espaço entre os números.
  9036.   # FRAME_MAX - Quantidade de quadros(Linhas) que a imagem vai ter.
  9037.   # FRAME_INDEX - Definição do quadro a ser utilizado.
  9038.   #--------------------------------------------------------------------------  
  9039.   def draw_picture_number_file(x,y,value, file_name,align = 0, space = 0, frame_max = 1,frame_index = 0)     
  9040.       number_image = $game_temp.pre_cache_file_menu[7]
  9041.       frame_max = 1 if frame_max < 1
  9042.       frame_index = frame_max -1 if frame_index > frame_max -1
  9043.       align = 2 if align > 2
  9044.       cw = number_image.width / 10
  9045.       ch = number_image.height / frame_max
  9046.       h = ch * frame_index
  9047.       number = value.abs.to_s.split(//)
  9048.       case align
  9049.          when 0
  9050.             plus_x = (-cw + space) * number.size
  9051.          when 1
  9052.             plus_x = (-cw + space) * number.size
  9053.             plus_x /= 2
  9054.          when 2  
  9055.             plus_x = 0
  9056.       end
  9057.       for r in 0..number.size - 1      
  9058.           number_abs = number[r].to_i
  9059.           number_rect = Rect.new(cw * number_abs, h, cw, ch)
  9060.           self.contents.blt(plus_x + x + ((cw - space) * r), y , number_image, number_rect)        
  9061.       end   
  9062.   end
  9063.  
  9064.   #--------------------------------------------------------------------------
  9065.   # ● Draw Help Layout
  9066.   #--------------------------------------------------------------------------
  9067.   def draw_face_save(name,x,y,type)
  9068.       if type == 0
  9069.          image_name = name + "_0"
  9070.       elsif type == 1
  9071.          image_name = name + "_1"         
  9072.       else  
  9073.          image_name = name + "_2"
  9074.       end
  9075.       image = Cache.face(image_name)   
  9076.       cw = image.width  
  9077.       ch = image.height
  9078.       src_rect = Rect.new(0, 0, cw, ch)   
  9079.       self.contents.blt(x , y , image, src_rect)  
  9080.       image.dispose
  9081.   end   
  9082.  
  9083.   #--------------------------------------------------------------------------
  9084.   # ● draw_parameter_layout
  9085.   #--------------------------------------------------------------------------  
  9086.   def draw_parameter_layout(x,y)
  9087.       image = $game_temp.pre_cache_file_menu[3]
  9088.       cw = image.width  
  9089.       ch = image.height
  9090.       src_rect = Rect.new(0, 0, cw, ch)   
  9091.       self.contents.blt(x , y , image, src_rect)     
  9092.   end   
  9093.  
  9094.   #--------------------------------------------------------------------------
  9095.   # ● draw_parameter_layout2
  9096.   #--------------------------------------------------------------------------  
  9097.   def draw_parameter_layout2(x,y,type)
  9098.       if type == 0
  9099.          image = $game_temp.pre_cache_file_menu[4]
  9100.       else   
  9101.          image = $game_temp.pre_cache_file_menu[5]
  9102.       end  
  9103.       cw = image.width  
  9104.       ch = image.height
  9105.       src_rect = Rect.new(0, 0, cw, ch)   
  9106.       self.contents.blt(x , y , image, src_rect)     
  9107.   end      
  9108.  
  9109.   #--------------------------------------------------------------------------
  9110.   # ● draw_character_floor
  9111.   #--------------------------------------------------------------------------  
  9112.   def draw_character_floor(x,y)
  9113.       image = $game_temp.pre_cache_file_menu[6]
  9114.       cw = image.width  
  9115.       ch = image.height
  9116.       src_rect = Rect.new(0, 0, cw, ch)   
  9117.       self.contents.blt(x , y , image, src_rect)   
  9118.   end
  9119.  
  9120. end  
  9121.  
  9122. #==============================================================================
  9123. # ■ DataManager
  9124. #==============================================================================
  9125. module DataManager
  9126.  
  9127.   #--------------------------------------------------------------------------
  9128.   # ● Make Save Header
  9129.   #--------------------------------------------------------------------------  
  9130.   def self.make_save_header
  9131.       header = {}
  9132.       header[:characters] = $game_party.characters_for_savefile
  9133.       header[:playtime_s] = $game_system.playtime_s
  9134.       header[:playtime] = $game_system.playtime
  9135.       header[:map_name] = $game_map.display_name
  9136.       header[:members] = $game_party.members
  9137.       header
  9138.   end  
  9139.  
  9140. end  
  9141.  
  9142. #==============================================================================
  9143. # ■ Scene Save
  9144. #==============================================================================
  9145. class Scene_Save < Scene_File
  9146.  
  9147.   #--------------------------------------------------------------------------
  9148.   # ● Initialize
  9149.   #--------------------------------------------------------------------------
  9150.   def initialize
  9151.       $game_temp.scene_save = true
  9152.       super
  9153.   end  
  9154.  
  9155. end  
  9156.  
  9157. #==============================================================================
  9158. # ■ Scene Load
  9159. #==============================================================================
  9160. class Scene_Load < Scene_File
  9161.  
  9162.   #--------------------------------------------------------------------------
  9163.   # ● Initialize
  9164.   #--------------------------------------------------------------------------
  9165.   def initialize
  9166.       $game_temp.scene_save = false
  9167.       super
  9168.   end  
  9169.  
  9170. end
  9171.  
  9172. #==============================================================================
  9173. # ■ Scene_File
  9174. #==============================================================================
  9175. class Scene_File
  9176.   include MOG_MENU_SAVE
  9177.  
  9178. #--------------------------------------------------------------------------
  9179. # ● Main
  9180. #--------------------------------------------------------------------------         
  9181. def main
  9182.      $game_temp.execute_pre_cache_file_menu
  9183.      create_sprites
  9184.      Graphics.transition(10)
  9185.      execute_loop
  9186.      execute_dispose
  9187. end   
  9188.  
  9189. #--------------------------------------------------------------------------
  9190. # ● Execute Loop
  9191. #--------------------------------------------------------------------------           
  9192. def execute_loop
  9193.      loop do
  9194.           Graphics.update
  9195.           Input.update
  9196.           update
  9197.           if SceneManager.scene != self
  9198.               break
  9199.           end
  9200.      end
  9201. end   
  9202.  
  9203. end
  9204.  
  9205. #==============================================================================
  9206. # ■ Window_SaveFile
  9207. #==============================================================================
  9208. class Window_SaveFile_A < Window_Base
  9209.   attr_reader   :filename               
  9210.   attr_reader   :file_exist               
  9211.   attr_reader   :time_stamp              
  9212.   attr_reader   :selected                 
  9213.   attr_reader   :file_index
  9214.  
  9215.   #--------------------------------------------------------------------------
  9216.   # ● Initialize
  9217.   #--------------------------------------------------------------------------
  9218.   def initialize(file_index, filename)
  9219.       super(0, 0,720, 180)
  9220.       self.opacity = 0
  9221.       @file_index = file_index
  9222.       @filename = filename
  9223.       load_gamedata
  9224.       refresh
  9225.       @selected = false
  9226.   end
  9227.  
  9228.   #--------------------------------------------------------------------------
  9229.   # ● load_gamedata
  9230.   #--------------------------------------------------------------------------
  9231.   def load_gamedata
  9232.     @time_stamp = Time.at(0)
  9233.     @file_exist = FileTest.exist?(@filename)
  9234.     if @file_exist
  9235.        header = DataManager.load_header(@file_index)
  9236.        if header == nil
  9237.           @file_exist = false
  9238.           return
  9239.        end  
  9240.        @characters = header[:characters]
  9241.        @total_sec = header[:playtime]
  9242.        @mapname = header[:map_name]
  9243.        @members = header[:members]
  9244.     end
  9245.   end
  9246.  
  9247.   #--------------------------------------------------------------------------
  9248.   # ● Refresh
  9249.   #--------------------------------------------------------------------------
  9250.   MY_Y = 50 #我的修改,调整坐标
  9251.   def refresh
  9252.       self.contents.clear
  9253.       self.contents.font.color = normal_color
  9254.       xp = 96
  9255.       ex = 96#80
  9256.       if @file_exist
  9257.          if @total_sec == nil
  9258.             draw_parameter_layout2(0,50+MY_Y,0)
  9259.             draw_parameter_layout(-10 + xp,0+MY_Y)
  9260.             value = @file_index + 1
  9261.             draw_picture_number_file(13 + xp, 32+MY_Y,value, "File_Number_01",1,0,3,0)           
  9262.             self.contents.draw_text(140, 50+MY_Y, 450, 32, "错误! - 请不要使用旧版的存档...", 0)
  9263.             return
  9264.         end  
  9265.         draw_parameter_layout2(0,50+MY_Y,0)
  9266.         draw_parameter_layout(-10 + xp,0+MY_Y)
  9267.         value = @file_index + 1
  9268.         draw_picture_number_file(13 + xp, 32+MY_Y,value, "File_Number_01",1,0,3,0)
  9269.         draw_party_characters(60 + xp, 0+MY_Y,ex)
  9270.         draw_playtime(555, 20+MY_Y, contents.width - 4, 2)
  9271.         draw_map_location( 484 + xp,64+MY_Y)
  9272.         draw_level(136 + xp,80+MY_Y,ex)
  9273.         #draw_face_save(40 + xp,0+MY_Y) #我的修改
  9274.       else  
  9275.         draw_parameter_layout2(0,50,1)
  9276.         draw_parameter_layout(-10 + xp,0)
  9277.         value = @file_index + 1
  9278.         draw_picture_number_file(13 + xp, 32,value, "File_Number_01",1,0,3,0)      
  9279.          self.contents.draw_text(260, 50, 120, 32, "没有数据", 1)
  9280.       end
  9281.     end
  9282.  
  9283.   #--------------------------------------------------------------------------
  9284.   # ● draw_face
  9285.   #--------------------------------------------------------------------------
  9286.   def draw_face_save(x,y)
  9287.      draw_actor_face(@members[0], x, y)
  9288.   end
  9289.  
  9290.   #--------------------------------------------------------------------------
  9291.   # ● draw_level
  9292.   #--------------------------------------------------------------------------
  9293.   def draw_level(x,y,ex)
  9294.       self.contents.font.color = normal_color   
  9295.       for i in 0...@members.size
  9296.         break if i > 3
  9297.         level = @members[i].level
  9298.         draw_picture_number_file(x + (ex  * i) , y ,level, "File_Number_01",1,0,3,1)
  9299.       end        
  9300.   end
  9301.  
  9302.   #--------------------------------------------------------------------------
  9303.   # ● draw_map_location
  9304.   #--------------------------------------------------------------------------
  9305.   def draw_map_location(x,y)
  9306.       self.contents.font.bold = true
  9307.       self.contents.font.size = 20
  9308.       self.contents.font.italic = false
  9309.       self.contents.font.color = Color.new(255,0,0)
  9310.       self.contents.draw_text(x, y, 125, 32, @mapname.to_s, 0)
  9311.   end
  9312.   #--------------------------------------------------------------------------
  9313.   # ● draw_party_characters
  9314.   #--------------------------------------------------------------------------
  9315.   def draw_party_characters(x, y,ex)
  9316.       for i in 0...@characters.size
  9317.         break if i > 3
  9318.         name = @characters[i][0]
  9319.         index = @characters[i][1]
  9320.         draw_character_floor(- 35 + x + i * ex,y - 20)      
  9321.         draw_character(name, index, x + i * ex, y)
  9322.       end
  9323.   end
  9324.  
  9325.   #--------------------------------------------------------------------------
  9326.   # ● draw_playtime
  9327.   #--------------------------------------------------------------------------
  9328.   def draw_playtime(x, y, width, align)
  9329.       hour = @total_sec / 60 / 60
  9330.       min = @total_sec / 60 % 60
  9331.       sec = @total_sec % 60
  9332.       time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
  9333.       draw_picture_number_file(x + 18 * 0, y ,0, "File_Number_01",0,0,3,0) if hour < 10
  9334.       draw_picture_number_file(x + 18 * 1, y ,hour, "File_Number_01",0,0,3,0)
  9335.       draw_picture_number_file(x + 18 * 3, y ,0, "File_Number_01",0,0,3,0) if min < 10
  9336.       draw_picture_number_file(x + 18 * 4, y ,min, "File_Number_01",0,0,3,0)
  9337.       draw_picture_number_file(x + 18 * 6, y ,0, "File_Number_01",0,0,3,0) if sec < 10
  9338.       draw_picture_number_file(x + 18 * 7, y ,sec , "File_Number_01",0,0,3,0)     
  9339.   end
  9340.  
  9341.   #--------------------------------------------------------------------------
  9342.   # ● selected
  9343.   #--------------------------------------------------------------------------
  9344.   def selected=(selected)
  9345.       @selected = selected
  9346.   end
  9347. end
  9348.  
  9349. #==============================================================================
  9350. # ■ Scene_File
  9351. #==============================================================================
  9352. class Scene_File
  9353.  
  9354.   #--------------------------------------------------------------------------
  9355.   # ● Create Sprites
  9356.   #--------------------------------------------------------------------------
  9357.   def create_sprites
  9358.       @saving = $game_temp.scene_save
  9359.       @file_max = FILES_MAX
  9360.       @file_max = 1 if FILES_MAX < 1
  9361.       create_background
  9362.       create_layout
  9363.       create_savefile_windows
  9364.       create_particles
  9365.       @index = DataManager.latest_savefile_index
  9366.       @check_prev_index = true
  9367.       @savefile_windows[@index].selected = true   
  9368.   end  
  9369.  
  9370.   #--------------------------------------------------------------------------
  9371.   # ● Create Background
  9372.   #--------------------------------------------------------------------------            
  9373.   def create_background
  9374.       @background = Plane.new
  9375.       @background.bitmap = $game_temp.pre_cache_file_menu[0]
  9376.       @background.z = 0
  9377.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  9378.   end   
  9379.  
  9380.   #--------------------------------------------------------------------------
  9381.   # ● Create_Layout
  9382.   #--------------------------------------------------------------------------  
  9383.   def create_layout
  9384.       @layout_01 = Sprite.new  
  9385.       @layout_01.bitmap = $game_temp.pre_cache_file_menu[1]
  9386.       @layout_01.z = 1      
  9387.       @layout_01.blend_type = 1      
  9388.       @save_image = $game_temp.pre_cache_file_menu[2]
  9389.       @layout_02 = Sprite.new  
  9390.       @layout_02.bitmap = Bitmap.new(@save_image.width,@save_image.height)
  9391.       cw = @save_image.width
  9392.       ch = @save_image.height / 2
  9393.       if @saving
  9394.          h = 0
  9395.       else  
  9396.          h = ch
  9397.       end  
  9398.       src_rect = Rect.new(0, h, cw, ch)
  9399.       @layout_02.bitmap.blt(0,0, @save_image, src_rect)      
  9400.       @layout_02.z = 3
  9401.       #@layout_02.y = 370
  9402.       @layout_02.y = 500 #我的修改
  9403.    end
  9404.  
  9405.   #--------------------------------------------------------------------------
  9406.   # ● Create Save File Window
  9407.   #--------------------------------------------------------------------------
  9408.   def create_savefile_windows
  9409. #~       @pw_pos = [-160,32]
  9410. #~       @aw_pos = [-96,160]
  9411. #~       @nw_pos = [-32,288]
  9412. #我的修改:
  9413.       @pw_pos = [-10,50]
  9414.       @aw_pos = [54,210]
  9415.       @nw_pos = [118,370]
  9416.       @savefile_windows = []
  9417.       for i in 0...@file_max
  9418.           @savefile_windows[i] = Window_SaveFile_A.new(i, DataManager.make_filename(i))
  9419.           @savefile_windows[i].z = 2
  9420.           @savefile_windows[i].visible = false
  9421.           @savefile_windows[i].x = 400
  9422.       end
  9423.       check_active_window
  9424.       @item_max = @file_max
  9425.   end
  9426.  
  9427.   #--------------------------------------------------------------------------
  9428.   # ● Create Particles
  9429.   #--------------------------------------------------------------------------  
  9430.   def create_particles
  9431.       @particles_sprite =[]
  9432.       for i in 0...NUMBER_OF_PARTICLES
  9433.           @particles_sprite.push(Particles_Menu.new(nil))
  9434.       end
  9435.   end   
  9436.  
  9437. end
  9438.  
  9439. #==============================================================================
  9440. # ■ Scene_File
  9441. #==============================================================================
  9442. class Scene_File
  9443.  
  9444.   #--------------------------------------------------------------------------
  9445.   # ● Execute Dispose
  9446.   #--------------------------------------------------------------------------
  9447.   def execute_dispose
  9448.       return if @background == nil
  9449.       Graphics.freeze
  9450.       dispose_background
  9451.       dispose_particles
  9452.       dispose_layout
  9453.       dispose_item_windows
  9454.   end
  9455.  
  9456. #--------------------------------------------------------------------------
  9457. # ● Dispose Layout
  9458. #--------------------------------------------------------------------------  
  9459. def dispose_layout
  9460.      @layout_01.dispose
  9461.      @layout_02.bitmap.dispose
  9462.      @layout_02.dispose  
  9463. end
  9464.  
  9465. #--------------------------------------------------------------------------
  9466. # ● Dispose Background
  9467. #--------------------------------------------------------------------------
  9468. def dispose_background
  9469.      @background.dispose
  9470.      @background = nil   
  9471. end
  9472.  
  9473. #--------------------------------------------------------------------------
  9474. # ● Dispose Particles
  9475. #--------------------------------------------------------------------------   
  9476. def dispose_particles
  9477.      return if @particles_sprite == nil
  9478.      @particles_sprite.each {|sprite| sprite.dispose }
  9479. end   
  9480.  
  9481.   #--------------------------------------------------------------------------
  9482.   # ● Dispose of Save File Window
  9483.   #--------------------------------------------------------------------------
  9484.   def dispose_item_windows
  9485.       for window in @savefile_windows
  9486.           window.dispose
  9487.       end
  9488.   end  
  9489.  
  9490. end
  9491.  
  9492. #==============================================================================
  9493. # ■ Scene_File
  9494. #==============================================================================
  9495. class Scene_File  
  9496.  
  9497.   #--------------------------------------------------------------------------
  9498.   # ● Update Sprites
  9499.   #--------------------------------------------------------------------------
  9500.   def update_sprites
  9501.       check_start_index
  9502.       update_savefile_windows      
  9503.       update_background
  9504.       update_particles      
  9505.   end
  9506.  
  9507.   #--------------------------------------------------------------------------
  9508.   # ● Update Background
  9509.   #--------------------------------------------------------------------------              
  9510.   def update_background
  9511.       return if @background == nil
  9512.       @background.ox += @background_scroll[0]
  9513.       @background.oy += @background_scroll[1]
  9514.   end   
  9515.  
  9516.   #--------------------------------------------------------------------------
  9517.   # ● Update Particles
  9518.   #--------------------------------------------------------------------------  
  9519.   def update_particles
  9520.       return if @particles_sprite == nil
  9521.       @particles_sprite.each {|sprite| sprite.update }
  9522.   end
  9523.  
  9524.   #--------------------------------------------------------------------------
  9525.   # ● check_start_index
  9526.   #--------------------------------------------------------------------------
  9527.   def check_start_index
  9528.       return if @check_prev_index == false
  9529.       @check_prev_index = false
  9530.       check_active_window   
  9531.   end  
  9532.  
  9533.   #--------------------------------------------------------------------------
  9534.   # ● check_active_window   
  9535.   #--------------------------------------------------------------------------
  9536.   def check_active_window   
  9537.       @index = 0 if @index == nil
  9538.       for i in 0...@file_max  
  9539.         @pw = @index - 1
  9540.         @pw = 0 if @pw > @file_max - 1
  9541.         @pw = @file_max- 1 if @pw < 0        
  9542.         @aw = @index
  9543.         @nw = @index + 1
  9544.         @nw = 0 if @nw > @file_max - 1
  9545.         @nw = @file_max - 1  if @nw < 0
  9546.         case @savefile_windows[i].file_index
  9547.            when @pw,@nw
  9548.                 @savefile_windows[i].visible = true
  9549.                 @savefile_windows[i].contents_opacity = 80
  9550.            when @aw  
  9551.                 @savefile_windows[i].visible = true
  9552.                 @savefile_windows[i].contents_opacity = 255
  9553.            else
  9554.                 @savefile_windows[i].visible = false
  9555.         end
  9556.       end         
  9557.   end
  9558.  
  9559.   #--------------------------------------------------------------------------
  9560.   # ● Update Save File Window
  9561.   #--------------------------------------------------------------------------
  9562.   def update_savefile_windows
  9563.       update_slide_window
  9564.       for window in @savefile_windows
  9565.         window.update
  9566.       end
  9567.   end
  9568.  
  9569.   #--------------------------------------------------------------------------
  9570.   # ● update_slide_window
  9571.   #--------------------------------------------------------------------------  
  9572.   def update_slide_window
  9573.       slide_window_x(@pw,@pw_pos[0])
  9574.       slide_window_x(@aw,@aw_pos[0])
  9575.       slide_window_x(@nw,@nw_pos[0])
  9576.       slide_window_y(@pw,@pw_pos[1])
  9577.       slide_window_y(@aw,@aw_pos[1])
  9578.       slide_window_y(@nw,@nw_pos[1])
  9579.   end
  9580.  
  9581.   #--------------------------------------------------------------------------
  9582.   # ● slide_window_x
  9583.   #--------------------------------------------------------------------------   
  9584.   def slide_window_x(i,x_pos)
  9585.       if @savefile_windows[i].x < x_pos
  9586.          @savefile_windows[i].x += 15
  9587.          @savefile_windows[i].x = x_pos if @savefile_windows[i].x > x_pos
  9588.       end  
  9589.       if @savefile_windows[i].x > x_pos
  9590.          @savefile_windows[i].x -= 15
  9591.          @savefile_windows[i].x = x_pos if @savefile_windows[i].x < x_pos        
  9592.        end            
  9593.   end   
  9594.  
  9595.   #--------------------------------------------------------------------------
  9596.   # ● slide_window_y
  9597.   #--------------------------------------------------------------------------   
  9598.   def slide_window_y(i,y_pos)
  9599.       if @savefile_windows[i].y < y_pos
  9600.          @savefile_windows[i].y += 15
  9601.          @savefile_windows[i].y = y_pos if @savefile_windows[i].y > y_pos
  9602.       end  
  9603.       if @savefile_windows[i].y > y_pos
  9604.          @savefile_windows[i].y -= 15
  9605.          @savefile_windows[i].y = y_pos if @savefile_windows[i].y < y_pos        
  9606.        end            
  9607.   end   
  9608.  
  9609.   #--------------------------------------------------------------------------
  9610.   # ● reset_position
  9611.   #--------------------------------------------------------------------------     
  9612.   def reset_position(diretion)
  9613.       check_active_window      
  9614.       case diretion
  9615.          when 0
  9616.             @savefile_windows[@pw].y = -64
  9617.             @savefile_windows[@pw].x = 0
  9618.          when 1  
  9619.             @savefile_windows[@nw].y = 440
  9620.             @savefile_windows[@nw].x = 0
  9621.       end        
  9622.   end   
  9623.  
  9624. end  
  9625.  
  9626. #==============================================================================
  9627. # ■ Scene_File
  9628. #==============================================================================
  9629. class Scene_File  
  9630.  
  9631.   #--------------------------------------------------------------------------
  9632.   # ● Frame Update
  9633.   #--------------------------------------------------------------------------
  9634.   def update
  9635.       update_sprites
  9636.       update_command      
  9637.   end
  9638.  
  9639.   #--------------------------------------------------------------------------
  9640.   # ● Update Command
  9641.   #--------------------------------------------------------------------------
  9642.   def update_command
  9643.       if Input.trigger?(Input::C)
  9644.          on_savefile_ok
  9645.       elsif Input.trigger?(Input::B)
  9646.          Sound.play_cancel
  9647.          return_scene
  9648.       else
  9649.         last_index = @index
  9650.         if Input.trigger?(Input::DOWN)
  9651.            execute_index(1)
  9652.            if @file_max > 2
  9653.               reset_position(1)
  9654.            else
  9655.               reset_position(0)
  9656.            end  
  9657.         end
  9658.         if Input.trigger?(Input::UP)
  9659.            execute_index(-1)
  9660.            reset_position(0)
  9661.         end
  9662.         if @index != last_index
  9663.            Sound.play_cursor
  9664.            @savefile_windows[last_index].selected = false
  9665.            @savefile_windows[@index].selected = true
  9666.         end      
  9667.       end
  9668.   end
  9669.  
  9670.   #--------------------------------------------------------------------------
  9671.   # ● Execute Index
  9672.   #--------------------------------------------------------------------------  
  9673.   def execute_index(value)
  9674.       @index += value
  9675.       @index = @index >= @file_max ? 0 : @index < 0 ? (@file_max - 1) : @index
  9676.   end
  9677.  
  9678. end
  9679.  
  9680. #==============================================================================
  9681. # ■ Game_Temp
  9682. #==============================================================================
  9683. class Game_Temp
  9684.  
  9685.   #--------------------------------------------------------------------------
  9686.   # ● Execute Pre Cache End Menu
  9687.   #--------------------------------------------------------------------------   
  9688.   def execute_pre_cache_end_menu
  9689.       @pre_cache_end_menu = []
  9690.       @pre_cache_end_menu.push(Cache.menu_end("Background"))
  9691.       @pre_cache_end_menu.push(Cache.menu_end("Layout"))
  9692.   end   
  9693.  
  9694. end
  9695.  
  9696. #==============================================================================
  9697. # ■ Scene_End
  9698. #==============================================================================
  9699. class Scene_End
  9700.   include MOG_MENU_END
  9701.   include MOG_MENU_BASE
  9702.  
  9703.   #--------------------------------------------------------------------------
  9704.   # ● Main
  9705.   #--------------------------------------------------------------------------        
  9706.   def main
  9707.       execute_setup
  9708.       execute_loop
  9709.       execute_dispose
  9710.   end  
  9711.  
  9712.   #--------------------------------------------------------------------------
  9713.   # ● Execute Setup
  9714.   #--------------------------------------------------------------------------        
  9715.   def execute_setup
  9716.       @phase = 0
  9717.       create_sprites
  9718.   end
  9719.  
  9720.   #--------------------------------------------------------------------------
  9721.   # ● Execute Lopp
  9722.   #--------------------------------------------------------------------------        
  9723.   def execute_loop
  9724.       Graphics.transition(10)
  9725.       loop do
  9726.          Input.update
  9727.          update
  9728.          Graphics.update
  9729.          break if SceneManager.scene != self
  9730.       end
  9731.   end
  9732.  
  9733. end
  9734.  
  9735. #==============================================================================
  9736. # ■ Scene_End
  9737. #==============================================================================
  9738. class Scene_End
  9739.  
  9740.   #--------------------------------------------------------------------------
  9741.   # ● Create Sprites
  9742.   #--------------------------------------------------------------------------
  9743.   def create_sprites
  9744.       create_menu_background
  9745.       create_layout
  9746.       create_particles
  9747.       create_command_window
  9748.   end
  9749.  
  9750.   #--------------------------------------------------------------------------
  9751.   # ● Create Menu Background
  9752.   #--------------------------------------------------------------------------            
  9753.   def create_menu_background
  9754.       @background = Plane.new
  9755.       @background.bitmap = $game_temp.pre_cache_end_menu[0]
  9756.       @background.z = 0
  9757.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  9758.   end   
  9759.  
  9760.   #--------------------------------------------------------------------------
  9761.   # ● Create Layout
  9762.   #--------------------------------------------------------------------------              
  9763.   def create_layout     
  9764.       @layout = Sprite.new
  9765.       @layout.bitmap = $game_temp.pre_cache_end_menu[1]
  9766.       @layout.z = 3
  9767.   end  
  9768.  
  9769.   #--------------------------------------------------------------------------
  9770.   # ● Create Particles
  9771.   #--------------------------------------------------------------------------  
  9772.   def create_particles
  9773.       @particles_sprite =[]
  9774.       for i in 0...NUMBER_OF_PARTICLES
  9775.           @particles_sprite.push(Particles_Menu.new(nil))
  9776.       end
  9777.   end   
  9778.  
  9779.   #--------------------------------------------------------------------------
  9780.   # ● Create Command Window
  9781.   #--------------------------------------------------------------------------
  9782.   def create_command_window
  9783.       @command_window = Window_GameEnd.new
  9784.       @command_window.set_handler(:to_title, method(:command_to_title))
  9785.       @command_window.set_handler(:shutdown, method(:command_shutdown))
  9786.       @command_window.set_handler(:cancel,   method(:return_scene))
  9787.   end  
  9788.  
  9789. end
  9790.  
  9791. #==============================================================================
  9792. # ■ Scene_End
  9793. #==============================================================================
  9794. class Scene_End
  9795.  
  9796.   #--------------------------------------------------------------------------
  9797.   # ● Execute Dispose
  9798.   #--------------------------------------------------------------------------        
  9799.   def execute_dispose
  9800.       Graphics.freeze
  9801.       dispose_background
  9802.       dispose_layout
  9803.       dispose_particles
  9804.       dispose_command_window
  9805.    end
  9806.  
  9807.   #--------------------------------------------------------------------------
  9808.   # ● Dispose Background
  9809.   #--------------------------------------------------------------------------  
  9810.   def dispose_background
  9811.       return if @background == nil
  9812.       @background.dispose
  9813.       @background = nil
  9814.   end
  9815.  
  9816.  
  9817.   #--------------------------------------------------------------------------
  9818.   # ● Dispose Layout
  9819.   #--------------------------------------------------------------------------               
  9820.   def dispose_layout
  9821.       return if @layout == nil
  9822.       @layout.dispose
  9823.       @layout = nil
  9824.   end  
  9825.  
  9826. #--------------------------------------------------------------------------
  9827. # ● Dispose Particles
  9828. #--------------------------------------------------------------------------   
  9829. def dispose_particles
  9830.      return if @particles_sprite == nil
  9831.      @particles_sprite.each {|sprite| sprite.dispose }
  9832. end     
  9833.  
  9834.   #--------------------------------------------------------------------------
  9835.   # ● Dispose Command Window
  9836.   #--------------------------------------------------------------------------
  9837.   def dispose_command_window
  9838.       return if @command_window == nil
  9839.       @command_window.dispose
  9840.   end     
  9841.  
  9842. end
  9843.  
  9844. #==============================================================================
  9845. # ■ Scene_End
  9846. #==============================================================================
  9847. class Scene_End
  9848.  
  9849.   #--------------------------------------------------------------------------
  9850.   # ● Update Sprites
  9851.   #--------------------------------------------------------------------------         
  9852.   def update_sprites   
  9853.       update_background
  9854.       update_particles     
  9855.       update_command_window
  9856.   end
  9857.  
  9858.   #--------------------------------------------------------------------------
  9859.   # ● Update Background
  9860.   #--------------------------------------------------------------------------              
  9861.   def update_background
  9862.       return if @background == nil
  9863.       @background.ox += @background_scroll[0]
  9864.       @background.oy += @background_scroll[1]
  9865.   end   
  9866.  
  9867.   #--------------------------------------------------------------------------
  9868.   # ● Update Particles
  9869.   #--------------------------------------------------------------------------  
  9870.   def update_particles
  9871.       return if @particles_sprite == nil
  9872.       @particles_sprite.each {|sprite| sprite.update }
  9873.   end
  9874.  
  9875.   #--------------------------------------------------------------------------
  9876.   # ● Update Command Window
  9877.   #--------------------------------------------------------------------------
  9878.   def update_command_window
  9879.       return if @command_window == nil
  9880.       @command_window.update
  9881.   end      
  9882.  
  9883. end
  9884.  
  9885. #==============================================================================
  9886. # ■ Scene_End
  9887. #==============================================================================
  9888. class Scene_End
  9889.  
  9890.   #--------------------------------------------------------------------------
  9891.   # ● Update
  9892.   #--------------------------------------------------------------------------      
  9893.   def update
  9894.       update_sprites
  9895.       update_command
  9896.   end
  9897.  
  9898.   #--------------------------------------------------------------------------
  9899.   # ● Return Scene
  9900.   #--------------------------------------------------------------------------         
  9901.   def return_scene
  9902.       Sound.play_cancel
  9903.       SceneManager.return
  9904.   end
  9905.  
  9906.   #--------------------------------------------------------------------------
  9907.   # ● ON Actor Charge
  9908.   #--------------------------------------------------------------------------
  9909.   def on_actor_change
  9910.       $game_temp.actor_menu_temp = @actor
  9911.       SceneManager.goto(Scene_Status)
  9912.   end  
  9913.  
  9914.   #--------------------------------------------------------------------------
  9915.   # ● Update Command
  9916.   #--------------------------------------------------------------------------      
  9917.   def update_command   
  9918.   end  
  9919.  
  9920. end
  9921.  
  9922.   #--------------------------------------------------------------------------
  9923.   # ●●● 以下脚本用于1024*576分辨率的坐标调整 By风宥雪
  9924.   #--------------------------------------------------------------------------
  9925.  
  9926. class Scene_Equip
  9927.   #--------------------------------------------------------------------------
  9928.   # ● Create Help Window
  9929.   #--------------------------------------------------------------------------              
  9930.   def create_help_window
  9931.       @help_window = Window_Help.new
  9932.       @help_window.x = Graphics.width*0.6
  9933.       @help_window.y = (Graphics.height - @help_window.height)*0.5
  9934.       @help_window.opacity = 0
  9935.   end
  9936. end
  9937.  
  9938. class Scene_Item
  9939.   #--------------------------------------------------------------------------
  9940.   # ● Create Help Window
  9941.   #--------------------------------------------------------------------------              
  9942.   def create_help_window
  9943.       @help_window = Window_Help.new
  9944.       @help_window.x = Graphics.width*0.6
  9945.       @help_window.y = (Graphics.height - @help_window.height)*0.5
  9946.       @help_window.opacity = 0
  9947.   end
  9948. end
  9949.  
  9950. class Scene_Skill
  9951.   #--------------------------------------------------------------------------
  9952.   # ● Create Help Window
  9953.   #--------------------------------------------------------------------------              
  9954.   def create_help_window
  9955.       @help_window = Window_Help.new
  9956.       @help_window.x = Graphics.width*0.6
  9957.       @help_window.y = (Graphics.height - @help_window.height)*0.5
  9958.       @help_window.opacity = 0
  9959.   end
  9960. end
  9961.  
  9962. class Window_SaveFile_A < Window_Base
  9963.  
  9964.   #--------------------------------------------------------------------------
  9965.   # ● draw_party_characters
  9966.   #--------------------------------------------------------------------------
  9967.   def draw_party_characters(x, y,ex)
  9968.     for i in 0...@characters.size
  9969.       break if i > 3
  9970.       draw_actor_face_s(@members[i], x+i*ex, y, ex)
  9971.       draw_character_floor(x + i * ex + 10,y + 60)
  9972.     end
  9973.   end
  9974.  
  9975.   def draw_actor_face_s(actor, x, y, ex)
  9976.     face_name = actor.face_name
  9977.     face_index = actor.face_index
  9978.     bitmap = Cache.face(face_name)
  9979.     src_rc = Rect.new(face_index % 4 * 96, face_index / 4 * 96, 96, 96)
  9980.     des_rc = Rect.new(x,y,ex,ex)
  9981.     contents.stretch_blt(des_rc, bitmap, src_rc)
  9982.     bitmap.dispose
  9983.   end
  9984.  
  9985. end



装备扩展
RGSS3 代码复制
  1. #==============================================================================
  2. # 此脚本来自 [url=http://www.66rpg.com]www.66rpg.com[/url]
  3. #------------------------------------------------------------------------------
  4. #  功能:[RMVA]增加装备栏数量
  5. #  作者:后知后觉([email protected]
  6. #  版本:v1.1 2012-02-20
  7. #  使用说明:
  8. #       1.在下面设置需要增加的数量以及增加部位的名字
  9. #       2.在数据库-护甲-备注 里写入 @etype[位置编号]
  10. #         默认系统一共有5个装备位置.占用了0~4号
  11. #         所以扩展出来的装备栏位置编号是从 5 开始.比如 @etype[5]  @etype[6]
  12. #       3.在扩展位置上给角色设置初始装备的方法
  13. #         在 数据库-角色-备注 里写入 @add_equips[装备1ID,装备2ID.....]
  14. #         每个ID中间由半角的 , 分开 比如 @add_equips[61] @add_equips[61,63]
  15. #       4.设置 固定装备 的初始值
  16. #         在 数据库-角色-备注 里写入 @fix_equips[装备位置编号,装备位置编号......]
  17. #         每个编号间由半角的 , 分开 比如 @fix_equips[5] @fix_equips[5,6]
  18. #       5.设置 禁用装备 的初始值
  19. #         在 数据库-角色-备注 里写入 @seal_equips[装备位置编号,装备位置编号......]
  20. #         每个编号间由半角的 , 分开 比如 @seal_equips[5] @seal_equips[5,6]
  21. #       6.游戏运行时可以使用:
  22. #           $game_actors[角色ID].fix_equips  来获取该角色被固定装备位置的数组
  23. #           $game_actors[角色ID].seal_equips 来获取该角色被禁用装备位置的数组
  24. #         然后可以使用数组类的 delete 和 push 方法来删除/增加 etype_id
  25. #         来达到解除与启用 固定、禁用的效果
  26. #         比如 $game_actors[1].fix_equips.delete(5) 解除1号角色5号位置的固定
  27. #              $game_actors[2].seal_equips.push(6) 2号角色禁用6号装备位置
  28. #  注意事项:
  29. #       1.上面说的设置初始装备、固定装备、禁用装备都是只针对新扩展部位的
  30. #         默认的前5个装备位置的固定、禁用、设置初始.还请使用RMVA默认方式设置
  31. #       2.状态画面的描绘装备部分.在默认分辨率下.只能描绘6个装备.
  32. #         我小改了一下.但还是觉得不怎么好看.建议你自己重新描绘那一块...
  33. #==============================================================================
  34. module HzhjEquip
  35.   # 设置要增加的装备部位数量
  36.   ETYPE_ADD_NUM = 4
  37.   # 设置要增加的装备部位的名字
  38.   ETYPE_ADD_NAME = ["兵  符", "饰  品", "坐  骑", "玉  石"]
  39. end
  40. def Vocab.etype(etype_id)
  41.   etypes = $data_system.terms.etypes + HzhjEquip::ETYPE_ADD_NAME
  42.   etypes[etype_id]
  43. end
  44. class RPG::Actor < RPG::BaseItem
  45.   def add_equips
  46.     if /@add_equips\[(.+?)\]/ =~ @note
  47.       result = $1.split(/,/).collect{|str|str.to_i}
  48.       result << 0 while result.size < HzhjEquip::ETYPE_ADD_NUM
  49.     else
  50.       result = Array.new(HzhjEquip::ETYPE_ADD_NUM){0}
  51.     end
  52.     result
  53.   end
  54.   def fix_equips
  55.     if /@fix_equips\[(.+?)\]/ =~ @note
  56.       result = $1.split(/,/).collect{|str|str.to_i}
  57.     else
  58.       result = []
  59.     end
  60.     result
  61.   end
  62.   def seal_equips
  63.     if /@seal_equips\[(.+?)\]/ =~ @note
  64.       result = $1.split(/,/).collect{|str|str.to_i}
  65.     else
  66.       result = []
  67.     end
  68.     result
  69.   end
  70. end
  71. class RPG::Armor < RPG::EquipItem
  72.   def etype_id
  73.     if /@etype\[(.+?)\]/ =~ @note
  74.       return $1.to_i
  75.     else
  76.       return @etype_id
  77.     end
  78.   end
  79. end
  80. class Game_Actor < Game_Battler
  81.   attr_accessor :fix_equips
  82.   attr_accessor :seal_equips
  83.   alias hzhj_old_init_equips_game_actor init_equips
  84.   def init_equips(equips)
  85.     @fix_equips = actor.fix_equips
  86.     @seal_equips = actor.seal_equips
  87.     hzhj_equips = equips.clone
  88.     add_equips = actor.add_equips
  89.     HzhjEquip::ETYPE_ADD_NUM.times{hzhj_equips << add_equips.shift}
  90.     hzhj_old_init_equips_game_actor(hzhj_equips)
  91.   end
  92.   alias hzhj_old_equip_slots_game_actor equip_slots
  93.   def equip_slots
  94.     result = hzhj_old_equip_slots_game_actor
  95.     HzhjEquip::ETYPE_ADD_NUM.times{result << result.size}
  96.     result
  97.   end
  98.   def equip_type_fixed?(etype_id)
  99.     if etype_id > 4
  100.       return @fix_equips.include?(etype_id)
  101.     else
  102.       return super
  103.     end
  104.   end
  105.   def equip_type_sealed?(etype_id)
  106.     if etype_id > 4
  107.       return @seal_equips.include?(etype_id)
  108.     else
  109.       return super
  110.     end
  111.   end
  112. end
  113. class Window_EquipSlot < Window_Selectable
  114.   def actor=(actor)
  115.     return if @actor == actor
  116.     @actor = actor
  117.     create_contents
  118.     refresh
  119.   end
  120. end
  121. class Window_Status < Window_Selectable
  122.   def draw_equipments(x, y)
  123.     x = 224 if @actor.equips.size > 6
  124.     @actor.equips.each_with_index do |item, i|
  125.       dx = x + 146 * (i / 6)
  126.       dy = y + line_height * (i % 6)
  127.       draw_item_name(item, dx, dy, true, 122)
  128.     end
  129.   end
  130. end


Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

2
发表于 2017-11-23 17:10:07 | 只看该作者
换个顺序试试看?
如果交换顺序有效果说明是有的方法被覆盖重定义之类的情况

装备扩展推荐用VIPArcher的那个,那个还有装备风格修改
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4082
在线时间
1081 小时
注册时间
2008-5-17
帖子
218

开拓者

3
 楼主| 发表于 2017-11-23 20:39:11 | 只看该作者
本帖最后由 无名小兵 于 2017-11-23 20:42 编辑
chd114 发表于 2017-11-23 17:10
换个顺序试试看?
如果交换顺序有效果说明是有的方法被覆盖重定义之类的情况

大佬!!!不行,两个一点就报错!!!VIPArcher大大的装备栏风格扩展
RGSS3 代码复制
  1. #==============================================================================
  2. # +++ 装备栏风格扩展 +++
  3. #  by:VIPArcher [email: [email protected]]
  4. #  -- 本脚本来自 [url]http://rm.66rpg.com[/url] 使用或转载请保留以上信息。
  5. #==============================================================================
  6. #  ■ 新增装备风格
  7. # 使用说明:在角色备注栏/职业备注栏里备注 <slot_type:x> 则角色变为x号装备风格,
  8. #   一个角色有多个风格同时存在时,最终返回风格编号x最大的那个风格。
  9. #   在防具上备注<etype_id:x>则把该防具设置为第x种类型,默认占用了0-4,追加的由5开始
  10. #   在任何有备注框的地方备注 <fix_equips:x> 固定该位置的装备,固定多个则换行再写
  11. #   在任何有备注框的地方备注 <seal_equips:x> 禁用该位置的装备,禁用多个则换行再写
  12. #   在角色备注栏备注<ini_equips:[a,b,c...n]> 初始化初始装备(此备注将使数据库的初
  13. #   始装备设置失效,并且请把装备对应好位置和确认装备该位置可以装备该装备。)
  14. #   在角色备注栏备注<add_equips:[h,i,j...n]> 追加初始装备(和上面是一样的意思,
  15. #   但是这种不会让数据库的设置无效,只会在后面追加上初始装备。)具体请自己摸索吧
  16. #==============================================================================
  17.  
  18. $VIPArcherScript ||= {};$VIPArcherScript[:slot_type] = __FILE__ #20140803
  19. #==============================================================================
  20. # ★ 设定部分 ★
  21. #==============================================================================
  22. module VIPArcher
  23.  
  24.   ETYPE_ADD_NAME = ["兵  符", "饰  品", "坐  骑", "玉  石"] #设置要增加的装备位置的名字
  25.  
  26.   SLOT_TYPE = {
  27.   0 => [0,1,2,3,4,5,6,6,7,8],    # 普通  
  28.   1 => [0,0,2,3,4,5,6,6,7,8],    # 双持武器 (这两个是默认的风格)
  29.   # 从这里开始添加装备风格
  30.   2 => [0,0,0,2,3,4,5],  # 看我索爷三刀流
  31.   3 => [4],            # 窝只是个需要保护的NPC装备只要首饰就够了吧。
  32.   4 => [0,2,3,3],       # 233
  33.   5 => [0,1,2,3,4,5,6] # 这里的5,6对应的类型就是上面追加的类型
  34.   # 在这里继续添加类型。编号越大,优先级越高。
  35.  
  36.   } # <= 这个大括号不能删
  37.   #--------------------------------------------------------------------------
  38.   # ● 追加装备位置用语
  39.   #--------------------------------------------------------------------------
  40.   def Vocab.etype(etype_id)
  41.     etype_name = $data_system.terms.etypes + ETYPE_ADD_NAME
  42.     etype_name[etype_id]
  43.   end
  44. end
  45. #==============================================================================
  46. # ☆ 设定结束 ☆
  47. #==============================================================================
  48. class RPG::Actor < RPG::BaseItem
  49.   #--------------------------------------------------------------------------
  50.   # ● 初始装备数组
  51.   #--------------------------------------------------------------------------
  52.   alias vip_20141119_equips equips
  53.   def equips
  54.     add_equips = []
  55.     $1.split(",").each {|item|add_equips.push item.to_i} if
  56.     @note =~ /<(?:ini_equips|初始装备)[:]\[(.+?)\]>/i
  57.     return add_equips if add_equips != []
  58.     $1.split(",").each {|item|add_equips.push item.to_i} if
  59.     @note =~ /<(?:add_equips|追加初始装备)[:]\[(.+?)\]>/i
  60.     vip_20141119_equips.clone + add_equips
  61.   end
  62. end
  63. #-------------------------------------------------------------------------------
  64. class RPG::Armor < RPG::EquipItem
  65.   #--------------------------------------------------------------------------
  66.   # ● 装备类型
  67.   #--------------------------------------------------------------------------
  68.   def etype_id
  69.     return @note =~ /<(?:etype_id|装备类型)[:]\s*(.*)>/i ? $1.to_i : @etype_id
  70.   end
  71. end
  72. #-------------------------------------------------------------------------------
  73. class Game_BattlerBase
  74.   #--------------------------------------------------------------------------
  75.   # ● 获取装备风格
  76.   #--------------------------------------------------------------------------
  77.   def slot_type
  78.     slot =[]
  79.     feature_objects.each {|obj| slot.push $1.to_i if
  80.     obj.note  =~ /<(?:slot_type|装备风格)[:]\s*(.*)>/i }
  81.     return slot.max || 0
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 判定是否固定装备
  85.   #--------------------------------------------------------------------------
  86.   alias vip_20141119_equip_type_fixed? equip_type_fixed?
  87.   def equip_type_fixed?(etype_id)
  88.     fixed_type = []
  89.     feature_objects.each {|obj| obj.note.split(/[\r\n]+/).each {|line|
  90.     fixed_type.push $1.to_i if line =~ /<(?:fix_equips|固定装备)[:]\s*(.*)>/i}}
  91.     fixed_type.include?(etype_id) || vip_20141119_equip_type_fixed?(etype_id)
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ● 判定装备是否被禁用
  95.   #--------------------------------------------------------------------------
  96.   alias vip_20141119_equip_type_sealed? equip_type_sealed?
  97.   def equip_type_sealed?(etype_id)
  98.     sealed_type = []
  99.     feature_objects.each {|obj| obj.note.split(/[\r\n]+/).each {|line|
  100.     sealed_type.push $1.to_i if line =~ /<(?:seal_equips|禁用装备)[:]\s*(.*)>/i}}
  101.     sealed_type.include?(etype_id) || vip_20141119_equip_type_sealed?(etype_id)
  102.   end
  103. end
  104. #-------------------------------------------------------------------------------
  105. class Game_Actor < Game_Battler
  106.   #--------------------------------------------------------------------------
  107.   # ● 初始化装备
  108.   #     # 方法覆盖,可能引起冲突
  109.   #--------------------------------------------------------------------------
  110.   def init_equips(equips)
  111.     type_size = VIPArcher::SLOT_TYPE.values.max_by{|type|type.size}.size
  112.     @equips = Array.new(type_size) { Game_BaseItem.new }
  113.     equips.each_with_index do |item_id, i|
  114.       etype_id = index_to_etype_id(i)
  115.       slot_id = empty_slot(etype_id)
  116.       @equips[slot_id].set_equip(etype_id == 0, item_id) if slot_id
  117.     end
  118.     refresh
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ● 获取装备栏的数组
  122.   #--------------------------------------------------------------------------
  123.   alias vip_20140803_es equip_slots
  124.   def equip_slots
  125.     return VIPArcher::SLOT_TYPE[slot_type] if
  126.     VIPArcher::SLOT_TYPE[slot_type] != nil
  127.     vip_20140803_es
  128.   end
  129. end
  130. #-------------------------------------------------------------------------------
  131. class Scene_Equip < Scene_MenuBase
  132.   #--------------------------------------------------------------------------
  133.   # ● 生成装备栏窗口
  134.   #--------------------------------------------------------------------------
  135.   alias slot_vip_create_slot_window create_slot_window
  136.   def create_slot_window
  137.     slot_vip_create_slot_window
  138.     @slot_window.create_contents
  139.     @slot_window.refresh
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ● 物品“确定”
  143.   #--------------------------------------------------------------------------
  144.   alias slot_vip_on_item_ok on_item_ok
  145.   def on_item_ok
  146.     slot_vip_on_item_ok
  147.     @slot_window.create_contents
  148.     @slot_window.refresh
  149.   end
  150.   #--------------------------------------------------------------------------
  151.   # ● 指令“全部卸下”
  152.   #--------------------------------------------------------------------------
  153.   alias slot_vip_command_clear command_clear
  154.   def command_clear
  155.     slot_vip_command_clear
  156.     @slot_window.create_contents
  157.     @slot_window.refresh
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ● 指令“最强装备”
  161.   #--------------------------------------------------------------------------
  162.   alias slot_vip_command_optimize command_optimize
  163.   def command_optimize
  164.     slot_vip_command_optimize
  165.     @slot_window.create_contents
  166.     @slot_window.refresh
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ● 切换角色
  170.   #--------------------------------------------------------------------------
  171.   alias slot_vip_on_actor_change on_actor_change
  172.   def on_actor_change
  173.     slot_vip_on_actor_change
  174.     @slot_window.create_contents
  175.     @slot_window.refresh
  176.   end
  177. end


111.jpg (17.88 KB, 下载次数: 2)

111.jpg
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 16:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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