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

Project1

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

[已经过期] 战斗中装备武器的脚本扩展脚本与第三方菜单冲突的解决...

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
112 小时
注册时间
2008-12-9
帖子
166
跳转到指定楼层
1
发表于 2014-12-17 09:56:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 007dd007 于 2014-12-17 10:07 编辑

战斗中换装备的脚本与这个脚本冲突,
在:第7363行  @background.bitmap = $game_temp.pre_cache_equip_menu[0]
像是装备隐藏窗口冲突了,是不是需要添加一个窗口脚本啊?
  1. #==============================================================================
  2. # +++ MOG - Monogatari (物語)  (v1.5) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # http://www.atelier-rgss.com/
  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. # Version History.
  12. #==============================================================================
  13. # 1.5 - Função de desabilitar o save.
  14. #       Definição dos nomes das fontes baseado na fonte padrão do sistema,
  15. #       para resolver o problema de compatibilidade de fontes de outras línguas.
  16. #       Melhoria na posição das janelas.
  17. #       Correção do bug de não atualizar o número de itens. (Dual Wield)
  18. # 1.4 - Compatibilidade com Mog Menu Cursor.
  19. # 1.3 - Corrigido o bug do som da Scene Skill.
  20. # 1.2 - Compatibilidade com Third Party scripts.
  21. #     - Scene File incorporado ao sistema Monogatari, melhorando a performance.
  22. #==============================================================================

  23. #==============================================================================
  24. # NOTA - Como este é um script para apresentar técnicas de RGSS, não foram
  25. # adicionados comentários explicativos no modulo de configuração
  26. #==============================================================================

  27. #==============================================================================
  28. # ■ MAIN MENU
  29. #==============================================================================
  30. module MOG_MENU
  31.    NUMBER_OF_PARTICLES = 20  
  32.    BACKGROUND_SCROLL_SPEED = [1,0]
  33.    COMMAND_POSITION = [32, 84]
  34.    COMMAND_POSITION_2 = [10,100]
  35.    COMMAND_SPACE = 4
  36.    COMMAND_NAME_POSITION = [0,0]
  37.    COMMAND_NAME_POSITION_2 = [220,48]
  38.    ACTOR_SPACE = 100
  39.    ACTOR_POSITION = [240,0]
  40.    
  41.    ACTOR_LAYOUT_POSITON = [0,275]
  42.    ACTOR_HP1_POSITON = [28,315]
  43.    ACTOR_HP2_POSITON = [50,330]
  44.    ACTOR_MP1_POSITON = [28,346]
  45.    ACTOR_MP2_POSITON = [50,361]   
  46.    ACTOR_HP_METER_POSITON = [29,329]
  47.    ACTOR_MP_METER_POSITON = [29,360]
  48.    ACTOR_LEVEL_POSITON = [30,290]
  49.    ACTOR_STATES_POSITION = [63,283]
  50.    
  51.    MEMBERS_FACE_POSITION =[150,55]
  52.    MEMBERS_FACE_SPACE = 64
  53.    MEMBERS_ARROW_LAYOUT_POSITION = [217,40]
  54.    MEMBERS_ARROW_1_POSITION = [180,40]
  55.    MEMBERS_ARROW_2_POSITION = [300,40]
  56.    TIME_NUMBER_POS = [415,10]
  57.    GOLD_NUMBER_POS = [170,388]
  58.    LOCATION_POS = [330,380]
  59. end

  60. #==============================================================================
  61. # ■ MOG_MENU ITEM
  62. #==============================================================================
  63. module MOG_MENU_ITEM
  64.    NUMBER_OF_PARTICLES = 20  
  65.    BACKGROUND_SCROLL_SPEED = [0,0]
  66.    COMMAND_POSITION = [0, 69]
  67.    BUTTON_POSITION = [210, 30]
  68.    BUTTON_SPACE = 90
  69. end

  70. #==============================================================================
  71. # ■ MOG_MENU SKILL
  72. #==============================================================================
  73. module MOG_MENU_SKILL
  74.    NUMBER_OF_PARTICLES = 20  
  75.    BACKGROUND_SCROLL_SPEED = [0,0]
  76.    
  77. end

  78. #==============================================================================
  79. # ■ MOG_ACTOR SKILL STATUS
  80. #==============================================================================
  81. module MOG_ACTOR_SKILL_STATUS
  82.   MEMBERS_SPACE = 80  
  83.   LAYOUT_POSITION = [155,0]
  84.   PAR_POSITION = [0,0]
  85.   FACE_POSITION = [-13,-3]
  86.   HP_METER_POSITION = [158,15]
  87.   MP_METER_POSITION = [177,35]
  88.   STATES_POSITION = [71,36]
  89.   STATES_SCROLLING_ANIMATION = false  
  90.   NAME_POSITION = [105,34]
  91.   FONT_SIZE = 18
  92.   FONT_BOLD = true  
  93. end

  94. #==============================================================================
  95. # ■ MOG_MENU EQUIP
  96. #==============================================================================
  97. module MOG_MENU_EQUIP
  98.    NUMBER_OF_PARTICLES = 20  
  99.    BACKGROUND_SCROLL_SPEED = [0,0]
  100.    FONT_SIZE = 18
  101.    FONT_BOLD = true
  102.    FONT_ITALIC = false   
  103. end

  104. #==============================================================================
  105. # ■ MOG_MENU STATUS
  106. #==============================================================================
  107. module MOG_EQUIP_STATUS  
  108.   LAYOUT_POSITION = [0,80]  #总体位置
  109.   FACE_POSITION = [120,-45] #头像位置
  110.   PAR_POSITION = [5,32] #属性数值显示位置
  111.   NAME_POSITION = [15,-5] #名字位置
  112.   FONT_SIZE = 18  #字体大小
  113.   FONT_BOLD = true  #粗体开关 目前开
  114. end

  115. #==============================================================================
  116. # ■ MOG_MENU STATUS
  117. #==============================================================================
  118. module MOG_MENU_STATUS
  119.    NUMBER_OF_PARTICLES = 20  
  120.    BACKGROUND_SCROLL_SPEED = [1,0]
  121. end

  122. #==============================================================================
  123. # ■ MOG MENU PARTY
  124. #==============================================================================
  125. module MOG_MENU_PARTY
  126.    NUMBER_OF_PARTICLES = 20  
  127.    BACKGROUND_SCROLL_SPEED = [0,0]   
  128. end

  129. #==============================================================================
  130. # ■ MOG MENU SAVE
  131. #==============================================================================
  132. module MOG_MENU_SAVE
  133.    FILES_MAX = 9   
  134.    NUMBER_OF_PARTICLES = 20   
  135.    BACKGROUND_SCROLL_SPEED = [1,0]
  136. end

  137. #==============================================================================
  138. # ■ MOG MENU END
  139. #==============================================================================
  140. module MOG_MENU_END
  141.    NUMBER_OF_PARTICLES = 20
  142.    BACKGROUND_SCROLL_SPEED = [0,0]
  143. end

  144. #==============================================================================
  145. # ■ MOG ACTOR MENU STATUS
  146. #==============================================================================
  147. module MOG_ACTOR_MENU_STATUS  
  148.   LAYOUT_POSITION = [385,115]
  149.   FACE_POSITION = [48,-32]
  150.   PAR_POSITION = [5,64]
  151.   STATES_POSITION = [15,25]
  152.   STATES_SCROLLING_ANIMATION = false
  153.   NAME_POSITION = [10,60]
  154.   FONT_SIZE = 18
  155.   FONT_BOLD = true
  156. end

  157. #==============================================================================
  158. # ■ MOG MEMBERS LAYOUT
  159. #==============================================================================
  160. module MOG_MEMBERS_LAYOUT
  161.   MEMBERS_SPACE = 80  
  162.   LAYOUT_POSITION = [3,160]
  163.   PAR_POSITION = [0,0]
  164.   FACE_POSITION = [0,-2]
  165.   HP_METER_POSITION = [12,37]
  166.   MP_METER_POSITION = [86,37]
  167.   SCOPE_TEXT_POSITION = [0,170]
  168.   ARROW_1_POSITION = [50,55]
  169.   ARROW_2_POSITION = [50,4]
  170.   NAME_POSITION = [42,38]
  171.   FONT_SIZE = 18
  172.   FONT_BOLD = true  
  173. end

  174. #==============================================================================
  175. # ■ MOG ACTOR MENU PARTY
  176. #==============================================================================
  177. module MOG_ACTOR_MENU_PARTY
  178.   FACE_POSITION = [390,96]
  179.   NAME_POSITION = [390,73]
  180.   FONT_SIZE = 16
  181.   FONT_BOLD = true
  182. end


  183. #==============================================================================
  184. # ■ MOG MENU BASE
  185. #==============================================================================
  186. module MOG_MENU_BASE
  187.   
  188. end

  189. $imported = {} if $imported.nil?
  190. $imported[:mog_monogatari] = true

  191. #==============================================================================
  192. # ■ Game Temp
  193. #==============================================================================
  194. class Game_Temp
  195.   
  196.   attr_accessor :menu_index
  197.   attr_accessor :actor_menu_temp
  198.   attr_accessor :item_scope
  199.   attr_accessor :temp_actor_equip
  200.   
  201.   #--------------------------------------------------------------------------
  202.   # ● Initialize
  203.   #--------------------------------------------------------------------------  
  204.   alias mog_menu_index_initialize initialize
  205.   def initialize
  206.       @menu_index = 0
  207.       @actor_menu_temp = -1      
  208.       @item_scope = 0
  209.       @temp_actor_equip = nil
  210.       mog_menu_index_initialize
  211.   end
  212.   
  213. end

  214. #==============================================================================
  215. # ■ Scene Map
  216. #==============================================================================
  217. class Scene_Map < Scene_Base
  218.   
  219. #--------------------------------------------------------------------------
  220. # ● Update Call Menu
  221. #--------------------------------------------------------------------------   
  222. alias mog_menu_monogatari_update_call_menu update_call_menu   
  223. def update_call_menu
  224.      if $game_party.members.size == 0
  225.         @call_menu = false
  226.         return
  227.      end
  228.      mog_menu_monogatari_update_call_menu
  229. end

  230. #--------------------------------------------------------------------------
  231. # ● Call Menu
  232. #--------------------------------------------------------------------------   
  233. alias mog_menu_monogatari_call_menu call_menu
  234. def call_menu
  235.      $game_temp.menu_index = 0     
  236.      mog_menu_monogatari_call_menu
  237. end
  238.    
  239. end

  240. #==============================================================================
  241. # ■ Window Command
  242. #==============================================================================
  243. class Window_Command < Window_Selectable
  244.   
  245.   attr_reader :list
  246. end

  247. #==============================================================================
  248. # ■ Game Party
  249. #==============================================================================
  250. class Game_Party < Game_Unit
  251.   
  252.    attr_accessor :menu_actor_id   
  253.    
  254. end

  255. #==============================================================================
  256. # ■ Game Interpreter
  257. #==============================================================================
  258. class Game_Interpreter
  259.   
  260. #--------------------------------------------------------------------------
  261. # ● gain Tp
  262. #--------------------------------------------------------------------------      
  263. def gain_tp(actor_id,value)
  264.      return if $game_party.members[actor_id] == nil
  265.      $game_party.members[actor_id].tp += value.truncate
  266. end  

  267. #--------------------------------------------------------------------------
  268. # ● Lose Tp
  269. #--------------------------------------------------------------------------      
  270. def lose_tp(actor_id,value)
  271.      return if $game_party.members[actor_id] == nil
  272.      $game_party.members[actor_id].tp -= value.truncate
  273. end   

  274. end

  275. #==============================================================================
  276. # ■ Cache
  277. #==============================================================================
  278. module Cache
  279.   
  280.   #--------------------------------------------------------------------------
  281.   # ● Menu
  282.   #--------------------------------------------------------------------------
  283.   def self.menu(filename)
  284.       load_bitmap("Graphics/Menus/", filename)
  285.   end  
  286.   
  287.   #--------------------------------------------------------------------------
  288.   # ● Menu Main
  289.   #--------------------------------------------------------------------------
  290.   def self.menu_main(filename)
  291.       load_bitmap("Graphics/Menus/Main/", filename)
  292.   end

  293.   #--------------------------------------------------------------------------
  294.   # ● Menu Item
  295.   #--------------------------------------------------------------------------
  296.   def self.menu_item(filename)
  297.       load_bitmap("Graphics/Menus/Item/", filename)
  298.   end  
  299.   
  300.   #--------------------------------------------------------------------------
  301.   # ● Menu Skill
  302.   #--------------------------------------------------------------------------
  303.   def self.menu_skill(filename)
  304.       load_bitmap("Graphics/Menus/Skill/", filename)
  305.   end   
  306.   
  307.   #--------------------------------------------------------------------------
  308.   # ● Menu Equip
  309.   #--------------------------------------------------------------------------
  310.   def self.menu_equip(filename)
  311.       load_bitmap("Graphics/Menus/Equip/", filename)
  312.   end      
  313.   
  314.   #--------------------------------------------------------------------------
  315.   # ● Menu Status
  316.   #--------------------------------------------------------------------------
  317.   def self.menu_status(filename)
  318.       load_bitmap("Graphics/Menus/Status/", filename)
  319.   end   
  320.   
  321.   #--------------------------------------------------------------------------
  322.   # ● Menu Save
  323.   #--------------------------------------------------------------------------
  324.   def self.menu_save(filename)
  325.       load_bitmap("Graphics/Menus/Save/", filename)
  326.   end      
  327.   
  328.   #--------------------------------------------------------------------------
  329.   # ● Menu Party
  330.   #--------------------------------------------------------------------------
  331.   def self.menu_party(filename)
  332.       load_bitmap("Graphics/Menus/Party/", filename)
  333.   end     
  334.   
  335.   #--------------------------------------------------------------------------
  336.   # ● Menu End
  337.   #--------------------------------------------------------------------------
  338.   def self.menu_end(filename)
  339.       load_bitmap("Graphics/Menus/End/", filename)
  340.   end      
  341.   
  342. end

  343. #==============================================================================
  344. # ■ Game_Temp
  345. #==============================================================================
  346. class Game_Temp
  347.   
  348.   attr_accessor :pre_cache_main_menu
  349.   attr_accessor :pre_cache_actor_menu
  350.   attr_accessor :pre_cache_item_menu
  351.   attr_accessor :pre_cache_skill_menu
  352.   attr_accessor :pre_cache_equip_menu
  353.   attr_accessor :pre_cache_status_menu
  354.   attr_accessor :pre_cache_party_menu
  355.   attr_accessor :pre_cache_file_menu
  356.   attr_accessor :pre_cache_end_menu
  357.   attr_accessor :pre_cache_icon
  358.   attr_accessor :pre_symbol
  359.   
  360.   #--------------------------------------------------------------------------
  361.   # ● Pre Cache Atelier Menu
  362.   #--------------------------------------------------------------------------  
  363.   def pre_cache_atelier_menu   
  364.       @pre_cache_main_menu = []
  365.       @pre_cache_item_menu = []
  366.       @pre_cache_skill_menu = []
  367.       @pre_cache_equip_menu = []
  368.       @pre_cache_status_menu = []
  369.       @pre_cache_party_menu = []
  370.       @pre_cache_file_menu = []
  371.       @pre_cache_end_menu = []
  372.       @pre_symbol = ""
  373.       execute_pre_cache_icon if can_pre_cache_icon?
  374.       execute_pre_cache_actor
  375.       execute_pre_cache_main_menu
  376.       execute_pre_cache_item_menu
  377.       execute_pre_cache_skill_menu
  378.       execute_pre_cache_equip_menu
  379.       execute_pre_cache_status_menu
  380.       execute_pre_cache_file_menu
  381.       execute_pre_cache_party_menu
  382.       execute_pre_cache_end_menu
  383.   end

  384.   #--------------------------------------------------------------------------
  385.   # ● Pre Cache Icon
  386.   #--------------------------------------------------------------------------   
  387.   def execute_pre_cache_icon
  388.       @pre_cache_icon = Cache.system("Iconset")
  389.   end
  390.       
  391.   #--------------------------------------------------------------------------
  392.   # ● Can Pre Cache Menu?
  393.   #--------------------------------------------------------------------------  
  394.   def can_pre_cache_icon?
  395.       return true if @pre_cache_icon == nil
  396.       return true if @pre_cache_icon.disposed? rescue return false
  397.       return false
  398.   end
  399.   
  400. end

  401. #==============================================================================
  402. # ■ Spriteset_Map
  403. #==============================================================================
  404. class Spriteset_Map  
  405.   
  406.   #--------------------------------------------------------------------------
  407.   # ● Initialize
  408.   #--------------------------------------------------------------------------
  409.   alias mog_atelier_menu_initialize initialize
  410.   def initialize
  411.       $game_temp.pre_cache_atelier_menu if $game_temp.can_pre_cache_icon?
  412.       mog_atelier_menu_initialize
  413.   end
  414.   
  415. end

  416. #==============================================================================
  417. # ■ Particles_Menu
  418. #==============================================================================
  419. class Particles_Menu < Sprite
  420.   
  421. #--------------------------------------------------------------------------
  422. # ● Initialize
  423. #--------------------------------------------------------------------------            
  424.   def initialize(viewport = nil)
  425.       super(viewport)
  426.       @speed_x = 0
  427.       @speed_y = 0
  428.       @speed_a = 0
  429.       self.bitmap = Cache.menu("Particles")
  430.       self.blend_type = 0
  431.       self.z = 1
  432.       reset_setting(true)
  433.   end  
  434.   
  435. #--------------------------------------------------------------------------
  436. # ● Reset Setting
  437. #--------------------------------------------------------------------------               
  438.   def reset_setting(initial = false)
  439.       zoom = (50 + rand(100)) / 100.1
  440.       self.zoom_x = zoom
  441.       self.zoom_y = zoom
  442.       self.x = rand(576) - 160
  443.       self.y = initial == true ? rand(480) : 512
  444.       self.opacity = 0
  445.       @speed_y = -(1 + rand(3))
  446.       @speed_x = (1 + rand(2))
  447.       @speed_a = (1 + rand(2))     
  448.   end
  449.   
  450. #--------------------------------------------------------------------------
  451. # ● Dispose
  452. #--------------------------------------------------------------------------               
  453.   def dispose
  454.       super
  455.       self.bitmap.dispose if self.bitmap != nil
  456.   end  
  457.   
  458. #--------------------------------------------------------------------------
  459. # ● Update
  460. #--------------------------------------------------------------------------               
  461.   def update
  462.       super
  463.       self.x += @speed_x
  464.       self.y += @speed_y
  465.       self.opacity += 5
  466.       reset_setting if can_reset_setting?
  467.   end  
  468.   
  469. #--------------------------------------------------------------------------
  470. # ● Can Reset Setting
  471. #--------------------------------------------------------------------------                 
  472.   def can_reset_setting?
  473.       return true if self.y < -50
  474.       return true if self.x > 576
  475.       return false
  476.   end  
  477.    
  478. end




  479. #==============================================================================
  480. # ■ Window_Actor_Status_0
  481. #==============================================================================
  482. class Members_Windows_Status < Window_Selectable
  483.   attr_reader   :pending_index         
  484.   
  485.   #--------------------------------------------------------------------------
  486.   # ● Initialize
  487.   #--------------------------------------------------------------------------
  488.   def initialize(x = 0, y = 0)
  489.     super(x, y, window_width, window_height)
  490.     self.windowskin = Cache.menu("")
  491.     self.opacity = 0
  492.     self.contents_opacity = 0
  493.     self.visible = false
  494.     @input_lag = 0
  495.     @old_index = -1
  496.     @pending_index = -1
  497.     refresh
  498.   end

  499.   #--------------------------------------------------------------------------
  500.   # ● Window Width
  501.   #--------------------------------------------------------------------------
  502.   def window_width
  503.       40
  504.   end

  505.   #--------------------------------------------------------------------------
  506.   # ● Window Height
  507.   #--------------------------------------------------------------------------
  508.   def window_height
  509.       40
  510.   end
  511.   
  512.   #--------------------------------------------------------------------------
  513.   # ● Cursor Movable?
  514.   #--------------------------------------------------------------------------  
  515.   def cursor_movable?
  516.       active && open? && !@cursor_fix && !@cursor_all && item_max > 0 && @input_lag == 0
  517.   end  
  518.   
  519.   #--------------------------------------------------------------------------
  520.   # ● Item Max
  521.   #--------------------------------------------------------------------------
  522.   def item_max
  523.       $game_party.members.size
  524.   end
  525.   
  526.   #--------------------------------------------------------------------------
  527.   # ● Item Height
  528.   #--------------------------------------------------------------------------
  529.   def item_height
  530.     (height - standard_padding * 2) / 4
  531.   end

  532.   #--------------------------------------------------------------------------
  533.   # ● Draw Item Background
  534.   #--------------------------------------------------------------------------
  535.   def draw_item_background(index)
  536.   end
  537.   
  538.   #--------------------------------------------------------------------------
  539.   # ● Pending Index
  540.   #--------------------------------------------------------------------------
  541.   def pending_index=(index)
  542.       last_pending_index = @pending_index
  543.       @pending_index = index
  544.   end
  545.   
  546.   #--------------------------------------------------------------------------
  547.   # ● Process OK
  548.   #--------------------------------------------------------------------------
  549.   def process_ok
  550.       $game_party.target_actor = $game_party.members[index] unless @cursor_all
  551.       call_ok_handler
  552.   end
  553.   
  554.   #--------------------------------------------------------------------------
  555.   # ● Select Last
  556.   #--------------------------------------------------------------------------
  557.   def select_last
  558.       select($game_party.target_actor.index || 0)
  559.   end
  560.   
  561.   #--------------------------------------------------------------------------
  562.   # ● Select For Item
  563.   #--------------------------------------------------------------------------
  564.   def select_for_item(item)
  565.       @cursor_fix = item.for_user?
  566.       @cursor_all = item.for_all?
  567.       if @cursor_fix
  568.          select($game_party.menu_actor.index)
  569.       elsif @cursor_all
  570.          select(0)
  571.       else
  572.           @index = @index < 0 ? 0 : @index
  573.       end
  574.   end
  575.   
  576.   #--------------------------------------------------------------------------
  577.   # ● Draw Item
  578.   #--------------------------------------------------------------------------  
  579.   def draw_item(index)
  580.   end
  581.   
  582.   #--------------------------------------------------------------------------
  583.   # ● Process Cursor Move 2
  584.   #--------------------------------------------------------------------------
  585.   def process_cursor_move2
  586.       return unless cursor_movable?
  587.       last_index = @index
  588.       cursor_down (Input.trigger?(:RIGHT))  if Input.repeat?(:RIGHT)
  589.       cursor_up   (Input.trigger?(:LEFT))    if Input.repeat?(:LEFT)
  590.       Sound.play_cursor if @index != last_index
  591.   end   
  592.   
  593.   #--------------------------------------------------------------------------
  594.   # ● Update
  595.   #--------------------------------------------------------------------------  
  596.   def update
  597.       super
  598.       @input_lag -= 1 if @input_lag > 0
  599.       if @old_index != @index
  600.          @old_index = @index
  601.          @input_lag = 5
  602.       end   
  603.   end
  604.   
  605. end

  606. #==============================================================================
  607. # ■ Members Menu
  608. #==============================================================================
  609. class Members_Menu
  610.   include MOG_MEMBERS_LAYOUT
  611.   
  612.   attr_accessor :actor
  613.   
  614.   #--------------------------------------------------------------------------
  615.   # ● Initialize
  616.   #--------------------------------------------------------------------------
  617.   def initialize(actor,index)
  618.       @actor = actor
  619.       @index = index
  620.       @index_old = -1
  621.       @com_index = 0
  622.       @max_index = $game_party.members.size - 1      
  623.       @active = false
  624.       @active_old = false
  625.       @opac = 0
  626.       @opac_active = [0,0]
  627.       @par = []
  628.       [url=home.php?mod=space&uid=14099]@Float[/url] = [0,0,0]
  629.       set_old_parameter
  630.       create_sprites
  631.       create_sprites_support if @index == 0
  632.   end
  633.   
  634.   #--------------------------------------------------------------------------
  635.   # ● Create Sprites
  636.   #--------------------------------------------------------------------------   
  637.   def create_sprites
  638.       @meter_image = $game_temp.pre_cache_actor_menu[6]
  639.       @meter_cw = @meter_image.width
  640.       @meter_ch = @meter_image.height / 2   
  641.       @parameter_number = $game_temp.pre_cache_actor_menu[2]
  642.       @parameter_cw = @parameter_number.width / 10
  643.       @parameter_ch = @parameter_number.height
  644.       @visible = false
  645.       create_layout
  646.       create_parameter
  647.       create_face
  648.       create_name
  649.       create_hp_meter
  650.       create_mp_meter
  651.       @next_pos = [[email protected] - 64,0]
  652.       @now_index = [[email protected] - 64,0,0]
  653.       @before_index = [[email protected] - 64,0,0]
  654.       @next_index = [[email protected] - 64,0,0]
  655.       set_position([email protected] - 64,0)
  656.       set_opacity(0)
  657.   end
  658.    
  659.   #--------------------------------------------------------------------------
  660.   # ● Create Sprites
  661.   #--------------------------------------------------------------------------     
  662.   def create_sprites_support
  663.       create_scope_all
  664.       create_arrow
  665.   end
  666.   
  667.   #--------------------------------------------------------------------------
  668.   # ● Create Scope All
  669.   #--------------------------------------------------------------------------      
  670.   def create_scope_all
  671.       @scope = Sprite.new
  672.       @scope.bitmap = $game_temp.pre_cache_actor_menu[4]
  673.       @scope_cw = @scope.bitmap.width
  674.       @org_pos_scope = [SCOPE_TEXT_POSITION[0],SCOPE_TEXT_POSITION[1],SCOPE_TEXT_POSITION[0] - @scope_cw]
  675.       @scope.x = @org_pos_scope[2]
  676.       @scope.y = @org_pos_scope[1]
  677.       @scope.z = 15
  678.   end
  679.   
  680.   #--------------------------------------------------------------------------
  681.   # ● Update Scope
  682.   #--------------------------------------------------------------------------         
  683.   def update_scope
  684.       if @active and all_targets
  685.          if @scope.x < @org_pos_scope[0]
  686.             @scope.x += 15
  687.             if @scope.x >= @org_pos_scope[0]
  688.                @scope.x = @org_pos_scope[0]
  689.             end   
  690.          end
  691.       else
  692.          if @scope.x > @org_pos_scope[2]         
  693.             @scope.x -= 15
  694.             if @scope.x <= @org_pos_scope[2]
  695.                @scope.x = @org_pos_scope[2]
  696.             end         
  697.           end
  698.       end
  699.   end
  700.   
  701.   #--------------------------------------------------------------------------
  702.   # ● Create Arrow
  703.   #--------------------------------------------------------------------------           
  704.   def create_arrow
  705.       @arrow_float = [0,0,0]
  706.       @arrow_np_1 = [0,0]
  707.       @arrow_np_2 = [0,0]
  708.       @arrow_image = $game_temp.pre_cache_actor_menu[5]
  709.       @arrow_image_cw = @arrow_image.width
  710.       @arrow_image_ch = @arrow_image.height# / 2
  711.       @arrow_1 = Sprite.new
  712.       @arrow_1.bitmap = Bitmap.new(@arrow_image_cw,@arrow_image_ch)
  713.       @arrow_cw = @arrow_1.bitmap.width
  714.       @org_pos_arrow_1 = [ARROW_1_POSITION[0],ARROW_1_POSITION[1]]
  715.       @arrow_1.x = @org_pos_arrow_1[0]
  716.       @arrow_1.y = @org_pos_arrow_1[1]
  717.       @arrow_1.z = 15
  718.       @arrow_1.opacity = 0
  719.       @arrow_2 = Sprite.new
  720.       @arrow_2.bitmap = Bitmap.new(@arrow_image_cw,@arrow_image_ch)
  721.       @arrow_2.ox = @arrow_2.bitmap.width / 2
  722.       @arrow_2.oy = @arrow_2.bitmap.height / 2
  723.       @arrow_2.angle = 180
  724.       ar_y = (MEMBERS_SPACE * 4) + ARROW_2_POSITION[1]
  725.       @org_pos_arrow_2 = [ARROW_2_POSITION[0] + @arrow_2.ox,ar_y]
  726.       @arrow_2.x = @org_pos_arrow_2[0]
  727.       @arrow_2.y = @org_pos_arrow_2[1]
  728.       @arrow_2.z = 15  
  729.       @arrow_2.opacity = 0
  730.       @arrow_time_1 = 0
  731.       @arrow_time_2 = 0
  732.       refresh_arrow(0,@arrow_1,0)
  733.       refresh_arrow(1,@arrow_2,0)
  734.   end
  735.   
  736.   #--------------------------------------------------------------------------
  737.   # ● Refresh_arrow 1
  738.   #--------------------------------------------------------------------------            
  739.   def refresh_arrow(arrow,sprite,type)
  740.       sprite.bitmap.clear
  741.       h = @arrow_image_ch * type
  742.       a_rect = Rect.new(0,h,@arrow_image_cw,@arrow_image_ch)
  743.       sprite.bitmap.blt(0,0,@arrow_image,a_rect)
  744.       @arrow_time_1 = 20 if arrow == 0
  745.       @arrow_time_2 = 20 if arrow ==1
  746.   end
  747.   
  748.   #--------------------------------------------------------------------------
  749.   # ● Update Arrow
  750.   #--------------------------------------------------------------------------            
  751.   def update_arrow
  752.     #  update_arrow_type
  753.       update_arrow_visible
  754.       update_arrow_float_animation
  755.   end
  756.    
  757.   #--------------------------------------------------------------------------
  758.   # ● Update Arrow Type
  759.   #--------------------------------------------------------------------------               
  760.   def update_arrow_type
  761.       if @arrow_time_1 > 0
  762.          @arrow_time_1 -= 1
  763.          refresh_arrow(0,@arrow_1,0) if @arrow_time_1 == 0
  764.       end   
  765.       if @arrow_time_2 > 0
  766.          @arrow_time_2 -= 1
  767.          refresh_arrow(1,@arrow_2,0) if @arrow_time_2 == 0
  768.       end         
  769.   end
  770.   
  771.   #--------------------------------------------------------------------------
  772.   # ● Refresh Arrow Type
  773.   #--------------------------------------------------------------------------                 
  774.   def refresh_arrow_type
  775.       return
  776.       if @index_old > @com_index
  777.          refresh_arrow(0,@arrow_1,1)
  778.       else  
  779.          refresh_arrow(1,@arrow_2,1)
  780.       end  
  781.   end  
  782.   
  783.   #--------------------------------------------------------------------------
  784.   # ● Update Arrow Visible
  785.   #--------------------------------------------------------------------------              
  786.   def update_arrow_visible
  787.       if can_arrow_visible?
  788.         @arrow_1.opacity += 15
  789.         @arrow_2.opacity += 15
  790.         @arrow_np_1 = [@org_pos_arrow_1[0],@org_pos_arrow_1[1]]
  791.         @arrow_np_2 = [@org_pos_arrow_2[0],@org_pos_arrow_2[1]]
  792.       else  
  793.         @arrow_1.opacity -= 10
  794.         @arrow_2.opacity -= 10
  795.         @arrow_np_1 = [-@arrow_cw,@org_pos[1]]
  796.         @arrow_np_2 = [-@arrow_cw + @arrow_2.ox,@org_pos[1] + @arrow_2.oy]        
  797.       end  
  798.   
  799.   end
  800.   
  801. #--------------------------------------------------------------------------
  802. # ● Update Slide Arrow
  803. #--------------------------------------------------------------------------                       
  804.   def update_slide_arrow(type,sprite,cp,np)
  805.       cp -= @arrow_float[1] if type == 1
  806.       sp = 2 + ((cp - np).abs / 20)
  807.       if cp > np
  808.          cp -= sp
  809.          cp = np if cp < np
  810.       elsif cp < np
  811.          cp += sp
  812.          cp = np if cp > np
  813.       end     
  814.       sprite.x = cp if type == 0
  815.       sprite.y = cp + @arrow_float[1] if type == 1
  816.   end      
  817.   
  818.   #--------------------------------------------------------------------------
  819.   # ● Can Arrow Visiblle?
  820.   #--------------------------------------------------------------------------               
  821.   def can_arrow_visible?
  822.       return false if !@active
  823.       return false if all_targets
  824.       return false if $game_party.members.size < 2
  825.       return  true
  826.   end
  827.   
  828.   #--------------------------------------------------------------------------
  829.   # ● Update Arrow Float Animation
  830.   #--------------------------------------------------------------------------               
  831.   def update_arrow_float_animation
  832.       @arrow_float[2] += 1
  833.       if @arrow_float[2] > 2
  834.          @arrow_float[2] = 0
  835.          @arrow_float[0] += 1
  836.          case @arrow_float[0]
  837.             when 1..11
  838.               @arrow_float[1] += 1
  839.             when 12..22
  840.               @arrow_float[1] -= 1
  841.             else  
  842.               @arrow_float[0] = 0
  843.               @arrow_float[1] = 0
  844.          end  
  845.       end
  846.     update_slide_arrow(0,@arrow_1,@arrow_1.x,@arrow_np_1[0])
  847.     update_slide_arrow(1,@arrow_1,@arrow_1.y,@arrow_np_1[1])
  848.     update_slide_arrow(0,@arrow_2,@arrow_2.x,@arrow_np_2[0])
  849.     update_slide_arrow(1,@arrow_2,@arrow_2.y,@arrow_np_2[1])   
  850.   end
  851.       
  852.   #--------------------------------------------------------------------------
  853.   # ● Create Scope All
  854.   #--------------------------------------------------------------------------      
  855.   def update_support
  856.       update_scope
  857.       update_arrow
  858.   end
  859.   
  860.   #--------------------------------------------------------------------------
  861.   # ● Set Old Parameter
  862.   #--------------------------------------------------------------------------  
  863.   def set_old_parameter
  864.       @par.clear
  865.       @par = [@actor.hp,@actor.mhp,@actor.mp,@actor.mmp,@actor.level]
  866.   end   
  867.   
  868.   #--------------------------------------------------------------------------
  869.   # ● Members Spate
  870.   #--------------------------------------------------------------------------   
  871.   def members_space
  872.       LAYOUT_POSITION[1] + (@index * MEMBERS_SPACE)
  873.   end  
  874.   
  875.   #--------------------------------------------------------------------------
  876.   # ● Dispose
  877.   #--------------------------------------------------------------------------  
  878.   def dispose
  879.       dispose_layout
  880.       dispose_parameter
  881.       dispose_face
  882.       dispose_name
  883.       dispose_hp_meter
  884.       dispose_mp_meter
  885.       dispose_support if @index == 0
  886.   end

  887.   #--------------------------------------------------------------------------
  888.   # ● Dispose Support
  889.   #--------------------------------------------------------------------------   
  890.   def dispose_support
  891.       dispose_scope
  892.       dispose_arrow
  893.   end
  894.   
  895.   #--------------------------------------------------------------------------
  896.   # ● Dispose Layout
  897.   #--------------------------------------------------------------------------   
  898.   def dispose_layout
  899.       @layout.dispose
  900.   end
  901.   
  902.   #--------------------------------------------------------------------------
  903.   # ● Dispose Scope
  904.   #--------------------------------------------------------------------------         
  905.   def dispose_scope
  906.       @scope.dispose
  907.   end  
  908.   
  909.   #--------------------------------------------------------------------------
  910.   # ● Dispose_Arrow
  911.   #--------------------------------------------------------------------------            
  912.   def dispose_arrow
  913.       @arrow_1.bitmap.dispose
  914.       @arrow_1.dispose
  915.       @arrow_2.bitmap.dispose
  916.       @arrow_2.dispose
  917.   end
  918.   
  919.   #--------------------------------------------------------------------------
  920.   # ● Dispose Parameter
  921.   #--------------------------------------------------------------------------      
  922.   def dispose_parameter
  923.       @parameter.bitmap.dispose
  924.       @parameter.dispose
  925.   end  
  926.   
  927.   #--------------------------------------------------------------------------
  928.   # ● Dispose Face
  929.   #--------------------------------------------------------------------------   
  930.   def dispose_face
  931.       @face.dispose
  932.   end   
  933.   
  934.   #--------------------------------------------------------------------------
  935.   # ● Dispose HP Meter
  936.   #--------------------------------------------------------------------------      
  937.   def dispose_hp_meter
  938.       @hp_meter.bitmap.dispose
  939.       @hp_meter.dispose
  940.   end
  941.   
  942.   #--------------------------------------------------------------------------
  943.   # ● Dispose MP Meter
  944.   #--------------------------------------------------------------------------      
  945.   def dispose_mp_meter
  946.       @mp_meter.bitmap.dispose
  947.       @mp_meter.dispose
  948.   end  
  949.   
  950.   #--------------------------------------------------------------------------
  951.   # ● Dispose Name
  952.   #--------------------------------------------------------------------------        
  953.   def dispose_name
  954.       @name.bitmap.dispose
  955.       @name.dispose
  956.   end  
  957.   
  958.   #--------------------------------------------------------------------------
  959.   # ● Create Layout
  960.   #--------------------------------------------------------------------------
  961.   def create_layout
  962.       @layout = Sprite.new
  963.       @layout.bitmap = Cache.menu("Actor_Layout_1")
  964.       @org_pos = [LAYOUT_POSITION[0],LAYOUT_POSITION[1]]
  965.       @layout.x = @org_pos[0]
  966.       @layout.y = @org_pos[1]
  967.       @layout.z = 10
  968.       #@layout.opacity = 0
  969.   end

  970.   #--------------------------------------------------------------------------
  971.   # ● Create Parameter
  972.   #--------------------------------------------------------------------------
  973.   def create_parameter
  974.       @parameter = Sprite.new
  975.       @parameter.bitmap = Bitmap.new(@layout.bitmap.width,@layout.bitmap.height)
  976.       @org_pos_par = [@org_pos[0] + PAR_POSITION[0],
  977.                       @org_pos[1] + PAR_POSITION[1]]
  978.       @parameter.x = @org_pos_par[0]
  979.       @parameter.y = @org_pos_par[1]
  980.       @parameter.z = 12
  981. #      @parameter.opacity = 0
  982.       refresh_parameter
  983.   end  
  984.   
  985.   #--------------------------------------------------------------------------
  986.   # ● Create HP Meter
  987.   #--------------------------------------------------------------------------  
  988.   def create_hp_meter
  989.       @hp_meter_old = [-1,-1]
  990.       @hp_meter = Sprite.new
  991.       @hp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  992.       @org_pos_hp = [@org_pos[0] + HP_METER_POSITION[0],
  993.                      @org_pos[1] + HP_METER_POSITION[1]]      
  994.       @hp_meter.x = @org_pos_hp[0]
  995.       @hp_meter.y = @org_pos_hp[1]
  996.       @hp_meter.z = 11
  997.   end  
  998.   
  999.   #--------------------------------------------------------------------------
  1000.   # ● Refresh HP Meter
  1001.   #--------------------------------------------------------------------------   
  1002.   def refresh_hp_meter
  1003.       @hp_meter_old[0] = @actor.hp
  1004.       @hp_meter_old[1] = @actor.mhp
  1005.       @hp_meter.bitmap.clear
  1006.       width_range = @meter_cw * @actor.hp / @actor.mhp
  1007.       m_rect = Rect.new(0,0,width_range,@meter_ch)
  1008.       @hp_meter.bitmap.blt(0,0,@meter_image,m_rect)
  1009.   end
  1010.   
  1011.   #--------------------------------------------------------------------------
  1012.   # ● Create MP Meter
  1013.   #--------------------------------------------------------------------------  
  1014.   def create_mp_meter
  1015.       @mp_meter_old = [-1,-1]
  1016.       @mp_meter = Sprite.new
  1017.       @mp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  1018.       @org_pos_mp = [@org_pos[0] + MP_METER_POSITION[0],
  1019.                      @org_pos[1] + MP_METER_POSITION[1]]      
  1020.       @mp_meter.x = @org_pos_mp[0]
  1021.       @mp_meter.y = @org_pos_mp[1]
  1022.       @mp_meter.z = 11
  1023.   end  
  1024.   
  1025.   #--------------------------------------------------------------------------
  1026.   # ● Refresh MP Meter
  1027.   #--------------------------------------------------------------------------   
  1028.   def refresh_mp_meter
  1029.       @mp_meter_old[0] = @actor.mp
  1030.       @mp_meter_old[1] = @actor.mmp
  1031.       @mp_meter.bitmap.clear
  1032.       width_range = @meter_cw * @actor.mp / @actor.mmp rescue nil
  1033.       width_range = 0 if width_range == nil
  1034.       m_rect = Rect.new(0,@meter_ch,width_range,@meter_ch)
  1035.       @mp_meter.bitmap.blt(0,0,@meter_image,m_rect)
  1036.   end  
  1037.   
  1038.   #--------------------------------------------------------------------------
  1039.   # ● Create Face
  1040.   #--------------------------------------------------------------------------   
  1041.   def refresh_parameter
  1042.       set_old_parameter   
  1043.       @parameter.bitmap.clear
  1044.       
  1045.       value = @actor.level
  1046.       x = 146
  1047.       y = 8
  1048.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1049.      
  1050.       value = @actor.hp
  1051.       x = 72
  1052.       y = 24
  1053.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1054.   
  1055.       value = @actor.mp
  1056.       x = 146
  1057.       y = 24
  1058.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1059.       
  1060.   end  
  1061.   
  1062.   #--------------------------------------------------------------------------
  1063.   # ● Refresh Number
  1064.   #--------------------------------------------------------------------------     
  1065.   def refresh_number(sprite,image,value,number_cw,number_ch,x,y)
  1066.       number = value.abs.to_s.split(//)
  1067.       x2 = -number_cw * number.size
  1068.       for i in 0..number.size - 1
  1069.           number_abs = number[i].to_i
  1070.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  1071.           sprite.bitmap.blt(x + x2 + (number_cw  *  i), y, image, nsrc_rect)        
  1072.       end      
  1073.       
  1074.   end

  1075.   #--------------------------------------------------------------------------
  1076.   # ● Create Face
  1077.   #--------------------------------------------------------------------------  
  1078.   def create_face
  1079.       @face = Sprite.new
  1080.       @org_pos_face = [@org_pos[0] + FACE_POSITION[0],
  1081.                        @org_pos[1] + FACE_POSITION[1]]
  1082.       @face.x = @org_pos_face[0]
  1083.       @face.y = @org_pos_face[1]
  1084.       @face.z = 11
  1085.    #   @face.opacity = 0
  1086.       refresh_face
  1087.   end  
  1088.   
  1089.   #--------------------------------------------------------------------------
  1090.   # ● Refresh Face
  1091.   #--------------------------------------------------------------------------   
  1092.   def refresh_face
  1093.       face_name = "Face_B" + @actor.id.to_s
  1094.       @face.bitmap = Cache.menu(face_name.to_s)
  1095.   end
  1096.   
  1097.   #--------------------------------------------------------------------------
  1098.   # ● Create Name
  1099.   #--------------------------------------------------------------------------   
  1100.   def create_name
  1101.       @name = Sprite.new
  1102.       @name.bitmap = Bitmap.new(140,32)
  1103.       @name.bitmap.font.size = FONT_SIZE
  1104.       @name.bitmap.font.bold = FONT_BOLD
  1105.       @org_pos_name = [@org_pos[0] + NAME_POSITION[0],
  1106.                        @org_pos[1] + NAME_POSITION[1]]
  1107.       @name.x = @org_pos_name[0]
  1108.       @name.y = @org_pos_name[1]
  1109.       @name.z = 11
  1110.       refresh_name     
  1111.   end  
  1112.   
  1113.   #--------------------------------------------------------------------------
  1114.   # ● Refresh Name
  1115.   #--------------------------------------------------------------------------      
  1116.   def refresh_name
  1117.       @name.bitmap.clear
  1118.       @name.bitmap.draw_text(0,0,140,32,@actor.name.to_s,0)
  1119.   end  
  1120.   
  1121.   #--------------------------------------------------------------------------
  1122.   # ● Set Actor
  1123.   #--------------------------------------------------------------------------        
  1124.   def set_actor(actor)
  1125.       @actor = actor
  1126.   end
  1127.   
  1128.   #--------------------------------------------------------------------------
  1129.   # ● Can Refresh HP Meter
  1130.   #--------------------------------------------------------------------------         
  1131.   def can_refresh_hp_meter?
  1132.       return true if @hp_meter_old[0] != @actor.hp
  1133.       return true if @hp_meter_old[1] != @actor.mhp
  1134.       return false
  1135.   end
  1136.      
  1137.   #--------------------------------------------------------------------------
  1138.   # ● Can Refresh MP Meter
  1139.   #--------------------------------------------------------------------------         
  1140.   def can_refresh_mp_meter?
  1141.       return true if @mp_meter_old[0] != @actor.mp
  1142.       return true if @mp_meter_old[1] != @actor.mmp
  1143.       return false
  1144.   end  
  1145.   
  1146.   #--------------------------------------------------------------------------
  1147.   # ● Can Refresh Parameter
  1148.   #--------------------------------------------------------------------------
  1149.   def can_refresh_parameter?
  1150.       return true if @par[0] != @actor.hp
  1151.       return true if @par[1] != @actor.mhp
  1152.       return true if @par[2] != @actor.mp
  1153.       return true if @par[3] != @actor.mmp
  1154.       return true if @par[4] != @actor.level
  1155.       return false
  1156.   end   
  1157.   
  1158.   #--------------------------------------------------------------------------
  1159.   # ● Refresh_Visible
  1160.   #--------------------------------------------------------------------------   
  1161.   def refresh_visible
  1162.       if can_visible?
  1163.          set_visible(true)
  1164.       else  
  1165.          set_visible(false)
  1166.       end  
  1167.   end  
  1168.   
  1169.   #--------------------------------------------------------------------------
  1170.   # ● Set Index
  1171.   #--------------------------------------------------------------------------     
  1172.   def set_index
  1173.       @now_index[0] = @com_index
  1174.       @before_index[0] = @com_index - 1
  1175.       @next_index[0] = @com_index + 1
  1176.       @before_index[0] = @max_index if @before_index[0] < 0
  1177.       @next_index[0] = 0 if @next_index[0] > @max_index   
  1178.   end
  1179.       
  1180.   #--------------------------------------------------------------------------
  1181.   # ● Can Visible?
  1182.   #--------------------------------------------------------------------------     
  1183.   def can_visible?
  1184.       return true if @index == @now_index[0]
  1185.       return true if @index == @next_index[0]
  1186.       return true if @index == @before_index[0]
  1187.       return false
  1188.   end
  1189.   
  1190.   #--------------------------------------------------------------------------
  1191.   # ● Set Visible
  1192.   #--------------------------------------------------------------------------     
  1193.   def set_visible(value)
  1194.       @visible = value
  1195.       return
  1196.       @layout.visible = @visible
  1197.       @parameter.visible = @visible
  1198.       @hp_meter.visible = @visible
  1199.       @mp_meter.visible = @visible
  1200.       @face.visible = @visible
  1201.       @name.visible = @visible
  1202.   end
  1203.   
  1204.   #--------------------------------------------------------------------------
  1205.   # ● Update Position
  1206.   #--------------------------------------------------------------------------      
  1207.   def update_position
  1208.       update_slide(0,@layout,@layout.x,@next_pos[0] + @org_pos[0])
  1209.       update_slide(1,@layout,@layout.y,@next_pos[1] + @org_pos[1])
  1210.       update_slide(0,@parameter,@parameter.x,@next_pos[0] + @org_pos_par[0])
  1211.       update_slide(1,@parameter,@parameter.y,@next_pos[1] + @org_pos_par[1])
  1212.       update_slide(0,@hp_meter,@hp_meter.x,@next_pos[0] + @org_pos_hp[0])
  1213.       update_slide(1,@hp_meter,@hp_meter.y,@next_pos[1] + @org_pos_hp[1])  
  1214.       update_slide(0,@mp_meter,@mp_meter.x,@next_pos[0] + @org_pos_mp[0])
  1215.       update_slide(1,@mp_meter,@mp_meter.y,@next_pos[1] + @org_pos_mp[1])        
  1216.       update_slide(0,@face,@face.x,@next_pos[0] + @org_pos_face[0])
  1217.       update_slide(1,@face,@face.y,@next_pos[1] + @org_pos_face[1])        
  1218.       update_slide(0,@name,@name.x,@next_pos[0] + @org_pos_name[0])
  1219.       update_slide(1,@name,@name.y,@next_pos[1] + @org_pos_name[1])      
  1220.   end

  1221.   #--------------------------------------------------------------------------
  1222.   # ● Update Float
  1223.   #--------------------------------------------------------------------------         
  1224.   def update_float
  1225.       @float[2] += 1
  1226.       if @float[2] > 5
  1227.          @float[2] = 0
  1228.          @float[0] += 1
  1229.          case @float[0]         
  1230.               when 1..5
  1231.                   @float[1] -= 1  
  1232.               when 6..15
  1233.                   @float[1] += 1
  1234.               when 16..20
  1235.                   @float[1] -= 1
  1236.               else
  1237.                  @float = [0,0,0]
  1238.           end
  1239.        end
  1240.   end
  1241.   
  1242. #--------------------------------------------------------------------------
  1243. # ● Update Slide
  1244. #--------------------------------------------------------------------------                       
  1245.   def update_slide(type,sprite,cp,np)
  1246.       cp -= @float[1] if type == 1
  1247.       sp = 3 + ((cp - np).abs / 10)
  1248.       if cp > np
  1249.          cp -= sp
  1250.          cp = np if cp < np
  1251.       elsif cp < np
  1252.          cp += sp
  1253.          cp = np if cp > np
  1254.       end     
  1255.       sprite.x = cp if type == 0
  1256.       sprite.y = cp + @float[1] if type == 1
  1257.   end   
  1258.   
  1259.   #--------------------------------------------------------------------------
  1260.   # ● All Targets
  1261.   #--------------------------------------------------------------------------                        
  1262.   def all_targets
  1263.       return true if $game_temp.item_scope == 8
  1264.       return true if $game_temp.item_scope == 10
  1265.       return false
  1266.   end  
  1267.    
  1268.   #--------------------------------------------------------------------------
  1269.   # ● Update Opacity
  1270.   #--------------------------------------------------------------------------  
  1271.   def update_opacity
  1272.       if @visible
  1273.          if all_targets
  1274.             if @max_index == 0
  1275.                @next_pos = [0,0]
  1276.             else   
  1277.                if @index == @before_index[0]
  1278.                   @next_pos = [0,-MEMBERS_SPACE]
  1279.                elsif @index == @next_index[0]
  1280.                   @next_pos = [0,MEMBERS_SPACE]
  1281.                else  
  1282.                   @next_pos = [0,0]
  1283.                end      
  1284.             end            
  1285.             update_opacity_active
  1286.             update_float
  1287.          else  
  1288.              if ((@index == @before_index[0]) or (@index == @next_index[0])) and
  1289.                   @max_index != 0
  1290.                   opac_limit = 170
  1291.                   if @opac > opac_limit
  1292.                      @opac -= 10
  1293.                      @opac = opac_limit if @opac < opac_limit
  1294.                   elsif @opac < opac_limit
  1295.                      @opac += 10
  1296.                      @opac = opac_limit if @opac > opac_limit
  1297.                   end   
  1298.                   @float = [0,0,0]
  1299.              else  
  1300.                  update_opacity_active
  1301.                  update_float
  1302.              end  
  1303.          end   
  1304.       else
  1305.           @opac -= 10 if @opac > 0
  1306.           @opac = 0 if @opac < 0
  1307.           @float = [0,0,0]
  1308.       end
  1309.       set_opacity(@opac)
  1310.   end
  1311.   
  1312.   #--------------------------------------------------------------------------
  1313.   # ● Update Opacity Active
  1314.   #--------------------------------------------------------------------------   
  1315.   def update_opacity_active
  1316.       @opac_active[0] += 1
  1317.       case @opac_active[0]
  1318.          when 1..30
  1319.             @opac_active[1] +=  4
  1320.          when 31..60           
  1321.             @opac_active[1] -=  4
  1322.          else
  1323.            @opac_active[1] = 0
  1324.            @opac_active[0] = 0
  1325.       end
  1326.       @opac = 160 + @opac_active[1]
  1327.   end         
  1328.             
  1329.   #--------------------------------------------------------------------------
  1330.   # ● Set Opacity
  1331.   #--------------------------------------------------------------------------   
  1332.   def set_opacity(opac)
  1333.       @layout.opacity = opac
  1334.       @layout.opacity = opac
  1335.       @parameter.opacity = opac
  1336.       @parameter.opacity = opac
  1337.       @hp_meter.opacity = opac
  1338.       @hp_meter.opacity = opac
  1339.       @mp_meter.opacity = opac
  1340.       @mp_meter.opacity = opac
  1341.       @face.opacity = opac
  1342.       @face.opacity = opac
  1343.       @name.opacity = opac
  1344.       @name.opacity = opac
  1345.   end   
  1346.       
  1347.   #--------------------------------------------------------------------------
  1348.   # ● Refresh Index
  1349.   #--------------------------------------------------------------------------   
  1350.   def refresh_index
  1351.       refresh_arrow_type if @index == 0
  1352.       @index_old = @com_index
  1353.       set_index
  1354.       refresh_visible
  1355.       set_next_position
  1356.   end
  1357.   
  1358.   #--------------------------------------------------------------------------
  1359.   # ● Set Next Position
  1360.   #--------------------------------------------------------------------------      
  1361.   def set_next_position
  1362.       if @max_index == 0
  1363.          @next_pos = [0,0]
  1364.          return
  1365.       end  
  1366.       if @visible
  1367.       if @index == @before_index[0]
  1368.          @next_pos = [-32,-MEMBERS_SPACE]
  1369.          if @layout.opacity < 150
  1370.             set_position(@next_pos[0],-MEMBERS_SPACE * 2)
  1371.             set_opacity(0)
  1372.          end   
  1373.       elsif @index == @next_index[0]
  1374.          @next_pos = [-32,MEMBERS_SPACE]
  1375.          if @layout.opacity < 150  
  1376.             set_position(@next_pos[0],MEMBERS_SPACE * 2)
  1377.             set_opacity(0)
  1378.          end   
  1379.       else  
  1380.          @next_pos = [0,0]
  1381.       end   
  1382.       else
  1383.          @next_pos = [-64,0]
  1384.       end  
  1385.   end
  1386.   
  1387.   #--------------------------------------------------------------------------
  1388.   # ● Update Position
  1389.   #--------------------------------------------------------------------------      
  1390.   def set_position(pos_x,pos_y)
  1391.       @layout.x = @org_pos[0] + pos_x
  1392.       @layout.y = @org_pos[1] + pos_y
  1393.       @parameter.x = @org_pos_par[0] + pos_x
  1394.       @parameter.y = @org_pos_par[1] + pos_y
  1395.       @hp_meter.x = @org_pos_hp[0] + pos_x
  1396.       @hp_meter.y = @org_pos_hp[1] + pos_y
  1397.       @mp_meter.x = @org_pos_mp[0] + pos_x
  1398.       @mp_meter.y = @org_pos_mp[1] + pos_y
  1399.       @face.x = @org_pos_face[0] + pos_x
  1400.       @face.y = @org_pos_face[1] + pos_y
  1401.       @name.x = @org_pos_name[0] + pos_x
  1402.       @name.y = @org_pos_name[1] + pos_y
  1403.   end  
  1404.   
  1405.   #--------------------------------------------------------------------------
  1406.   # ● Refresh Active
  1407.   #--------------------------------------------------------------------------         
  1408.   def refresh_active
  1409.       @active_old = @active
  1410.       @visible = @active
  1411.       refresh_index
  1412.       if !@active
  1413.          @visible = @active
  1414.          @next_pos = [[email protected] - 64,0]
  1415.       else   
  1416.          set_position([email protected] - 64,0)
  1417.       end   
  1418.   end
  1419.   
  1420.   #--------------------------------------------------------------------------
  1421.   # ● Update
  1422.   #--------------------------------------------------------------------------  
  1423.   def update(active,com_index)
  1424.       @active = active
  1425.       @com_index = com_index
  1426.       refresh_active if @active != @active_old
  1427.       update_opacity
  1428.       update_position
  1429.       update_support if @index == 0
  1430.       return if !@active
  1431.       refresh_index if @index_old != @com_index
  1432.       return if !@active or !@visible
  1433.       refresh_hp_meter if can_refresh_hp_meter?
  1434.       refresh_mp_meter if can_refresh_mp_meter?
  1435.       refresh_parameter if can_refresh_parameter?
  1436.   end
  1437.   
  1438.   #--------------------------------------------------------------------------
  1439.   # ● Current Actor
  1440.   #--------------------------------------------------------------------------   
  1441.   def current_actor
  1442.       return true if @com_index == @index
  1443.       return false
  1444.   end
  1445.   
  1446. end

  1447. #==============================================================================
  1448. # ■ Game_Temp
  1449. #==============================================================================
  1450. class Game_Temp
  1451.   
  1452.   #--------------------------------------------------------------------------
  1453.   # ● Execute Pre Cache Actor
  1454.   #--------------------------------------------------------------------------  
  1455.   def execute_pre_cache_actor
  1456.       @pre_cache_actor_menu = []
  1457.       @pre_cache_actor_menu.push(Cache.menu("Actor_Layout_1"))
  1458.       @pre_cache_actor_menu.push(Cache.menu("Actor_Layout_2"))      
  1459.       @pre_cache_actor_menu.push(Cache.menu("Actor_Number_1"))
  1460.       @pre_cache_actor_menu.push(Cache.menu("Actor_Number_2"))
  1461.       @pre_cache_actor_menu.push(Cache.menu("Actor_Scope_All"))
  1462.       @pre_cache_actor_menu.push(Cache.menu("Actor_Members_Arrow"))
  1463.       @pre_cache_actor_menu.push(Cache.menu("Actor_Meter"))
  1464.   end
  1465.    
  1466. end

  1467. #==============================================================================
  1468. # ■ Actor Menu Status
  1469. #==============================================================================
  1470. class Actor_Menu_Status
  1471.   
  1472.   include MOG_ACTOR_MENU_STATUS
  1473.   
  1474.   #--------------------------------------------------------------------------
  1475.   # ● Initialize
  1476.   #--------------------------------------------------------------------------
  1477.   def initialize(actor)
  1478.       @actor = actor
  1479.       @active = false
  1480.       set_old_parameter
  1481.       create_sprites
  1482.   end

  1483.   #--------------------------------------------------------------------------
  1484.   # ● Create Sprites
  1485.   #--------------------------------------------------------------------------  
  1486.   def create_sprites
  1487.       @parameter_number = $game_temp.pre_cache_actor_menu[3]
  1488.       @parameter_cw = @parameter_number.width / 10
  1489.       @parameter_ch = @parameter_number.height   
  1490.       create_layout
  1491.       create_face
  1492.       create_parameter
  1493.       create_name
  1494.       create_states  
  1495.   #    update(true,@actor)
  1496.   end
  1497.   
  1498.   #--------------------------------------------------------------------------
  1499.   # ● Dispose
  1500.   #--------------------------------------------------------------------------  
  1501.   def dispose
  1502.       dispose_layout
  1503.       dispose_face
  1504.       dispose_parameter
  1505.       dispose_name
  1506.       dispose_states
  1507.   end

  1508.   #--------------------------------------------------------------------------
  1509.   # ● Dispose Layout
  1510.   #--------------------------------------------------------------------------   
  1511.   def dispose_layout
  1512.       @layout.dispose
  1513.   end
  1514.   
  1515.   #--------------------------------------------------------------------------
  1516.   # ● Dispose Face
  1517.   #--------------------------------------------------------------------------   
  1518.   def dispose_face
  1519.       @face.bitmap.dispose if @face.bitmap != nil
  1520.       @face.dispose
  1521.   end  
  1522.   
  1523.   #--------------------------------------------------------------------------
  1524.   # ● Dispose Parameter
  1525.   #--------------------------------------------------------------------------      
  1526.   def dispose_parameter
  1527.       @parameter.bitmap.dispose
  1528.       @parameter.dispose
  1529.   end

  1530.   #--------------------------------------------------------------------------
  1531.   # ● Dispose Name
  1532.   #--------------------------------------------------------------------------        
  1533.   def dispose_name
  1534.       @name.bitmap.dispose
  1535.       @name.dispose
  1536.   end
  1537.   
  1538.   #--------------------------------------------------------------------------
  1539.   # ● Dispose States
  1540.   #--------------------------------------------------------------------------            
  1541.    def dispose_states
  1542.        return if @status == nil
  1543.        @status.bitmap.dispose
  1544.        @status.dispose
  1545.        if @actor_status != nil
  1546.           @actor_status.dispose
  1547.           @actor_status = nil
  1548.        end   
  1549.    end   
  1550.   
  1551.   #--------------------------------------------------------------------------
  1552.   # ● Set Old Parameter
  1553.   #--------------------------------------------------------------------------  
  1554.   def set_old_parameter
  1555.       @par = [] if @par == nil
  1556.       @par.clear
  1557.       @par = [@actor.hp,@actor.mhp,@actor.mp,@actor.mmp,@actor.atk,@actor.def,
  1558.               @actor.mat,@actor.mdf,@actor.agi,@actor.luk,@actor.level,@actor.tp]
  1559.   end   
  1560.   
  1561.   #--------------------------------------------------------------------------
  1562.   # ● Create Layout
  1563.   #--------------------------------------------------------------------------
  1564.   def create_layout
  1565.       @layout = Sprite.new
  1566.       @layout.bitmap = $game_temp.pre_cache_actor_menu[1]
  1567.       @org_pos = [LAYOUT_POSITION[0],LAYOUT_POSITION[1]]
  1568.       @layout.x = @org_pos[0] + 150
  1569.       @layout.y = @org_pos[1]
  1570.       @layout.z = 10
  1571.       @layout.opacity = 0
  1572.   end

  1573.   #--------------------------------------------------------------------------
  1574.   # ● Create Parameter
  1575.   #--------------------------------------------------------------------------
  1576.   def create_parameter
  1577.       @parameter = Sprite.new
  1578.       @parameter.bitmap = Bitmap.new(@layout.bitmap.width,@layout.bitmap.height)
  1579.       @org_pos_par = [@org_pos[0] + PAR_POSITION[0],
  1580.                       @org_pos[1] + PAR_POSITION[1]]
  1581.       @parameter.x = @org_pos_par[0] + 150
  1582.       @parameter.y = @org_pos_par[1]
  1583.       @parameter.z = 11
  1584.       @parameter.opacity = 0
  1585.       refresh_parameter
  1586.   end
  1587.   
  1588.   #--------------------------------------------------------------------------
  1589.   # ● Create Face
  1590.   #--------------------------------------------------------------------------  
  1591.   def create_face
  1592.       @face = Sprite.new
  1593.       @face.bitmap = Bitmap.new(96,96)
  1594.       @org_pos_face = [@org_pos[0] + FACE_POSITION[0],
  1595.                        @org_pos[1] + FACE_POSITION[1]]
  1596.       @face.x = @org_pos_face[0] + 150
  1597.       @face.y = @org_pos_face[1]
  1598.       @face.z = 11
  1599.       @face.opacity = 0
  1600.       refresh_face
  1601.   end
  1602.   
  1603.   #--------------------------------------------------------------------------
  1604.   # ● Create Name
  1605.   #--------------------------------------------------------------------------   
  1606.   def create_name
  1607.       @name = Sprite.new
  1608.       @name.bitmap = Bitmap.new(140,32)
  1609.       @name.bitmap.font.size = FONT_SIZE
  1610.       @name.bitmap.font.bold = FONT_BOLD
  1611.       @org_pos_name = [@org_pos[0] + NAME_POSITION[0],
  1612.                        @org_pos[1] + NAME_POSITION[1]]
  1613.       @name.x = @org_pos_name[0] + 150
  1614.       @name.y = @org_pos_name[1]
  1615.       @name.z = 11
  1616.       @name.opacity = 0
  1617.       refresh_name     
  1618.   end  
  1619.   
  1620.   #--------------------------------------------------------------------------
  1621.   # ● Create_States
  1622.   #--------------------------------------------------------------------------      
  1623.   def create_states
  1624.       @status_old = nil
  1625.       @status_flow = [-24,0]   
  1626.       @status = Sprite.new
  1627.       @status.bitmap = Bitmap.new(24,24)
  1628.       @org_pos_states = [@org_pos[0] + STATES_POSITION[0],
  1629.                          @org_pos[1] + STATES_POSITION[1]]      
  1630.       @status.x = @org_pos_states[0] + 150
  1631.       @status.y = @org_pos_states[1]
  1632.       @status.z = 11
  1633.   end      

  1634.   #--------------------------------------------------------------------------
  1635.   # * Refresh States
  1636.   #--------------------------------------------------------------------------        
  1637.   def refresh_states
  1638.       check_icon_image
  1639.       @status_old = @actor.states
  1640.       @status_flow = [0,0]
  1641.       @actor_status.dispose if @actor_status != nil
  1642.       @states_size = @actor.states.size > 0 ? (26 * @actor.states.size) : 24
  1643.       @actor_status = Bitmap.new(@states_size,24)
  1644.       index = 0
  1645.       for i in @actor.states
  1646.          rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
  1647.          @actor_status.blt(26 * index , 0, @icon_image, rect)
  1648.          index += 1
  1649.       end
  1650.   end   
  1651.   
  1652.   #--------------------------------------------------------------------------
  1653.   # * Flow_Status
  1654.   #--------------------------------------------------------------------------         
  1655.   def flow_states
  1656.       return if @actor_status == nil
  1657.       @status.bitmap.clear
  1658.       return if @actor.states.size == 0
  1659.       st_src_rect = Rect.new(@status_flow[0],0, 24,24)
  1660.       @status.bitmap.blt(0,0, @actor_status, st_src_rect)
  1661.       if STATES_SCROLLING_ANIMATION
  1662.          @status_flow[0] += 1
  1663.          @status_flow[0] = -24 if @status_flow[0] >= @states_size + 2
  1664.       else   
  1665.          @status_flow[1] += 1 unless @actor.states.size <= 1
  1666.          if @status_flow[1] > 30
  1667.             @status_flow[1] = 0
  1668.             @status_flow[0] += 26
  1669.             @status_flow[0] = 0 if @status_flow[0] >= (@states_size - 0)
  1670.          end   
  1671.      end   
  1672.   end        
  1673.   
  1674.   #--------------------------------------------------------------------------
  1675.   # * Check Icon Image
  1676.   #--------------------------------------------------------------------------         
  1677.   def check_icon_image
  1678.       if @icon_image == nil or @icon_image.disposed?
  1679.          @icon_image = Cache.system("Iconset")
  1680.       end   
  1681.   end   
  1682.   
  1683.   #--------------------------------------------------------------------------
  1684.   # ● Can Refresh Parameter
  1685.   #--------------------------------------------------------------------------
  1686.   def can_refresh_parameter?
  1687.       return false if !@active
  1688.       return true if @par[0] != @actor.hp
  1689.       return true if @par[1] != @actor.mhp
  1690.       return true if @par[2] != @actor.mp
  1691.       return true if @par[3] != @actor.mmp
  1692.       return true if @par[4] != @actor.atk
  1693.       return true if @par[5] != @actor.def
  1694.       return true if @par[6] != @actor.mat
  1695.       return true if @par[7] != @actor.mdf
  1696.       return true if @par[8] != @actor.agi
  1697.       return true if @par[9] != @actor.luk
  1698.       return true if @par[10] != @actor.level
  1699.       return true if @par[11] != @actor.tp
  1700.       return false
  1701.   end  

  1702.   #--------------------------------------------------------------------------
  1703.   # ● Refresh All
  1704.   #--------------------------------------------------------------------------  
  1705.   def refresh_all(actor)      
  1706.       @actor = actor
  1707.       refresh_parameter
  1708.       refresh_face
  1709.       refresh_name
  1710.   end  
  1711.   
  1712.   #--------------------------------------------------------------------------
  1713.   # ● Refresh Name
  1714.   #--------------------------------------------------------------------------      
  1715.   def refresh_name   
  1716.       @name.bitmap.clear
  1717.       @name.bitmap.draw_text(0,0,140,32,@actor.name.to_s,0)
  1718.   end
  1719.   
  1720.   #--------------------------------------------------------------------------
  1721.   # ● Create Face
  1722.   #--------------------------------------------------------------------------   
  1723.   def refresh_parameter
  1724.       set_old_parameter
  1725.       @parameter.bitmap.clear      
  1726.       value = @actor.level
  1727.       x = 67
  1728.       y = 24
  1729.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1730.       
  1731.       value = @actor.tp
  1732.       x = 140
  1733.       y = 24
  1734.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1735.       
  1736.       value = @actor.hp
  1737.       x = 70
  1738.       y = 46
  1739.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1740.    
  1741.       value = @actor.mhp
  1742.       x = 140
  1743.       y = 46
  1744.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1745.       
  1746.       value = @actor.mp
  1747.       x = 70
  1748.       y = 46 + 22 * 1
  1749.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)

  1750.       value = @actor.mmp
  1751.       x = 140
  1752.       y = 46 + 22 * 1
  1753.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1754.   
  1755.       value = @actor.atk
  1756.       x = 70
  1757.       y = 46 + 22 * 2
  1758.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1759.       
  1760.       value = @actor.def
  1761.       x = 70
  1762.       y = 46 + 22 * 3
  1763.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1764.       
  1765.       value = @actor.agi
  1766.       x = 70
  1767.       y = 46 + 22 * 4
  1768.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1769.       
  1770.       value = @actor.mat
  1771.       x = 140
  1772.       y = 46 + 22 * 2
  1773.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1774.       
  1775.       value = @actor.mdf
  1776.       x = 140
  1777.       y = 46 + 22 * 3
  1778.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1779.       
  1780.       value = @actor.luk
  1781.       x = 140
  1782.       y = 46 + 22 * 4
  1783.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1784.   end
  1785.    
  1786.   #--------------------------------------------------------------------------
  1787.   # ● Refresh Number
  1788.   #--------------------------------------------------------------------------     
  1789.   def refresh_number(sprite,image,value,number_cw,number_ch,x,y)
  1790.       number = value.truncate.abs.to_s.split(//)
  1791.       x2 = -number_cw * number.size
  1792.       for i in 0..number.size - 1
  1793.           number_abs = number[i].to_i
  1794.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  1795.           sprite.bitmap.blt(x + x2 + (number_cw  *  i), y, image, nsrc_rect)        
  1796.       end      
  1797.   end
  1798.   
  1799.   #--------------------------------------------------------------------------
  1800.   # ● Refresh Face
  1801.   #--------------------------------------------------------------------------  
  1802.   def refresh_face
  1803.       #return
  1804.       @face.bitmap.clear
  1805.       face_image = Cache.face(@actor.face_name)
  1806.       arect = Rect.new(@actor.face_index  % 4 * 96, @actor.face_index / 4 * 96, 96, 96)
  1807.       @face.bitmap.blt(0,0, face_image, arect)
  1808.      # face_image.dispose
  1809.   end
  1810.   
  1811.   #--------------------------------------------------------------------------
  1812.   # ● Update Slide
  1813.   #--------------------------------------------------------------------------  
  1814.   def update_slide
  1815.       slide_speed = 10
  1816.       opac_speed = 23
  1817.       @slide_range = (@org_pos[0] + 150)
  1818.       if @active
  1819.          if @layout.x > @org_pos[0]
  1820.             @layout.x -= slide_speed
  1821.             @parameter.x -= slide_speed
  1822.             @face.x -= slide_speed
  1823.             @name.x -= slide_speed
  1824.             @status.x -= slide_speed
  1825.             @layout.opacity += opac_speed
  1826.             @parameter.opacity += opac_speed
  1827.             @face.opacity += opac_speed
  1828.             @name.opacity += opac_speed
  1829.             @status.opacity += opac_speed
  1830.             if @layout.x <= @org_pos[0]
  1831.                @layout.x = @org_pos[0]
  1832.                @parameter.x = @org_pos_par[0]
  1833.                @face.x = @org_pos_face[0]
  1834.                @name.x = @org_pos_name[0]
  1835.                @status.x = @org_pos_states[0]
  1836.                @layout.opacity = 255
  1837.                @parameter.opacity = 255
  1838.                @face.opacity = 255
  1839.                @name.opacity = 255  
  1840.                @status.opacity = 255
  1841.             end  
  1842.          end   
  1843.       else
  1844.          if @layout.x <  @slide_range
  1845.             @layout.x += slide_speed
  1846.             @parameter.x += slide_speed
  1847.             @face.x += slide_speed
  1848.             @name.x += slide_speed
  1849.             @status.x += slide_speed
  1850.             @layout.opacity -= opac_speed
  1851.             @parameter.opacity -= opac_speed
  1852.             @face.opacity -= opac_speed
  1853.             @name.opacity -= opac_speed
  1854.             @status.opacity -= opac_speed
  1855.             if @layout.x >=  @slide_range
  1856.                @layout.x =  @slide_range
  1857.                @parameter.x = @org_pos_par[0] + 150
  1858.                @face.x = @org_pos_face[0] + 150
  1859.                @name.x = @org_pos_name[0] + 150
  1860.                @status.x = @org_pos_states[0] + 150
  1861.                @layout.opacity = 0
  1862.                @parameter.opacity = 0
  1863.                @face.opacity = 0
  1864.                @name.opacity = 0   
  1865.                @status.opacity = 0   
  1866.             end  
  1867.          end   
  1868.          
  1869.       end  
  1870.   end
  1871.   
  1872.   #--------------------------------------------------------------------------
  1873.   # ● Update
  1874.   #--------------------------------------------------------------------------
  1875.   def update(active,actor)
  1876.       @active = active
  1877.       update_slide
  1878.       return if !@active
  1879.       refresh_all(actor) if actor != @actor
  1880.       refresh_parameter if can_refresh_parameter?
  1881.       refresh_states if @status_old != @actor.states      
  1882.       flow_states
  1883.   end      
  1884.   
  1885. end



  1886. #==============================================================================
  1887. # ■ Game_Temp
  1888. #==============================================================================
  1889. class Game_Temp
  1890.   
  1891.   #--------------------------------------------------------------------------
  1892.   # ● Execute Pre Cache Main Menu
  1893.   #--------------------------------------------------------------------------   
  1894.   def execute_pre_cache_main_menu
  1895.       @pre_cache_main_menu = []
  1896.       @pre_cache_main_menu.push(Cache.menu_main("Background"))
  1897.       @pre_cache_main_menu.push(Cache.menu_main("Layout"))
  1898.       @pre_cache_main_menu.push(Cache.menu_main("Time_Number"))
  1899.       @pre_cache_main_menu.push(Cache.menu_main("Gold_Number"))
  1900.       @pre_cache_main_menu.push(Cache.menu_main("Members_Layout"))
  1901.       @pre_cache_main_menu.push(Cache.menu_main("Members_Arrow"))
  1902.       @pre_cache_main_menu.push(Cache.menu_main("Par_Number_1"))
  1903.       @pre_cache_main_menu.push(Cache.menu_main("Par_Number_2"))
  1904.       @pre_cache_main_menu.push(Cache.menu_main("Par_Meter"))
  1905.       @pre_cache_main_menu.push(Cache.menu_main("Par_Layout"))
  1906.   end   
  1907.    
  1908. end

  1909. #==============================================================================
  1910. # ■ Scene_Menu
  1911. #==============================================================================
  1912. class Scene_Menu
  1913.   include MOG_MENU
  1914.   include MOG_MENU_BASE
  1915.   
  1916.   #--------------------------------------------------------------------------
  1917.   # ● Main
  1918.   #--------------------------------------------------------------------------        
  1919.   def main
  1920.       execute_setup
  1921.       execute_loop
  1922.       execute_dispose
  1923.   end  
  1924.   
  1925.   #--------------------------------------------------------------------------
  1926.   # ● Execute Setup
  1927.   #--------------------------------------------------------------------------        
  1928.   def execute_setup
  1929.       $game_temp.execute_pre_cache_icon if $game_temp.can_pre_cache_icon?
  1930.       @phase = 0
  1931.       @members_windows_active = false
  1932.       @members_index = 0
  1933.       create_sprites
  1934.   end
  1935.   
  1936.   #--------------------------------------------------------------------------
  1937.   # ● Execute Lopp
  1938.   #--------------------------------------------------------------------------        
  1939.   def execute_loop
  1940.       Graphics.transition(10)
  1941.       loop do
  1942.          Input.update
  1943.          update
  1944.          Graphics.update
  1945.          break if SceneManager.scene != self
  1946.       end
  1947.   end  
  1948.   
  1949. end

  1950. #==============================================================================
  1951. # ■ Face Members
  1952. #==============================================================================
  1953. class Face_Members_Sprite < Sprite
  1954.   include MOG_MENU
  1955.   attr_accessor :index
  1956.   attr_accessor :active
  1957.   attr_accessor :actor_id
  1958.   
  1959. #--------------------------------------------------------------------------
  1960. # ● Initialize
  1961. #--------------------------------------------------------------------------                  
  1962.   def initialize(viewport = nil, index, actor_id)
  1963.       super(viewport)
  1964.       @active = false
  1965.       @index = index
  1966.       @actor_id = actor_id
  1967.       @active = false
  1968.       self.bitmap = Cache.menu("Face" + @actor_id.to_s)
  1969.       self.z = 12
  1970.       self.ox = self.bitmap.width / 2
  1971.       self.oy = self.bitmap.height / 2
  1972.       members_size = $game_party.members.size - 1
  1973.       members_size = 3 if members_size > 3
  1974.       space_base = (MEMBERS_FACE_SPACE * @index)
  1975.       space = space_base - ((ACTOR_SPACE * members_size ) / 2) +  MEMBERS_FACE_POSITION[0]
  1976.       @org_pos =  [space + self.ox , self.oy   ]
  1977.       @ny = 0
  1978.       @zoom_duration = [0,0,false]
  1979.       self.x = @org_pos[0]
  1980.       self.y = @org_pos[1]
  1981.   end  
  1982.   
  1983. #--------------------------------------------------------------------------
  1984. # ● Dispose
  1985. #--------------------------------------------------------------------------                     
  1986.   def dispose
  1987.       super
  1988.       self.bitmap.dispose
  1989.   end  
  1990.   
  1991. #--------------------------------------------------------------------------
  1992. # ● Update
  1993. #--------------------------------------------------------------------------                     
  1994.   def update_command(index, ny)
  1995.       @active = index == @index ? true : false
  1996.       @ny = ny
  1997.       update_slide(index)
  1998.       update_opacity
  1999.       update_zoom   
  2000.   end  
  2001.    
  2002. #--------------------------------------------------------------------------
  2003. # ● Update Opacity
  2004. #--------------------------------------------------------------------------                       
  2005.   def update_opacity
  2006.       if @active
  2007.          self.opacity += 12
  2008.       else  
  2009.          self.opacity -= 6 if self.opacity > 120
  2010.       end  
  2011.   end  
  2012.   
  2013. #--------------------------------------------------------------------------
  2014. # ● Update Zoom
  2015. #--------------------------------------------------------------------------                       
  2016.   def update_zoom
  2017.       if @active
  2018.          if !@zoom_duration[2]
  2019.             update_zoom_out
  2020.             @zoom_duration = [0,0,true] if self.zoom_x == 1.00  
  2021.          else  
  2022.             update_zoom_effect
  2023.          end
  2024.       else
  2025.          @zoom_duration[2] = false   
  2026.          update_zoom_in
  2027.       end  
  2028.   end   
  2029.   
  2030. #--------------------------------------------------------------------------
  2031. # ● Update Zoom Out
  2032. #--------------------------------------------------------------------------                        
  2033.   def update_zoom_out
  2034.       return if self.zoom_x == 1.00
  2035.       self.zoom_x += 0.03
  2036.       self.zoom_y += 0.03
  2037.       if self.zoom_x >= 1.00
  2038.             self.zoom_x = 1.00
  2039.             self.zoom_y = 1.00
  2040.       end   
  2041.    end   
  2042.   
  2043. #--------------------------------------------------------------------------
  2044. # ● Update Zoom In
  2045. #--------------------------------------------------------------------------                           
  2046.   def update_zoom_in
  2047.       return if self.zoom_x == 0.80
  2048.       self.zoom_x -= 0.03
  2049.       self.zoom_y -= 0.03
  2050.       if self.zoom_x <= 0.80
  2051.          self.zoom_x = 0.80
  2052.          self.zoom_y = 0.80
  2053.       end   
  2054.   end      
  2055.          
  2056. #--------------------------------------------------------------------------
  2057. # ● Update Zoom_effect
  2058. #--------------------------------------------------------------------------                        
  2059. def update_zoom_effect
  2060.      @zoom_duration[0] += 1
  2061.      return if @zoom_duration[0] < 1
  2062.      @zoom_duration[0] = 0
  2063.      @zoom_duration[1] += 1
  2064.      case @zoom_duration[1]
  2065.           when 1..30
  2066.              self.zoom_x -= 0.005
  2067.              self.zoom_y -= 0.005                 
  2068.           when 31..60
  2069.              self.zoom_x += 0.005
  2070.              self.zoom_y += 0.005           
  2071.           when 61..999  
  2072.           @zoom_duration[1] = 0
  2073.           self.zoom_x = 1.00
  2074.           self.zoom_y = 1.00
  2075.      end
  2076. end  
  2077.   
  2078. #--------------------------------------------------------------------------
  2079. # ● Update Slide
  2080. #--------------------------------------------------------------------------                       
  2081.   def update_slide(index)
  2082.       np = @org_pos[0] - (index * MEMBERS_FACE_SPACE) + @ny
  2083.       cp = self.x
  2084.       sp = 5 + ((cp - np).abs / 5)
  2085.       if cp > np
  2086.          cp -= sp
  2087.          cp = np if cp < np
  2088.       elsif cp < np
  2089.          cp += sp
  2090.          cp = np if cp > np
  2091.       end     
  2092.       self.x = cp      
  2093.   end  
  2094.   
  2095. #--------------------------------------------------------------------------
  2096. # ● Active
  2097. #--------------------------------------------------------------------------                        
  2098.   def active(value)
  2099.       @active = value
  2100.   end   
  2101.       
  2102. end

  2103. #==============================================================================
  2104. # ■ Members Arrow Sprite
  2105. #==============================================================================
  2106. class Members_Arrow_Sprite
  2107.    include MOG_MENU
  2108.    attr_accessor :active
  2109.    
  2110. #--------------------------------------------------------------------------
  2111. # ● Initialize
  2112. #--------------------------------------------------------------------------
  2113.   def initialize
  2114.       @active = false
  2115.       create_members_layout
  2116.       create_arrows
  2117.   end
  2118.   
  2119. #--------------------------------------------------------------------------
  2120. # ● Create Members Layout
  2121. #--------------------------------------------------------------------------  
  2122.   def create_members_layout
  2123.       @layout_members = Sprite.new
  2124.       @layout_members.bitmap = $game_temp.pre_cache_main_menu[4]
  2125.       @layout_members.z = 13
  2126.       @layout_members_pos = [MEMBERS_ARROW_LAYOUT_POSITION[0], MEMBERS_ARROW_LAYOUT_POSITION[1]]
  2127.       @layout_members.x = @layout_members_pos[0]
  2128.       @layout_members.y = @layout_members_pos[1]
  2129.       @layout_members.opacity = 0
  2130.   end
  2131.   
  2132. #--------------------------------------------------------------------------
  2133. # ● Create Arrows
  2134. #--------------------------------------------------------------------------  
  2135.   def create_arrows
  2136.       @arrow_animation_duration = [0,0]
  2137.       @arrow_1 = Sprite.new
  2138.       @arrow_1.bitmap = $game_temp.pre_cache_main_menu[5]
  2139.       @arrow_1.z = 13
  2140.       @arrow1_pos = [MEMBERS_ARROW_1_POSITION[0], MEMBERS_ARROW_1_POSITION[1]]
  2141.       @arrow_1.x = @arrow1_pos[0]
  2142.       @arrow_1.y = @arrow1_pos[1]
  2143.       @arrow_1.opacity = 0
  2144.       @arrow_2 = Sprite.new
  2145.       @arrow_2.bitmap = $game_temp.pre_cache_main_menu[5]
  2146.       @arrow_2.z = 13
  2147.       @arrow_2.mirror = true
  2148.       @arrow2_pos = [MEMBERS_ARROW_2_POSITION[0], MEMBERS_ARROW_2_POSITION[1]]
  2149.       @arrow_2.x = @arrow2_pos[0]
  2150.       @arrow_2.y = @arrow2_pos[1]
  2151.       @arrow_2.opacity = 0
  2152.       @nx = 0
  2153.       @nx2 = 0
  2154.   end  
  2155.   
  2156. #--------------------------------------------------------------------------
  2157. # ● Dispose
  2158. #--------------------------------------------------------------------------                              
  2159.   def dispose
  2160.       dispose_members_layout
  2161.       dispose_arrows
  2162.   end

  2163. #--------------------------------------------------------------------------
  2164. # ● Dispose Arrows
  2165. #--------------------------------------------------------------------------                                
  2166. def dispose_arrows
  2167.      return if @arrow_1 == nil
  2168.      @arrow_1.dispose
  2169.      @arrow_2.dispose
  2170.      @arrow_1 = nil
  2171. end  
  2172.   
  2173. #--------------------------------------------------------------------------
  2174. # ● Dispose Members Layout
  2175. #--------------------------------------------------------------------------   
  2176.   def dispose_members_layout
  2177.       return if @layout_members == nil
  2178.       @layout_members.dispose
  2179.       @layout_members = nil
  2180.   end

  2181. #--------------------------------------------------------------------------
  2182. # ● Update
  2183. #--------------------------------------------------------------------------                              
  2184.   def update
  2185.       update_arrow_animation
  2186.       update_position
  2187.       @layout_members.opacity += 15
  2188.       @arrow_1.opacity += 15
  2189.       @arrow_2.opacity += 15
  2190.   end  
  2191.   
  2192. #--------------------------------------------------------------------------
  2193. # ● Update Position
  2194. #--------------------------------------------------------------------------                                
  2195.   def update_position
  2196.       @arrow_1.x = @arrow1_pos[0] + @nx + @nx2
  2197.       @arrow_2.x = @arrow2_pos[0] + @nx - @nx2   
  2198.       @layout_members.x = @layout_members_pos[0] + @nx
  2199.   end

  2200. #--------------------------------------------------------------------------
  2201. # ● Update Arrow Animation
  2202. #--------------------------------------------------------------------------                                
  2203.   def update_arrow_animation
  2204.       @arrow_animation_duration[0] += 1
  2205.       return if @arrow_animation_duration[0] < 2
  2206.       @arrow_animation_duration[0] = 0
  2207.       @arrow_animation_duration[1] += 1
  2208.       case @arrow_animation_duration[1]
  2209.          when 1..20
  2210.            @nx2 -= 1
  2211.          when 21..40
  2212.            @nx2 += 1
  2213.          when 41..999  
  2214.            @nx2 = 0
  2215.            @arrow_animation_duration[1] = 0            
  2216.       end
  2217.   end

  2218. #--------------------------------------------------------------------------
  2219. # ● Active
  2220. #--------------------------------------------------------------------------                        
  2221.   def nx(value)
  2222.       @nx = value
  2223.   end   
  2224.   
  2225. end

  2226. #==============================================================================
  2227. # ■ Command Menu Sprite
  2228. #==============================================================================
  2229. class Command_Menu_Sprite < Sprite
  2230.   include MOG_MENU
  2231.   attr_accessor :index
  2232.   
  2233. #--------------------------------------------------------------------------
  2234. # ● Initialize
  2235. #--------------------------------------------------------------------------                  
  2236.   def initialize(viewport = nil,index,command_name)
  2237.       super(viewport)
  2238.       @index = index
  2239.       @command_name = command_name
  2240.       self.bitmap = Cache.menu_main("CM_" + @command_name.to_s)
  2241.       @cw = self.bitmap.width
  2242.       @ch = self.bitmap.height      
  2243.       cw1 = self.bitmap.height / 2
  2244.       cw2 = (self.bitmap.width + COMMAND_SPACE) * index
  2245.       self.ox = self.bitmap.width / 2
  2246.       self.oy = self.bitmap.height / 2
  2247.       @org_pos = [COMMAND_POSITION[0] + cw2 + self.ox, COMMAND_POSITION[1] + self.oy]
  2248.       @slide_max = @org_pos[1] + cw1
  2249.       @zoom_duration = [0,0,false]
  2250.       @zoom_limit = [1.00, 1.20]
  2251.       self.x = -@cw
  2252.       self.y = -@ch
  2253.       self.z = 10
  2254.       @active = false
  2255.       @visible_old = true
  2256.       @np = [-@cw,-@ch]
  2257.       @sprite_name = Sprite.new
  2258.       @sprite_name.bitmap = Bitmap.new(100,32)
  2259.       @sprite_name.bitmap.draw_text(0,0,100,32,@command_name.to_s,0)
  2260.       @sprite_name.z = 11
  2261.       @np_name = [-@cw,-@ch]
  2262.       @cw_name_pos = [@cw - self.ox + 4, -self.oy + 4]
  2263.   end  
  2264.   
  2265. #--------------------------------------------------------------------------
  2266. # ● Dispose
  2267. #--------------------------------------------------------------------------                     
  2268.   def dispose_command
  2269.       self.bitmap.dispose
  2270.       @sprite_name.bitmap.dispose
  2271.       @sprite_name.dispose
  2272.   end  
  2273.   
  2274. #--------------------------------------------------------------------------
  2275. # ● Update
  2276. #--------------------------------------------------------------------------                     
  2277.   def update_command(index, visible)
  2278.       @active = index == @index ? true : false
  2279.       refresh_active(visible) if @visible_old != visible
  2280.       update_position
  2281.       if !visible
  2282.           if @active
  2283.              self.opacity += 15
  2284.           else
  2285.              self.opacity -= 15
  2286.           end   
  2287.           return
  2288.       end  
  2289.       update_zoom
  2290.       update_opacity
  2291.   end   
  2292.   
  2293. #--------------------------------------------------------------------------
  2294. # ● Update Slide
  2295. #--------------------------------------------------------------------------                       
  2296.   def update_slide(type,cp,np)
  2297.       sp = 2 + ((cp - np).abs / 15)
  2298.       if cp > np
  2299.          cp -= sp
  2300.          cp = np if cp < np
  2301.       elsif cp < np
  2302.          cp += sp
  2303.          cp = np if cp > np
  2304.       end     
  2305.       self.x = cp if type == 0
  2306.       self.y = cp if type == 1
  2307.       @sprite_name.x = cp if type == 2
  2308.       @sprite_name.y = cp if type == 3
  2309.   end
  2310.   
  2311. #--------------------------------------------------------------------------
  2312. # ● Update Position
  2313. #--------------------------------------------------------------------------  
  2314.   def update_position
  2315.       unless !@visible_old
  2316.       if @active
  2317.          @np[0] = @org_pos[0]
  2318.          @np[1] = @slide_max
  2319.       else
  2320.          @np[0] = @org_pos[0]
  2321.          @np[1] = @org_pos[1]
  2322.       end  
  2323.       end
  2324.       update_slide(0,self.x,@np[0])
  2325.       update_slide(1,self.y,@np[1])
  2326.       update_sprite_name_position
  2327.   end      

  2328. #--------------------------------------------------------------------------
  2329. # ● Update Sprite Name Position
  2330. #--------------------------------------------------------------------------  
  2331. def update_sprite_name_position
  2332.       if (@active and !@visible_old) or !@active
  2333.          @np_name[0] = self.x + @cw_name_pos[0] + COMMAND_NAME_POSITION[0]
  2334.          @np_name[1] = self.y + @cw_name_pos[1] + COMMAND_NAME_POSITION[1]
  2335.       else
  2336.          @np_name[0] = COMMAND_NAME_POSITION_2[0]
  2337.          @np_name[1] = COMMAND_NAME_POSITION_2[1]
  2338.       end
  2339.       update_slide(2,@sprite_name.x,@np_name[0])
  2340.       update_slide(3,@sprite_name.y,@np_name[1])      
  2341.       @sprite_name.visible = @active ? true : false
  2342.   end     
  2343.   
  2344.   
  2345. #--------------------------------------------------------------------------
  2346. # ● Refresh Active
  2347. #--------------------------------------------------------------------------                       
  2348.   def refresh_active(visible)
  2349.       if @active and !visible
  2350.          @np[0] = COMMAND_POSITION_2[0] + (@cw / 2)
  2351.          @np[1] = COMMAND_POSITION_2[1]  
  2352.          self.zoom_x = @zoom_limit[0]
  2353.          self.zoom_y = @zoom_limit[0]
  2354.       else
  2355.          @np[0] = @org_pos[0]
  2356.          @np[1] = @org_pos[1]     
  2357.       end
  2358.       @visible_old = visible
  2359.   end
  2360.   
  2361. #--------------------------------------------------------------------------
  2362. # ● Update Opacity
  2363. #--------------------------------------------------------------------------  
  2364.   def update_opacity
  2365.       if @active
  2366.          self.opacity += 15
  2367.       else
  2368.          self.opacity -= 15 if self.opacity > 160
  2369.          if self.opacity < 160
  2370.             self.opacity += 15
  2371.             self.opacity = 160 if self.opacity > 160
  2372.          end   
  2373.       end   
  2374.   end  
  2375.   
  2376. #--------------------------------------------------------------------------
  2377. # ● Update Zoom
  2378. #--------------------------------------------------------------------------                       
  2379.   def update_zoom
  2380.       if @active
  2381.          if !@zoom_duration[2]
  2382.             update_zoom_out
  2383.             @zoom_duration = [0,0,true] if self.zoom_x == @zoom_limit[1]
  2384.          else  
  2385.             update_zoom_effect
  2386.          end
  2387.       else
  2388.          @zoom_duration[2] = false   
  2389.          update_zoom_in
  2390.       end  
  2391.   end   
  2392.   
  2393. #--------------------------------------------------------------------------
  2394. # ● Update Zoom Out
  2395. #--------------------------------------------------------------------------                        
  2396.   def update_zoom_out
  2397.       return if self.zoom_x == @zoom_limit[1]
  2398.       self.zoom_x += 0.03
  2399.       self.zoom_y += 0.03
  2400.       if self.zoom_x >= @zoom_limit[1]
  2401.             self.zoom_x = @zoom_limit[1]
  2402.             self.zoom_y = @zoom_limit[1]
  2403.       end   
  2404.    end   
  2405.   
  2406. #--------------------------------------------------------------------------
  2407. # ● Update Zoom In
  2408. #--------------------------------------------------------------------------                           
  2409.   def update_zoom_in
  2410.       return if self.zoom_x == @zoom_limit[0]
  2411.       self.zoom_x -= 0.03
  2412.       self.zoom_y -= 0.03
  2413.       if self.zoom_x <= @zoom_limit[0]
  2414.          self.zoom_x = @zoom_limit[0]
  2415.          self.zoom_y = @zoom_limit[0]
  2416.       end   
  2417.   end      
  2418.          
  2419. #--------------------------------------------------------------------------
  2420. # ● Update Zoom_effect
  2421. #--------------------------------------------------------------------------                        
  2422. def update_zoom_effect
  2423.      @zoom_duration[0] += 1
  2424.      return if @zoom_duration[0] < 1
  2425.      @zoom_duration[0] = 0
  2426.      @zoom_duration[1] += 1
  2427.      case @zoom_duration[1]
  2428.           when 1..30
  2429.              self.zoom_x -= 0.005
  2430.              self.zoom_y -= 0.005                 
  2431.           when 31..60
  2432.              self.zoom_x += 0.005
  2433.              self.zoom_y += 0.005           
  2434.           when 61..999  
  2435.           @zoom_duration[1] = 0
  2436.           self.zoom_x = @zoom_limit[1]
  2437.           self.zoom_y = @zoom_limit[1]
  2438.      end
  2439. end   
  2440.   
  2441. end

  2442. #==============================================================================
  2443. # ■ Actor Menu Pictures
  2444. #==============================================================================
  2445. class Actor_Menu_Pictures < Sprite
  2446.   include MOG_MENU
  2447.   attr_accessor :index
  2448.   
  2449. #--------------------------------------------------------------------------
  2450. # ● Initialize
  2451. #--------------------------------------------------------------------------                  
  2452.   def initialize(viewport = nil,index,actor_id)
  2453.       super(viewport)
  2454.       @index = index
  2455.       @actor_id = actor_id
  2456.       self.bitmap = Cache.menu("Actor" + @actor_id.to_s)
  2457.       self.z = 2
  2458.       set_position
  2459.       @slide_max = @org_pos[0] + 24
  2460.       auto_y = Graphics.height - self.bitmap.height
  2461.       self.ox = self.bitmap.width / 2
  2462.       self.x = @org_pos[0] - 15
  2463.       self.y = auto_y
  2464.       self.opacity = 0
  2465.       @op_time = 10 * @index
  2466.   end  
  2467.   
  2468. #--------------------------------------------------------------------------
  2469. # ● Set Position
  2470. #--------------------------------------------------------------------------  
  2471.   def set_position
  2472.       members_size = $game_party.members.size
  2473.       members_size = $game_party.max_battle_members if members_size > $game_party.max_battle_members
  2474.       space_members = ((Graphics.width ) / members_size)
  2475.       space_members_2 = (space_members * @index)
  2476.       space_members_3 = ((space_members / 2) * (members_size - 1))
  2477.       center = Graphics.width / 2
  2478.       space = center + space_members_2 - space_members_3
  2479.       @org_pos =  [space, ACTOR_POSITION[1]]   
  2480.   end
  2481.       
  2482. #--------------------------------------------------------------------------
  2483. # ● Dispose
  2484. #--------------------------------------------------------------------------                     
  2485.   def dispose_picture
  2486.       self.bitmap.dispose
  2487.   end  
  2488.   
  2489. #--------------------------------------------------------------------------
  2490. # ● Update Picture
  2491. #--------------------------------------------------------------------------  
  2492.   def update_picture
  2493.       @op_time -= 1 if @op_time > 0
  2494.       return if @op_time > 0
  2495.       self.opacity += 15
  2496.       self.x += 1 if self.x < @org_pos[0]
  2497.   end
  2498.   
  2499. end

  2500. #==============================================================================
  2501. # ■ Actor Menu Parameter
  2502. #==============================================================================
  2503. class Actor_Menu_Parameter
  2504.   
  2505.   include MOG_MENU
  2506.   attr_accessor :index
  2507.   
  2508.   #--------------------------------------------------------------------------
  2509.   # ● Initialize
  2510.   #--------------------------------------------------------------------------                     
  2511.   def initialize(index, actor)
  2512.       setup(index, actor)
  2513.       create_layout_par
  2514.       create_hp_number
  2515.       create_hp2_number
  2516.       create_mp_number
  2517.       create_mp2_number
  2518.       create_hp_meter
  2519.       create_mp_meter
  2520.       create_level
  2521.       create_states
  2522.       create_name
  2523.   end
  2524.   
  2525.   #--------------------------------------------------------------------------
  2526.   # ● Setup
  2527.   #--------------------------------------------------------------------------                       
  2528.   def setup(index, actor)
  2529.       @actor = actor
  2530.       @index = index
  2531.       set_position
  2532.       @number_image_1 = $game_temp.pre_cache_main_menu[6]
  2533.       @number_image_1_cw = @number_image_1.width / 10
  2534.       @number_image_1_ch = @number_image_1.height / 3
  2535.       @number_image_2 = $game_temp.pre_cache_main_menu[7]
  2536.       @number_image_2_cw = @number_image_2.width / 10
  2537.       @number_image_2_ch = @number_image_2.height
  2538.       @par_meter_image = $game_temp.pre_cache_main_menu[8]
  2539.       @par_meter_cw = @par_meter_image.width / 3
  2540.       @par_meter_ch = @par_meter_image.height / 2
  2541.       @par_meter_flow = 0
  2542.       @par_meter_flow_max = @par_meter_image.width - @par_meter_cw
  2543.       @icon_image = $game_temp.pre_cache_icon
  2544.   end

  2545.   #--------------------------------------------------------------------------
  2546.   # ● Set Position
  2547.   #--------------------------------------------------------------------------                       
  2548.   def set_position
  2549.       members_size = $game_party.members.size
  2550.       members_size = $game_party.max_battle_members if members_size >= $game_party.max_battle_members
  2551.       space_members = ((Graphics.width ) / members_size)
  2552.       space_members_2 = (space_members * @index)
  2553.       space_members_3 = ((space_members / 2) * (members_size - 1))
  2554.       center = Graphics.width / 2
  2555.       layout_ox = $game_temp.pre_cache_main_menu[9].width / 2
  2556.       @base_x = center - layout_ox + space_members_2 - space_members_3  
  2557.   end
  2558.       
  2559.   #--------------------------------------------------------------------------
  2560.   # ● Create Layout Par
  2561.   #--------------------------------------------------------------------------                       
  2562.   def create_layout_par
  2563.       @layout_par = Sprite.new
  2564.       @layout_par.bitmap = $game_temp.pre_cache_main_menu[9]
  2565.       @layout_par.z = 10
  2566.       @layout_par.x = @base_x + ACTOR_LAYOUT_POSITON[0]      
  2567.       @layout_par.y = ACTOR_LAYOUT_POSITON[1]
  2568.   end
  2569.   
  2570.   #--------------------------------------------------------------------------
  2571.   # ● Create Name
  2572.   #--------------------------------------------------------------------------  
  2573.   def create_name
  2574.       @actor_name = Sprite.new
  2575.       @actor_name.bitmap = Bitmap.new(160,32)
  2576.       @actor_name.bitmap.font.size = 18
  2577.       @actor_name.bitmap.font.bold = true
  2578.       @actor_name.bitmap.font.italic = true
  2579.       actor_name = @actor.name
  2580.       @actor_name.bitmap.font.color = Color.new(0,0,0)
  2581.       @actor_name.bitmap.draw_text(1,1,140,32,actor_name,1)
  2582.       @actor_name.bitmap.font.color = Color.new(255 ,255,255)
  2583.       @actor_name.bitmap.draw_text(0,0,140,32,actor_name,1)
  2584.       @actor_name.z = 12
  2585.       @actor_name.x = @base_x - 20
  2586.       @actor_name.y = 250
  2587.   end
  2588.   
  2589.   #--------------------------------------------------------------------------
  2590.   # ● Create HP Number
  2591.   #--------------------------------------------------------------------------  
  2592.   def create_hp_number
  2593.       @hp_number = Sprite.new
  2594.       @hp_number.bitmap = Bitmap.new(@number_image_1_cw * 4,@number_image_1_ch)
  2595.       @hp_number.z = 12
  2596.       @hp_number.x = @base_x + ACTOR_HP1_POSITON[0]
  2597.       @hp_number.y =  ACTOR_HP1_POSITON[1]
  2598.       refresh_hp
  2599.   end
  2600.   
  2601.   #--------------------------------------------------------------------------
  2602.   # ● Refresh HP
  2603.   #--------------------------------------------------------------------------   
  2604.   def refresh_hp
  2605.       @hp_number.bitmap.clear
  2606.       number = @actor.hp.abs.to_s.split(//)
  2607.       number_cw = @number_image_1_cw
  2608.       number_ch = @number_image_1_ch
  2609.       for i in 0..number.size - 1
  2610.           number_abs = number[i].to_i
  2611.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  2612.           @hp_number.bitmap.blt(number_cw  *  i, 0, @number_image_1, nsrc_rect)        
  2613.       end
  2614.   end
  2615.    
  2616.   #--------------------------------------------------------------------------
  2617.   # ● Create HP2 Number
  2618.   #--------------------------------------------------------------------------  
  2619.   def create_hp2_number
  2620.       @hp2_number = Sprite.new
  2621.       @hp2_number.bitmap = Bitmap.new(@number_image_2_cw * 4,@number_image_2_ch)
  2622.       @hp2_number.z = 12
  2623.       @hp2_number.x = @base_x + ACTOR_HP2_POSITON[0]
  2624.       @hp2_number.y =  ACTOR_HP2_POSITON[1]
  2625.       refresh_hp2
  2626.   end
  2627.   
  2628.   #--------------------------------------------------------------------------
  2629.   # ● Refresh HP2
  2630.   #--------------------------------------------------------------------------   
  2631.   def refresh_hp2
  2632.       @hp2_number.bitmap.clear
  2633.       number = @actor.mhp.abs.to_s.split(//)
  2634.       number_cw = @number_image_2_cw
  2635.       number_ch = @number_image_2_ch
  2636.       for i in 0..number.size - 1
  2637.           number_abs = number[i].to_i
  2638.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  2639.           @hp2_number.bitmap.blt(number_cw  *  i, 0, @number_image_2, nsrc_rect)        
  2640.       end
  2641.   end  
  2642.   
  2643.   #--------------------------------------------------------------------------
  2644.   # ● Create MP Number
  2645.   #--------------------------------------------------------------------------  
  2646.   def create_mp_number
  2647.       @mp_number = Sprite.new
  2648.       @mp_number.bitmap = Bitmap.new(@number_image_1_cw * 4,@number_image_1_ch)
  2649.       @mp_number.z = 12
  2650.       @mp_number.x = @base_x + ACTOR_MP1_POSITON[0]
  2651.       @mp_number.y =  ACTOR_MP1_POSITON[1]
  2652.       refresh_mp
  2653.   end
  2654.   
  2655.   #--------------------------------------------------------------------------
  2656.   # ● Refresh MP
  2657.   #--------------------------------------------------------------------------   
  2658.   def refresh_mp
  2659.       @mp_number.bitmap.clear
  2660.       number = @actor.mp.abs.to_s.split(//)
  2661.       number_cw = @number_image_1_cw
  2662.       number_ch = @number_image_1_ch
  2663.       for i in 0..number.size - 1
  2664.           number_abs = number[i].to_i
  2665.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  2666.           @mp_number.bitmap.blt(number_cw  *  i, 0, @number_image_1, nsrc_rect)        
  2667.       end
  2668.     end
  2669.    
  2670.   #--------------------------------------------------------------------------
  2671.   # ● Create MP2 Number
  2672.   #--------------------------------------------------------------------------  
  2673.   def create_mp2_number
  2674.       @mp2_number = Sprite.new
  2675.       @mp2_number.bitmap = Bitmap.new(@number_image_2_cw * 4,@number_image_2_ch)
  2676.       @mp2_number.z = 12
  2677.       @mp2_number.x = @base_x + ACTOR_MP2_POSITON[0]
  2678.       @mp2_number.y =  ACTOR_MP2_POSITON[1]
  2679.       refresh_mp2
  2680.   end
  2681.   
  2682.   #--------------------------------------------------------------------------
  2683.   # ● Refresh MP2
  2684.   #--------------------------------------------------------------------------   
  2685.   def refresh_mp2
  2686.       @mp2_number.bitmap.clear
  2687.       number = @actor.mmp.abs.to_s.split(//)
  2688.       number_cw = @number_image_2_cw
  2689.       number_ch = @number_image_2_ch
  2690.       for i in 0..number.size - 1
  2691.           number_abs = number[i].to_i
  2692.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  2693.           @mp2_number.bitmap.blt(number_cw  *  i, 0, @number_image_2, nsrc_rect)        
  2694.       end
  2695.   end      
  2696.    
  2697.   #--------------------------------------------------------------------------
  2698.   # ● Create Level
  2699.   #--------------------------------------------------------------------------      
  2700.   def create_level
  2701.       @level = Sprite.new
  2702.       @level.bitmap = Bitmap.new(@number_image_1_cw * 2, @number_image_1_ch)
  2703.       @level.z = 12
  2704.       @level.x = @base_x + ACTOR_LEVEL_POSITON[0]
  2705.       @level.y = ACTOR_LEVEL_POSITON[1]
  2706.       refresh_level
  2707.   end
  2708.   
  2709.   #--------------------------------------------------------------------------
  2710.   # ● Refresh Level
  2711.   #--------------------------------------------------------------------------        
  2712.   def refresh_level
  2713.       @level.bitmap.clear
  2714.       number = @actor.level.abs.to_s.split(//)
  2715.       number_cw = @number_image_1_cw
  2716.       number_ch = @number_image_1_ch
  2717.       for i in 0..number.size - 1
  2718.           number_abs = number[i].to_i
  2719.           nsrc_rect = Rect.new(number_cw * number_abs, number_ch * 2, number_cw , number_ch)
  2720.           @level.bitmap.blt(number_cw  *  i, 0, @number_image_1, nsrc_rect)        
  2721.       end      
  2722.   end  
  2723.   
  2724.   #--------------------------------------------------------------------------
  2725.   # ● Create HP Meter
  2726.   #--------------------------------------------------------------------------      
  2727.   def create_hp_meter
  2728.       @hp_meter = Sprite.new
  2729.       @hp_meter.bitmap = Bitmap.new(@par_meter_cw,@par_meter_ch)
  2730.       @hp_meter.z = 11
  2731.       @hp_meter.x = @base_x + ACTOR_HP_METER_POSITON[0]
  2732.       @hp_meter.y = ACTOR_HP_METER_POSITON[1]
  2733.       update_flow_hp
  2734.   end
  2735.   
  2736.   #--------------------------------------------------------------------------
  2737.   # ● Update Flow HP
  2738.   #--------------------------------------------------------------------------        
  2739.   def update_flow_hp
  2740.       @hp_meter.bitmap.clear
  2741.       par_width = @par_meter_cw * @actor.hp / @actor.mhp
  2742.       m_scr = Rect.new(@par_meter_flow,0, par_width, @par_meter_ch)
  2743.       @hp_meter.bitmap.blt(0,0,@par_meter_image, m_scr)
  2744.   end  
  2745.   
  2746.   #--------------------------------------------------------------------------
  2747.   # ● Create MP Meter
  2748.   #--------------------------------------------------------------------------      
  2749.   def create_mp_meter
  2750.       @mp_meter = Sprite.new
  2751.       @mp_meter.bitmap = Bitmap.new(@par_meter_cw,@par_meter_ch)
  2752.       @mp_meter.z = 11
  2753.       @mp_meter.x = @base_x + ACTOR_MP_METER_POSITON[0]
  2754.       @mp_meter.y = ACTOR_MP_METER_POSITON[1]
  2755.       update_flow_mp
  2756.   end
  2757.   
  2758.   #--------------------------------------------------------------------------
  2759.   # ● Update Flow MP
  2760.   #--------------------------------------------------------------------------        
  2761.   def update_flow_mp
  2762.       @mp_meter.bitmap.clear
  2763.       par_width = @par_meter_cw * @actor.mp / @actor.mmp rescue nil
  2764.       par_width = 0 if par_width == nil
  2765.       m_scr = Rect.new(@par_meter_flow,@par_meter_ch, par_width, @par_meter_ch)
  2766.       @mp_meter.bitmap.blt(0,0,@par_meter_image, m_scr)
  2767.       @par_meter_flow += 3
  2768.       @par_meter_flow = 0 if @par_meter_flow > @par_meter_flow_max
  2769.   end   

  2770.   #--------------------------------------------------------------------------
  2771.   # ● Create_States
  2772.   #--------------------------------------------------------------------------      
  2773.   def create_states
  2774.       refresh_states
  2775.       @status = Sprite.new
  2776.       @status.bitmap = Bitmap.new(24,24)
  2777.       @status.x = @base_x +  ACTOR_STATES_POSITION[0]
  2778.       @status.y = ACTOR_STATES_POSITION[1]
  2779.       @status_flow = -24
  2780.       @states_speed = 50
  2781.       @status.z = 503
  2782.       @old_states = @actor.states
  2783.       refresh_states
  2784.       update_flow_states
  2785.   end      
  2786.    
  2787.   #--------------------------------------------------------------------------
  2788.   # ● Upate Flow_Status
  2789.   #--------------------------------------------------------------------------         
  2790.   def update_flow_states
  2791.       return if @actor.states.size == 0 and [email protected]
  2792.       @states_speed = 0
  2793.       @status.bitmap.clear
  2794.       src_rect = Rect.new(@status_flow,0, 24,24)
  2795.       @status.bitmap.blt(0,0, @actor_status, src_rect)
  2796.       @status.visible = @actor.states.size == 0 ? false : true
  2797.       @status_flow += 1
  2798.       @status_flow = -24 if @status_flow >= @states_size - 24
  2799.   end   
  2800.   
  2801.   #--------------------------------------------------------------------------
  2802.   # ● Refresh States
  2803.   #--------------------------------------------------------------------------        
  2804.   def refresh_states
  2805.       @old_states = @actor.states
  2806.       if @actor_status != nil
  2807.          @actor_status.dispose
  2808.          @actor_status = nil
  2809.       end
  2810.       @states_size = @actor.states.size > 0 ? (48 * @actor.states.size) : 24
  2811.       @actor_status = Bitmap.new(@states_size,24)
  2812.       index = 0
  2813.       for i in  @actor.states
  2814.          rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
  2815.          @actor_status.blt(48 * index , 0, @icon_image, rect)
  2816.          index += 1
  2817.       end
  2818.   end   
  2819.   
  2820.   #--------------------------------------------------------------------------
  2821.   # ● Update
  2822.   #--------------------------------------------------------------------------         
  2823.   def update
  2824.       update_flow_hp
  2825.       update_flow_mp
  2826.       update_flow_states
  2827.   end  
  2828.   
  2829. end


  2830. #==============================================================================
  2831. # ■ Actor Menu Parameter
  2832. #==============================================================================
  2833. class Actor_Menu_Parameter
  2834.   
  2835.   #--------------------------------------------------------------------------
  2836.   # ● Dispose
  2837.   #--------------------------------------------------------------------------                     
  2838.   def dispose
  2839.       dispose_actor_layout_par
  2840.       dispose_name
  2841.       dispose_hp_number
  2842.       dispose_mp_number
  2843.       dispose_hp_meter
  2844.       dispose_mp_meter
  2845.       dispose_states
  2846.       dispose_level
  2847.   end  
  2848.   
  2849.   #--------------------------------------------------------------------------
  2850.   # ● Dispose Actor Layout Par
  2851.   #--------------------------------------------------------------------------                        
  2852.   def dispose_actor_layout_par
  2853.       return if @layout_par == nil
  2854.       @layout_par.dispose
  2855.       @layout_par = nil
  2856.   end   

  2857.   #--------------------------------------------------------------------------
  2858.   # ● Dispose Name
  2859.   #--------------------------------------------------------------------------  
  2860.   def dispose_name
  2861.       return if @actor_name == nil
  2862.       @actor_name.bitmap.dispose
  2863.       @actor_name.dispose
  2864.       @actor_name = nil
  2865.   end
  2866.   
  2867.   #--------------------------------------------------------------------------
  2868.   # ● Dispose HP Number
  2869.   #--------------------------------------------------------------------------      
  2870.   def dispose_hp_number
  2871.       return if @hp_number == nil
  2872.       @hp_number.bitmap.dispose
  2873.       @hp_number.dispose
  2874.       @hp_number = nil
  2875.       @hp2_number.bitmap.dispose
  2876.       @hp2_number.dispose
  2877.       @hp2_number = nil      
  2878.       
  2879.   end   
  2880.   
  2881.   #--------------------------------------------------------------------------
  2882.   # ● Dispose MP Number
  2883.   #--------------------------------------------------------------------------      
  2884.   def dispose_mp_number
  2885.       return if @mp_number == nil
  2886.       @mp_number.bitmap.dispose
  2887.       @mp_number.dispose
  2888.       @mp_number = nil
  2889.       @mp2_number.bitmap.dispose
  2890.       @mp2_number.dispose
  2891.       @mp2_number = nil      
  2892.   end   
  2893.   
  2894.   #--------------------------------------------------------------------------
  2895.   # ● Dispose States
  2896.   #--------------------------------------------------------------------------            
  2897.    def dispose_states
  2898.        return if @status == nil
  2899.        @status.bitmap.dispose
  2900.        @status.dispose
  2901.        if @actor_status != nil
  2902.           @actor_status.dispose
  2903.           @actor_status = nil
  2904.        end   
  2905.    end  
  2906.   
  2907.   #--------------------------------------------------------------------------
  2908.   # ● Dispose MP Meter
  2909.   #--------------------------------------------------------------------------        
  2910.   def dispose_mp_meter
  2911.       return if @mp_meter == nil
  2912.       @mp_meter.bitmap.dispose
  2913.       @mp_meter.dispose
  2914.       @mp_meter = nil
  2915.   end     
  2916.   
  2917.   #--------------------------------------------------------------------------
  2918.   # ● Dispose HP Meter
  2919.   #--------------------------------------------------------------------------        
  2920.   def dispose_hp_meter
  2921.       return if @hp_meter == nil
  2922.       @hp_meter.bitmap.dispose
  2923.       @hp_meter.dispose
  2924.       @hp_meter = nil
  2925.   end

  2926.   #--------------------------------------------------------------------------
  2927.   # ● Dispose Level
  2928.   #--------------------------------------------------------------------------        
  2929.   def dispose_level
  2930.       return if @level == nil
  2931.       @level.bitmap.dispose
  2932.       @level.dispose
  2933.       @level = nil
  2934.   end
  2935.    
  2936. end  

  2937. #==============================================================================
  2938. # ■ Scene_Menu
  2939. #==============================================================================
  2940. class Scene_Menu
  2941.   
  2942.   #--------------------------------------------------------------------------
  2943.   # ● Create Sprites
  2944.   #--------------------------------------------------------------------------         
  2945.   def create_sprites
  2946.       create_menu_background
  2947.       create_layout
  2948.       create_particles
  2949.       create_command
  2950.       create_actor_pictures
  2951.       create_timer_sprite
  2952.       create_gold_number
  2953.       create_location
  2954.       create_actor_parameter
  2955.       create_members
  2956.       create_members_layout
  2957.       update_members_face
  2958.   end

  2959.   #--------------------------------------------------------------------------
  2960.   # ● Create Menu Background
  2961.   #--------------------------------------------------------------------------            
  2962.   def create_menu_background
  2963.       @background = Plane.new
  2964.       @background.bitmap = $game_temp.pre_cache_main_menu[0]
  2965.       @background.z = 0
  2966.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  2967.   end  

  2968.   #--------------------------------------------------------------------------
  2969.   # ● Create Menu Background
  2970.   #--------------------------------------------------------------------------              
  2971.   def create_layout
  2972.       @layout = Sprite.new
  2973.       @layout.bitmap = $game_temp.pre_cache_main_menu[1]
  2974.       @layout.z = 3
  2975.   end
  2976.   
  2977.   #--------------------------------------------------------------------------
  2978.   # ● Create Particles
  2979.   #--------------------------------------------------------------------------  
  2980.   def create_particles
  2981.       @particles_sprite =[]
  2982.       for i in 0...NUMBER_OF_PARTICLES
  2983.           @particles_sprite.push(Particles_Menu.new(nil))
  2984.       end
  2985.   end
  2986.    
  2987.   #--------------------------------------------------------------------------
  2988.   # ● Create Command
  2989.   #--------------------------------------------------------------------------   
  2990.   def create_command
  2991.       create_command_window
  2992.       @command_window.visible = false
  2993.       @command_window.x -=544      
  2994.       @command_max = @command_window.list.size
  2995.       @commnad_name = []
  2996.       index = 0
  2997.       for i in @command_window.list
  2998.          @commnad_name.push(i[:name])
  2999.          index += 1
  3000.       end   
  3001.       @command_scroll_max = @command_max > 6 ? 6 : @command_max
  3002.       @command_ny = 0
  3003.       @command_sprites = []
  3004.       index = 0
  3005.       for i in 0...@command_max
  3006.           @command_sprites.push(Command_Menu_Sprite.new(nil, index,@commnad_name[index]) )
  3007.           index += 1
  3008.       end
  3009.   end  

  3010.   #--------------------------------------------------------------------------
  3011.   # ● Create Command Window
  3012.   #--------------------------------------------------------------------------     
  3013.   def create_command_window
  3014.       @command_window = Window_MenuCommand.new
  3015.       @command_window.set_handler(:item,      method(:command_item))
  3016.       @command_window.set_handler(:skill,     method(:command_personal))
  3017.       @command_window.set_handler(:equip,     method(:command_personal))
  3018.       @command_window.set_handler(:status,    method(:command_personal))
  3019.       @command_window.set_handler(:formation, method(:command_formation))
  3020.       @command_window.set_handler(:save,      method(:command_save))
  3021.       @command_window.set_handler(:game_end,  method(:command_game_end))
  3022.       @command_window.set_handler(:cancel,    method(:return_scene))  
  3023.       @command_window.index = $game_temp.menu_index
  3024.    end   
  3025.       
  3026.   #--------------------------------------------------------------------------
  3027.   # ● Create Actor Pictures
  3028.   #--------------------------------------------------------------------------     
  3029.   def create_actor_pictures
  3030.       @actor_pictures = []
  3031.       members_size = $game_party.members.size
  3032.       members_size = $game_party.max_battle_members if members_size >= $game_party.max_battle_members
  3033.       for i in 0...members_size
  3034.          @actor_pictures.push(Actor_Menu_Pictures.new(nil,i,$game_party.members[i].id))
  3035.       end   
  3036.   end
  3037.   
  3038.   #--------------------------------------------------------------------------
  3039.   # ● Create Timer Number
  3040.   #--------------------------------------------------------------------------      
  3041.   def create_timer_sprite
  3042.       update_timer
  3043.       @min_old = @min
  3044.       @timer_image = $game_temp.pre_cache_main_menu[2]
  3045.       @timer_cw = @timer_image.width / 10
  3046.       @timer_ch = @timer_image.height
  3047.       @timer_sprite = Sprite.new
  3048.       @timer_sprite.bitmap = Bitmap.new(@timer_image.width ,@timer_image.height)
  3049.       @timer_sprite.z = 11
  3050.       @timer_sprite.x = TIME_NUMBER_POS[0]
  3051.       @timer_sprite.y = TIME_NUMBER_POS[1]
  3052.       refresh_timer
  3053.   end
  3054.   
  3055.   #--------------------------------------------------------------------------
  3056.   # ● Create Gold Number
  3057.   #--------------------------------------------------------------------------         
  3058.   def create_gold_number
  3059.       @gold = $game_party.gold
  3060.       @gold_image = $game_temp.pre_cache_main_menu[3]
  3061.       @gold_cw = @gold_image.width / 10
  3062.       @gold_ch = @gold_image.height
  3063.       @gold_sprite = Sprite.new
  3064.       @gold_sprite.bitmap = Bitmap.new(@gold_image.width ,@gold_image.height)
  3065.       @gold_sprite.z = 11
  3066.       @gold_sprite.x = GOLD_NUMBER_POS[0]
  3067.       @gold_sprite.y = GOLD_NUMBER_POS[1]
  3068.       refresh_gold
  3069.   end  
  3070.   
  3071.   #--------------------------------------------------------------------------
  3072.   # ● Create Location
  3073.   #--------------------------------------------------------------------------         
  3074.   def create_location
  3075.       @location = Sprite.new
  3076.       @location.bitmap = Bitmap.new(200,40)
  3077.       @location.bitmap.font.size = 20
  3078.       @location.bitmap.font.bold = true
  3079.       @location.bitmap.font.italic = true
  3080.       @location.z = 12
  3081.       @location.x = LOCATION_POS[0]
  3082.       @location.y = LOCATION_POS[1]
  3083.       refresh_location
  3084.   end

  3085.   #--------------------------------------------------------------------------
  3086.   # ● Refresh Location
  3087.   #--------------------------------------------------------------------------            
  3088.   def refresh_location
  3089.       location_name = $game_map.display_name
  3090.       @location.bitmap.clear
  3091.       @location.bitmap.font.color = Color.new(120,120,120,120)
  3092.       @location.bitmap.draw_text(6,4,190,32, location_name.to_s,2)
  3093.       @location.bitmap.font.color = Color.new(255,255,255)
  3094.       @location.bitmap.draw_text(0,0,190,32, location_name.to_s,2)
  3095.   end
  3096.   
  3097.   #--------------------------------------------------------------------------
  3098.   # ● Create Actor Parameter
  3099.   #--------------------------------------------------------------------------              
  3100.   def create_actor_parameter
  3101.       @actor_par = []
  3102.       members_size = $game_party.members.size
  3103.       members_size = $game_party.max_battle_members if members_size >= $game_party.max_battle_members
  3104.       for i in 0...members_size
  3105.           @actor_par.push(Actor_Menu_Parameter.new(i,$game_party.members[i]))
  3106.       end   
  3107.   end
  3108.   
  3109.   #--------------------------------------------------------------------------
  3110.   # ● Create Members
  3111.   #--------------------------------------------------------------------------               
  3112.   def create_members
  3113.       @members_viewport = Viewport.new(MEMBERS_FACE_POSITION[0],MEMBERS_FACE_POSITION[1],400,96)
  3114.       @members_viewport.z = 12
  3115.       @members_viewport.ox = -544
  3116.       @members_slide_max = (MEMBERS_FACE_POSITION[0] - 544)
  3117.       @members = []
  3118.       for i in 0...$game_party.members.size        
  3119.           @members.push(Face_Members_Sprite.new(@members_viewport,i, $game_party.members[i].id))
  3120.       end
  3121.   end
  3122.   
  3123.   #--------------------------------------------------------------------------
  3124.   # ● Create Members Layout
  3125.   #--------------------------------------------------------------------------                  
  3126.   def create_members_layout
  3127.       @members_layout = Members_Arrow_Sprite.new
  3128.   end  
  3129.   
  3130. end

  3131. #==============================================================================
  3132. # ■ Scene_Menu
  3133. #==============================================================================
  3134. class Scene_Menu
  3135.   
  3136.   #--------------------------------------------------------------------------
  3137.   # ● Execute Dispose
  3138.   #--------------------------------------------------------------------------        
  3139.   def execute_dispose
  3140.       Graphics.freeze
  3141.       dispose_background
  3142.       dispose_layout
  3143.       dispose_particles
  3144.       dispose_command_sprites
  3145.       dispose_actor_sprites
  3146.       dispose_actor_parameter
  3147.       dispose_timer_sprite
  3148.       dispose_gold_number
  3149.       dispose_location
  3150.       dispose_members
  3151.   end
  3152.   
  3153.   #--------------------------------------------------------------------------
  3154.   # ● Dispose Background
  3155.   #--------------------------------------------------------------------------  
  3156.   def dispose_background
  3157.       return if @background == nil
  3158.       @background.dispose
  3159.       @background = nil
  3160.   end
  3161.    
  3162.   #--------------------------------------------------------------------------
  3163.   # ● Dispose Layout
  3164.   #--------------------------------------------------------------------------               
  3165.   def dispose_layout
  3166.       return if @layout == nil
  3167.       @layout.dispose
  3168.       @layout = nil
  3169.   end  
  3170.   
  3171. #--------------------------------------------------------------------------
  3172. # ● Dispose Particles
  3173. #--------------------------------------------------------------------------   
  3174. def dispose_particles
  3175.      return if @particles_sprite == nil
  3176.      @particles_sprite.each {|sprite| sprite.dispose }
  3177. end
  3178.    
  3179.   #--------------------------------------------------------------------------
  3180.   # ● Dispose Command Sprites
  3181.   #--------------------------------------------------------------------------     
  3182.   def dispose_command_sprites
  3183.       return if @command_sprites == nil
  3184.       @command_sprites.each {|sprite| sprite.dispose_command }
  3185.       @command_sprites = nil
  3186.       @command_window.dispose
  3187.   end   

  3188.   #--------------------------------------------------------------------------
  3189.   # ● Dispose Actor Sprites
  3190.   #--------------------------------------------------------------------------     
  3191.   def dispose_actor_sprites
  3192.       return if @actor_pictures == nil
  3193.       @actor_pictures.each {|sprite| sprite.dispose_picture }
  3194.       @actor_pictures = nil
  3195.   end     
  3196.   
  3197.   #--------------------------------------------------------------------------
  3198.   # ● Dispose timer Sprite
  3199.   #--------------------------------------------------------------------------         
  3200.   def dispose_timer_sprite
  3201.       return if @timer_sprite == nil
  3202.       @timer_sprite.dispose
  3203.   end
  3204.    
  3205.   #--------------------------------------------------------------------------
  3206.   # ● Dispose Gold Number
  3207.   #--------------------------------------------------------------------------           
  3208.   def dispose_gold_number
  3209.       return if @gold_image == nil
  3210.       @gold_sprite.dispose
  3211.       @gold_sprite = nil
  3212.   end

  3213.   #--------------------------------------------------------------------------
  3214.   # ● Dispose Location
  3215.   #--------------------------------------------------------------------------            
  3216.   def dispose_location
  3217.       return if @location == nil
  3218.       @location.bitmap.dispose
  3219.       @location.dispose
  3220.       @location = nil
  3221.   end   
  3222.   
  3223.   #--------------------------------------------------------------------------
  3224.   # ● Dispose Actor Parameter
  3225.   #--------------------------------------------------------------------------               
  3226.   def dispose_actor_parameter
  3227.       return if @actor_par == nil
  3228.       @actor_par.each {|sprite| sprite.dispose }
  3229.       @actor_par = nil
  3230.   end
  3231.   
  3232.   #--------------------------------------------------------------------------
  3233.   # ● Dispose Members
  3234.   #--------------------------------------------------------------------------                  
  3235.   def dispose_members
  3236.       return if @members == nil
  3237.       @members.each {|sprite| sprite.dispose }
  3238.       @members = nil
  3239.       @members_layout.dispose
  3240.       @members_viewport.dispose
  3241.   end  
  3242.    
  3243. end

  3244. #==============================================================================
  3245. # ■ Scene_Menu
  3246. #==============================================================================
  3247. class Scene_Menu
  3248.   
  3249.   #--------------------------------------------------------------------------
  3250.   # ● Update Sprites
  3251.   #--------------------------------------------------------------------------         
  3252.   def update_sprites   
  3253.       update_background
  3254.       update_particles
  3255.       update_command_sprites
  3256.       update_actor_parameter
  3257.       update_actor_sprites
  3258.       update_members_face
  3259.       refresh_timer if @min_old != @min
  3260.       refresh_gold if @gold != $game_party.gold      
  3261.   end
  3262.       
  3263.   #--------------------------------------------------------------------------
  3264.   # ● Update Background
  3265.   #--------------------------------------------------------------------------              
  3266.   def update_background
  3267.       return if @background == nil
  3268.       @background.ox += @background_scroll[0]
  3269.       @background.oy += @background_scroll[1]
  3270.   end   
  3271.   
  3272.   #--------------------------------------------------------------------------
  3273.   # ● Update Particles
  3274.   #--------------------------------------------------------------------------  
  3275.   def update_particles
  3276.       return if @particles_sprite == nil
  3277.       @particles_sprite.each {|sprite| sprite.update }
  3278.   end
  3279.    
  3280.   #--------------------------------------------------------------------------
  3281.   # ● Update Command Sprites
  3282.   #--------------------------------------------------------------------------     
  3283.   def update_command_sprites
  3284.       return if @command_window == nil
  3285.       visible = @phase == 0 ? true : false
  3286.       @command_sprites.each {|sprite| sprite.update_command(@command_window.index,visible) }
  3287.   end     
  3288.   
  3289.   #--------------------------------------------------------------------------
  3290.   # ● Refresh Number
  3291.   #--------------------------------------------------------------------------  
  3292.   def refresh_timer
  3293.       @min_old = @min
  3294.       @timer_sprite.bitmap.clear
  3295.       draw_number(@timer_cw * 1,0,0) if @hour < 10              
  3296.       draw_number(@timer_cw * 2,0,@hour)
  3297.       draw_number(@timer_cw * 4,0,0) if @min < 10            
  3298.       draw_number(@timer_cw * 5,0,@min)
  3299.   end  
  3300.   
  3301.   #--------------------------------------------------------------------------
  3302.   # ● Draw Number
  3303.   #--------------------------------------------------------------------------  
  3304.   def draw_number(x,y,value)
  3305.       @number_text = value.abs.to_s.split(//)
  3306.       plus_x = -@timer_cw * @number_text.size
  3307.       for r in 0..@number_text.size - 1
  3308.          @number_abs = @number_text[r].to_i
  3309.          nsrc_rect = Rect.new(@timer_cw * @number_abs, 0, @timer_cw, @timer_ch)
  3310.          @timer_sprite.bitmap.blt(plus_x + x + (@timer_cw  *  r), y, @timer_image, nsrc_rect)        
  3311.       end     
  3312.   end     
  3313.   
  3314.   #--------------------------------------------------------------------------
  3315.   # ● update
  3316.   #--------------------------------------------------------------------------  
  3317.   def update_timer
  3318.       time = $game_system.playtime
  3319.       @hour = time / 60 / 60
  3320.       @min = time / 60 % 60
  3321.       @sec = time % 60
  3322.   end      
  3323.   
  3324.   #--------------------------------------------------------------------------
  3325.   # ● Refresh Gold
  3326.   #--------------------------------------------------------------------------           
  3327.   def refresh_gold
  3328.       @gold = $game_party.gold
  3329.       @gold_sprite.bitmap.clear
  3330.       value_text = @gold.abs.to_s.split(//)
  3331.       index = 0
  3332.       for i in 0..value_text.size - 1
  3333.           value_abs = value_text[i].to_i
  3334.           nsrc_rect = Rect.new(@gold_cw * value_abs, 0, @gold_cw, @gold_ch)
  3335.           @gold_sprite.bitmap.blt(@gold_cw *  i, 0, @gold_image, nsrc_rect)
  3336.           index += 1
  3337.       end
  3338.       ey = (index * @gold_cw)  
  3339.       @gold_sprite.x = GOLD_NUMBER_POS[0] -  ey
  3340.   end
  3341.   
  3342.   #--------------------------------------------------------------------------
  3343.   # ● Update Actor Parameter
  3344.   #--------------------------------------------------------------------------               
  3345.   def update_actor_parameter
  3346.       return if @actor_par == nil
  3347.       @actor_par.each {|sprite| sprite.update }
  3348.   end
  3349.    
  3350.   #--------------------------------------------------------------------------
  3351.   # ● Update Actor Sprites
  3352.   #--------------------------------------------------------------------------     
  3353.   def update_actor_sprites
  3354.       return if @actor_pictures == nil
  3355.       @actor_pictures.each {|sprite| sprite.update_picture }
  3356.   end     
  3357.   
  3358.   #--------------------------------------------------------------------------
  3359.   # ● Update Members Face
  3360.   #--------------------------------------------------------------------------                  
  3361.   def update_members_face
  3362.       return if @members == nil or @members == 0
  3363.       if @members_index > 4
  3364.          ny = (5 * 64)
  3365.          else
  3366.          ny = 64 * @members_index
  3367.       end
  3368.       @members.each {|sprite| sprite.update_command(@members_index, ny) }
  3369.       @members_layout.update
  3370.       if @members_windows_active
  3371.          if @members_viewport.ox < 0
  3372.             @members_viewport.ox += 25
  3373.          end
  3374.        else   
  3375.          if @members_viewport.ox > -544
  3376.             @members_viewport.ox -= 25
  3377.           end         
  3378.       end
  3379.       @members_layout.nx(@members_viewport.ox)
  3380.   end  
  3381.   
  3382. end

  3383. #==============================================================================
  3384. # ■ Scene_Menu
  3385. #==============================================================================
  3386. class Scene_Menu
  3387.   
  3388.   #--------------------------------------------------------------------------
  3389.   # ● Update
  3390.   #--------------------------------------------------------------------------      
  3391.   def update
  3392.       update_timer
  3393.       update_sprites
  3394.       update_command
  3395.       @members_windows_active = @phase == 100 ? true : false
  3396.   end
  3397.    
  3398. end

  3399. #==============================================================================
  3400. # ■ Scene_Menu
  3401. #==============================================================================
  3402. class Scene_Menu
  3403.   
  3404.   #--------------------------------------------------------------------------
  3405.   # ● Update Command
  3406.   #--------------------------------------------------------------------------      
  3407.   def update_command
  3408.       case @phase
  3409.         when 0;       update_main_command
  3410.         when 100;      update_select_members            
  3411.      end   
  3412.   end
  3413.    
  3414.   #--------------------------------------------------------------------------
  3415.   # ● Update Main Command
  3416.   #--------------------------------------------------------------------------        
  3417.   def update_main_command
  3418.       if Input.trigger?(:UP) or Input.trigger?(:LEFT)
  3419.          move_command_index(-1)
  3420.       elsif Input.trigger?(:DOWN) or Input.trigger?(:RIGHT)
  3421.          move_command_index(1)
  3422.       elsif Input.trigger?(:C)
  3423.          execute_select
  3424.       elsif Input.trigger?(:B)
  3425.          return_to_map
  3426.       end  
  3427.   end
  3428.    
  3429.   #--------------------------------------------------------------------------
  3430.   # ● Update Main Command
  3431.   #--------------------------------------------------------------------------   
  3432.   def move_command_index(value)
  3433.       Sound.play_cursor
  3434.       @command_window.index += value
  3435.       @command_window.index = 0 if @command_window.index >= @command_max
  3436.       @command_window.index = (@command_max - 1) if @command_window.index < 0
  3437.   end   
  3438.   
  3439.   #--------------------------------------------------------------------------
  3440.   # ● Execute Select
  3441.   #--------------------------------------------------------------------------     
  3442.   def execute_select
  3443.       if @command_window.current_symbol == :save and $game_system.save_disabled
  3444.          Sound.play_buzzer
  3445.          return
  3446.       end
  3447.       @phase = @command_window.index
  3448.       $game_temp.menu_index = @phase
  3449.       Sound.play_ok
  3450.       $game_temp.pre_symbol = @command_window.current_symbol
  3451.       @command_window.call_handler(@command_window.current_symbol)
  3452.   end
  3453.   
  3454.   #--------------------------------------------------------------------------
  3455.   # ● Update Select Members
  3456.   #--------------------------------------------------------------------------        
  3457.   def update_select_members  
  3458.       if $game_party.members.size == 0
  3459.          execute_cancel
  3460.          return
  3461.       end  
  3462.       if Input.trigger?(:LEFT)
  3463.          move_members_index(-1)
  3464.       elsif Input.trigger?(:RIGHT)
  3465.          move_members_index(1)
  3466.       elsif Input.trigger?(:C)
  3467.          execute_select_members
  3468.       elsif Input.trigger?(:B)
  3469.          execute_cancel
  3470.       end   
  3471.   end  
  3472.    
  3473.   #--------------------------------------------------------------------------
  3474.   # ● Execute Cancel
  3475.   #--------------------------------------------------------------------------         
  3476.   def execute_cancel
  3477.       Sound.play_cancel
  3478.       @phase = 0
  3479.       @members_index = 0
  3480.   end
  3481.       
  3482.   #--------------------------------------------------------------------------
  3483.   # ● Move Members Index
  3484.   #--------------------------------------------------------------------------         
  3485.   def move_members_index(value)
  3486.       Sound.play_cursor
  3487.       @members_index += value
  3488.       @members_index = 0 if @members_index >= $game_party.members.size
  3489.       @members_index = ($game_party.members.size - 1) if @members_index < 0
  3490.   end
  3491.   
  3492.   #--------------------------------------------------------------------------
  3493.   # ● Command Formation
  3494.   #--------------------------------------------------------------------------
  3495.   def command_formation
  3496.       SceneManager.call(Scene_Party)
  3497.   end  
  3498.   
  3499.   #--------------------------------------------------------------------------
  3500.   # ● Can Access Scene
  3501.   #--------------------------------------------------------------------------              
  3502.   def can_access_scene?
  3503.       if $game_party.members.size == 0
  3504.          #Sound.play_buzzer   
  3505.          execute_cancel
  3506.          return false
  3507.       end   
  3508.       return true
  3509.   end
  3510.   
  3511.   #--------------------------------------------------------------------------
  3512.   # ● Execute Select Members
  3513.   #--------------------------------------------------------------------------     
  3514.   def execute_select_members
  3515.       @phase = @command_window.index
  3516.       $game_temp.menu_index = @phase
  3517.       Sound.play_ok
  3518.       on_personal_ok
  3519.   end  
  3520.   
  3521.   #--------------------------------------------------------------------------
  3522.   # ● ON Personal OK
  3523.   #--------------------------------------------------------------------------            
  3524.   alias mog_monogatari_on_personal_ok on_personal_ok
  3525.   def on_personal_ok
  3526.       $game_temp.actor_menu_temp =  $game_party.members[@members_index]
  3527.       $game_party.menu_actor = $game_party.members[@members_index]
  3528.       mog_monogatari_on_personal_ok
  3529.   end   

  3530.   #--------------------------------------------------------------------------
  3531.   # ● Return To Map
  3532.   #--------------------------------------------------------------------------              
  3533.   def return_to_map
  3534.       $game_temp.menu_index = 0
  3535.       Sound.play_cancel
  3536.       SceneManager.return
  3537.   end  
  3538.   
  3539.   #--------------------------------------------------------------------------
  3540.   # ● Command Personal
  3541.   #--------------------------------------------------------------------------
  3542.   def command_personal
  3543.       @phase = 100
  3544.   end
  3545.   
  3546. end

  3547. #==============================================================================
  3548. # ■ Game_Temp
  3549. #==============================================================================
  3550. class Game_Temp
  3551.   
  3552.   #--------------------------------------------------------------------------
  3553.   # ● Execute Pre Cache Item Menu
  3554.   #--------------------------------------------------------------------------   
  3555.   def execute_pre_cache_item_menu
  3556.       @pre_cache_item_menu = []
  3557.       @pre_cache_item_menu.push(Cache.menu_item("Background"))
  3558.       @pre_cache_item_menu.push(Cache.menu_item("Layout"))
  3559.   end   
  3560.    
  3561. end

  3562. #==============================================================================
  3563. # ■ Scene_Menu
  3564. #==============================================================================
  3565. class Scene_Item
  3566.   include MOG_MENU_ITEM
  3567.   include MOG_MENU_BASE
  3568.   
  3569.   #--------------------------------------------------------------------------
  3570.   # ● Main
  3571.   #--------------------------------------------------------------------------        
  3572.   def main
  3573.       execute_setup
  3574.       execute_loop
  3575.       execute_dispose
  3576.   end  
  3577.   
  3578.   #--------------------------------------------------------------------------
  3579.   # ● Execute Setup
  3580.   #--------------------------------------------------------------------------        
  3581.   def execute_setup
  3582.       @phase = 0
  3583.       @command_index = 0
  3584.       @actor = $game_party.members[0]
  3585.       @wait_time = 0
  3586.       create_sprites
  3587.   end
  3588.   
  3589.   #--------------------------------------------------------------------------
  3590.   # ● Execute Lopp
  3591.   #--------------------------------------------------------------------------        
  3592.   def execute_loop
  3593.       Graphics.transition(10)
  3594.       loop do
  3595.          Input.update
  3596.          update
  3597.          Graphics.update
  3598.          break if SceneManager.scene != self
  3599.       end
  3600.   end  
  3601.   
  3602. end

  3603. #==============================================================================
  3604. # ■ Window_ItemList Z
  3605. #==============================================================================
  3606. class Window_ItemList_Z < Window_Selectable
  3607.   
  3608.   #--------------------------------------------------------------------------
  3609.   # ● Initialize
  3610.   #--------------------------------------------------------------------------
  3611.   def initialize(x, y, width, height)
  3612.       super
  3613.       @category = :none
  3614.       @data = []
  3615.   end
  3616.   
  3617.   #--------------------------------------------------------------------------
  3618.   # ● Category
  3619.   #--------------------------------------------------------------------------
  3620.   def category=(category)
  3621.       return if @category == category
  3622.       @category = category
  3623.       self.oy = 0
  3624.   end

  3625.   #--------------------------------------------------------------------------
  3626.   # ● Col Max
  3627.   #--------------------------------------------------------------------------
  3628.   def col_max
  3629.       return 1
  3630.   end
  3631.   #--------------------------------------------------------------------------
  3632.   # ● Item Max
  3633.   #--------------------------------------------------------------------------
  3634.   def item_max
  3635.       @data ? @data.size : 1
  3636.   end
  3637.   #--------------------------------------------------------------------------
  3638.   # ● Item
  3639.   #--------------------------------------------------------------------------
  3640.   def item
  3641.       @data && index >= 0 ? @data[index] : nil
  3642.   end
  3643.   
  3644.   #--------------------------------------------------------------------------
  3645.   # ● Current Item Enabled?
  3646.   #--------------------------------------------------------------------------
  3647.   def current_item_enabled?
  3648.       enable?(@data[index])
  3649.   end
  3650.   
  3651.   #--------------------------------------------------------------------------
  3652.   # ● Include?
  3653.   #--------------------------------------------------------------------------
  3654.   def include?(item)
  3655.       case @category
  3656.       when :item
  3657.            item.is_a?(RPG::Item) && !item.key_item?
  3658.       when :weapon
  3659.            item.is_a?(RPG::Weapon)
  3660.       when :armor
  3661.            item.is_a?(RPG::Armor)
  3662.       when :key_item
  3663.            item.is_a?(RPG::Item) && item.key_item?
  3664.       else
  3665.            false
  3666.       end
  3667.   end

  3668.   #--------------------------------------------------------------------------
  3669.   # ● Enable?
  3670.   #--------------------------------------------------------------------------
  3671.   def enable?(item)
  3672.       $game_party.usable?(item)
  3673.   end

  3674.   #--------------------------------------------------------------------------
  3675.   # ● Make Item List
  3676.   #--------------------------------------------------------------------------
  3677.   def make_item_list
  3678.       @data = $game_party.all_items.select {|item| include?(item) }
  3679.       @data.push(nil) if include?(nil)
  3680.   end

  3681.   #--------------------------------------------------------------------------
  3682.   # ● Select Last
  3683.   #--------------------------------------------------------------------------
  3684.   def select_last
  3685.       select(@data.index($game_party.last_item.object) || 0)
  3686.   end
  3687.   
  3688.   #--------------------------------------------------------------------------
  3689.   # ● Draw Item
  3690.   #--------------------------------------------------------------------------
  3691.   def draw_item(index)
  3692.       item = @data[index]
  3693.       if item
  3694.          rect = item_rect(index)
  3695.          rect.width -= 4
  3696.          draw_item_name(item, rect.x, rect.y, enable?(item))
  3697.          draw_item_number(rect, item)
  3698.       end
  3699.   end
  3700.   
  3701.   #--------------------------------------------------------------------------
  3702.   # ● Draw Item Number
  3703.   #--------------------------------------------------------------------------
  3704.   def draw_item_number(rect, item)
  3705.       draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  3706.   end
  3707.   
  3708.   #--------------------------------------------------------------------------
  3709.   # ● Update Help
  3710.   #--------------------------------------------------------------------------
  3711.   def update_help
  3712.       @help_window.set_item(item)
  3713.   end
  3714.   
  3715.   #--------------------------------------------------------------------------
  3716.   # ● Refresh
  3717.   #--------------------------------------------------------------------------
  3718.   def refresh
  3719.       make_item_list
  3720.       create_contents
  3721.       draw_all_items
  3722.   end
  3723.    
  3724. end

  3725. #==============================================================================
  3726. # ■ Window_ItemList Z
  3727. #==============================================================================
  3728. class Window_ItemList_Item_1 < Window_Selectable
  3729.   
  3730.   #--------------------------------------------------------------------------
  3731.   # ● Initialize
  3732.   #--------------------------------------------------------------------------
  3733.   def initialize(x, y, width, height)
  3734.       super
  3735.       @category = :none
  3736.       @data = []
  3737.   end
  3738.   
  3739.   #--------------------------------------------------------------------------
  3740.   # ● Category
  3741.   #--------------------------------------------------------------------------
  3742.   def category=(category)
  3743.       return if @category == category
  3744.       @category = category
  3745.       self.oy = 0
  3746.   end

  3747.   #--------------------------------------------------------------------------
  3748.   # ● Col Max
  3749.   #--------------------------------------------------------------------------
  3750.   def col_max
  3751.       return 1
  3752.   end
  3753.   #--------------------------------------------------------------------------
  3754.   # ● Item Max
  3755.   #--------------------------------------------------------------------------
  3756.   def item_max
  3757.       @data ? @data.size : 1
  3758.   end
  3759.   #--------------------------------------------------------------------------
  3760.   # ● Item
  3761.   #--------------------------------------------------------------------------
  3762.   def item
  3763.       @data && index >= 0 ? @data[index] : nil
  3764.   end
  3765.   
  3766.   #--------------------------------------------------------------------------
  3767.   # ● Current Item Enabled?
  3768.   #--------------------------------------------------------------------------
  3769.   def current_item_enabled?
  3770.       enable?(@data[index])
  3771.   end
  3772.   
  3773.   #--------------------------------------------------------------------------
  3774.   # ● Include?
  3775.   #--------------------------------------------------------------------------
  3776.   def include?(item)
  3777.       case @category
  3778.       when :item   ;   item.is_a?(RPG::Item) && !item.key_item?
  3779.       else
  3780.            false
  3781.       end
  3782.   end

  3783.   #--------------------------------------------------------------------------
  3784.   # ● Enable?
  3785.   #--------------------------------------------------------------------------
  3786.   def enable?(item)
  3787.       $game_party.usable?(item)
  3788.   end

  3789.   #--------------------------------------------------------------------------
  3790.   # ● Make Item List
  3791.   #--------------------------------------------------------------------------
  3792.   def make_item_list
  3793.       @data = $game_party.all_items.select {|item| include?(item) }
  3794.       @data.push(nil) if include?(nil)
  3795.   end

  3796.   #--------------------------------------------------------------------------
  3797.   # ● Select Last
  3798.   #--------------------------------------------------------------------------
  3799.   def select_last
  3800.       select(@data.index($game_party.last_item.object) || 0)
  3801.   end
  3802.   
  3803.   #--------------------------------------------------------------------------
  3804.   # ● Draw Item
  3805.   #--------------------------------------------------------------------------
  3806.   def draw_item(index)
  3807.       item = @data[index]
  3808.       if item
  3809.          rect = item_rect(index)
  3810.          rect.width -= 4
  3811.          draw_item_number(rect, item)
  3812.       end
  3813.   end
  3814.   
  3815.   #--------------------------------------------------------------------------
  3816.   # ● Draw Item Number
  3817.   #--------------------------------------------------------------------------
  3818.   def draw_item_number(rect, item)
  3819.       draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  3820.   end  
  3821.    
  3822.   #--------------------------------------------------------------------------
  3823.   # ● Update Help
  3824.   #--------------------------------------------------------------------------
  3825.   def update_help
  3826.       @help_window.set_item(item)
  3827.   end
  3828.   
  3829.   #--------------------------------------------------------------------------
  3830.   # ● Refresh
  3831.   #--------------------------------------------------------------------------
  3832.   def refresh
  3833.       make_item_list
  3834.       create_contents
  3835.       draw_all_items
  3836.    end
  3837.    
  3838. end

  3839. #==============================================================================
  3840. # ■ Window_ItemList Z
  3841. #==============================================================================
  3842. class Window_ItemList_Item_2 < Window_Selectable
  3843.   
  3844.   #--------------------------------------------------------------------------
  3845.   # ● Initialize
  3846.   #--------------------------------------------------------------------------
  3847.   def initialize(x, y, width, height)
  3848.       super
  3849.       @category = :none
  3850.       @data = []
  3851.   end
  3852.   
  3853.   #--------------------------------------------------------------------------
  3854.   # ● Category
  3855.   #--------------------------------------------------------------------------
  3856.   def category=(category)
  3857.       return if @category == category
  3858.       @category = category
  3859.       self.oy = 0
  3860.   end

  3861.   #--------------------------------------------------------------------------
  3862.   # ● Col Max
  3863.   #--------------------------------------------------------------------------
  3864.   def col_max
  3865.       return 1
  3866.   end
  3867.   #--------------------------------------------------------------------------
  3868.   # ● Item Max
  3869.   #--------------------------------------------------------------------------
  3870.   def item_max
  3871.       @data ? @data.size : 1
  3872.   end
  3873.   #--------------------------------------------------------------------------
  3874.   # ● Item
  3875.   #--------------------------------------------------------------------------
  3876.   def item
  3877.       @data && index >= 0 ? @data[index] : nil
  3878.   end
  3879.   
  3880.   #--------------------------------------------------------------------------
  3881.   # ● Current Item Enabled?
  3882.   #--------------------------------------------------------------------------
  3883.   def current_item_enabled?
  3884.       enable?(@data[index])
  3885.   end
  3886.   
  3887.   #--------------------------------------------------------------------------
  3888.   # ● Include?
  3889.   #--------------------------------------------------------------------------
  3890.   def include?(item)
  3891.       case @category
  3892.       when :item   ;   item.is_a?(RPG::Item) && !item.key_item?
  3893.       else
  3894.            false
  3895.       end
  3896.   end

  3897.   #--------------------------------------------------------------------------
  3898.   # ● Enable?
  3899.   #--------------------------------------------------------------------------
  3900.   def enable?(item)
  3901.       $game_party.usable?(item)
  3902.   end

  3903.   #--------------------------------------------------------------------------
  3904.   # ● Make Item List
  3905.   #--------------------------------------------------------------------------
  3906.   def make_item_list
  3907.       @data = $game_party.all_items.select {|item| include?(item) }
  3908.       @data.push(nil) if include?(nil)
  3909.   end

  3910.   #--------------------------------------------------------------------------
  3911.   # ● Select Last
  3912.   #--------------------------------------------------------------------------
  3913.   def select_last
  3914.       select(@data.index($game_party.last_item.object) || 0)
  3915.   end
  3916.   
  3917.   #--------------------------------------------------------------------------
  3918.   # ● Draw Item
  3919.   #--------------------------------------------------------------------------
  3920.   def draw_item(index)
  3921.       item = @data[index]
  3922.       if item
  3923.          rect = item_rect(index)
  3924.          rect.width -= 4
  3925.          draw_item_name(item, rect.x, rect.y, enable?(item))
  3926.         # draw_item_number(rect, item)
  3927.       end
  3928.   end
  3929.   
  3930.   #--------------------------------------------------------------------------
  3931.   # ● Draw Item Number
  3932.   #--------------------------------------------------------------------------
  3933.   def draw_item_number(rect, item)
  3934.       draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  3935.   end
  3936.   
  3937.   #--------------------------------------------------------------------------
  3938.   # ● Update Help
  3939.   #--------------------------------------------------------------------------
  3940.   def update_help      
  3941.   end
  3942.   
  3943.   #--------------------------------------------------------------------------
  3944.   # ● Refresh
  3945.   #--------------------------------------------------------------------------
  3946.   def refresh
  3947.       make_item_list
  3948.       create_contents
  3949.       draw_all_items
  3950.   end
  3951.    
  3952. end

  3953. #==============================================================================
  3954. # ■ Scene_Item
  3955. #==============================================================================
  3956. class Scene_Item
  3957.   
  3958.   #--------------------------------------------------------------------------
  3959.   # ● Create Sprites
  3960.   #--------------------------------------------------------------------------         
  3961.   def create_sprites
  3962.       create_menu_background
  3963.       create_layout
  3964.       create_particles
  3965.       create_command
  3966.       create_button
  3967.       create_help_window
  3968.       create_item_window
  3969.       create_weapon_window
  3970.       create_armor_window
  3971.       create_key_window
  3972.       create_actor_window
  3973.       set_initial_visible
  3974.   end
  3975.    
  3976.   #--------------------------------------------------------------------------
  3977.   # ● Create Actor Window
  3978.   #--------------------------------------------------------------------------
  3979.   def create_actor_window
  3980.       @actor_window = Members_Windows_Status.new
  3981.       @actor_window.set_handler(:ok,     method(:on_actor_ok))
  3982.       @actor_window.set_handler(:cancel, method(:on_actor_cancel))
  3983.       @actor_window.opacity = 0      
  3984.       @actor_window.x = -10
  3985.       @actor_window.y = 36
  3986.       @actor_window_slide_range = [@actor_window.x, -@actor_window.width]
  3987.       @actor_window.x = @actor_window_slide_range[1]
  3988.       @actor_window.visible = true
  3989.       @actor_window_index_old = @actor_window.index
  3990.       create_members_window
  3991.       create_actor_status
  3992.       update_active_window
  3993.       update_command_sprites
  3994.   end
  3995.   
  3996.   #--------------------------------------------------------------------------
  3997.   # ● Create Members Window
  3998.   #--------------------------------------------------------------------------  
  3999.   def create_members_window
  4000.       index = 0
  4001.       @members_status = []      
  4002.       for actor in $game_party.members
  4003.           @members_status.push(Members_Menu.new(actor,index))
  4004.           index += 1
  4005.       end   
  4006.   end
  4007.    
  4008.   #--------------------------------------------------------------------------
  4009.   # ● Create Actor Status
  4010.   #--------------------------------------------------------------------------  
  4011.   def create_actor_status
  4012.       @actor_status = Actor_Menu_Status.new(@actor)
  4013.   end  
  4014.    
  4015.   #--------------------------------------------------------------------------
  4016.   # ● Create Item Window
  4017.   #--------------------------------------------------------------------------
  4018.   def create_item_window
  4019.       @item_window = Window_ItemList_Item_1.new(162,92,225,240)  
  4020.       @item_window.help_window = @help_window
  4021.       @item_window.set_handler(:ok,     method(:on_item_ok))
  4022.       @item_window.set_handler(:cancel, method(:on_item_cancel))
  4023.       @item_window.category = :item
  4024.       @item_window.active = true
  4025.       @item_window.refresh
  4026.       @item_window.index = 0
  4027.       @item_window.opacity = 0      
  4028.       @item_window_2 = Window_ItemList_Item_2.new(162,92,225,240)  
  4029.       @item_window_2.help_window = @help_window
  4030.       @item_window_2.set_handler(:ok,     method(:on_item_ok))
  4031.       @item_window_2.set_handler(:cancel, method(:on_item_cancel))
  4032.       @item_window_2.category = :item
  4033.       @item_window_2.active = true
  4034.       @item_window_2.refresh
  4035.       @item_window_2.index = 0
  4036.       @item_window_2.opacity = 0      
  4037.   end  
  4038.   
  4039.   #--------------------------------------------------------------------------
  4040.   # ● Create Weapon Window
  4041.   #--------------------------------------------------------------------------
  4042.   def create_weapon_window
  4043.       @weapon_window = Window_ItemList_Z.new(162,92,225,240)  
  4044.       @weapon_window.help_window = @help_window
  4045.       @weapon_window.set_handler(:ok,     method(:on_item_ok))
  4046.       @weapon_window.set_handler(:cancel, method(:on_item_cancel))
  4047.       @weapon_window.category = :weapon
  4048.       @weapon_window.active = true
  4049.       @weapon_window.refresh
  4050.       @weapon_window.index = 0
  4051.       @weapon_window.opacity = 0
  4052.   end  
  4053.   
  4054.   #--------------------------------------------------------------------------
  4055.   # ● Create Armor Window
  4056.   #--------------------------------------------------------------------------
  4057.   def create_armor_window
  4058.       @armor_window = Window_ItemList_Z.new(162,92,225,240)  
  4059.       @armor_window.help_window = @help_window
  4060.       @armor_window.set_handler(:ok,     method(:on_item_ok))
  4061.       @armor_window.set_handler(:cancel, method(:on_item_cancel))
  4062.       @armor_window.category = :armor
  4063.       @armor_window.active = true
  4064.       @armor_window.refresh
  4065.       @armor_window.index = 0
  4066.       @armor_window.opacity = 0
  4067.   end   
  4068.   
  4069.   #--------------------------------------------------------------------------
  4070.   # ● Create Key Window
  4071.   #--------------------------------------------------------------------------
  4072.   def create_key_window
  4073.       @key_window = Window_ItemList_Z.new(162,92,225,240)  
  4074.       @key_window.help_window = @help_window
  4075.       @key_window.set_handler(:ok,     method(:on_item_ok))
  4076.       @key_window.set_handler(:cancel, method(:on_item_cancel))
  4077.       @key_window.category = :key_item
  4078.       @key_window.active = true
  4079.       @key_window.refresh
  4080.       @key_window.index = 0
  4081.       @key_window.opacity = 0
  4082.   end   
  4083.   
  4084.   #--------------------------------------------------------------------------
  4085.   # ● Create Help Window
  4086.   #--------------------------------------------------------------------------              
  4087.   def create_help_window
  4088.       @help_window = Window_Help.new
  4089.       @help_window.x = 0
  4090.       @help_window.y = Graphics.height - @help_window.height
  4091.       @help_window.opacity = 0
  4092.   end  
  4093.   
  4094.   #--------------------------------------------------------------------------
  4095.   # ● Create Menu Background
  4096.   #--------------------------------------------------------------------------            
  4097.   def create_menu_background
  4098.       @background = Plane.new
  4099.       @background.bitmap = $game_temp.pre_cache_item_menu[0]
  4100.       @background.z = 0
  4101.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  4102.   end  

  4103.   #--------------------------------------------------------------------------
  4104.   # ● Create Layout
  4105.   #--------------------------------------------------------------------------              
  4106.   def create_layout
  4107.       @layout = Sprite.new
  4108.       @layout.bitmap = $game_temp.pre_cache_item_menu[1]
  4109.       @layout.z = 3
  4110.   end
  4111.   
  4112.   #--------------------------------------------------------------------------
  4113.   # ● Create Particles
  4114.   #--------------------------------------------------------------------------  
  4115.   def create_particles
  4116.       @particles_sprite =[]
  4117.       for i in 0...NUMBER_OF_PARTICLES
  4118.           @particles_sprite.push(Particles_Menu.new(nil))
  4119.       end
  4120.   end
  4121.   
  4122.   #--------------------------------------------------------------------------
  4123.   # ● Create Command
  4124.   #--------------------------------------------------------------------------   
  4125.   def create_command
  4126.       @command_sprites = []
  4127.       index = 0      
  4128.       for i in 0...4
  4129.           @command_sprites.push(Layout_Window_Sprite.new(nil, index) )
  4130.           index += 1
  4131.       end
  4132.   end   
  4133.   
  4134.   #--------------------------------------------------------------------------
  4135.   # ● Create Button
  4136.   #--------------------------------------------------------------------------   
  4137.   def create_button
  4138.       @button_sprites = []
  4139.       index = 0      
  4140.       for i in 0...4
  4141.           @button_sprites.push(Item_Button_Sprite.new(nil, index) )
  4142.           index += 1
  4143.       end
  4144.   end      
  4145.   
  4146.   #--------------------------------------------------------------------------
  4147.   # ● Set Initial Visible
  4148.   #--------------------------------------------------------------------------            
  4149.   def set_initial_visible
  4150.       @item_window.visible = false
  4151.       @item_window_2.visible = false
  4152.       @weapon_window.visible = false
  4153.       @armor_window.visible = false
  4154.       @key_window.visible = false  
  4155.   end  
  4156.   
  4157. end

  4158. #==============================================================================
  4159. # ■ Layout Window Sprite
  4160. #==============================================================================
  4161. class Layout_Window_Sprite < Sprite
  4162.   include MOG_MENU_ITEM
  4163.   attr_accessor :index
  4164.   attr_accessor :position
  4165.   
  4166. #--------------------------------------------------------------------------
  4167. # ● Initialize
  4168. #--------------------------------------------------------------------------                  
  4169.   def initialize(viewport = nil,index)
  4170.       super(viewport)
  4171.       @index = index
  4172.       self.bitmap = Cache.menu_item("Item_Window" + @index.to_s)
  4173.       self.z = 10
  4174.       @org_pos = [COMMAND_POSITION[0],COMMAND_POSITION[1]]
  4175.       @slide_max = @org_pos[0] + 24
  4176.       @center = (544 - self.bitmap.width) - (544 / 2) + (self.bitmap.width / 2)
  4177.       @left = -self.bitmap.width
  4178.       @right = 544
  4179.       @position = 0
  4180.       @direction = 0
  4181.       @org_pos = [@left ,COMMAND_POSITION[1]]
  4182.       self.x = @org_pos[0]
  4183.       self.y = @org_pos[1]
  4184.       self.visible = false if @index > 0
  4185.   end  
  4186.   
  4187. #--------------------------------------------------------------------------
  4188. # ● Dispose
  4189. #--------------------------------------------------------------------------                     
  4190.   def dispose_sprite
  4191.       self.bitmap.dispose
  4192.   end  
  4193.   
  4194. #--------------------------------------------------------------------------
  4195. # ● Update
  4196. #--------------------------------------------------------------------------                     
  4197.   def update_command(index)
  4198.       slide_speed = 30
  4199.       if @index == index
  4200.          if self.x < @center
  4201.             self.x += slide_speed
  4202.             self.x = @center if self.x >= @center
  4203.          elsif self.x > @center
  4204.             self.x -= slide_speed
  4205.             self.x = @center if self.x <= @center
  4206.          end
  4207.        else   
  4208.           if @direction == -1
  4209.              self.x -= slide_speed if self.x > @left
  4210.           else
  4211.              self.x += slide_speed if self.x < @right
  4212.           end   
  4213.       end  
  4214.   end   

  4215. #--------------------------------------------------------------------------
  4216. # ● New P
  4217. #--------------------------------------------------------------------------  
  4218.   def newp(index,direction)
  4219.       now_command = index
  4220.       if direction == -1
  4221.          pre_command = index + 1
  4222.          pre_command = 0 if pre_command > 3
  4223.       else   
  4224.          pre_command = index - 1
  4225.          pre_command = 3 if pre_command < 0
  4226.         end
  4227.       if index == @index
  4228.          self.visible = true
  4229.          self.x = @right if direction == -1
  4230.          self.x = @left if direction == 1
  4231.       elsif pre_command ==  @index
  4232.          self.visible = true
  4233.       else   
  4234.          self.visible = false
  4235.       end   
  4236.       @direction = direction
  4237.   end
  4238.   
  4239. end

  4240. #==============================================================================
  4241. # ■ Item Button Sprite
  4242. #==============================================================================
  4243. class Item_Button_Sprite < Sprite
  4244.   include MOG_MENU_ITEM
  4245.   attr_accessor :index
  4246.   
  4247. #--------------------------------------------------------------------------
  4248. # ● Initialize
  4249. #--------------------------------------------------------------------------                  
  4250.   def initialize(viewport = nil,index)
  4251.       super(viewport)
  4252.       @index = index
  4253.       self.bitmap = Cache.menu_item("Button" + @index.to_s)
  4254.       self.z = 12
  4255.       self.ox = self.bitmap.width / 2
  4256.       self.oy = self.bitmap.height / 2
  4257.       @org_pos = [(BUTTON_SPACE * @index) + BUTTON_POSITION[0],BUTTON_POSITION[1]]
  4258.       @slide_max = @org_pos[1] + 24
  4259.       @next_pos = [@org_pos[0],@org_pos[1]]
  4260.       self.x = @org_pos[0]
  4261.       self.y = @org_pos[1] - 128 - (128 * @index)
  4262.       @zoom_duration = [0,0,false]
  4263.       @active = false
  4264.   end  
  4265.   
  4266. #--------------------------------------------------------------------------
  4267. # ● Dispose
  4268. #--------------------------------------------------------------------------                     
  4269.   def dispose_sprite
  4270.       self.bitmap.dispose
  4271.   end  
  4272.   
  4273. #--------------------------------------------------------------------------
  4274. # ● Update
  4275. #--------------------------------------------------------------------------                     
  4276.   def update_command(index)
  4277.       if @index == index
  4278.         # self.y += 2
  4279.         # self.y = @slide_max if self.y > @slide_max
  4280.          @next_pos[1] =@slide_max
  4281.          self.opacity += 15
  4282.          @active = true
  4283.       else
  4284.         # self.y -= 2
  4285.         # self.y = @org_pos[1] if self.y < @org_pos[1]
  4286.          @next_pos[1] = @org_pos[1]
  4287.         self.opacity -= 15 if self.opacity > 160
  4288.          @active = false
  4289.       end
  4290.       update_slide(1,self.y,@next_pos[1])
  4291.       update_zoom
  4292.   end   

  4293.   
  4294. #--------------------------------------------------------------------------
  4295. # ● Update Slide
  4296. #--------------------------------------------------------------------------                       
  4297.   def update_slide(type,cp,np)
  4298.       sp = 3 + ((cp - np).abs / 10)
  4299.       if cp > np
  4300.          cp -= sp
  4301.          cp = np if cp < np
  4302.       elsif cp < np
  4303.          cp += sp
  4304.          cp = np if cp > np
  4305.       end     
  4306.       self.x = cp if type == 0
  4307.       self.y = cp if type == 1
  4308.   end  
  4309.   
  4310. #--------------------------------------------------------------------------
  4311. # ● Update Zoom
  4312. #--------------------------------------------------------------------------                       
  4313.   def update_zoom
  4314.       if @active
  4315.          if !@zoom_duration[2]
  4316.             update_zoom_in
  4317.             @zoom_duration = [0,0,true] if self.zoom_x == 1.00  
  4318.          else  
  4319.             update_zoom_effect
  4320.          end
  4321.       else
  4322.          @zoom_duration[2] = false   
  4323.          update_zoom_in
  4324.       end  
  4325.   end   
  4326.   
  4327. #--------------------------------------------------------------------------
  4328. # ● Update Zoom Out
  4329. #--------------------------------------------------------------------------                        
  4330.   def update_zoom_out
  4331.       return if self.zoom_x == 1.00
  4332.       self.zoom_x += 0.03
  4333.       self.zoom_y += 0.03
  4334.       if self.zoom_x >= 1.00
  4335.             self.zoom_x = 1.00
  4336.             self.zoom_y = 1.00
  4337.       end   
  4338.    end   
  4339.   
  4340. #--------------------------------------------------------------------------
  4341. # ● Update Zoom In
  4342. #--------------------------------------------------------------------------                           
  4343.   def update_zoom_in
  4344.       return if self.zoom_x == 1.00
  4345.       self.zoom_x -= 0.03
  4346.       self.zoom_y -= 0.03
  4347.       if self.zoom_x <= 1.00
  4348.          self.zoom_x = 1.00
  4349.          self.zoom_y = 1.00
  4350.       end   
  4351.   end      
  4352.          
  4353. #--------------------------------------------------------------------------
  4354. # ● Update Zoom_effect
  4355. #--------------------------------------------------------------------------                        
  4356. def update_zoom_effect
  4357.      @zoom_duration[0] += 1
  4358.      return if @zoom_duration[0] < 1
  4359.      @zoom_duration[0] = 0
  4360.      @zoom_duration[1] += 1
  4361.      case @zoom_duration[1]
  4362.           when 1..30
  4363.              self.zoom_x += 0.005
  4364.              self.zoom_y += 0.005                 
  4365.           when 31..60
  4366.              self.zoom_x -= 0.005
  4367.              self.zoom_y -= 0.005           
  4368.           when 61..999  
  4369.           @zoom_duration[1] = 0
  4370.           self.zoom_x = 1.00
  4371.           self.zoom_y = 1.00
  4372.      end
  4373. end      
  4374.   
  4375. end

  4376. #==============================================================================
  4377. # ■ Scene_Item
  4378. #==============================================================================
  4379. class Scene_Item
  4380.   
  4381.   #--------------------------------------------------------------------------
  4382.   # ● Execute Dispose
  4383.   #--------------------------------------------------------------------------        
  4384.   def execute_dispose
  4385.       Graphics.freeze
  4386.       dispose_background
  4387.       dispose_layout
  4388.       dispose_particles
  4389.       dispose_command_sprites
  4390.       dispose_button_sprites
  4391.       dispose_windows
  4392.       dispose_members_status
  4393.   end
  4394.   
  4395.   #--------------------------------------------------------------------------
  4396.   # ● Dispose Background
  4397.   #--------------------------------------------------------------------------  
  4398.   def dispose_background
  4399.       return if @background == nil
  4400.       @background.dispose
  4401.       @background = nil
  4402.   end
  4403.    
  4404.   #--------------------------------------------------------------------------
  4405.   # ● Dispose Layout
  4406.   #--------------------------------------------------------------------------               
  4407.   def dispose_layout
  4408.       return if @layout == nil
  4409.       @layout.dispose
  4410.       @layout = nil
  4411.   end  
  4412.   
  4413. #--------------------------------------------------------------------------
  4414. # ● Dispose Particles
  4415. #--------------------------------------------------------------------------   
  4416. def dispose_particles
  4417.      return if @particles_sprite == nil
  4418.      @particles_sprite.each {|sprite| sprite.dispose }
  4419. end
  4420.    
  4421.   #--------------------------------------------------------------------------
  4422.   # ● Dispose Command Sprites
  4423.   #--------------------------------------------------------------------------     
  4424.   def dispose_command_sprites
  4425.       return if @command_sprites == nil
  4426.       @command_sprites.each {|sprite| sprite.dispose_sprite }
  4427.       @command_sprites = nil
  4428.   end   

  4429.   #--------------------------------------------------------------------------
  4430.   # ● Dispose Button Sprites
  4431.   #--------------------------------------------------------------------------     
  4432.   def dispose_button_sprites
  4433.       return if @button_sprites == nil
  4434.       @button_sprites.each {|sprite| sprite.dispose_sprite }
  4435.       @button_sprites = nil
  4436.   end   
  4437.   
  4438.   #--------------------------------------------------------------------------
  4439.   # ● Dispose Members Status
  4440.   #--------------------------------------------------------------------------            
  4441.   def dispose_members_status
  4442.       return if @members_status == nil
  4443.       @members_status.each {|sprite| sprite.dispose }
  4444.   end  
  4445.   
  4446.   #--------------------------------------------------------------------------
  4447.   # ● Dispose Winndows
  4448.   #--------------------------------------------------------------------------         
  4449.   def dispose_windows
  4450.       return if @item_window == nil
  4451.       @item_window.dispose
  4452.       @item_window_2.dispose
  4453.       @weapon_window.dispose
  4454.       @armor_window.dispose
  4455.       @key_window.dispose
  4456.       @actor_window.dispose
  4457.       @actor_status.dispose
  4458.       @help_window.dispose
  4459.   end  
  4460.   
  4461. end

  4462. #==============================================================================
  4463. # ■ Scene_Item
  4464. #==============================================================================
  4465. class Scene_Item
  4466.   
  4467.   #--------------------------------------------------------------------------
  4468.   # ● Update Sprites
  4469.   #--------------------------------------------------------------------------         
  4470.   def update_sprites   
  4471.       update_background
  4472.       update_particles
  4473.       update_command_sprites
  4474.       update_button_sprites
  4475.       update_windows
  4476.       update_members_status
  4477.   end

  4478.   #--------------------------------------------------------------------------
  4479.   # ● Update Members Status
  4480.   #--------------------------------------------------------------------------            
  4481.   def update_members_status
  4482.       @members_status.each {|sprite| sprite.update(@actor_window.active,@actor_window.index) }
  4483.   end
  4484.       
  4485.   #--------------------------------------------------------------------------
  4486.   # ● Update Background
  4487.   #--------------------------------------------------------------------------              
  4488.   def update_background
  4489.       return if @background == nil
  4490.       @background.ox += @background_scroll[0]
  4491.       @background.oy += @background_scroll[1]
  4492.   end   
  4493.   
  4494.   #--------------------------------------------------------------------------
  4495.   # ● Update Particles
  4496.   #--------------------------------------------------------------------------  
  4497.   def update_particles
  4498.       return if @particles_sprite == nil
  4499.       @particles_sprite.each {|sprite| sprite.update }
  4500.   end

  4501.   #--------------------------------------------------------------------------
  4502.   # ● Update Command Sprites
  4503.   #--------------------------------------------------------------------------     
  4504.   def update_command_sprites
  4505.       return if @command_sprites == nil
  4506.       for i in @command_sprites
  4507.           i.update_command(@command_index)
  4508.           if i.index == 0
  4509.              @item_window.x = i.x
  4510.              @item_window.visible = i.visible
  4511.              @item_window_2.x = i.x
  4512.              @item_window_2.visible = i.visible            
  4513.            elsif i.index == 1
  4514.              @weapon_window.x = i.x
  4515.              @weapon_window.visible = i.visible            
  4516.            elsif i.index == 2
  4517.              @armor_window.x = i.x
  4518.              @armor_window.visible = i.visible
  4519.            elsif i.index == 3
  4520.              @key_window.x = i.x
  4521.              @key_window.visible = i.visible               
  4522.          end
  4523.       end      
  4524.   end   
  4525.   
  4526.   #--------------------------------------------------------------------------
  4527.   # ● Update Button Sprites
  4528.   #--------------------------------------------------------------------------     
  4529.   def update_button_sprites
  4530.       return if @button_sprites == nil
  4531.       @button_sprites.each {|sprite| sprite.update_command(@command_index) }
  4532.   end     
  4533.   
  4534.   #--------------------------------------------------------------------------
  4535.   # ● Update Winndow
  4536.   #--------------------------------------------------------------------------      
  4537.   def update_windows
  4538.       return if @item_window == nil
  4539.       @item_window_2.index = @item_window.index
  4540.       @item_window.update
  4541.       @weapon_window.update   
  4542.       @armor_window.update
  4543.       @key_window.update         
  4544.       @actor_window.update      
  4545.       update_actor_window_slide
  4546.       update_actor_window2_slide
  4547.   end
  4548.   
  4549.   #--------------------------------------------------------------------------
  4550.   # ● Update Actor Window Slide
  4551.   #--------------------------------------------------------------------------  
  4552.   def update_actor_window_slide
  4553.       if @actor_window.active
  4554.          if @actor_window.x < @actor_window_slide_range[0]
  4555.             @actor_window.x += 15
  4556.             @actor_window.contents_opacity += 23
  4557.             if @actor_window.x >= @actor_window_slide_range[0]
  4558.                @actor_window.x = @actor_window_slide_range[0]
  4559.                @actor_window.contents_opacity = 255
  4560.             end  
  4561.          end  
  4562.       else         
  4563.          if @actor_window.x >= @actor_window_slide_range[1]
  4564.             @actor_window.x -= 15
  4565.             @actor_window.contents_opacity -= 3
  4566.             if @actor_window.x <= @actor_window_slide_range[1]
  4567.                @actor_window.x = @actor_window_slide_range[1]
  4568.                @actor_window.contents_opacity = 0
  4569.             end         
  4570.          end
  4571.       end
  4572.   end   
  4573.   
  4574.   #--------------------------------------------------------------------------
  4575.   # ● Update Actor Window Slide
  4576.   #--------------------------------------------------------------------------  
  4577.   def update_actor_window2_slide
  4578.       @actor_status.update(@actor_window.active,@actor)
  4579.   end   
  4580.   
  4581. end

  4582. #==============================================================================
  4583. # ■ Scene_Item
  4584. #==============================================================================
  4585. class Scene_Item
  4586.   
  4587.   #--------------------------------------------------------------------------
  4588.   # ● Update
  4589.   #--------------------------------------------------------------------------      
  4590.   def update
  4591.       update_command   
  4592.       update_sprites
  4593.   end
  4594.    
  4595. end

  4596. #==============================================================================
  4597. # ■ Scene_Item
  4598. #==============================================================================
  4599. class Scene_Item
  4600.   
  4601.   #--------------------------------------------------------------------------
  4602.   # ● Update Command
  4603.   #--------------------------------------------------------------------------      
  4604.   def update_command
  4605.       if @actor_window.active
  4606.          update_target_select         
  4607.       else
  4608.          update_main_command
  4609.          update_active_window
  4610.       end  
  4611.   end

  4612.   #--------------------------------------------------------------------------
  4613.   # ● Update Active Window
  4614.   #--------------------------------------------------------------------------        
  4615.   def update_active_window
  4616.       @item_window_2.active = false
  4617.       if @command_index == 0
  4618.          @item_window.active = true
  4619.          @weapon_window.active = false
  4620.          @armor_window.active = false
  4621.          @key_window.active = false
  4622.       elsif @command_index == 1           
  4623.          @item_window.active = false
  4624.          @weapon_window.active = true
  4625.          @armor_window.active = false
  4626.          @key_window.active = false
  4627.       elsif @command_index == 2   
  4628.          @item_window.active = false
  4629.          @weapon_window.active = false
  4630.          @armor_window.active = true
  4631.          @key_window.active = false
  4632.       elsif @command_index == 3
  4633.          @item_window.active = false
  4634.          @weapon_window.active = false
  4635.          @armor_window.active = false
  4636.          @key_window.active = true
  4637.       end         
  4638.   end
  4639.      
  4640.   #--------------------------------------------------------------------------
  4641.   # ● Update Main Command
  4642.   #--------------------------------------------------------------------------        
  4643.   def update_main_command
  4644.       @wait_time -= 1 if @wait_time > 0
  4645.       if Input.trigger?(:LEFT)
  4646.          move_command_index(-1)
  4647.       elsif Input.trigger?(:RIGHT)
  4648.          move_command_index(1)
  4649.       elsif Input.trigger?(:B)
  4650.          return_scene
  4651.       end  
  4652.   end
  4653.   
  4654.   #--------------------------------------------------------------------------
  4655.   # ● Return Scene
  4656.   #--------------------------------------------------------------------------         
  4657.   def return_scene
  4658.       Sound.play_cancel
  4659.       SceneManager.return
  4660.   end
  4661.   
  4662.   #--------------------------------------------------------------------------
  4663.   # ● Cancel_Selection
  4664.   #--------------------------------------------------------------------------         
  4665.   def cancel_selection
  4666.       Sound.play_cancel
  4667.       @phase = 0
  4668.   end
  4669.   
  4670.   #--------------------------------------------------------------------------
  4671.   # ● Update Main Command
  4672.   #--------------------------------------------------------------------------   
  4673.   def move_command_index(value)
  4674.       return if @wait_time > 0
  4675.       @wait_time = 7
  4676.       pre_index = @command_index
  4677.       @command_index += value
  4678.       @command_index = 0 if @command_index > 3
  4679.       @command_index = 3 if @command_index < 0
  4680.       for i in @command_sprites
  4681.           i.newp(@command_index,value)
  4682.       end         
  4683.       Sound.play_cursor
  4684.   end      
  4685.   
  4686.   #--------------------------------------------------------------------------
  4687.   # ● ON Category OK
  4688.   #--------------------------------------------------------------------------
  4689.   def on_category_ok
  4690.       if @command_index == 0
  4691.          @item_window.activate
  4692.          @item_window.select_last
  4693.       elsif @command_index == 1   
  4694.          @weapon_window.activate
  4695.          @weapon_window.select_last         
  4696.       elsif @command_index == 2   
  4697.          @armor_window.activate
  4698.          @armor_window.select_last
  4699.       elsif @command_index == 3   
  4700.          @key_window.activate
  4701.          @key_window.select_last
  4702.       end
  4703.       refresh_actor_status  
  4704.   end

  4705.   #--------------------------------------------------------------------------
  4706.   # ● ON Item OK
  4707.   #--------------------------------------------------------------------------
  4708.   def on_item_ok
  4709.       $game_party.last_item.object = item
  4710.       determine_item
  4711.   end
  4712.   
  4713.   #--------------------------------------------------------------------------
  4714.   # ● ON Item Cancel
  4715.   #--------------------------------------------------------------------------
  4716.   def on_item_cancel
  4717.      @item_window.unselect
  4718.   end
  4719.   
  4720.   #--------------------------------------------------------------------------
  4721.   # ● Play SE For Item
  4722.   #--------------------------------------------------------------------------
  4723.   def play_se_for_item
  4724.       Sound.play_use_item
  4725.   end  
  4726.   
  4727.   #--------------------------------------------------------------------------
  4728.   # ● Item
  4729.   #--------------------------------------------------------------------------
  4730.   def item
  4731.       if @command_index == 0
  4732.          @item_window.item
  4733.       elsif @command_index == 1   
  4734.          @weapon_window.item   
  4735.       elsif @command_index == 2   
  4736.          @armor_window.item
  4737.       elsif @command_index == 3   
  4738.          @key_window.item         
  4739.       end        
  4740.   end
  4741.   
  4742.   #--------------------------------------------------------------------------
  4743.   # ● User
  4744.   #--------------------------------------------------------------------------
  4745.   def user
  4746.       $game_party.movable_members.max_by {|member| member.pha }
  4747.   end
  4748.   
  4749.   #--------------------------------------------------------------------------
  4750.   # ● Cursor Left
  4751.   #--------------------------------------------------------------------------
  4752.   def cursor_left?
  4753.       @item_window.index % 2 == 0
  4754.   end
  4755.   
  4756.   #--------------------------------------------------------------------------
  4757.   # ● Show Sub Window
  4758.   #--------------------------------------------------------------------------
  4759.   def show_sub_window(window)
  4760.     window.show.activate
  4761.   end

  4762.   #--------------------------------------------------------------------------
  4763.   # ● Hide Sub Window
  4764.   #--------------------------------------------------------------------------
  4765.   def hide_sub_window(window)
  4766.       window.deactivate
  4767.       activate_item_window
  4768.   end

  4769.   #--------------------------------------------------------------------------
  4770.   # ● ON Actor OK
  4771.   #--------------------------------------------------------------------------
  4772.   def on_actor_ok
  4773.       if item_usable?
  4774.          use_item
  4775.          refresh_window
  4776.       else
  4777.         Sound.play_buzzer
  4778.       end
  4779.   end

  4780.   #--------------------------------------------------------------------------
  4781.   # ● Refresh Window
  4782.   #--------------------------------------------------------------------------  
  4783.   def refresh_window
  4784.       if @command_index == 0
  4785.          old_item = @item_window.item
  4786.          @item_window.refresh
  4787. #         set_actor_for_members_menu
  4788.          if @item_window.item  == nil
  4789.             @item_window.index -= 1
  4790.             @item_window.index = 0 if @item_window.index < 0
  4791.             @item_window.update
  4792.          end
  4793.          if old_item != @item_window.item
  4794.             on_actor_cancel
  4795.             cancel_selection
  4796.             @item_window_2.refresh
  4797.             @item_window.update_help
  4798.          end
  4799.       elsif @command_index == 1   
  4800.          @weapon_window.refresh
  4801.       elsif @command_index == 2   
  4802.          @armor_window.refresh
  4803.       elsif @command_index == 3   
  4804.          @key_window.refresh      
  4805.       end
  4806.   end
  4807.    
  4808.   #--------------------------------------------------------------------------
  4809.   # ● Set Actor for Members Menu
  4810.   #--------------------------------------------------------------------------   
  4811.   def set_actor_for_members_menu
  4812.       index = 0
  4813.       for actor in $game_party.members
  4814.           @members_status[index].set_actor(actor)
  4815.           index += 1
  4816.       end  
  4817.   end
  4818.          
  4819.   #--------------------------------------------------------------------------
  4820.   # ● ON Actor Cancel
  4821.   #--------------------------------------------------------------------------
  4822.   def on_actor_cancel
  4823.       hide_sub_window(@actor_window)
  4824.   end

  4825.   #--------------------------------------------------------------------------
  4826.   # ● Determine Item
  4827.   #--------------------------------------------------------------------------
  4828.   def determine_item
  4829.       if item.for_friend?
  4830.          show_sub_window(@actor_window)
  4831.          @actor_window.select_for_item(item)
  4832.          $game_temp.item_scope = @item_window.item.scope rescue nil
  4833.       else
  4834.          use_item
  4835.          activate_item_window
  4836.       end
  4837.   end
  4838.   
  4839.   #--------------------------------------------------------------------------
  4840.   # ● Activate Item Window
  4841.   #--------------------------------------------------------------------------
  4842.   def activate_item_window
  4843.       if @command_index == 0
  4844.          @item_window.refresh
  4845.          @item_window.activate
  4846.       elsif @command_index == 1   
  4847.          @weapon_window.refresh
  4848.          @weapon_window.activate
  4849.       elsif @command_index == 2   
  4850.          @armor_window.refresh
  4851.          @armor_window.activate
  4852.       elsif @command_index == 3   
  4853.          @key_window.refresh     
  4854.          @key_window.activate
  4855.       end   
  4856.   end
  4857.   
  4858.   #--------------------------------------------------------------------------
  4859.   # ● Item Target Actors
  4860.   #--------------------------------------------------------------------------
  4861.   def item_target_actors
  4862.       if !item.for_friend?
  4863.         []
  4864.       elsif item.for_all?
  4865.         $game_party.members
  4866.       else
  4867.         [$game_party.members[@actor_window.index]]
  4868.       end
  4869.   end
  4870.   
  4871.   #--------------------------------------------------------------------------
  4872.   # ● Item Usable?
  4873.   #--------------------------------------------------------------------------
  4874.   def item_usable?
  4875.       user.usable?(item) && item_effects_valid?
  4876.   end
  4877.   
  4878.   #--------------------------------------------------------------------------
  4879.   # ● Item Effects Valid?
  4880.   #--------------------------------------------------------------------------
  4881.   def item_effects_valid?
  4882.       item_target_actors.any? do |target|
  4883.            target.item_test(user, item)
  4884.       end
  4885.   end
  4886.   
  4887.   #--------------------------------------------------------------------------
  4888.   # ● Use Item to Actors
  4889.   #--------------------------------------------------------------------------
  4890.   def use_item_to_actors
  4891.       item_target_actors.each do |target|
  4892.         item.repeats.times { target.item_apply(user, item) }
  4893.       end
  4894.   end
  4895.   
  4896.   #--------------------------------------------------------------------------
  4897.   # ● Use Item
  4898.   #--------------------------------------------------------------------------
  4899.   def use_item
  4900.       play_se_for_item
  4901.       user.use_item(item)
  4902.       use_item_to_actors
  4903.       check_common_event
  4904.       check_gameover
  4905.       @actor_window.refresh
  4906.   end

  4907.   #--------------------------------------------------------------------------
  4908.   # ● Check Common Event
  4909.   #--------------------------------------------------------------------------
  4910.   def check_common_event
  4911.       SceneManager.goto(Scene_Map) if $game_temp.common_event_reserved?
  4912.   end
  4913.   
  4914.   #--------------------------------------------------------------------------
  4915.   # ● Update Target Select
  4916.   #--------------------------------------------------------------------------  
  4917.   def update_target_select
  4918.       @actor = $game_party.members[@actor_window.index]
  4919.       if Input.trigger?(:B)         
  4920.          cancel_selection
  4921.       end      
  4922.   end  
  4923.   
  4924. end


  4925. #==============================================================================
  4926. # ■ Game_Temp
  4927. #==============================================================================
  4928. class Game_Temp
  4929.   
  4930.   #--------------------------------------------------------------------------
  4931.   # ● Execute Pre Cache Skill Menu
  4932.   #--------------------------------------------------------------------------   
  4933.   def execute_pre_cache_skill_menu
  4934.       @pre_cache_skill_menu = []
  4935.       @pre_cache_skill_menu.push(Cache.menu_skill("Background"))
  4936.       @pre_cache_skill_menu.push(Cache.menu_skill("Layout"))
  4937.       @pre_cache_skill_menu.push(Cache.menu_skill("Type_Layout"))
  4938.       @pre_cache_skill_menu.push(Cache.menu_skill("List_Layout"))
  4939.       @pre_cache_skill_menu.push(Cache.menu_skill("Actor_Layout"))

  4940.   end   
  4941.    
  4942. end

  4943. #==============================================================================
  4944. # ■ Scene_Skill
  4945. #==============================================================================
  4946. class Scene_Skill
  4947.   include MOG_MENU_SKILL
  4948.   include MOG_MENU_BASE
  4949.   
  4950.   #--------------------------------------------------------------------------
  4951.   # ● Main
  4952.   #--------------------------------------------------------------------------        
  4953.   def main
  4954.       execute_setup
  4955.       execute_loop
  4956.       execute_dispose
  4957.   end  
  4958.   
  4959.   #--------------------------------------------------------------------------
  4960.   # ● Execute Setup
  4961.   #--------------------------------------------------------------------------        
  4962.   def execute_setup
  4963.       @actor = $game_temp.actor_menu_temp
  4964.       @index_max = (@actor.added_skill_types.size - 1)
  4965.       @index_max = 0 if @index_max < 0      
  4966.       @phase = 0
  4967.       @press_time = 0
  4968.       @press_lag = 0
  4969.       @scene_active = @actor.added_skill_types.size > 0 ? true : false
  4970.       create_sprites
  4971.   end
  4972.   
  4973.   #--------------------------------------------------------------------------
  4974.   # ● Execute Lopp
  4975.   #--------------------------------------------------------------------------        
  4976.   def execute_loop
  4977.       Graphics.transition(10)
  4978.       loop do
  4979.          Input.update
  4980.          update
  4981.          Graphics.update
  4982.          break if SceneManager.scene != self
  4983.       end
  4984.   end
  4985.   
  4986. end

  4987. #==============================================================================
  4988. # ■ Actor Skill Status
  4989. #==============================================================================
  4990. class Actor_Skill_Status
  4991.   include MOG_ACTOR_SKILL_STATUS
  4992.   
  4993.   #--------------------------------------------------------------------------
  4994.   # ● Initialize
  4995.   #--------------------------------------------------------------------------
  4996.   def initialize(actor)
  4997.       @actor = actor
  4998.       set_old_parameter
  4999.       create_sprites
  5000.   end
  5001.   
  5002.   #--------------------------------------------------------------------------
  5003.   # ● Create Sprites
  5004.   #--------------------------------------------------------------------------   
  5005.   def create_sprites
  5006.       @meter_image = $game_temp.pre_cache_actor_menu[6]
  5007.       @meter_cw = @meter_image.width
  5008.       @meter_ch = @meter_image.height / 2   
  5009.       @parameter_number = $game_temp.pre_cache_actor_menu[2]
  5010.       @parameter_cw = @parameter_number.width / 10
  5011.       @parameter_ch = @parameter_number.height
  5012.       @opac = 0
  5013.       create_layout
  5014.       create_parameter
  5015.       create_face
  5016.       create_name
  5017.       create_hp_meter
  5018.       create_mp_meter
  5019.       create_states
  5020.       set_position(0,[email protected] - 48)
  5021.   end
  5022.    
  5023.   #--------------------------------------------------------------------------
  5024.   # ● Set Old Parameter
  5025.   #--------------------------------------------------------------------------  
  5026.   def set_old_parameter
  5027.       @par = [] if @par == nil
  5028.       @par.clear
  5029.       @par = [@actor.hp,@actor.mhp,@actor.mp,@actor.mmp,@actor.level]
  5030.   end   
  5031.   
  5032.   #--------------------------------------------------------------------------
  5033.   # ● Dispose
  5034.   #--------------------------------------------------------------------------  
  5035.   def dispose
  5036.       dispose_layout
  5037.       dispose_parameter
  5038.       dispose_face
  5039.       dispose_name
  5040.       dispose_hp_meter
  5041.       dispose_mp_meter
  5042.       dispose_states
  5043.   end

  5044.   #--------------------------------------------------------------------------
  5045.   # ● Dispose Layout
  5046.   #--------------------------------------------------------------------------   
  5047.   def dispose_layout
  5048.       @layout.dispose
  5049.   end
  5050.   
  5051.   #--------------------------------------------------------------------------
  5052.   # ● Dispose Parameter
  5053.   #--------------------------------------------------------------------------      
  5054.   def dispose_parameter
  5055.       @parameter.bitmap.dispose
  5056.       @parameter.dispose
  5057.   end  
  5058.   
  5059.   #--------------------------------------------------------------------------
  5060.   # ● Dispose Face
  5061.   #--------------------------------------------------------------------------   
  5062.   def dispose_face
  5063.       @face.bitmap.dispose if @face.bitmap != nil
  5064.       @face.dispose
  5065.   end   
  5066.   
  5067.   #--------------------------------------------------------------------------
  5068.   # ● Dispose HP Meter
  5069.   #--------------------------------------------------------------------------      
  5070.   def dispose_hp_meter
  5071.       @hp_meter.bitmap.dispose
  5072.       @hp_meter.dispose
  5073.   end
  5074.   
  5075.   #--------------------------------------------------------------------------
  5076.   # ● Dispose MP Meter
  5077.   #--------------------------------------------------------------------------      
  5078.   def dispose_mp_meter
  5079.       @mp_meter.bitmap.dispose
  5080.       @mp_meter.dispose
  5081.   end  
  5082.   
  5083.   #--------------------------------------------------------------------------
  5084.   # ● Dispose Name
  5085.   #--------------------------------------------------------------------------        
  5086.   def dispose_name
  5087.       @name.bitmap.dispose
  5088.       @name.dispose
  5089.   end  
  5090.   
  5091.   #--------------------------------------------------------------------------
  5092.   # ● Dispose States
  5093.   #--------------------------------------------------------------------------            
  5094.    def dispose_states
  5095.        return if @status == nil
  5096.        @status.bitmap.dispose
  5097.        @status.dispose
  5098.        if @actor_status != nil
  5099.           @actor_status.dispose
  5100.           @actor_status = nil
  5101.        end   
  5102.     end   
  5103.   
  5104.   #--------------------------------------------------------------------------
  5105.   # ● Create Layout
  5106.   #--------------------------------------------------------------------------
  5107.   def create_layout
  5108.       @layout = Sprite.new
  5109.       @layout.bitmap = $game_temp.pre_cache_skill_menu[4]
  5110.       @org_pos = [LAYOUT_POSITION[0],LAYOUT_POSITION[1]]
  5111.       @layout.x = @org_pos[0]
  5112.       @layout.y = @org_pos[1]
  5113.       @layout.z = 10
  5114.       #@layout.opacity = 0
  5115.   end

  5116.   #--------------------------------------------------------------------------
  5117.   # ● Create Parameter
  5118.   #--------------------------------------------------------------------------
  5119.   def create_parameter
  5120.       @parameter = Sprite.new
  5121.       @parameter.bitmap = Bitmap.new(@layout.bitmap.width,@layout.bitmap.height)
  5122.       @org_pos_par = [@org_pos[0] + PAR_POSITION[0],
  5123.                       @org_pos[1] + PAR_POSITION[1]]
  5124.       @parameter.x = @org_pos_par[0]
  5125.       @parameter.y = @org_pos_par[1]
  5126.       @parameter.z = 12
  5127. #      @parameter.opacity = 0
  5128.       refresh_parameter
  5129.   end  
  5130.   
  5131.   #--------------------------------------------------------------------------
  5132.   # ● Create HP Meter
  5133.   #--------------------------------------------------------------------------  
  5134.   def create_hp_meter
  5135.       @hp_meter_old = [-1,-1]
  5136.       @hp_meter = Sprite.new
  5137.       @hp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  5138.       @org_pos_hp = [@org_pos[0] + HP_METER_POSITION[0],
  5139.                      @org_pos[1] + HP_METER_POSITION[1]]      
  5140.       @hp_meter.x = @org_pos_hp[0]
  5141.       @hp_meter.y = @org_pos_hp[1]
  5142.       @hp_meter.z = 11
  5143.   end  
  5144.   
  5145.   #--------------------------------------------------------------------------
  5146.   # ● Refresh HP Meter
  5147.   #--------------------------------------------------------------------------   
  5148.   def refresh_hp_meter
  5149.       @hp_meter_old[0] = @actor.hp
  5150.       @hp_meter_old[1] = @actor.mhp
  5151.       @hp_meter.bitmap.clear
  5152.       width_range = @meter_cw * @actor.hp / @actor.mhp
  5153.       m_rect = Rect.new(0,0,width_range,@meter_ch)
  5154.       @hp_meter.bitmap.blt(0,0,@meter_image,m_rect)
  5155.   end
  5156.   
  5157.   #--------------------------------------------------------------------------
  5158.   # ● Create MP Meter
  5159.   #--------------------------------------------------------------------------  
  5160.   def create_mp_meter
  5161.       @mp_meter_old = [-1,-1]
  5162.       @mp_meter = Sprite.new
  5163.       @mp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  5164.       @org_pos_mp = [@org_pos[0] + MP_METER_POSITION[0],
  5165.                      @org_pos[1] + MP_METER_POSITION[1]]      
  5166.       @mp_meter.x = @org_pos_mp[0]
  5167.       @mp_meter.y = @org_pos_mp[1]
  5168.       @mp_meter.z = 11
  5169.   end  
  5170.   
  5171.   #--------------------------------------------------------------------------
  5172.   # ● Create_States
  5173.   #--------------------------------------------------------------------------      
  5174.   def create_states
  5175.       @status_old = nil
  5176.       @status_flow = [-24,0]   
  5177.       @status = Sprite.new
  5178.       @status.bitmap = Bitmap.new(24,24)
  5179.       @org_pos_states = [@org_pos[0] + STATES_POSITION[0],
  5180.                          @org_pos[1] + STATES_POSITION[1]]      
  5181.       @status.x = @org_pos_states[0] + 1
  5182.       @status.y = @org_pos_states[1]
  5183.       @status.z = 11
  5184.   end      

  5185.   #--------------------------------------------------------------------------
  5186.   # * Refresh States
  5187.   #--------------------------------------------------------------------------        
  5188.   def refresh_states
  5189.       check_icon_image
  5190.       @status_old = @actor.states
  5191.       @status_flow = [0,0]
  5192.       @actor_status.dispose if @actor_status != nil
  5193.       @states_size = @actor.states.size > 0 ? (26 * @actor.states.size) : 24
  5194.       @actor_status = Bitmap.new(@states_size,24)
  5195.       index = 0
  5196.       for i in @actor.states
  5197.          rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
  5198.          @actor_status.blt(26 * index , 0, @icon_image, rect)
  5199.          index += 1
  5200.       end
  5201.   end   
  5202.   
  5203.   #--------------------------------------------------------------------------
  5204.   # * Flow_Status
  5205.   #--------------------------------------------------------------------------         
  5206.   def flow_states
  5207.       return if @actor_status == nil
  5208.       @status.bitmap.clear
  5209.       return if @actor.states.size == 0
  5210.       st_src_rect = Rect.new(@status_flow[0],0, 24,24)
  5211.       @status.bitmap.blt(0,0, @actor_status, st_src_rect)
  5212.       if STATES_SCROLLING_ANIMATION
  5213.          @status_flow[0] += 1
  5214.          @status_flow[0] = -24 if @status_flow[0] >= @states_size + 2
  5215.       else   
  5216.          @status_flow[1] += 1 unless @actor.states.size <= 1
  5217.          if @status_flow[1] > 30
  5218.             @status_flow[1] = 0
  5219.             @status_flow[0] += 26
  5220.             @status_flow[0] = 0 if @status_flow[0] >= (@states_size - 0)
  5221.          end   
  5222.      end   
  5223.   end        
  5224.   
  5225.   #--------------------------------------------------------------------------
  5226.   # * Check Icon Image
  5227.   #--------------------------------------------------------------------------         
  5228.   def check_icon_image
  5229.       if @icon_image == nil or @icon_image.disposed?
  5230.          @icon_image = Cache.system("Iconset")
  5231.       end   
  5232.   end   
  5233.       
  5234.   
  5235.   #--------------------------------------------------------------------------
  5236.   # ● Refresh MP Meter
  5237.   #--------------------------------------------------------------------------   
  5238.   def refresh_mp_meter
  5239.       @mp_meter_old[0] = @actor.mp
  5240.       @mp_meter_old[1] = @actor.mmp
  5241.       @mp_meter.bitmap.clear
  5242.       width_range = @meter_cw * @actor.mp / @actor.mmp rescue nil
  5243.       width_range = 0 if width_range == nil
  5244.       m_rect = Rect.new(0,@meter_ch,width_range,@meter_ch)
  5245.       @mp_meter.bitmap.blt(0,0,@meter_image,m_rect)
  5246.   end  
  5247.   
  5248.   #--------------------------------------------------------------------------
  5249.   # ● Create Face
  5250.   #--------------------------------------------------------------------------   
  5251.   def refresh_parameter
  5252.       set_old_parameter   
  5253.       @parameter.bitmap.clear
  5254.       
  5255.       value = @actor.level
  5256.       x = 112
  5257.       y = 8
  5258.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  5259.      
  5260.       value = @actor.hp
  5261.       x = 218
  5262.       y = 2
  5263.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  5264.   
  5265.       value = @actor.mp
  5266.       x = 238
  5267.       y = 22
  5268.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  5269.       
  5270.   end  
  5271.   
  5272.   #--------------------------------------------------------------------------
  5273.   # ● Refresh Number
  5274.   #--------------------------------------------------------------------------     
  5275.   def refresh_number(sprite,image,value,number_cw,number_ch,x,y)
  5276.       number = value.abs.to_s.split(//)
  5277.       x2 = -number_cw * number.size
  5278.       for i in 0..number.size - 1
  5279.           number_abs = number[i].to_i
  5280.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  5281.           sprite.bitmap.blt(x + x2 + (number_cw  *  i), y, image, nsrc_rect)        
  5282.       end      
  5283.       
  5284.   end

  5285.   #--------------------------------------------------------------------------
  5286.   # ● Create Face
  5287.   #--------------------------------------------------------------------------  
  5288.   def create_face
  5289.       @face = Sprite.new
  5290.       @org_pos_face = [@org_pos[0] + FACE_POSITION[0],
  5291.                        @org_pos[1] + FACE_POSITION[1]]
  5292.       @face.x = @org_pos_face[0]
  5293.       @face.y = @org_pos_face[1]
  5294.       @face.z = 11
  5295.    #   @face.opacity = 0
  5296.       refresh_face
  5297.   end  
  5298.   
  5299.   #--------------------------------------------------------------------------
  5300.   # ● Refresh Face
  5301.   #--------------------------------------------------------------------------   
  5302.   def refresh_face
  5303.       face_name = "Face" + @actor.id.to_s
  5304.       @face.bitmap = Cache.menu(face_name.to_s)
  5305.   end
  5306.   
  5307.   #--------------------------------------------------------------------------
  5308.   # ● Create Name
  5309.   #--------------------------------------------------------------------------   
  5310.   def create_name
  5311.       @name = Sprite.new
  5312.       @name.bitmap = Bitmap.new(140,32)
  5313.       @name.bitmap.font.size = FONT_SIZE
  5314.       @name.bitmap.font.bold = FONT_BOLD
  5315.       @org_pos_name = [@org_pos[0] + NAME_POSITION[0],
  5316.                        @org_pos[1] + NAME_POSITION[1]]
  5317.       @name.x = @org_pos_name[0]
  5318.       @name.y = @org_pos_name[1]
  5319.       @name.z = 11
  5320.      #@name.opacity = 0
  5321.       refresh_name     
  5322.   end  
  5323.   
  5324.   #--------------------------------------------------------------------------
  5325.   # ● Refresh Name
  5326.   #--------------------------------------------------------------------------      
  5327.   def refresh_name
  5328.       @name.bitmap.clear
  5329.       @name.bitmap.draw_text(0,0,140,32,@actor.name.to_s,0)
  5330.   end  
  5331.   
  5332.   #--------------------------------------------------------------------------
  5333.   # ● Set Actor
  5334.   #--------------------------------------------------------------------------        
  5335.   def set_actor(actor)
  5336.       @actor = actor
  5337.   end
  5338.   
  5339.   #--------------------------------------------------------------------------
  5340.   # ● Can Refresh HP Meter
  5341.   #--------------------------------------------------------------------------         
  5342.   def can_refresh_hp_meter?
  5343.       return true if @hp_meter_old[0] != @actor.hp
  5344.       return true if @hp_meter_old[1] != @actor.mhp
  5345.       return false
  5346.   end
  5347.      
  5348.   #--------------------------------------------------------------------------
  5349.   # ● Can Refresh MP Meter
  5350.   #--------------------------------------------------------------------------         
  5351.   def can_refresh_mp_meter?
  5352.       return true if @mp_meter_old[0] != @actor.mp
  5353.       return true if @mp_meter_old[1] != @actor.mmp
  5354.       return false
  5355.   end  
  5356.   
  5357.   #--------------------------------------------------------------------------
  5358.   # ● Can Refresh Parameter
  5359.   #--------------------------------------------------------------------------
  5360.   def can_refresh_parameter?
  5361.       return true if @par[0] != @actor.hp
  5362.       return true if @par[1] != @actor.mhp
  5363.       return true if @par[2] != @actor.mp
  5364.       return true if @par[3] != @actor.mmp
  5365.       return false
  5366.   end
  5367.   
  5368.   #--------------------------------------------------------------------------
  5369.   # ● Update Position
  5370.   #--------------------------------------------------------------------------      
  5371.   def update_position
  5372.       update_slide(0,@layout,@layout.x,@org_pos[0])
  5373.       update_slide(1,@layout,@layout.y,@org_pos[1])
  5374.       update_slide(0,@parameter,@parameter.x,@org_pos_par[0])
  5375.       update_slide(1,@parameter,@parameter.y,@org_pos_par[1])
  5376.       update_slide(0,@hp_meter,@hp_meter.x,@org_pos_hp[0])
  5377.       update_slide(1,@hp_meter,@hp_meter.y,@org_pos_hp[1])  
  5378.       update_slide(0,@mp_meter,@mp_meter.x,@org_pos_mp[0])
  5379.       update_slide(1,@mp_meter,@mp_meter.y,@org_pos_mp[1])        
  5380.       update_slide(0,@face,@face.x,@org_pos_face[0])
  5381.       update_slide(1,@face,@face.y,@org_pos_face[1])        
  5382.       update_slide(0,@name,@name.x,@org_pos_name[0])
  5383.       update_slide(1,@name,@name.y,@org_pos_name[1])      
  5384.       update_slide(0,@status,@status.x,@org_pos_states[0])
  5385.       update_slide(1,@status,@status.y,@org_pos_states[1])         
  5386.   end

  5387. #--------------------------------------------------------------------------
  5388. # ● Update Slide
  5389. #--------------------------------------------------------------------------                       
  5390.   def update_slide(type,sprite,cp,np)
  5391.       sp = 3 + ((cp - np).abs / 10)
  5392.       if cp > np
  5393.          cp -= sp
  5394.          cp = np if cp < np
  5395.       elsif cp < np
  5396.          cp += sp
  5397.          cp = np if cp > np
  5398.       end     
  5399.       sprite.x = cp if type == 0
  5400.       sprite.y = cp if type == 1
  5401.   end   
  5402.   
  5403.   #--------------------------------------------------------------------------
  5404.   # ● Update Opacity
  5405.   #--------------------------------------------------------------------------  
  5406.   def update_opacity
  5407.       @opac += 10
  5408.       @opac = 255 if @opac > 255
  5409.       set_opacity(@opac)
  5410.   end
  5411.   
  5412.   #--------------------------------------------------------------------------
  5413.   # ● Set Opacity
  5414.   #--------------------------------------------------------------------------   
  5415.   def set_opacity(opac)
  5416.       @layout.opacity = opac
  5417.       @layout.opacity = opac
  5418.       @parameter.opacity = opac
  5419.       @parameter.opacity = opac
  5420.       @hp_meter.opacity = opac
  5421.       @hp_meter.opacity = opac
  5422.       @mp_meter.opacity = opac
  5423.       @mp_meter.opacity = opac
  5424.       @face.opacity = opac
  5425.       @face.opacity = opac
  5426.       @name.opacity = opac
  5427.       @name.opacity = opac
  5428.       @status.opacity = opac
  5429.   end   

  5430.   #--------------------------------------------------------------------------
  5431.   # ● Update Position
  5432.   #--------------------------------------------------------------------------      
  5433.   def set_position(pos_x,pos_y)
  5434.       @layout.x = @org_pos[0] + pos_x
  5435.       @layout.y = @org_pos[1] + pos_y
  5436.       @parameter.x = @org_pos_par[0] + pos_x
  5437.       @parameter.y = @org_pos_par[1] + pos_y
  5438.       @hp_meter.x = @org_pos_hp[0] + pos_x
  5439.       @hp_meter.y = @org_pos_hp[1] + pos_y
  5440.       @mp_meter.x = @org_pos_mp[0] + pos_x
  5441.       @mp_meter.y = @org_pos_mp[1] + pos_y
  5442.       @face.x = @org_pos_face[0] + pos_x
  5443.       @face.y = @org_pos_face[1] + pos_y
  5444.       @name.x = @org_pos_name[0] + pos_x
  5445.       @name.y = @org_pos_name[1] + pos_y
  5446.       @status.x = @org_pos_states[0] + pos_x
  5447.       @status.y = @org_pos_states[1] + pos_y
  5448.   end   
  5449.   
  5450.   #--------------------------------------------------------------------------
  5451.   # ● Update
  5452.   #--------------------------------------------------------------------------  
  5453.   def update
  5454.       refresh_hp_meter if can_refresh_hp_meter?
  5455.       refresh_mp_meter if can_refresh_mp_meter?
  5456.       refresh_parameter if can_refresh_parameter?
  5457.       refresh_states if @status_old != @actor.states
  5458.       update_opacity
  5459.       update_position
  5460.       flow_states      
  5461.   end
  5462.   
  5463. end

  5464. #==============================================================================
  5465. # ■ Window_SkillCommand
  5466. #==============================================================================
  5467. class Window_SkillCommand_2 < Window_Command
  5468.   
  5469.   attr_reader   :skill_window
  5470.   
  5471.   #--------------------------------------------------------------------------
  5472.   # ● Initialize
  5473.   #--------------------------------------------------------------------------
  5474.   def initialize(x, y)
  5475.     super(x, y)
  5476.     @actor = nil
  5477.     @index_max = 0
  5478.   end

  5479.   #--------------------------------------------------------------------------
  5480.   # ● Window Width
  5481.   #--------------------------------------------------------------------------
  5482.   def window_width
  5483.     return 140
  5484.   end
  5485.   
  5486.   #--------------------------------------------------------------------------
  5487.   # ● Actor
  5488.   #--------------------------------------------------------------------------
  5489.   def actor=(actor)
  5490.       return if @actor == actor
  5491.       @actor = actor
  5492.       @index_max = (@actor.added_skill_types.size - 1)
  5493.       @index_max = 0 if @index_max < 0
  5494.       refresh
  5495.       select_last
  5496.   end
  5497.   
  5498.   #--------------------------------------------------------------------------
  5499.   # ● Visible Line Number
  5500.   #--------------------------------------------------------------------------
  5501.   def visible_line_number
  5502.       return 4
  5503.   end
  5504.   
  5505.   #--------------------------------------------------------------------------
  5506.   # ● Make Command List
  5507.   #--------------------------------------------------------------------------
  5508.   def make_command_list
  5509.       return unless @actor
  5510.          @actor.added_skill_types.sort.each do |stype_id|
  5511.          name = $data_system.skill_types[stype_id]
  5512.          add_command(name, :skill, true, stype_id)
  5513.       end
  5514.   end

  5515.   #--------------------------------------------------------------------------
  5516.   # ● Update
  5517.   #--------------------------------------------------------------------------
  5518.   def update
  5519.       super
  5520.       @skill_window.stype_id = current_ext if @skill_window
  5521.      # update_index
  5522.   end

  5523.   #--------------------------------------------------------------------------
  5524.   # ● Update
  5525.   #--------------------------------------------------------------------------  
  5526.   def update_index
  5527.       return if @index_max <= 0
  5528.       if Input.trigger?(:RIGHT)
  5529.          add_index(1)
  5530.       elsif Input.trigger?(:LEFT)   
  5531.          add_index(-1)
  5532.       end  
  5533.   end
  5534.   
  5535.   #--------------------------------------------------------------------------
  5536.   # ● Add Index
  5537.   #--------------------------------------------------------------------------   
  5538.   def add_index(value)
  5539.       Sound.play_cursor
  5540.       @index += value
  5541.       @index = 0 if @index > @index_max
  5542.       @index = @index_max if @index < 0
  5543.   end
  5544.   
  5545.   #--------------------------------------------------------------------------
  5546.   # ● Skill Window
  5547.   #--------------------------------------------------------------------------
  5548.   def skill_window=(skill_window)
  5549.       @skill_window = skill_window
  5550.       update
  5551.   end  
  5552.   
  5553.   #--------------------------------------------------------------------------
  5554.   # ● Select Last
  5555.   #--------------------------------------------------------------------------
  5556.   def select_last
  5557.       skill = @actor.last_skill.object
  5558.       if skill
  5559.          select_ext(skill.stype_id)
  5560.       else
  5561.          select(0)
  5562.       end
  5563.   end
  5564.    
  5565. end

  5566. #==============================================================================
  5567. # ■ Window_SkillList
  5568. #==============================================================================
  5569. class Window_SkillList_Menu < Window_Selectable
  5570.   
  5571.   attr_accessor :windows_index

  5572.   #--------------------------------------------------------------------------
  5573.   # ● Initialize
  5574.   #--------------------------------------------------------------------------
  5575.   def initialize(x, y, width, height)
  5576.       super
  5577.       @stype_id = 0
  5578.       @data = []
  5579.       @windows_index = 0
  5580.       self.opacity = 0
  5581.       @actor = nil
  5582.   end
  5583.   
  5584.   #--------------------------------------------------------------------------
  5585.   # ● Actor
  5586.   #--------------------------------------------------------------------------
  5587.   def actor=(actor)
  5588.       return if @actor == actor
  5589.       @actor = actor
  5590.       self.oy = 0
  5591.   end

  5592.   #--------------------------------------------------------------------------
  5593.   # ● Setup
  5594.   #--------------------------------------------------------------------------  
  5595.   def setup(actor,skill_type,index)
  5596.       @actor = actor
  5597.       @stype_id = skill_type
  5598.       @windows_index = index
  5599.       refresh
  5600.   end
  5601.   
  5602.   #--------------------------------------------------------------------------
  5603.   # ● Stype ID
  5604.   #--------------------------------------------------------------------------
  5605.   def stype_id=(stype_id)
  5606.   end
  5607.   
  5608.   #--------------------------------------------------------------------------
  5609.   # ● Col Max
  5610.   #--------------------------------------------------------------------------
  5611.   def col_max
  5612.       return 1
  5613.   end

  5614.   #--------------------------------------------------------------------------
  5615.   # ● Item Max
  5616.   #--------------------------------------------------------------------------
  5617.   def item_max
  5618.       @data ? @data.size : 1
  5619.   end

  5620.   #--------------------------------------------------------------------------
  5621.   # ● Item
  5622.   #--------------------------------------------------------------------------
  5623.   def item
  5624.       @data && index >= 0 ? @data[index] : nil
  5625.   end
  5626.   
  5627.   #--------------------------------------------------------------------------
  5628.   # ● Current Item Enabled
  5629.   #--------------------------------------------------------------------------
  5630.   def current_item_enabled?
  5631.       enable?(@data[index])
  5632.   end

  5633.   #--------------------------------------------------------------------------
  5634.   # ● Include
  5635.   #--------------------------------------------------------------------------
  5636.   def include?(item)
  5637.       item && item.stype_id == @stype_id
  5638.   end

  5639.   #--------------------------------------------------------------------------
  5640.   # ● Enable
  5641.   #--------------------------------------------------------------------------
  5642.   def enable?(item)
  5643.       @actor && @actor.usable?(item)
  5644.   end

  5645.   #--------------------------------------------------------------------------
  5646.   # ● Male Item List
  5647.   #--------------------------------------------------------------------------
  5648.   def make_item_list
  5649.       @data = @actor ? @actor.skills.select {|skill| include?(skill) } : []
  5650.   end

  5651.   #--------------------------------------------------------------------------
  5652.   # ● Select Last
  5653.   #--------------------------------------------------------------------------
  5654.   def select_last
  5655.       select(@data.index(@actor.last_skill.object) || 0)
  5656.   end
  5657.   
  5658.   #--------------------------------------------------------------------------
  5659.   # ● Draw Item
  5660.   #--------------------------------------------------------------------------
  5661.   def draw_item(index)
  5662.       self.contents.font.size = 18
  5663.       self.contents.font.bold = true
  5664.       skill = @data[index]
  5665.       if skill
  5666.          rect = item_rect(index)
  5667.          rect.width -= 4
  5668.          draw_item_name(skill, rect.x, rect.y, enable?(skill),110)
  5669.          draw_skill_cost(rect, skill)
  5670.       end
  5671.   end

  5672.   #--------------------------------------------------------------------------
  5673.   # ● Draw Skill Cost
  5674.   #--------------------------------------------------------------------------
  5675.   def draw_skill_cost(rect, skill)
  5676.       if @actor.skill_tp_cost(skill) > 0
  5677.          change_color(tp_cost_color, enable?(skill))
  5678.          draw_text(rect, @actor.skill_tp_cost(skill), 2)
  5679.       elsif @actor.skill_mp_cost(skill) > 0
  5680.          change_color(mp_cost_color, enable?(skill))
  5681.          draw_text(rect, @actor.skill_mp_cost(skill), 2)
  5682.       end
  5683.   end
  5684.   
  5685.   #--------------------------------------------------------------------------
  5686.   # ● Update Help
  5687.   #--------------------------------------------------------------------------
  5688.   def update_help
  5689.       @help_window.set_item(item)
  5690.   end

  5691.   #--------------------------------------------------------------------------
  5692.   # ● Refresh
  5693.   #--------------------------------------------------------------------------
  5694.   def refresh
  5695.       make_item_list
  5696.       create_contents
  5697.       draw_all_items
  5698.   end
  5699.   
  5700. end

  5701. #==============================================================================
  5702. # ■ Scene Skill
  5703. #==============================================================================
  5704. class Scene_Skill
  5705.   
  5706.   #--------------------------------------------------------------------------
  5707.   # ● Create Sprites
  5708.   #--------------------------------------------------------------------------         
  5709.   def create_sprites
  5710.       create_menu_background
  5711.       create_layout
  5712.       create_particles
  5713.       create_actor_status
  5714.       create_help_window
  5715.       create_command_window
  5716.       create_type_layout
  5717.       create_item_window
  5718.       create_list_layout
  5719.       create_actor_window
  5720.       create_type_name
  5721.       @command_window.active = true        
  5722.   end
  5723.   
  5724.   #--------------------------------------------------------------------------
  5725.   # ● Create Menu Background
  5726.   #--------------------------------------------------------------------------            
  5727.   def create_menu_background
  5728.       @background = Plane.new
  5729.       @background.bitmap = $game_temp.pre_cache_skill_menu[0]
  5730.       @background.z = 0
  5731.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  5732.   end  

  5733.   #--------------------------------------------------------------------------
  5734.   # ● Create Layout
  5735.   #--------------------------------------------------------------------------              
  5736.   def create_layout
  5737.       @layout = Sprite.new
  5738.       @layout.bitmap = $game_temp.pre_cache_skill_menu[1]
  5739.       @layout.z = 3
  5740.   end
  5741.   
  5742.   #--------------------------------------------------------------------------
  5743.   # ● Create Particles
  5744.   #--------------------------------------------------------------------------  
  5745.   def create_particles
  5746.       @particles_sprite =[]
  5747.       for i in 0...NUMBER_OF_PARTICLES
  5748.           @particles_sprite.push(Particles_Menu.new(nil))
  5749.       end
  5750.   end
  5751.   
  5752.   #--------------------------------------------------------------------------
  5753.   # ● Create Actor Status
  5754.   #--------------------------------------------------------------------------   
  5755.   def create_actor_status
  5756.       @actor_skill_status = Actor_Skill_Status.new(@actor)
  5757.   end  

  5758.   #--------------------------------------------------------------------------
  5759.   # ● Create Help Window
  5760.   #--------------------------------------------------------------------------              
  5761.   def create_help_window
  5762.       @help_window = Window_Help.new
  5763.       @help_window.x = 0
  5764.       @help_window.y = Graphics.height - @help_window.height
  5765.       @help_window.opacity = 0
  5766.   end   
  5767.   
  5768.   #--------------------------------------------------------------------------
  5769.   # ● Create Command Window
  5770.   #--------------------------------------------------------------------------
  5771.   def create_command_window
  5772.       @command_window = Window_SkillCommand_2.new(0, 84)
  5773.       @command_window.help_window = @help_window
  5774.       @command_window.actor = @actor
  5775.       @command_window.set_handler(:skill,    method(:command_skill))
  5776.       @command_window.set_handler(:pagedown, method(:next_actor))
  5777.       @command_window.set_handler(:pageup,   method(:prev_actor))
  5778.       @command_window.active = false
  5779.       @command_window.opacity = 0
  5780.       @command_window.index = 0
  5781.       @command_window.visible = @scene_active
  5782.       @skill_list_slide_range = [@command_window.x, -(@command_window.x + @command_window.width)]
  5783.       @command_window.x = @skill_list_slide_range[1] - 80
  5784.       @command_window.opacity = 0
  5785.   end  
  5786.   
  5787.   #--------------------------------------------------------------------------
  5788.   # ● Create Type Layout
  5789.   #--------------------------------------------------------------------------
  5790.   def create_type_layout
  5791.       @type_layout = Sprite.new
  5792.       @type_layout.bitmap = $game_temp.pre_cache_skill_menu[2]
  5793.       @type_layout.z = @command_window.z - 1
  5794.       @type_layout.x = @command_window.x
  5795.       @type_layout.y = @command_window.y - 30
  5796.       @type_layout.opacity = 0      
  5797.   end  
  5798.   
  5799.   #--------------------------------------------------------------------------
  5800.   # ● Create Item Window
  5801.   #--------------------------------------------------------------------------
  5802.   def create_item_window
  5803.       @skill_window = []
  5804.       index = 0
  5805.       window_max = @actor.added_skill_types.size
  5806.       window_max = 1 if window_max == 0
  5807.       for item in 0...window_max
  5808.           @skill_window.push(Window_SkillList_Menu.new(170,95,205,240))
  5809.           @skill_window[index].setup(@actor,@actor.added_skill_types[index],index)
  5810.           @skill_window[index].help_window = @help_window
  5811.           @skill_window[index].set_handler(:ok,     method(:on_item_ok))
  5812.           @skill_window[index].set_handler(:cancel, method(:on_item_cancel))
  5813.           @skill_window[index].active = false
  5814.           @skill_window[index].index = -1
  5815.           @skill_window[index].opacity = 0
  5816.           @skill_window[index].contents_opacity = 0
  5817.           @item_slide_range = [@skill_window[index].x, @skill_window[index].x + 50]
  5818.           @skill_window[index].x = @item_slide_range[1]
  5819.           index += 1
  5820.       end  
  5821.       @item_pre_index = @skill_window[@command_window.index].index
  5822.       @old_command_index = @skill_window[@command_window.index].index
  5823.   end  
  5824.   
  5825.   #--------------------------------------------------------------------------
  5826.   # ● Create List Layout
  5827.   #--------------------------------------------------------------------------  
  5828.   def create_list_layout
  5829.       @list_layout = Sprite.new
  5830.       @list_layout.bitmap = $game_temp.pre_cache_skill_menu[3]
  5831.       @list_layout.z = @skill_window[@command_window.index].z - 1
  5832.       @list_layout.x = @item_slide_range[0] - 4
  5833.       @list_layout.y = @skill_window[@command_window.index].y - 20
  5834.       @list_layout.opacity = 0
  5835.       @list_layout_slide_range = [@list_layout.x,@list_layout.x + 50]
  5836.       @list_layout.x = @list_layout_slide_range[1]
  5837.   end
  5838.   
  5839.   #--------------------------------------------------------------------------
  5840.   # ● Create Actor Window
  5841.   #--------------------------------------------------------------------------
  5842.   def create_actor_window
  5843.       @actor_window = Members_Windows_Status.new
  5844.       @actor_window.set_handler(:ok,     method(:on_actor_ok))
  5845.       @actor_window.set_handler(:cancel, method(:on_actor_cancel))
  5846.       @actor_window.opacity = 0
  5847.       @actor_window.x = -10
  5848.       @actor_window.y = 36
  5849.       @actor_window_slide_range = [@actor_window.x, -@actor_window.width]
  5850.       @actor_window.x = @actor_window_slide_range[1]
  5851.       @actor_window.visible = true
  5852.       @actor_window_index_old = @actor_window.index
  5853.       create_members_window
  5854.       update_active
  5855.   end
  5856.   
  5857.   #--------------------------------------------------------------------------
  5858.   # ● Create Members Window
  5859.   #--------------------------------------------------------------------------  
  5860.   def create_members_window
  5861.       @actor_status = Actor_Menu_Status.new(@actor)
  5862.       index = 0
  5863.       @members_status = []      
  5864.       for actor in $game_party.members
  5865.           @members_status.push(Members_Menu.new(actor,index))
  5866.           index += 1
  5867.       end   
  5868.   end  
  5869.   
  5870.   #--------------------------------------------------------------------------
  5871.   # ● Create Type Name
  5872.   #--------------------------------------------------------------------------  
  5873.   def create_type_name
  5874.       @type_name = Sprite.new
  5875.       @type_name.x = 260
  5876.       @type_name.y = 60
  5877.       @type_name.z = @list_layout.z + 2
  5878.       @type_name.bitmap = Bitmap.new(100,32)
  5879.       @type_name.bitmap.font.size = 18
  5880.       @type_name.bitmap.font.bold = true
  5881.       @type_name.opacity = 0
  5882.       refresh_type_name
  5883.   end
  5884.   
  5885.   #--------------------------------------------------------------------------
  5886.   # ● Refresh Type Name
  5887.   #--------------------------------------------------------------------------   
  5888.   def refresh_type_name
  5889.      @type_name.bitmap.clear
  5890.      return if !@scene_active
  5891.      stype_id = @actor.added_skill_types[@command_window.index]
  5892.      type_name = $data_system.skill_types[stype_id]
  5893.      @type_name.bitmap.draw_text(0,0,100,32,type_name,2)
  5894.   end
  5895.   
  5896. end

  5897. #==============================================================================
  5898. # ■ Scene_Skill
  5899. #==============================================================================
  5900. class Scene_Skill
  5901.   
  5902.   #--------------------------------------------------------------------------
  5903.   # ● Execute Dispose
  5904.   #--------------------------------------------------------------------------        
  5905.   def execute_dispose
  5906.       Graphics.freeze
  5907.       dispose_background
  5908.       dispose_layout
  5909.       dispose_list_layout
  5910.       dispose_particles
  5911.       dispose_windows
  5912.       dispose_members_status
  5913.       dispose_type_name
  5914.   end
  5915.   
  5916.   #--------------------------------------------------------------------------
  5917.   # ● Dispose Background
  5918.   #--------------------------------------------------------------------------  
  5919.   def dispose_background
  5920.       return if @background == nil
  5921.       @background.dispose
  5922.       @background = nil
  5923.   end
  5924.    
  5925.   
  5926.   #--------------------------------------------------------------------------
  5927.   # ● Dispose Layout
  5928.   #--------------------------------------------------------------------------               
  5929.   def dispose_layout
  5930.       return if @layout == nil
  5931.       @layout.dispose
  5932.       @layout = nil
  5933.   end  
  5934.   
  5935. #--------------------------------------------------------------------------
  5936. # ● Dispose Particles
  5937. #--------------------------------------------------------------------------   
  5938. def dispose_particles
  5939.      return if @particles_sprite == nil
  5940.      @particles_sprite.each {|sprite| sprite.dispose }
  5941. end   
  5942.   
  5943. #--------------------------------------------------------------------------
  5944. # ● Dispose Window
  5945. #--------------------------------------------------------------------------     
  5946. def dispose_windows
  5947.      return if @command_window == nil
  5948.      @skill_window.each {|sprite| sprite.dispose }
  5949.      @command_window.dispose
  5950.      @actor_window.dispose
  5951.      @help_window.dispose
  5952. end
  5953.    
  5954. #--------------------------------------------------------------------------
  5955. # ● Dispose List Layout
  5956. #--------------------------------------------------------------------------      
  5957. def dispose_list_layout
  5958.      return if @list_layout == nil
  5959.      @list_layout.dispose
  5960.      @type_layout.dispose
  5961.      @list_layout = nil
  5962. end
  5963.      
  5964.   #--------------------------------------------------------------------------
  5965.   # ● Dispose Members Status
  5966.   #--------------------------------------------------------------------------            
  5967.   def dispose_members_status
  5968.       return if @members_status == nil
  5969.       @actor_status.dispose
  5970.       @actor_skill_status.dispose
  5971.       @members_status.each {|sprite| sprite.dispose }
  5972.   end   
  5973.   
  5974.   #--------------------------------------------------------------------------
  5975.   # ● Dispose Type Name
  5976.   #--------------------------------------------------------------------------   
  5977.   def dispose_type_name
  5978.       @type_name.bitmap.dispose
  5979.       @type_name.dispose
  5980.   end  
  5981.   
  5982. end

  5983. #==============================================================================
  5984. # ■ Scene Skill
  5985. #==============================================================================
  5986. class Scene_Skill
  5987.   
  5988.   #--------------------------------------------------------------------------
  5989.   # ● Update Sprites
  5990.   #--------------------------------------------------------------------------         
  5991.   def update_sprites   
  5992.       update_background
  5993.       update_particles     
  5994.       update_actor_status
  5995.       update_slide_item
  5996.       update_members_status
  5997.       update_windows
  5998.   end

  5999.   #--------------------------------------------------------------------------
  6000.   # ● Update Background
  6001.   #--------------------------------------------------------------------------              
  6002.   def update_background
  6003.       return if @background == nil
  6004.       @background.ox += @background_scroll[0]
  6005.       @background.oy += @background_scroll[1]
  6006.   end   
  6007.   
  6008.   #--------------------------------------------------------------------------
  6009.   # ● Update Particles
  6010.   #--------------------------------------------------------------------------  
  6011.   def update_particles
  6012.       return if @particles_sprite == nil
  6013.       @particles_sprite.each {|sprite| sprite.update }
  6014.   end
  6015.   
  6016.   #--------------------------------------------------------------------------
  6017.   # ● Update Windows
  6018.   #--------------------------------------------------------------------------   
  6019.   def update_windows
  6020.       @press_lag -= 1 if @press_lag > 0
  6021.       return if @command_window == nil
  6022.       for skw in @skill_window
  6023.           skw.update unless @press_lag > 0
  6024.           if skw.windows_index == @command_window.index
  6025.              skw.active = true
  6026.              if @phase == 0
  6027.                 skw.index = 0 if skw.index < 0 or skw.index >= skw.item_max
  6028.              end   
  6029.              skw.visible = true
  6030.           else   
  6031.              skw.visible = false
  6032.              skw.active = false
  6033.           end  
  6034.       end
  6035.       #@skill_window[@command_window.index].update
  6036.       @command_window.update   
  6037.       @actor_window.update
  6038.       update_actor_window_slide
  6039.       update_skill_list_slide
  6040.   end
  6041.   
  6042.   #--------------------------------------------------------------------------
  6043.   # ● Update Skill List Slide
  6044.   #--------------------------------------------------------------------------      
  6045.   def update_skill_list_slide
  6046.       return if @phase == 999
  6047.       if @actor_window.active or !@command_window.active
  6048.          if @command_window.x > @skill_list_slide_range[1]
  6049.             @command_window.x -= 15
  6050.             @command_window.x = @skill_list_slide_range[1] if @command_window.x < @skill_list_slide_range[1]
  6051.          end  
  6052.       else
  6053.          if @command_window.x < @skill_list_slide_range[0]
  6054.             @command_window.x += 15
  6055.             @command_window.x = @skill_list_slide_range[0] if @command_window.x > @skill_list_slide_range[0]
  6056.          end         
  6057.       end  
  6058.       @type_layout.x = @command_window.x
  6059.   end
  6060.       
  6061.   #--------------------------------------------------------------------------
  6062.   # ● Update Actor Window Slide
  6063.   #--------------------------------------------------------------------------  
  6064.   def update_actor_window_slide
  6065.       if @actor_window.active
  6066.          if @actor_window.x < @actor_window_slide_range[0]
  6067.             @actor_window.x += 15
  6068.             @actor_window.contents_opacity += 23
  6069.             if @actor_window.x >= @actor_window_slide_range[0]
  6070.                @actor_window.x = @actor_window_slide_range[0]
  6071.                @actor_window.contents_opacity = 255
  6072.             end  
  6073.          end  
  6074.       else         
  6075.          if @actor_window.x >= @actor_window_slide_range[1]
  6076.             @actor_window.x -= 15
  6077.             @actor_window.contents_opacity -= 3
  6078.             if @actor_window.x <= @actor_window_slide_range[1]
  6079.                @actor_window.x = @actor_window_slide_range[1]
  6080.                @actor_window.contents_opacity = 0
  6081.             end         
  6082.          end
  6083.       end
  6084.   end   
  6085.   
  6086.   #--------------------------------------------------------------------------
  6087.   # ● Update Actor Status
  6088.   #--------------------------------------------------------------------------               
  6089.   def update_actor_status
  6090.       refresh_actor_status(true) if @actor_window_index_old != @actor_window.index
  6091.   end  
  6092.    
  6093.   #--------------------------------------------------------------------------
  6094.   # ● Refresh Actor Status
  6095.   #--------------------------------------------------------------------------               
  6096.   def refresh_actor_status(reset = false)
  6097. #      @actor = $game_party.members[@actor_window.index]
  6098. #      @actor_window_index_old = @actor_window.index
  6099.   end  
  6100.   
  6101.   #--------------------------------------------------------------------------
  6102.   # ● Update Slide Item
  6103.   #--------------------------------------------------------------------------  
  6104.   def update_slide_item
  6105.       if @phase == 0
  6106.          @command_window.contents_opacity += 10
  6107.       else   
  6108.          @command_window.contents_opacity -= 10 if @command_window.contents_opacity > 160
  6109.       end  
  6110.       @type_layout.opacity = @command_window.contents_opacity
  6111.       @type_name.opacity = @skill_window[@command_window.index].contents_opacity
  6112.       if @phase == 1
  6113.          @skill_window[@command_window.index].contents_opacity += 5
  6114.          @list_layout.opacity += 5
  6115.       else   
  6116.          @skill_window[@command_window.index].contents_opacity -= 10 if @skill_window[@command_window.index].contents_opacity > 165
  6117.          @list_layout.opacity -= 10 if @list_layout.opacity > 160
  6118.       end  
  6119.       if @skill_window[@command_window.index].x > @item_slide_range[0]
  6120.          @skill_window[@command_window.index].x -= 3
  6121.          @list_layout.x -= 3
  6122.          if @skill_window[@command_window.index].x <= @item_slide_range[0]
  6123.             @skill_window[@command_window.index].x = @item_slide_range[0]
  6124.             @list_layout.x = @list_layout_slide_range[0]
  6125.          end  
  6126.       end  
  6127.   end   
  6128.   
  6129.   #--------------------------------------------------------------------------
  6130.   # ● Update Members Status
  6131.   #--------------------------------------------------------------------------            
  6132.   def update_members_status
  6133.       for members in @members_status
  6134.           members.update(@actor_window.active,@actor_window.index)
  6135.           @actor_2 = members.actor if members.current_actor
  6136.       end  
  6137.       @actor_2 = @actor if @actor_2 == nil
  6138.       @actor_skill_status.update
  6139.       @actor_status.update(@actor_window.active,@actor_2)
  6140.       #@members_status.each {|sprite| sprite.update(@actor_window.active,@actor_window.index) }
  6141.   end  
  6142.   
  6143. end

  6144. #==============================================================================
  6145. # ■ Scene_Skill
  6146. #==============================================================================
  6147. class Scene_Skill
  6148.   
  6149.   #--------------------------------------------------------------------------
  6150.   # ● Update
  6151.   #--------------------------------------------------------------------------      
  6152.   def update
  6153.       unless @skill_window[@command_window.index].index < 0
  6154.           @item_pre_index = @skill_window[@command_window.index].index
  6155.       end   
  6156.       update_command
  6157.       update_sprites
  6158.   end
  6159.    
  6160.   #--------------------------------------------------------------------------
  6161.   # ● Show Sub Window
  6162.   #--------------------------------------------------------------------------
  6163.   def show_sub_window(window)
  6164.       window.show.activate
  6165.   end
  6166.   #--------------------------------------------------------------------------
  6167.   # ● Hide Sub Window
  6168.   #--------------------------------------------------------------------------
  6169.   def hide_sub_window(window)
  6170.       window.hide.deactivate
  6171.       activate_item_window     
  6172.   end
  6173.   
  6174.   #--------------------------------------------------------------------------
  6175.   # ● Determine Item
  6176.   #--------------------------------------------------------------------------
  6177.   def determine_item
  6178.       if item.for_friend?         
  6179.          @phase = 2
  6180.          show_sub_window(@actor_window)
  6181.          @actor_window.select_for_item(item)   
  6182.          $game_temp.item_scope = @skill_window[@command_window.index].item.scope rescue nil
  6183.       else
  6184.          use_item
  6185.          activate_item_window
  6186.       end
  6187.   end  
  6188.   
  6189.   #--------------------------------------------------------------------------
  6190.   # ● ON Item OK
  6191.   #--------------------------------------------------------------------------
  6192.   def on_item_ok
  6193.       return if @press_time > 1
  6194.       @actor.last_skill.object = item
  6195.       determine_item
  6196.   end
  6197.   
  6198.   #--------------------------------------------------------------------------
  6199.   # ● Item
  6200.   #--------------------------------------------------------------------------
  6201.   def item
  6202.     @skill_window[@command_window.index].item
  6203.   end  
  6204.   
  6205.   #--------------------------------------------------------------------------
  6206.   # ● Use Item
  6207.   #--------------------------------------------------------------------------
  6208.   def use_item
  6209.       super
  6210.       @skill_window[@command_window.index].refresh if can_refresh_item_window?
  6211.   end  
  6212.   
  6213.   #--------------------------------------------------------------------------
  6214.   # ● Activate Item Window
  6215.   #--------------------------------------------------------------------------
  6216.   def activate_item_window   
  6217.     @skill_window[@command_window.index].refresh if can_refresh_item_window?
  6218.     @skill_window[@command_window.index].activate
  6219.   end  
  6220.   
  6221.   #--------------------------------------------------------------------------
  6222.   # ● On Item Cancel
  6223.   #--------------------------------------------------------------------------
  6224.   def on_item_cancel
  6225.       @skill_window[@command_window.index].unselect
  6226.       @command_window.activate
  6227.   end  
  6228.   
  6229.   #--------------------------------------------------------------------------
  6230.   # ● Can Refresh Item Window
  6231.   #--------------------------------------------------------------------------  
  6232.   def can_refresh_item_window?
  6233.       return true if @actor.mp < @skill_window[@command_window.index].item.mp_cost
  6234.       return true if @actor.tp < @skill_window[@command_window.index].item.tp_cost
  6235.       return false
  6236.   end
  6237.       
  6238. end

  6239. #==============================================================================
  6240. # ■ Scene_Item
  6241. #==============================================================================
  6242. class Scene_Skill
  6243.   
  6244.   #--------------------------------------------------------------------------
  6245.   # ● Update Command
  6246.   #--------------------------------------------------------------------------      
  6247.   def update_command
  6248.       @skill_window[@command_window.index].index = @item_pre_index        
  6249.       if @phase == 0
  6250.          update_main_command
  6251.       elsif @phase == 1
  6252.          update_item_window
  6253.       elsif @phase == 2        
  6254.          update_target_window
  6255.       end        
  6256.       update_active
  6257.   end

  6258.   #--------------------------------------------------------------------------
  6259.   # ● Command Skill
  6260.   #--------------------------------------------------------------------------
  6261.   def command_skill
  6262.       @skill_window[@command_window.index].activate
  6263.       @skill_window[@command_window.index].select_last
  6264.    # @item_window.activate
  6265.    # @item_window.select_last
  6266.   end  
  6267.   
  6268.   #--------------------------------------------------------------------------
  6269.   # ● Update Active
  6270.   #--------------------------------------------------------------------------      
  6271.   def update_active
  6272.       if @phase == 0
  6273.          @skill_window[@command_window.index].active = false
  6274.          @command_window.active = true
  6275.          @actor_window.active = false
  6276.       elsif @phase == 1
  6277.          @skill_window[@command_window.index].active = true
  6278.          @command_window.active = false
  6279.          @actor_window.active = false
  6280.       elsif @phase == 2
  6281.          @skill_window[@command_window.index].active = false
  6282.          @command_window.active = false
  6283.          @actor_window.active = true
  6284.       end
  6285.   end
  6286.   
  6287.   #--------------------------------------------------------------------------
  6288.   # ● Update Main Command
  6289.   #--------------------------------------------------------------------------        
  6290.   def update_main_command
  6291.       reset_item_index
  6292.       if Input.trigger?(:C) and @scene_active
  6293.          Sound.play_ok
  6294.          @phase = 1
  6295.          @press_time = 2
  6296.          @press_lag = 2
  6297.          @skill_window[@command_window.index].index = 0 if @skill_window[@command_window.index].index == -1
  6298.       elsif Input.trigger?(:B)
  6299.          return_scene
  6300.       end  
  6301.   end
  6302.   
  6303.   #--------------------------------------------------------------------------
  6304.   # ● Return Scene
  6305.   #--------------------------------------------------------------------------         
  6306.   def return_scene
  6307.       Sound.play_cancel
  6308.       SceneManager.return
  6309.     end

  6310.   #--------------------------------------------------------------------------
  6311.   # ● ON Actor Charge
  6312.   #--------------------------------------------------------------------------
  6313.   def on_actor_change
  6314.       @phase = 999
  6315.       $game_temp.actor_menu_temp = @actor
  6316.       SceneManager.goto(Scene_Skill)
  6317.   end
  6318.   
  6319.   #--------------------------------------------------------------------------
  6320.   # ● Reset Item Index
  6321.   #--------------------------------------------------------------------------            
  6322.   def reset_item_index
  6323.        return if @old_command_index == @command_window.index
  6324.        return if @command_window.index == -1
  6325.        @old_command_index = @command_window.index
  6326.        refresh_type_name
  6327.        reset_item_position
  6328.   end  
  6329.   
  6330.   #--------------------------------------------------------------------------
  6331.   # ● Reset Item Position
  6332.   #--------------------------------------------------------------------------              
  6333.   def reset_item_position
  6334.       @skill_window[@command_window.index].x = @item_slide_range[1]
  6335.       @skill_window[@command_window.index].contents_opacity = 160
  6336.       @list_layout.x = @list_layout_slide_range[1]
  6337.       @list_layout.opacity = 160
  6338.   end  
  6339.   
  6340. end

  6341. #==============================================================================
  6342. # ■ Scene_Skill
  6343. #==============================================================================
  6344. class Scene_Skill
  6345.   
  6346.   #--------------------------------------------------------------------------
  6347.   # ● Update Item Window
  6348.   #--------------------------------------------------------------------------               
  6349.   def update_item_window
  6350.       @press_time -= 1 if @press_time > 0
  6351.       update_item_command
  6352.       update_index_type
  6353.   end
  6354.   
  6355.   #--------------------------------------------------------------------------
  6356.   # ● Update Main Command
  6357.   #--------------------------------------------------------------------------        
  6358.   def update_item_command
  6359.       if Input.trigger?(:B)
  6360.          @phase = 0
  6361.          Sound.play_cancel
  6362.       end  
  6363.   end  
  6364.   
  6365.   #--------------------------------------------------------------------------
  6366.   # ● Update
  6367.   #--------------------------------------------------------------------------  
  6368.   def update_index_type
  6369.       return if @index_max <= 0
  6370.       return if @command_window == nil
  6371.       if Input.trigger?(:RIGHT)
  6372.          add_index(1)
  6373.       elsif Input.trigger?(:LEFT)   
  6374.          add_index(-1)
  6375.       end  
  6376.   end
  6377.   
  6378.   #--------------------------------------------------------------------------
  6379.   # ● Add Index
  6380.   #--------------------------------------------------------------------------   
  6381.   def add_index(value)
  6382.       Sound.play_cursor      
  6383.       @command_window.index += value
  6384.       @command_window.index = 0 if @command_window.index > @index_max
  6385.       @command_window.index = @index_max if @command_window.index < 0
  6386.       reset_item_index
  6387.   end   
  6388.   
  6389. end

  6390. #==============================================================================
  6391. # ■ Scene_Skill
  6392. #==============================================================================
  6393. class Scene_Skill
  6394.   
  6395.   #--------------------------------------------------------------------------
  6396.   # ● Update Item Window
  6397.   #--------------------------------------------------------------------------               
  6398.   def update_target_window
  6399.       update_target_command
  6400.   end
  6401.   
  6402.   #--------------------------------------------------------------------------
  6403.   # ● Update Main Command
  6404.   #--------------------------------------------------------------------------        
  6405.   def update_target_command
  6406.       if Input.trigger?(:B)
  6407.          @phase = 1
  6408.          @skill_window[@command_window.index].index = @item_pre_index
  6409.        end  
  6410.   end  
  6411.   
  6412. end


  6413. #==============================================================================
  6414. # ■ Game_Temp
  6415. #==============================================================================
  6416. class Game_Temp
  6417.   
  6418.   #--------------------------------------------------------------------------
  6419.   # ● Execute Pre Cache Skill Menu
  6420.   #--------------------------------------------------------------------------   
  6421.   def execute_pre_cache_equip_menu
  6422.       @pre_cache_equip_menu = []
  6423.       @pre_cache_equip_menu.push(Cache.menu_equip("Background"))
  6424.       @pre_cache_equip_menu.push(Cache.menu_equip("Layout_U"))
  6425.       @pre_cache_equip_menu.push(Cache.menu_equip("Layout_R"))
  6426.       @pre_cache_equip_menu.push(Cache.menu_equip("Layout_D"))
  6427.       @pre_cache_equip_menu.push(Cache.menu_equip("Layout_L"))
  6428.       @pre_cache_equip_menu.push(Cache.menu_equip("Par_Number"))
  6429.   end   
  6430.    
  6431. end

  6432. #==============================================================================
  6433. # ■ Scene_Skill
  6434. #==============================================================================
  6435. class Scene_Equip
  6436.   include MOG_MENU_EQUIP
  6437.   include MOG_MENU_BASE
  6438.   
  6439.   #--------------------------------------------------------------------------
  6440.   # ● Main
  6441.   #--------------------------------------------------------------------------        
  6442.   def main
  6443.       execute_setup
  6444.       execute_loop
  6445.       execute_dispose
  6446.   end  
  6447.   
  6448.   #--------------------------------------------------------------------------
  6449.   # ● Execute Setup
  6450.   #--------------------------------------------------------------------------        
  6451.   def execute_setup
  6452.       @actor = $game_temp.actor_menu_temp
  6453.       @actor_old = @actor
  6454.       @phase = 0
  6455.       create_sprites
  6456.   end
  6457.   
  6458.   #--------------------------------------------------------------------------
  6459.   # ● Execute Lopp
  6460.   #--------------------------------------------------------------------------        
  6461.   def execute_loop
  6462.       Graphics.transition(10)
  6463.       loop do
  6464.          Input.update
  6465.          update
  6466.          Graphics.update
  6467.          break if SceneManager.scene != self
  6468.       end
  6469.   end
  6470.   
  6471. end

  6472. #==============================================================================
  6473. # ■ Window_EquipStatus
  6474. #==============================================================================
  6475. class Window_EquipStatus < Window_Base
  6476.   
  6477.   #--------------------------------------------------------------------------
  6478.   # ● Initializee
  6479.   #--------------------------------------------------------------------------
  6480.   def initialize(x, y)
  6481.       super(x, y, window_width, window_height)
  6482.       @actor = nil
  6483.       @temp_actor = nil
  6484.       self.visible = false
  6485.   end
  6486.   
  6487.   #--------------------------------------------------------------------------
  6488.   # ● Window Width
  6489.   #--------------------------------------------------------------------------
  6490.   def window_width
  6491.       return 208
  6492.   end

  6493.   #--------------------------------------------------------------------------
  6494.   # ● Window Height
  6495.   #--------------------------------------------------------------------------
  6496.   def window_height
  6497.       return 296
  6498.   end

  6499.   #--------------------------------------------------------------------------
  6500.   # ● Visible Line Number
  6501.   #--------------------------------------------------------------------------
  6502.   def visible_line_number
  6503.       return 1
  6504.   end
  6505.   #--------------------------------------------------------------------------
  6506.   # ● Actor
  6507.   #--------------------------------------------------------------------------
  6508.   def actor=(actor)
  6509.       return if @actor == actor
  6510.       @actor = actor
  6511.   end

  6512.   #--------------------------------------------------------------------------
  6513.   # ● Refresh
  6514.   #--------------------------------------------------------------------------
  6515.   def refresh
  6516.       contents.clear
  6517.   end

  6518.   #--------------------------------------------------------------------------
  6519.   # ● Set Temp Actor
  6520.   #--------------------------------------------------------------------------
  6521.   def set_temp_actor(temp_actor)
  6522.       return if @temp_actor == temp_actor
  6523.       @temp_actor = temp_actor
  6524.       $game_temp.temp_actor_equip = @temp_actor
  6525.   end

  6526. end

  6527. #==============================================================================
  6528. # ■ Window_EquipCommand
  6529. #==============================================================================
  6530. class Window_EquipCommand < Window_HorzCommand

  6531.   #--------------------------------------------------------------------------
  6532.   # ● Initialize
  6533.   #--------------------------------------------------------------------------
  6534.   def initialize(x, y, width)
  6535.       @window_width = width
  6536.       super(x, y)
  6537.   end
  6538.   
  6539.   #--------------------------------------------------------------------------
  6540.   # ● Window Width
  6541.   #--------------------------------------------------------------------------
  6542.   def window_width
  6543.       @window_width
  6544.   end

  6545.   #--------------------------------------------------------------------------
  6546.   # ● Col Max
  6547.   #--------------------------------------------------------------------------
  6548.   def col_max
  6549.       return 3
  6550.   end

  6551.   #--------------------------------------------------------------------------
  6552.   # ● Make Command List
  6553.   #--------------------------------------------------------------------------
  6554.   def make_command_list
  6555.       add_command(Vocab::equip2,   :equip)
  6556.       add_command(Vocab::optimize, :optimize)
  6557.       add_command(Vocab::clear,    :clear)
  6558.   end
  6559.   
  6560.   #--------------------------------------------------------------------------
  6561.   # ● Draw Item
  6562.   #--------------------------------------------------------------------------  
  6563.   def draw_item(index)
  6564.   end  
  6565.   
  6566. end

  6567. #==============================================================================
  6568. # ■ Window_EquipSlot
  6569. #==============================================================================
  6570. class Window_EquipSlot < Window_Selectable

  6571.   attr_reader   :status_window        
  6572.   attr_reader   :item_window

  6573.   include MOG_MENU_EQUIP
  6574.   
  6575.   #--------------------------------------------------------------------------
  6576.   # ● Set Equip Font
  6577.   #--------------------------------------------------------------------------         
  6578.   def set_font_equip
  6579.       return if self.disposed?
  6580.       return if self.contents == nil
  6581.       self.contents.font.size = FONT_SIZE
  6582.       self.contents.font.bold = FONT_BOLD
  6583.   end  
  6584.   
  6585.   #--------------------------------------------------------------------------
  6586.   # ● Initialize
  6587.   #--------------------------------------------------------------------------
  6588.   def initialize(x, y, width)
  6589.       super(x, y, width, window_height)
  6590.       @actor = nil   
  6591.       refresh
  6592.   end

  6593.   #--------------------------------------------------------------------------
  6594.   # ● Window Height
  6595.   #--------------------------------------------------------------------------
  6596.   def window_height
  6597.       fitting_height(visible_line_number)
  6598.   end
  6599.   
  6600.   #--------------------------------------------------------------------------
  6601.   # ● Visible Line Number
  6602.   #--------------------------------------------------------------------------
  6603.   def visible_line_number
  6604.       return 5
  6605.   end
  6606.   
  6607.   #--------------------------------------------------------------------------
  6608.   # ● Actor
  6609.   #--------------------------------------------------------------------------
  6610.   def actor=(actor)
  6611.       return if @actor == actor
  6612.       @actor = actor
  6613.       refresh
  6614.   end
  6615.   
  6616.   #--------------------------------------------------------------------------
  6617.   # ● Update
  6618.   #--------------------------------------------------------------------------
  6619.   def update
  6620.       super
  6621.       @item_window.slot_id = index if @item_window
  6622.   end
  6623.   
  6624.   #--------------------------------------------------------------------------
  6625.   # ● Item Max
  6626.   #--------------------------------------------------------------------------
  6627.   def item_max
  6628.       @actor ? @actor.equip_slots.size : 0
  6629.   end

  6630.   #--------------------------------------------------------------------------
  6631.   # ● Item
  6632.   #--------------------------------------------------------------------------
  6633.   def item
  6634.       @actor ? @actor.equips[index] : nil
  6635.   end

  6636.   #--------------------------------------------------------------------------
  6637.   # ● Draw Item
  6638.   #--------------------------------------------------------------------------
  6639.   def draw_item(index)
  6640.       return unless @actor
  6641.       rect = item_rect_for_text(index)
  6642.       change_color(system_color, enable?(index))
  6643.       set_font_equip
  6644.       draw_item_name(@actor.equips[index], rect.x + 92, rect.y, enable?(index))
  6645.   end
  6646.   
  6647.   #--------------------------------------------------------------------------
  6648.   # ● Slot Name
  6649.   #--------------------------------------------------------------------------
  6650.   def slot_name(index)
  6651.       @actor ? Vocab::etype(@actor.equip_slots[index]) : ""
  6652.   end

  6653.   #--------------------------------------------------------------------------
  6654.   # ● Enable
  6655.   #--------------------------------------------------------------------------
  6656.   def enable?(index)
  6657.       @actor ? @actor.equip_change_ok?(index) : false
  6658.   end
  6659.   
  6660.   #--------------------------------------------------------------------------
  6661.   # ● Current Item Enabled
  6662.   #--------------------------------------------------------------------------
  6663.   def current_item_enabled?
  6664.     enable?(index)
  6665.   end
  6666.   
  6667.   #--------------------------------------------------------------------------
  6668.   # ● Status  Window
  6669.   #--------------------------------------------------------------------------
  6670.   def status_window=(status_window)
  6671.       @status_window = status_window
  6672.       call_update_help
  6673.   end

  6674.   #--------------------------------------------------------------------------
  6675.   # ● Item Window
  6676.   #--------------------------------------------------------------------------
  6677.   def item_window=(item_window)
  6678.       @item_window = item_window
  6679.       update
  6680.   end
  6681.   
  6682.   #--------------------------------------------------------------------------
  6683.   # ● Update Help
  6684.   #--------------------------------------------------------------------------
  6685.   def update_help
  6686.       super
  6687.       @help_window.set_item(item) if @help_window
  6688.       $game_temp.temp_actor_equip = nil if @status_window
  6689.   end
  6690.   
  6691. end

  6692. #==============================================================================
  6693. # ■ Window_EquipItem
  6694. #==============================================================================
  6695. class Window_EquipItem_Menu < Window_ItemList
  6696.   
  6697.   attr_reader   :status_window   
  6698.   attr_accessor :windows_index
  6699.   
  6700.   include MOG_MENU_EQUIP
  6701.   
  6702.   #--------------------------------------------------------------------------
  6703.   # ● Set Equip Font
  6704.   #--------------------------------------------------------------------------         
  6705.   def set_font_equip
  6706.       return if self.disposed?
  6707.       return if self.contents == nil
  6708.       self.contents.font.size = FONT_SIZE
  6709.       self.contents.font.bold = FONT_BOLD
  6710.   end  
  6711.   
  6712.   #--------------------------------------------------------------------------
  6713.   # ● Initialize
  6714.   #--------------------------------------------------------------------------
  6715.   def initialize(x, y, width, height)
  6716.       super
  6717.       @actor = nil
  6718.       @slot_id = 0
  6719.       @windows_index = 0
  6720.       self.visible = false
  6721.       self.opacity = 0
  6722.   end
  6723.   
  6724.   #--------------------------------------------------------------------------
  6725.   # ● Col Max
  6726.   #--------------------------------------------------------------------------
  6727.   def col_max
  6728.       return 1
  6729.   end  
  6730.   
  6731.   #--------------------------------------------------------------------------
  6732.   # ● Actor
  6733.   #--------------------------------------------------------------------------
  6734.   def actor=(actor)
  6735.       return if @actor == actor
  6736.       @actor = actor
  6737.       self.oy = 0
  6738.   end

  6739.   #--------------------------------------------------------------------------
  6740.   # ● Setup
  6741.   #--------------------------------------------------------------------------  
  6742.   def setup(actor,equip_type,index)
  6743.       @actor = actor
  6744.       @slot_id = equip_type
  6745.       @windows_index = index      
  6746.       refresh
  6747.   end  
  6748.   
  6749.   #--------------------------------------------------------------------------
  6750.   # ● Slot ID
  6751.   #--------------------------------------------------------------------------
  6752.   def slot_id=(slot_id)
  6753.   end
  6754.   
  6755.   #--------------------------------------------------------------------------
  6756.   # ● Include?
  6757.   #--------------------------------------------------------------------------
  6758.   def include?(item)
  6759.       return true if item == nil
  6760.       return false unless item.is_a?(RPG::EquipItem)
  6761.       return false if @slot_id < 0
  6762.       return false if item.etype_id != @actor.equip_slots[@slot_id]
  6763.       return @actor.equippable?(item)
  6764.   end

  6765.   #--------------------------------------------------------------------------
  6766.   # ● Enable?
  6767.   #--------------------------------------------------------------------------
  6768.   def enable?(item)
  6769.       return true
  6770.   end
  6771.   
  6772.   #--------------------------------------------------------------------------
  6773.   # ● Select Last
  6774.   #--------------------------------------------------------------------------
  6775.   def select_last
  6776.   end
  6777.   
  6778.   #--------------------------------------------------------------------------
  6779.   # ● Status Window
  6780.   #--------------------------------------------------------------------------
  6781.   def status_window=(status_window)
  6782.       @status_window = status_window
  6783.       call_update_help
  6784.   end
  6785.   
  6786.   #--------------------------------------------------------------------------
  6787.   # ● Update Help
  6788.   #--------------------------------------------------------------------------
  6789.   def update_help
  6790.       super
  6791.       if @actor && @status_window
  6792.          temp_actor = Marshal.load(Marshal.dump(@actor))
  6793.          temp_actor.force_change_equip(@slot_id, item)
  6794.          $game_temp.temp_actor_equip = temp_actor
  6795.       end
  6796.   end
  6797.    
  6798.   #--------------------------------------------------------------------------
  6799.   # ● Draw Item
  6800.   #--------------------------------------------------------------------------
  6801.   def draw_item(index)
  6802.       item = @data[index]
  6803.       if item
  6804.           set_font_equip
  6805.           rect = item_rect(index)
  6806.           rect.width -= 4
  6807.           draw_item_name(item, rect.x, rect.y, enable?(item))
  6808.           draw_item_number(rect, item)
  6809.       end
  6810.   end      
  6811.   
  6812.   #--------------------------------------------------------------------------
  6813.   # ● Draw Item Number
  6814.   #--------------------------------------------------------------------------
  6815.   def draw_item_number(rect, item)
  6816.       draw_text(rect, sprintf(": %2d", $game_party.item_number(item)), 2)
  6817.   end  
  6818.   
  6819. end

  6820. #==============================================================================
  6821. # ■ Actor Menu Status
  6822. #==============================================================================
  6823. class Actor_Equip_Status
  6824.   
  6825.   include MOG_EQUIP_STATUS  
  6826.   
  6827.   #--------------------------------------------------------------------------
  6828.   # ● Initialize
  6829.   #--------------------------------------------------------------------------
  6830.   def initialize(actor)
  6831.       @actor = actor
  6832.       @actor_old = @actor
  6833.       $game_temp.temp_actor_equip = nil
  6834.       @old_temp_actor = $game_temp.temp_actor_equip
  6835.       set_old_parameter
  6836.       create_sprites
  6837.   end

  6838.   #--------------------------------------------------------------------------
  6839.   # ● Create Sprites
  6840.   #--------------------------------------------------------------------------  
  6841.   def create_sprites
  6842.       @parameter_number = $game_temp.pre_cache_equip_menu[5]
  6843.       @parameter_cw = @parameter_number.width / 11
  6844.       @parameter_ch = @parameter_number.height / 3
  6845.       create_layout
  6846.       create_face
  6847.       create_parameter
  6848.       create_name
  6849.   end
  6850.   
  6851.   #--------------------------------------------------------------------------
  6852.   # ● Dispose
  6853.   #--------------------------------------------------------------------------  
  6854.   def dispose
  6855.       dispose_layout
  6856.       dispose_face
  6857.       dispose_parameter
  6858.       dispose_name
  6859.   end

  6860.   #--------------------------------------------------------------------------
  6861.   # ● Dispose Layout
  6862.   #--------------------------------------------------------------------------   
  6863.   def dispose_layout
  6864.       @layout.dispose
  6865.   end
  6866.   
  6867.   #--------------------------------------------------------------------------
  6868.   # ● Dispose Face
  6869.   #--------------------------------------------------------------------------   
  6870.   def dispose_face
  6871.       @face.dispose
  6872.   end  
  6873.   
  6874.   #--------------------------------------------------------------------------
  6875.   # ● Dispose Parameter
  6876.   #--------------------------------------------------------------------------      
  6877.   def dispose_parameter
  6878.       @parameter.bitmap.dispose
  6879.       @parameter.dispose
  6880.   end

  6881.   #--------------------------------------------------------------------------
  6882.   # ● Dispose Name
  6883.   #--------------------------------------------------------------------------        
  6884.   def dispose_name
  6885.       @name.bitmap.dispose
  6886.       @name.dispose
  6887.   end
  6888.   
  6889.   #--------------------------------------------------------------------------
  6890.   # ● Create Layout
  6891.   #--------------------------------------------------------------------------
  6892.   def create_layout
  6893.       @layout = Sprite.new
  6894.       @layout.bitmap = $game_temp.pre_cache_equip_menu[4]
  6895.       @org_pos = [LAYOUT_POSITION[0],LAYOUT_POSITION[1]]
  6896.       @layout.x = @org_pos[0] - 150
  6897.       @layout.y = @org_pos[1]
  6898.       @layout.z = 10
  6899.       @layout.opacity = 0
  6900.       @slide_range = (@org_pos[0] - 150)
  6901.   end

  6902.   #--------------------------------------------------------------------------
  6903.   # ● Create Parameter
  6904.   #--------------------------------------------------------------------------
  6905.   def create_parameter
  6906.       @parameter = Sprite.new
  6907.       @parameter.bitmap = Bitmap.new(@layout.bitmap.width,@layout.bitmap.height)
  6908.       @org_pos_par = [@org_pos[0] + PAR_POSITION[0],
  6909.                       @org_pos[1] + PAR_POSITION[1]]
  6910.       @parameter.x = @org_pos_par[0] - 150
  6911.       @parameter.y = @org_pos_par[1]
  6912.       @parameter.z = 11
  6913.       @parameter.opacity = 0
  6914.       refresh_parameter
  6915.   end
  6916.   
  6917.   #--------------------------------------------------------------------------
  6918.   # ● Create Face
  6919.   #--------------------------------------------------------------------------  
  6920.   def create_face
  6921.       @face = Sprite.new
  6922.       @org_pos_face = [@org_pos[0] + FACE_POSITION[0],
  6923.                        @org_pos[1] + FACE_POSITION[1]]
  6924.       @face.x = @org_pos_face[0] - 150
  6925.       @face.y = @org_pos_face[1]
  6926.       @face.z = 11
  6927.       @face.opacity = 0
  6928.       refresh_face
  6929.   end
  6930.   
  6931.   #--------------------------------------------------------------------------
  6932.   # ● Create Name
  6933.   #--------------------------------------------------------------------------   
  6934.   def create_name
  6935.       @name = Sprite.new
  6936.       @name.bitmap = Bitmap.new(140,32)
  6937.       @name.bitmap.font.size = FONT_SIZE
  6938.       @name.bitmap.font.bold = FONT_BOLD
  6939.       @org_pos_name = [@org_pos[0] + NAME_POSITION[0],
  6940.                        @org_pos[1] + NAME_POSITION[1]]
  6941.       @name.x = @org_pos_name[0] - 150
  6942.       @name.y = @org_pos_name[1]
  6943.       @name.z = 11
  6944.       @name.opacity = 0
  6945.       refresh_name     
  6946.   end  
  6947.   
  6948.   #--------------------------------------------------------------------------
  6949.   # ● Set Old Parameter
  6950.   #--------------------------------------------------------------------------  
  6951.   def set_old_parameter
  6952.       @par = [] if @par == nil
  6953.       @par.clear
  6954.       @par = [
  6955.       @actor.param(0),@actor.param(1),@actor.param(2),@actor.param(3),
  6956.       @actor.param(4),@actor.param(5),@actor.param(6),@actor.param(7),
  6957.       @old_temp_actor
  6958.       ]
  6959.   end   
  6960.   
  6961.   #--------------------------------------------------------------------------
  6962.   # ● Can Refresh Parameter
  6963.   #--------------------------------------------------------------------------
  6964.   def can_refresh_parameter?
  6965.       return true if @par[0] != @actor.param(0)
  6966.       return true if @par[1] != @actor.param(1)
  6967.       return true if @par[2] != @actor.param(2)
  6968.       return true if @par[3] != @actor.param(3)
  6969.       return true if @par[4] != @actor.param(4)
  6970.       return true if @par[5] != @actor.param(5)
  6971.       return true if @par[6] != @actor.param(6)
  6972.       return true if @par[7] != @actor.param(7)
  6973.       return true if @old_temp_actor != $game_temp.temp_actor_equip
  6974.       return false
  6975.   end  
  6976.   
  6977.   #--------------------------------------------------------------------------
  6978.   # ● Refresh Name
  6979.   #--------------------------------------------------------------------------      
  6980.   def refresh_name   
  6981.       @name.bitmap.clear
  6982.       @name.bitmap.draw_text(0,0,140,32,@actor.name.to_s,0)
  6983.   end
  6984.   
  6985.   #--------------------------------------------------------------------------
  6986.   # ● Create Face
  6987.   #--------------------------------------------------------------------------   
  6988.   def refresh_parameter
  6989.       set_old_parameter
  6990.       @parameter.bitmap.clear
  6991.       @old_temp_actor = $game_temp.temp_actor_equip
  6992.       x = 180      
  6993.       for p in 0...8
  6994.           y = 24 * p
  6995.           refresh_number(@parameter,@parameter_number,p,@parameter_cw,@parameter_ch,x,y,0)
  6996.       end      
  6997.       if $game_temp.temp_actor_equip != nil
  6998.          x = 180 - (@parameter_cw * 7)
  6999.          for p in 0...8
  7000.              y = 24 * p
  7001.              refresh_number(@parameter,@parameter_number,p,@parameter_cw,@parameter_ch,x,y,1)
  7002.          end     
  7003.      end
  7004.   end
  7005.    
  7006.   #--------------------------------------------------------------------------
  7007.   # ● Refresh Number
  7008.   #--------------------------------------------------------------------------     
  7009.   def refresh_number(sprite,image,p,number_cw,number_ch,x,y,type)
  7010.       value = @actor.param(p)
  7011.       new_value = 0
  7012.       ch = 0
  7013.       if type == 1         
  7014.          if $game_temp.temp_actor_equip != nil
  7015.             new_value = $game_temp.temp_actor_equip.param(p)
  7016.          end         
  7017.          d_value = new_value - value
  7018.          if d_value < 0
  7019.             ch = 2
  7020.          elsif d_value > 0
  7021.             ch = 1
  7022.          else
  7023.             ch = 0
  7024.          end   
  7025.          value = new_value
  7026.       end
  7027.       draw_arrow(sprite,image,number_cw,number_ch,x,y,ch)
  7028.       draw_number(sprite,image,value,number_cw,number_ch,x,y,ch)
  7029.   end
  7030.   
  7031.   #--------------------------------------------------------------------------
  7032.   # ● Draw Arrow
  7033.   #--------------------------------------------------------------------------        
  7034.   def draw_arrow(sprite,image,number_cw,number_ch,x,y,ch)
  7035.       nsrc_rect = Rect.new(number_cw * 10, number_ch * ch , number_cw , number_ch)
  7036.       sprite.bitmap.blt(x + number_cw, y, image, nsrc_rect)     
  7037.   end
  7038.   
  7039.   #--------------------------------------------------------------------------
  7040.   # ● Draw Number
  7041.   #--------------------------------------------------------------------------      
  7042.   def draw_number(sprite,image,value,number_cw,number_ch,x,y,ch)
  7043.       number = value.truncate.abs.to_s.split(//)
  7044.       x2 = -number_cw * number.size
  7045.       for i in 0..number.size  - 1
  7046.           number_abs = number[i].to_i
  7047.           nsrc_rect = Rect.new(number_cw * number_abs, number_ch * ch , number_cw , number_ch)
  7048.           sprite.bitmap.blt(x + x2 + (number_cw  *  i), y, image, nsrc_rect)        
  7049.       end      
  7050.   end
  7051.   
  7052.   #--------------------------------------------------------------------------
  7053.   # ● Refresh Face
  7054.   #--------------------------------------------------------------------------  
  7055.   def refresh_face
  7056.       face_name = "Face" + @actor.id.to_s
  7057.       @face.bitmap = Cache.menu(face_name.to_s)
  7058.   end
  7059.   
  7060.   #--------------------------------------------------------------------------
  7061.   # ● Update Move
  7062.   #--------------------------------------------------------------------------  
  7063.   def update_move
  7064.       update_slide(0,@layout,@layout.x,@org_pos[0])
  7065.       update_slide(1,@layout,@layout.y,@org_pos[1])      
  7066.       update_slide(0,@parameter,@parameter.x,@org_pos_par[0])
  7067.       update_slide(1,@parameter,@parameter.y,@org_pos_par[1])
  7068.       update_slide(0,@face,@face.x,@org_pos_face[0])
  7069.       update_slide(1,@face,@face.y,@org_pos_face[1])
  7070.       update_slide(0,@name,@name.x,@org_pos_name[0])
  7071.       update_slide(1,@name,@name.y,@org_pos_name[1])
  7072.   end

  7073. #--------------------------------------------------------------------------
  7074. # ● Update Slide
  7075. #--------------------------------------------------------------------------                       
  7076.   def update_slide(type,sprite,cp,np)
  7077.       sprite.opacity += 5
  7078.       sp = 3 + ((cp - np).abs / 10)
  7079.       if cp > np
  7080.          cp -= sp
  7081.          cp = np if cp < np
  7082.       elsif cp < np
  7083.          cp += sp
  7084.          cp = np if cp > np
  7085.       end     
  7086.       sprite.x = cp if type == 0
  7087.       sprite.y = cp if type == 1
  7088.   end      
  7089.   
  7090.   #--------------------------------------------------------------------------
  7091.   # ● Refresh All
  7092.   #--------------------------------------------------------------------------  
  7093.   def refresh_all(actor)      
  7094.       @actor = actor
  7095.       refresh_parameter
  7096.       refresh_face
  7097.       refresh_name
  7098.   end   
  7099.   
  7100.   #--------------------------------------------------------------------------
  7101.   # ● Update
  7102.   #--------------------------------------------------------------------------
  7103.   def update(actor)
  7104.       update_move
  7105.       refresh_all(actor) if actor != @actor
  7106.       refresh_parameter if can_refresh_parameter?
  7107.   end      
  7108.   
  7109. end

  7110. #==============================================================================
  7111. # ■ Scene_Equip
  7112. #==============================================================================
  7113. class Scene_Equip
  7114.   
  7115.   #--------------------------------------------------------------------------
  7116.   # ● Create Sprites
  7117.   #--------------------------------------------------------------------------
  7118.   def create_sprites
  7119.       create_menu_background
  7120.       create_layout
  7121.       create_particles
  7122.       create_help_window
  7123.       create_status_window
  7124.       create_command_window
  7125.       create_slot_window
  7126.       create_item_window
  7127.       create_actor_status
  7128.       set_sprite_position
  7129.   end
  7130.   
  7131.   #--------------------------------------------------------------------------
  7132.   # ● Set Sprite Position
  7133.   #--------------------------------------------------------------------------  
  7134.   def set_sprite_position
  7135.       @status_window.opacity = 0
  7136.       @command_window.opacity = 0
  7137.       @slot_window.opacity = 0
  7138.       @help_window.opacity = 0
  7139.       @status_window.contents_opacity = 0
  7140.       @command_window.contents_opacity = 0
  7141.       @slot_window.contents_opacity = 0
  7142.       @help_window.contents_opacity = 0      
  7143.       @layout2.opacity = 0
  7144.       @layout3.opacity = 0
  7145.       @layout4.opacity = 0
  7146.       @org_pos_help = [@help_window.x,@help_window.y]
  7147.       @help_window.x = @org_pos_help[0]
  7148.       @help_window.y = @org_pos_help[1] + 150     
  7149.       @org_pos_com = [@command_window.x,@command_window.y]
  7150.       @command_window.x = @org_pos_com[0]
  7151.       @command_window.y = @org_pos_com[1] - 150
  7152.       @org_pos_slot = [@slot_window.x,@slot_window.y]
  7153.       @slot_window.x = @org_pos_slot[0] + 150
  7154.       @slot_window.y = @org_pos_slot[1]      
  7155.       @layout2.y = -150
  7156.       @layout3.x = 150
  7157.       @layout4.y = 150      
  7158.   end
  7159.   
  7160.   #--------------------------------------------------------------------------
  7161.   # ● Create Actor Status
  7162.   #--------------------------------------------------------------------------  
  7163.   def create_actor_status
  7164.       @actor_status = Actor_Equip_Status.new(@actor)
  7165.   end  
  7166.   
  7167.   #--------------------------------------------------------------------------
  7168.   # ● Create Menu Background
  7169.   #--------------------------------------------------------------------------            
  7170.   def create_menu_background
  7171.       @background = Plane.new
  7172.       @background.bitmap = $game_temp.pre_cache_equip_menu[0]
  7173.       @background.z = 0
  7174.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  7175.   end   
  7176.   
  7177.   #--------------------------------------------------------------------------
  7178.   # ● Create Layout
  7179.   #--------------------------------------------------------------------------              
  7180.   def create_layout     
  7181.       @layout2 = Sprite.new
  7182.       @layout2.bitmap = $game_temp.pre_cache_equip_menu[1]
  7183.       @layout2.z = 3
  7184.       @layout3 = Sprite.new
  7185.       @layout3.bitmap = $game_temp.pre_cache_equip_menu[2]
  7186.       @layout3.z = 3
  7187.       @layout4 = Sprite.new
  7188.       @layout4.bitmap = $game_temp.pre_cache_equip_menu[3]
  7189.       @layout4.z = 3
  7190.   end  
  7191.   
  7192.   #--------------------------------------------------------------------------
  7193.   # ● Create Particles
  7194.   #--------------------------------------------------------------------------  
  7195.   def create_particles
  7196.       @particles_sprite =[]
  7197.       for i in 0...NUMBER_OF_PARTICLES
  7198.           @particles_sprite.push(Particles_Menu.new(nil))
  7199.       end
  7200.   end   
  7201.   
  7202.   #--------------------------------------------------------------------------
  7203.   # ● Create Help Window
  7204.   #--------------------------------------------------------------------------              
  7205.   def create_help_window
  7206.       @help_window = Window_Help.new
  7207.       @help_window.x = 0
  7208.       @help_window.y = Graphics.height - @help_window.height
  7209.   end     
  7210.   
  7211.   #--------------------------------------------------------------------------
  7212.   # ● Create Status Window
  7213.   #--------------------------------------------------------------------------
  7214.   def create_status_window
  7215.       @status_window = Window_EquipStatus.new(0, @help_window.height)
  7216.       @status_window.viewport = @viewport
  7217.       @status_window.actor = @actor
  7218.       @status_window.y = 48
  7219.   end

  7220.   #--------------------------------------------------------------------------
  7221.   # ● Create Command Window
  7222.   #--------------------------------------------------------------------------
  7223.   def create_command_window
  7224.       @command_window = Window_EquipCommand.new(208, 000, 336)
  7225.       @command_window.help_window = @help_window
  7226.       @command_window.set_handler(:equip,    method(:command_equip))
  7227.       @command_window.set_handler(:optimize, method(:command_optimize))
  7228.       @command_window.set_handler(:clear,    method(:command_clear))
  7229.       @command_window.set_handler(:cancel,   method(:return_scene))
  7230.       @command_window.set_handler(:pagedown, method(:next_actor))
  7231.       @command_window.set_handler(:pageup,   method(:prev_actor))
  7232.   end
  7233.   
  7234.   #--------------------------------------------------------------------------
  7235.   # ● Create Slot Window
  7236.   #--------------------------------------------------------------------------
  7237.   def create_slot_window
  7238.       wx = @status_window.width
  7239.       wy = @command_window.y + @command_window.height + 5
  7240.       ww = Graphics.width - @status_window.width
  7241.       @slot_window = Window_EquipSlot.new(wx, wy, ww)
  7242.       @slot_window.help_window = @help_window
  7243.       @slot_window.status_window = @status_window
  7244.       @slot_window.actor = @actor
  7245.       @slot_window.set_handler(:ok,       method(:on_slot_ok))
  7246.       @slot_window.set_handler(:cancel,   method(:on_slot_cancel))
  7247.       @slot_window.set_handler(:pagedown, method(:next_actor))
  7248.       @slot_window.set_handler(:pageup,   method(:prev_actor))  
  7249.   end
  7250.   
  7251.   #--------------------------------------------------------------------------
  7252.   # ● Create Item Window
  7253.   #--------------------------------------------------------------------------
  7254.   def create_item_window
  7255.       @equip_window = []
  7256.       index = 0
  7257.       window_max = 5
  7258.       for item in 0...window_max     
  7259.           wx = @slot_window.x
  7260.           wy = @slot_window.y + @slot_window.height + 5
  7261.           ww = @slot_window.width
  7262.           wh = @slot_window.height - 5
  7263.           @equip_window.push(Window_EquipItem_Menu.new(wx, wy, ww, wh))
  7264.           @equip_window[item].setup(@actor,item, index)
  7265.           @equip_window[item].visible = false
  7266.           @equip_window[item].help_window = @help_window
  7267.           @equip_window[item].status_window = @status_window
  7268.           @equip_window[item].actor = @actor
  7269.           @equip_window[item].set_handler(:ok,     method(:on_item_ok))
  7270.           @equip_window[item].set_handler(:cancel, method(:on_item_cancel))
  7271.           @equip_window[item].opacity = 0
  7272.           @org_pos_equip = [@equip_window[item].x,@equip_window[item].y]
  7273.           index += 1
  7274.        end     
  7275.   
  7276.    end
  7277.    
  7278. end

  7279. #==============================================================================
  7280. # ■ Scene_Equip
  7281. #==============================================================================
  7282. class Scene_Equip
  7283.   
  7284.   #--------------------------------------------------------------------------
  7285.   # ● Execute Dispose
  7286.   #--------------------------------------------------------------------------        
  7287.   def execute_dispose
  7288.       Graphics.freeze
  7289.       dispose_background
  7290.       dispose_layout
  7291.       dispose_particles
  7292.       dispose_window
  7293.       dispose_actor_status
  7294.   end
  7295.   
  7296.   #--------------------------------------------------------------------------
  7297.   # ● Dispose Background
  7298.   #--------------------------------------------------------------------------  
  7299.   def dispose_background
  7300.       return if @background == nil
  7301.       @background.dispose
  7302.       @background = nil
  7303.   end
  7304.   
  7305.   #--------------------------------------------------------------------------
  7306.   # ● Dispose Layout
  7307.   #--------------------------------------------------------------------------               
  7308.   def dispose_layout
  7309.       return if @layout2 == nil
  7310.       @layout2.dispose
  7311.       @layout3.dispose
  7312.       @layout4.dispose
  7313.       @layout2 = nil
  7314.   end  
  7315.   
  7316. #--------------------------------------------------------------------------
  7317. # ● Dispose Particles
  7318. #--------------------------------------------------------------------------   
  7319. def dispose_particles
  7320.      return if @particles_sprite == nil
  7321.      @particles_sprite.each {|sprite| sprite.dispose }
  7322. end     
  7323.   
  7324.   #--------------------------------------------------------------------------
  7325.   # ● Dispose Window
  7326.   #--------------------------------------------------------------------------         
  7327.   def dispose_window
  7328.       @status_window.dispose
  7329.       @command_window.dispose
  7330.       @slot_window.dispose
  7331.       @equip_window.each {|sprite| sprite.dispose }
  7332.       @help_window.dispose
  7333.   end  
  7334.   
  7335.   #--------------------------------------------------------------------------
  7336.   # ● Dispose Actor Status
  7337.   #--------------------------------------------------------------------------  
  7338.   def dispose_actor_status
  7339.       return if @actor_status == nil
  7340.       @actor_status.dispose
  7341.   end   
  7342.   
  7343. end

  7344. #==============================================================================
  7345. # ■ Scene_Equip
  7346. #==============================================================================
  7347. class Scene_Equip   

  7348.   #--------------------------------------------------------------------------
  7349.   # ● Update Sprites
  7350.   #--------------------------------------------------------------------------         
  7351.   def update_sprites
  7352.       update_actor_status
  7353.       update_background
  7354.       update_particles
  7355.       update_window
  7356.       update_move
  7357.   end
  7358.   
  7359.   #--------------------------------------------------------------------------
  7360.   # ● Update Move
  7361.   #--------------------------------------------------------------------------
  7362.   def update_move
  7363.    
  7364.       update_slide(0,@command_window,@org_pos_com[0],0)
  7365.       update_slide(1,@command_window,@org_pos_com[1],0)
  7366.       
  7367.       update_slide(0,@help_window,@org_pos_help[0],0)
  7368.       update_slide(1,@help_window,@org_pos_help[1],0)      
  7369.    
  7370.       update_slide(0,@slot_window,@org_pos_slot[0],0)
  7371.       update_slide(1,@slot_window,@org_pos_slot[1],0)        
  7372.       
  7373.       update_slide(0,@layout2,0,1)
  7374.       update_slide(1,@layout2,0,1)
  7375.       
  7376.       update_slide(0,@layout3,0,1)
  7377.       update_slide(1,@layout3,0,1)      
  7378.       
  7379.       update_slide(0,@layout4,0,1)
  7380.       update_slide(1,@layout4,0,1)      
  7381.       
  7382.   end
  7383.   
  7384. #--------------------------------------------------------------------------
  7385. # ● Update Slide
  7386. #--------------------------------------------------------------------------                       
  7387.   def update_slide(type,sprite,np,op_type)
  7388.       if op_type == 0
  7389.          sprite.contents_opacity += 5
  7390.       else
  7391.          sprite.opacity += 5
  7392.       end
  7393.       cp = type == 0 ? sprite.x : sprite.y
  7394.       sp = 3 + ((cp - np).abs / 10)
  7395.       if cp > np
  7396.          cp -= sp
  7397.          cp = np if cp < np
  7398.       elsif cp < np
  7399.          cp += sp
  7400.          cp = np if cp > np
  7401.       end     
  7402.       sprite.x = cp if type == 0
  7403.       sprite.y = cp if type == 1
  7404.   end   
  7405.   
  7406.   #--------------------------------------------------------------------------
  7407.   # ● Update Actor Status
  7408.   #--------------------------------------------------------------------------            
  7409.   def update_actor_status
  7410.       return if @actor_status == nil
  7411.       @actor_status.update(@actor)
  7412.   end
  7413.    
  7414.   #--------------------------------------------------------------------------
  7415.   # ● Update Background
  7416.   #--------------------------------------------------------------------------              
  7417.   def update_background
  7418.       return if @background == nil
  7419.       @background.ox += @background_scroll[0]
  7420.       @background.oy += @background_scroll[1]
  7421.   end   
  7422.   
  7423.   #--------------------------------------------------------------------------
  7424.   # ● Update Particles
  7425.   #--------------------------------------------------------------------------  
  7426.   def update_particles
  7427.       return if @particles_sprite == nil
  7428.       @particles_sprite.each {|sprite| sprite.update }
  7429.   end  
  7430.   
  7431.   #--------------------------------------------------------------------------
  7432.   # ● Update Window
  7433.   #--------------------------------------------------------------------------            
  7434.   def update_window
  7435.       @status_window.update
  7436.       @command_window.update
  7437.       @slot_window.update
  7438.       for equip in @equip_window
  7439.           update_slide(0,equip,@org_pos_equip[0],0)
  7440.           update_slide(1,equip,@org_pos_equip[1],0)           
  7441.           if equip.windows_index == @slot_window.index
  7442.              equip.visible = true
  7443.              equip.update  
  7444.           else
  7445.              equip.visible = false
  7446.           end
  7447.       end  
  7448.   end
  7449.   
  7450. end

  7451. #==============================================================================
  7452. # ■ Scene_Equip
  7453. #==============================================================================
  7454. class Scene_Equip
  7455.   
  7456.   #--------------------------------------------------------------------------
  7457.   # ● Update
  7458.   #--------------------------------------------------------------------------      
  7459.   def update
  7460.       update_sprites
  7461.       update_command
  7462.   end
  7463.   
  7464.   #--------------------------------------------------------------------------
  7465.   # ● Command Equip
  7466.   #--------------------------------------------------------------------------
  7467.   def command_equip
  7468.       @slot_window.activate
  7469.       @slot_window.select(0)
  7470.   end

  7471.   #--------------------------------------------------------------------------
  7472.   # ● Command Optimize
  7473.   #--------------------------------------------------------------------------
  7474.   def command_optimize
  7475.       Sound.play_equip
  7476.       @actor.optimize_equipments
  7477.       @status_window.refresh
  7478.       @slot_window.refresh
  7479.       @command_window.activate
  7480.   end
  7481.   
  7482.   #--------------------------------------------------------------------------
  7483.   # ● Command Clear
  7484.   #--------------------------------------------------------------------------
  7485.   def command_clear
  7486.       Sound.play_equip
  7487.       @actor.clear_equipments
  7488.       @status_window.refresh
  7489.       @slot_window.refresh
  7490.       @command_window.activate
  7491.   end
  7492.   
  7493.   #--------------------------------------------------------------------------
  7494.   # ● On Slot OK
  7495.   #--------------------------------------------------------------------------
  7496.   def on_slot_ok
  7497.       @equip_window[@slot_window.index].activate
  7498.       @equip_window[@slot_window.index].select(0)
  7499.   end
  7500.   
  7501.   #--------------------------------------------------------------------------
  7502.   # ● On Slot Cancel
  7503.   #--------------------------------------------------------------------------
  7504.   def on_slot_cancel
  7505.       @slot_window.unselect
  7506.       @command_window.activate
  7507.   end
  7508.   
  7509.   #--------------------------------------------------------------------------
  7510.   # ● On Item OK
  7511.   #--------------------------------------------------------------------------
  7512.   def on_item_ok
  7513.       Sound.play_equip
  7514.       @actor.change_equip(@slot_window.index, @equip_window[@slot_window.index].item)
  7515.       @slot_window.activate
  7516.       @slot_window.refresh
  7517.       @equip_window.each do |i| i.refresh; i.index = 0; i.unselect end
  7518.   end
  7519.   
  7520.   #--------------------------------------------------------------------------
  7521.   # ● On Item Cancel
  7522.   #--------------------------------------------------------------------------
  7523.   def on_item_cancel
  7524.       @slot_window.activate
  7525.       @equip_window[@slot_window.index].unselect
  7526.   end
  7527.   
  7528.   #--------------------------------------------------------------------------
  7529.   # ● Return Scene
  7530.   #--------------------------------------------------------------------------         
  7531.   def return_scene
  7532.       Sound.play_cancel
  7533.       SceneManager.return
  7534.     end

  7535.   #--------------------------------------------------------------------------
  7536.   # ● ON Actor Charge
  7537.   #--------------------------------------------------------------------------
  7538.   def on_actor_change
  7539.       $game_temp.actor_menu_temp = @actor
  7540.       SceneManager.goto(Scene_Equip)
  7541.   end  
  7542.   
  7543. end

  7544. #==============================================================================
  7545. # ■ Scene_Equip
  7546. #==============================================================================
  7547. class Scene_Equip

  7548.   #--------------------------------------------------------------------------
  7549.   # ● Update Command
  7550.   #--------------------------------------------------------------------------      
  7551.   def update_command
  7552.    
  7553.   end
  7554.   
  7555. end

  7556. #==============================================================================
  7557. # ■ Game_Temp
  7558. #==============================================================================
  7559. class Game_Temp
  7560.   
  7561.   #--------------------------------------------------------------------------
  7562.   # ● Execute Pre Cache Status Menu
  7563.   #--------------------------------------------------------------------------   
  7564.   def execute_pre_cache_status_menu
  7565.       @pre_cache_status_menu = []
  7566.       @pre_cache_status_menu.push(Cache.menu_status("Background"))
  7567.       @pre_cache_status_menu.push(Cache.menu_status("Layout"))
  7568.   end   
  7569.    
  7570. end

  7571. #==============================================================================
  7572. # ■ Scene_Status
  7573. #==============================================================================
  7574. class Scene_Status
  7575.   include MOG_MENU_STATUS
  7576.   include MOG_MENU_BASE
  7577.   
  7578.   #--------------------------------------------------------------------------
  7579.   # ● Main
  7580.   #--------------------------------------------------------------------------        
  7581.   def main
  7582.       execute_setup
  7583.       execute_loop
  7584.       execute_dispose
  7585.   end  
  7586.   
  7587.   #--------------------------------------------------------------------------
  7588.   # ● Execute Setup
  7589.   #--------------------------------------------------------------------------        
  7590.   def execute_setup
  7591.       @actor = $game_temp.actor_menu_temp
  7592.       @actor_old = @actor
  7593.       @phase = 0
  7594.       create_sprites
  7595.   end
  7596.   
  7597.   #--------------------------------------------------------------------------
  7598.   # ● Execute Lopp
  7599.   #--------------------------------------------------------------------------        
  7600.   def execute_loop
  7601.       Graphics.transition(10)
  7602.       loop do
  7603.          Input.update
  7604.          update
  7605.          Graphics.update
  7606.          break if SceneManager.scene != self
  7607.       end
  7608.   end
  7609.   
  7610. end

  7611. #==============================================================================
  7612. # ■ Window_Status
  7613. #==============================================================================
  7614. class Window_Status < Window_Selectable
  7615.   include MOG_MENU_STATUS
  7616.   
  7617.   #--------------------------------------------------------------------------
  7618.   # ● Initialize
  7619.   #--------------------------------------------------------------------------
  7620.   def initialize(actor)
  7621.       super(-16, -16, Graphics.width + 32, Graphics.height + 32)
  7622.       @actor = actor
  7623.       self.z = 10
  7624.       refresh
  7625.       activate
  7626.   end
  7627.   
  7628.   #--------------------------------------------------------------------------
  7629.   # ● Actor
  7630.   #--------------------------------------------------------------------------
  7631.   def actor=(actor)
  7632.       return if @actor == actor
  7633.       @actor = actor
  7634.       refresh
  7635.   end
  7636.   
  7637.   #--------------------------------------------------------------------------
  7638.   # ● Refresh
  7639.   #--------------------------------------------------------------------------
  7640.   def refresh
  7641.       contents.clear
  7642.       draw_description
  7643.       self.contents.font.size = 18
  7644.       self.contents.font.bold = true
  7645.       draw_actor_name
  7646.       draw_equipments
  7647.       draw_exp_info
  7648.       draw_parameters      
  7649.       draw_actor_hp_mp_tp
  7650.   end

  7651.   #--------------------------------------------------------------------------
  7652.   # ● Draw Actor Name
  7653.   #--------------------------------------------------------------------------  
  7654.   def draw_actor_name
  7655.       self.contents.font.size = 16
  7656.       text = @actor.class.name
  7657.       draw_text(240,185,100,32, text.to_s,1)      
  7658.       self.contents.font.size = 20   
  7659.       text = @actor.name
  7660.       draw_text(125,50,120,32, text.to_s,1)
  7661.   end
  7662.   
  7663.   #--------------------------------------------------------------------------
  7664.   # ● Draw Parameters
  7665.   #--------------------------------------------------------------------------
  7666.   def draw_parameters
  7667.       par = @actor.atk
  7668.       draw_text(43,112,80,32, par.to_s,2)
  7669.       par = @actor.def
  7670.       draw_text(43,146,80,32, par.to_s,2)
  7671.       par = @actor.mat
  7672.       draw_text(162 ,112,80,32, par.to_s,2)      
  7673.       par = @actor.mdf
  7674.       draw_text(162,146,80,32, par.to_s,2)      
  7675.       par = @actor.agi
  7676.       draw_text(282,112,80,32, par.to_s,2)         
  7677.       par = @actor.luk
  7678.       draw_text(282,146,80,32, par.to_s,2)
  7679.   end   
  7680.      
  7681.   #--------------------------------------------------------------------------
  7682.   # ● Draw Actor HP MP TP
  7683.   #--------------------------------------------------------------------------  
  7684.   def draw_actor_hp_mp_tp
  7685.       self.contents.font.size = 16
  7686.       par = @actor.hp.truncate
  7687.       draw_text(5,80,80,32, par.to_s,2)      
  7688.       par = @actor.mhp.truncate
  7689.       draw_text(50,80,80,32, par.to_s,2)           
  7690.       par = @actor.mp.truncate
  7691.       draw_text(123,80,80,32, par.to_s,2)      
  7692.       par = @actor.mmp.truncate
  7693.       draw_text(168,80,80,32, par.to_s,2)        
  7694.       par = @actor.tp.truncate
  7695.       draw_text(244,80,80,32, par.to_s,2)      
  7696.       par = @actor.max_tp.truncate
  7697.       draw_text(282,80,80,32, par.to_s,2)      
  7698.   end
  7699.   
  7700.   #--------------------------------------------------------------------------
  7701.   # ● Draw Exp Info
  7702.   #--------------------------------------------------------------------------
  7703.   def draw_exp_info
  7704.       draw_text(200,10,64,32,@actor.level.to_s,1)
  7705.       s1 = @actor.max_level? ? "----------" : @actor.exp
  7706.       s2 = @actor.max_level? ? "----------" : @actor.next_level_exp - @actor.exp
  7707.       draw_text(300,10, 80, 32,s1.to_s, 1)
  7708.       draw_text(460,10, 80, 32,s2.to_s, 1)
  7709.   end

  7710.   #--------------------------------------------------------------------------
  7711.   # ● Draw Equipments
  7712.   #--------------------------------------------------------------------------
  7713.   def draw_equipments
  7714.       self.contents.font.size = 16
  7715.       item = @actor.equips[0]
  7716.       draw_item_name(item, 20, 220,true,140)
  7717.       item = @actor.equips[1]
  7718.       draw_item_name(item, 20, 220 + 43,true,140)
  7719.       item = @actor.equips[2]
  7720.       draw_item_name(item, 20, 220 + 86,true,140)      
  7721.       item = @actor.equips[3]
  7722.       draw_item_name(item, 196, 242,true,140)      
  7723.       item = @actor.equips[4]
  7724.   end
  7725.   
  7726.   #--------------------------------------------------------------------------
  7727.   # ● Draw Description
  7728.   #--------------------------------------------------------------------------
  7729.   def draw_description
  7730.       draw_text_ex(20, height - 96,@actor.description)
  7731.   end

  7732.   #--------------------------------------------------------------------------
  7733.   # ● Next Actor
  7734.   #--------------------------------------------------------------------------
  7735.   def next_actor
  7736.       $game_temp.actor_menu_temp = $game_party.menu_actor_next
  7737.       on_actor_change
  7738.   end
  7739.   #--------------------------------------------------------------------------
  7740.   # ● Prev Actor
  7741.   #--------------------------------------------------------------------------
  7742.   def prev_actor
  7743.       $game_temp.actor_menu_temp = $game_party.menu_actor_prev
  7744.       on_actor_change
  7745.   end  
  7746.   
  7747.   #--------------------------------------------------------------------------
  7748.   # ● On Actor Change
  7749.   #--------------------------------------------------------------------------
  7750.   def on_actor_change
  7751.       Sound.play_cursor
  7752.       SceneManager.goto(Scene_Status)
  7753.   end  
  7754.   
  7755. end

  7756. module MOG_STATUS_PARAMETER
  7757.   PICTURE_POS = [-105,0]
  7758.   METER_POSITION = [53,101]
  7759.   STATES_POSITION = [21,46]
  7760.   STATES_SCROLLING_ANIMATION = false
  7761.   MAX_PARAMETER_VALUE = 999
  7762. end
  7763. #==============================================================================
  7764. # ■ Status Parameter
  7765. #==============================================================================
  7766. class Status_Parameter
  7767.   
  7768.   include MOG_STATUS_PARAMETER
  7769.   
  7770.   #--------------------------------------------------------------------------
  7771.   # ● Initialize
  7772.   #--------------------------------------------------------------------------
  7773.   def initialize(actor)
  7774.       @actor = actor
  7775.       create_picture
  7776.       create_states
  7777.       create_meter
  7778.   end
  7779.   
  7780.   #--------------------------------------------------------------------------
  7781.   # ● Create Picture
  7782.   #--------------------------------------------------------------------------   
  7783.   def create_picture
  7784.       @picture = Sprite.new
  7785.       pic_name = "Actor_S" + @actor.id.to_s
  7786.       @picture.bitmap = Cache.menu_status(pic_name.to_s)
  7787.       @picture.ox = @picture.bitmap.width / 2
  7788.       pos = [Graphics.width,Graphics.height - @picture.bitmap.height]
  7789.       @pos_org_pic = [PICTURE_POS[0] + pos[0] ,PICTURE_POS[1] + pos[1]]
  7790.       @picture.x = @pos_org_pic[0]
  7791.       @picture.y = @pos_org_pic[1] + 150
  7792.       @picture.opacity = 0
  7793.       @picture.z = 3
  7794.   end  
  7795.   
  7796.   #--------------------------------------------------------------------------
  7797.   # ● Create_States
  7798.   #--------------------------------------------------------------------------      
  7799.   def create_states
  7800.       @status_old = nil
  7801.       @status_flow = [-24,0]   
  7802.       @status = Sprite.new
  7803.       @status.bitmap = Bitmap.new(24,24)
  7804.       @org_pos_states = [STATES_POSITION[0],STATES_POSITION[1]]      
  7805.       @status.x = @org_pos_states[0] + 150
  7806.       @status.y = @org_pos_states[1]
  7807.       @status.z = 11
  7808.       @status.opacity = 0
  7809.   end      

  7810.   #--------------------------------------------------------------------------
  7811.   # * Refresh States
  7812.   #--------------------------------------------------------------------------        
  7813.   def refresh_states
  7814.       check_icon_image
  7815.       @status_old = @actor.states
  7816.       @status_flow = [0,0]
  7817.       @actor_status.dispose if @actor_status != nil
  7818.       @states_size = @actor.states.size > 0 ? (26 * @actor.states.size) : 24
  7819.       @actor_status = Bitmap.new(@states_size,24)
  7820.       index = 0
  7821.       for i in @actor.states
  7822.          rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
  7823.          @actor_status.blt(26 * index , 0, @icon_image, rect)
  7824.          index += 1
  7825.       end
  7826.   end   
  7827.   
  7828.   #--------------------------------------------------------------------------
  7829.   # * Flow_Status
  7830.   #--------------------------------------------------------------------------         
  7831.   def flow_states
  7832.       return if @actor_status == nil
  7833.       @status.bitmap.clear
  7834.       return if @actor.states.size == 0
  7835.       st_src_rect = Rect.new(@status_flow[0],0, 24,24)
  7836.       @status.bitmap.blt(0,0, @actor_status, st_src_rect)
  7837.       if STATES_SCROLLING_ANIMATION
  7838.          @status_flow[0] += 1
  7839.          @status_flow[0] = -24 if @status_flow[0] >= @states_size + 2
  7840.       else   
  7841.          @status_flow[1] += 1 unless @actor.states.size <= 1
  7842.          if @status_flow[1] > 30
  7843.             @status_flow[1] = 0
  7844.             @status_flow[0] += 26
  7845.             @status_flow[0] = 0 if @status_flow[0] >= (@states_size - 0)
  7846.          end   
  7847.      end   
  7848.   end        
  7849.   
  7850.   #--------------------------------------------------------------------------
  7851.   # * Check Icon Image
  7852.   #--------------------------------------------------------------------------         
  7853.   def check_icon_image
  7854.       if @icon_image == nil or @icon_image.disposed?
  7855.          @icon_image = Cache.system("Iconset")
  7856.       end   
  7857.   end   
  7858.   
  7859.   #--------------------------------------------------------------------------
  7860.   # * Create Meter
  7861.   #--------------------------------------------------------------------------            
  7862.   def create_meter
  7863.       @meter_image = Cache.menu_status("Par_Meter")
  7864.       @meter_cw = @meter_image.width / 3
  7865.       @meter_ch = @meter_image.height / 4
  7866.       @meter = Sprite.new
  7867.       @meter.bitmap = Bitmap.new(380,140)
  7868.       @org_pos_meter = [METER_POSITION[0],METER_POSITION[1]]      
  7869.       @meter.x = @org_pos_meter[0] + 150
  7870.       @meter.y = @org_pos_meter[1]
  7871.       @meter.z = 11  
  7872.       @meter.opacity = 0
  7873.       @meter_flow = [0,@meter_cw * 2]      
  7874.       refresh_meter
  7875.   end  
  7876.   
  7877.   #--------------------------------------------------------------------------
  7878.   # * Refresh Meter
  7879.   #--------------------------------------------------------------------------            
  7880.   def refresh_meter
  7881.       @meter.bitmap.clear
  7882.       max_par = MAX_PARAMETER_VALUE
  7883.       value = @actor.hp
  7884.       value_max = @actor.mhp
  7885.       pos = [0,0]
  7886.       draw_meter(value,value_max,0,pos[0],pos[1])
  7887.       value = @actor.mp
  7888.       value_max = @actor.mmp
  7889.       pos = [120,0]
  7890.       draw_meter(value,value_max,1,pos[0],pos[1])
  7891.       value = @actor.tp
  7892.       value_max = @actor.max_tp
  7893.       pos = [240,0]
  7894.       draw_meter(value,value_max,2,pos[0],pos[1])         
  7895.       value = @actor.atk
  7896.       value_max = max_par
  7897.       pos = [0,34]
  7898.       draw_meter(value,value_max,3,pos[0],pos[1])      
  7899.       value = @actor.mat
  7900.       value_max = max_par
  7901.       pos = [120,34]
  7902.       draw_meter(value,value_max,3,pos[0],pos[1])         
  7903.       value = @actor.agi
  7904.       value_max = max_par
  7905.       pos = [240,34]
  7906.       draw_meter(value,value_max,3,pos[0],pos[1])      
  7907.       value = @actor.def
  7908.       value_max = max_par
  7909.       pos = [0,68]
  7910.       draw_meter(value,value_max,3,pos[0],pos[1])      
  7911.       value = @actor.mdf
  7912.       value_max = max_par
  7913.       pos = [120,68]
  7914.       draw_meter(value,value_max,3,pos[0],pos[1])         
  7915.       value = @actor.luk
  7916.       value_max = max_par
  7917.       pos = [240,68]
  7918.       draw_meter(value,value_max,3,pos[0],pos[1])      
  7919.       @meter_flow[0] += 5
  7920.       @meter_flow[0] = 0 if @meter_flow[0] > @meter_flow[1]
  7921.   end
  7922.   
  7923.   #--------------------------------------------------------------------------
  7924.   # * Draw Meter
  7925.   #--------------------------------------------------------------------------              
  7926.   def draw_meter(value,value_max,type,x,y)
  7927.       value_max = 1 if value_max <= 0
  7928.       range = @meter_cw * value.truncate / value_max.truncate
  7929.       ch = @meter_ch * type
  7930.       meter_scr = Rect.new(@meter_flow[0],ch,range,@meter_ch)
  7931.       @meter.bitmap.blt(x,y,@meter_image,meter_scr)
  7932.   end
  7933.   
  7934.   #--------------------------------------------------------------------------
  7935.   # ● Dispose
  7936.   #--------------------------------------------------------------------------  
  7937.   def dispose
  7938.       dispose_picture
  7939.       dispose_states
  7940.       dispose_meter
  7941.   end
  7942.   
  7943.   #--------------------------------------------------------------------------
  7944.   # ● Dispose Picture
  7945.   #--------------------------------------------------------------------------   
  7946.   def dispose_picture
  7947.       @picture.bitmap.dispose
  7948.       @picture.dispose
  7949.   end
  7950.   
  7951.   #--------------------------------------------------------------------------
  7952.   # ● Dispose States
  7953.   #--------------------------------------------------------------------------            
  7954.    def dispose_states
  7955.        return if @status == nil
  7956.        @status.bitmap.dispose
  7957.        @status.dispose
  7958.        if @actor_status != nil
  7959.           @actor_status.dispose
  7960.           @actor_status = nil
  7961.        end   
  7962.    end     
  7963.   
  7964.   #--------------------------------------------------------------------------
  7965.   # ● Dispose Meter
  7966.   #--------------------------------------------------------------------------            
  7967.    def dispose_meter
  7968.        return if @meter == nil
  7969.        @meter.bitmap.dispose
  7970.        @meter.dispose
  7971.    end     
  7972.      
  7973.   #--------------------------------------------------------------------------
  7974.   # ● Update
  7975.   #--------------------------------------------------------------------------  
  7976.   def update
  7977.       update_slide(0,@picture,@pos_org_pic[0])
  7978.       update_slide(1,@picture,@pos_org_pic[1])
  7979.       update_slide(0,@status,@org_pos_states[0])
  7980.       update_slide(1,@status,@org_pos_states[1])   
  7981.       update_slide(0,@meter,@org_pos_meter[0])
  7982.       update_slide(1,@meter,@org_pos_meter[1])         
  7983.       refresh_states if @status_old != @actor.states
  7984.       refresh_meter
  7985.       flow_states      
  7986.   end
  7987.   
  7988.   
  7989. #--------------------------------------------------------------------------
  7990. # ● Update Slide
  7991. #--------------------------------------------------------------------------                       
  7992.   def update_slide(type,sprite,np)
  7993.       sprite.opacity += 5
  7994.       cp = type == 0 ? sprite.x : sprite.y
  7995.       sp = 3 + ((cp - np).abs / 10)
  7996.       if cp > np
  7997.          cp -= sp
  7998.          cp = np if cp < np
  7999.       elsif cp < np
  8000.          cp += sp
  8001.          cp = np if cp > np
  8002.       end     
  8003.       sprite.x = cp if type == 0
  8004.       sprite.y = cp if type == 1
  8005.   end   
  8006.   
  8007. end

  8008. #==============================================================================
  8009. # ■ Scene_Status
  8010. #==============================================================================
  8011. class Scene_Status
  8012.   
  8013.   #--------------------------------------------------------------------------
  8014.   # ● Create Sprites
  8015.   #--------------------------------------------------------------------------
  8016.   def create_sprites
  8017.       create_menu_background
  8018.       create_layout
  8019.       create_particles
  8020.       create_status_window
  8021.       create_parameter
  8022.   end

  8023.   #--------------------------------------------------------------------------
  8024.   # ● Create Menu Background
  8025.   #--------------------------------------------------------------------------            
  8026.   def create_menu_background
  8027.       @background = Plane.new
  8028.       @background.bitmap = $game_temp.pre_cache_status_menu[0]
  8029.       @background.z = 0
  8030.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  8031.   end   
  8032.   
  8033.   #--------------------------------------------------------------------------
  8034.   # ● Create Layout
  8035.   #--------------------------------------------------------------------------              
  8036.   def create_layout     
  8037.       @layout = Sprite.new
  8038.       @layout.bitmap = $game_temp.pre_cache_status_menu[1]
  8039.       @layout.z = 9
  8040.       @layout.x = -150
  8041.       @layout.opacity = 0
  8042.   end  
  8043.   
  8044.   #--------------------------------------------------------------------------
  8045.   # ● Create Particles
  8046.   #--------------------------------------------------------------------------  
  8047.   def create_particles
  8048.       @particles_sprite =[]
  8049.       for i in 0...NUMBER_OF_PARTICLES
  8050.           @particles_sprite.push(Particles_Menu.new(nil))
  8051.       end
  8052.   end   
  8053.    
  8054.   #--------------------------------------------------------------------------
  8055.   # ● Create Status Window
  8056.   #--------------------------------------------------------------------------  
  8057.   def create_status_window
  8058.       @status_window = Window_Status.new(@actor)
  8059.       @status_window.set_handler(:cancel,   method(:return_scene))
  8060.       @status_window.set_handler(:pagedown, method(:next_actor))
  8061.       @status_window.set_handler(:pageup,   method(:prev_actor))
  8062.       @org_pos_win = [@status_window.x,@status_window.y]
  8063.       @status_window.x += 150
  8064.       @status_window.opacity = 0
  8065.       @status_window.contents_opacity = 0
  8066.   end  
  8067.   
  8068.   #--------------------------------------------------------------------------
  8069.   # ● Create Parameter
  8070.   #--------------------------------------------------------------------------   
  8071.   def create_parameter
  8072.       @parameter = Status_Parameter.new(@actor)
  8073.   end
  8074.   
  8075. end

  8076. #==============================================================================
  8077. # ■ Scene_Status
  8078. #==============================================================================
  8079. class Scene_Status
  8080.   
  8081.   #--------------------------------------------------------------------------
  8082.   # ● Execute Dispose
  8083.   #--------------------------------------------------------------------------        
  8084.   def execute_dispose
  8085.       Graphics.freeze
  8086.       dispose_background
  8087.       dispose_layout
  8088.       dispose_particles
  8089.       dispose_status_window
  8090.       dispose_parameter
  8091.    end
  8092.   
  8093.   #--------------------------------------------------------------------------
  8094.   # ● Dispose Background
  8095.   #--------------------------------------------------------------------------  
  8096.   def dispose_background
  8097.       return if @background == nil
  8098.       @background.dispose
  8099.       @background = nil
  8100.   end
  8101.   
  8102.   #--------------------------------------------------------------------------
  8103.   # ● Dispose Layout
  8104.   #--------------------------------------------------------------------------               
  8105.   def dispose_layout
  8106.       return if @layout == nil
  8107.       @layout.dispose
  8108.       @layout = nil
  8109.   end  
  8110.   
  8111. #--------------------------------------------------------------------------
  8112. # ● Dispose Particles
  8113. #--------------------------------------------------------------------------   
  8114. def dispose_particles
  8115.      return if @particles_sprite == nil
  8116.      @particles_sprite.each {|sprite| sprite.dispose }
  8117. end     
  8118.   
  8119.   #--------------------------------------------------------------------------
  8120.   # ● Dispose Status Window
  8121.   #--------------------------------------------------------------------------  
  8122.   def dispose_status_window
  8123.       return if @status_window == nil
  8124.       @status_window.dispose
  8125.   end  

  8126.   #--------------------------------------------------------------------------
  8127.   # ● Dispose Parameter
  8128.   #--------------------------------------------------------------------------   
  8129.   def dispose_parameter
  8130.       return if @parameter == nil
  8131.       @parameter.dispose
  8132.   end  
  8133.   
  8134. end

  8135. #==============================================================================
  8136. # ■ Scene Status
  8137. #==============================================================================
  8138. class Scene_Status
  8139.   
  8140.   #--------------------------------------------------------------------------
  8141.   # ● Update Sprites
  8142.   #--------------------------------------------------------------------------         
  8143.   def update_sprites   
  8144.       update_background
  8145.       update_particles     
  8146.       update_status_window
  8147.       update_parameter
  8148.       update_move
  8149.   end

  8150.   #--------------------------------------------------------------------------
  8151.   # ● Update Background
  8152.   #--------------------------------------------------------------------------              
  8153.   def update_background
  8154.       return if @background == nil
  8155.       @background.ox += @background_scroll[0]
  8156.       @background.oy += @background_scroll[1]
  8157.   end   
  8158.   
  8159.   #--------------------------------------------------------------------------
  8160.   # ● Update Particles
  8161.   #--------------------------------------------------------------------------  
  8162.   def update_particles
  8163.       return if @particles_sprite == nil
  8164.       @particles_sprite.each {|sprite| sprite.update }
  8165.   end
  8166.   
  8167.   #--------------------------------------------------------------------------
  8168.   # ● Update Sprites
  8169.   #--------------------------------------------------------------------------  
  8170.   def update_status_window
  8171.       return if @status_window == nil
  8172.       @status_window.update
  8173.   end
  8174.    
  8175.   #--------------------------------------------------------------------------
  8176.   # ● Update Move
  8177.   #--------------------------------------------------------------------------      
  8178.   def update_move
  8179.       update_slide(0,@status_window,@org_pos_win[0],0)
  8180.       update_slide(1,@status_window,@org_pos_win[1],0)
  8181.       update_slide(0,@layout,0,1)
  8182.       update_slide(1,@layout,0,1)     
  8183.   end  
  8184.   
  8185. #--------------------------------------------------------------------------
  8186. # ● Update Slide
  8187. #--------------------------------------------------------------------------                       
  8188.   def update_slide(type,sprite,np,opa)
  8189.       if opa == 0
  8190.          sprite.contents_opacity += 5
  8191.       else   
  8192.          sprite.opacity += 5
  8193.       end  
  8194.       cp = type == 0 ? sprite.x : sprite.y
  8195.       sp = 3 + ((cp - np).abs / 10)
  8196.       if cp > np
  8197.          cp -= sp
  8198.          cp = np if cp < np
  8199.       elsif cp < np
  8200.          cp += sp
  8201.          cp = np if cp > np
  8202.       end     
  8203.       sprite.x = cp if type == 0
  8204.       sprite.y = cp if type == 1
  8205.   end   
  8206.   
  8207.   #--------------------------------------------------------------------------
  8208.   # ● Update Parameter
  8209.   #--------------------------------------------------------------------------   
  8210.   def update_parameter
  8211.       return if @parameter == nil
  8212.       @parameter.update
  8213.   end   
  8214.   
  8215. end

  8216. #==============================================================================
  8217. # ■ Scene_Status
  8218. #==============================================================================
  8219. class Scene_Status
  8220.   
  8221.   #--------------------------------------------------------------------------
  8222.   # ● Update
  8223.   #--------------------------------------------------------------------------      
  8224.   def update
  8225.       update_sprites
  8226.       update_command
  8227.   end

  8228.   #--------------------------------------------------------------------------
  8229.   # ● Return Scene
  8230.   #--------------------------------------------------------------------------         
  8231.   def return_scene
  8232.       Sound.play_cancel
  8233.       SceneManager.return
  8234.   end

  8235.   #--------------------------------------------------------------------------
  8236.   # ● ON Actor Charge
  8237.   #--------------------------------------------------------------------------
  8238.   def on_actor_change
  8239.       Sound.play_cursor
  8240.       $game_temp.actor_menu_temp = @actor
  8241.       SceneManager.goto(Scene_Status)
  8242.   end  
  8243.   
  8244. end

  8245. #==============================================================================
  8246. # ■ Scene_Status
  8247. #==============================================================================
  8248. class Scene_Status

  8249.   #--------------------------------------------------------------------------
  8250.   # ● Update Command
  8251.   #--------------------------------------------------------------------------      
  8252.   def update_command
  8253.       update_next_actor
  8254.   end
  8255.   
  8256.   #--------------------------------------------------------------------------
  8257.   # ● Update Next Actor
  8258.   #--------------------------------------------------------------------------        
  8259.   def update_next_actor
  8260.       if Input.trigger?(:RIGHT)
  8261.          @status_window.next_actor
  8262.        elsif Input.trigger?(:LEFT)
  8263.          @status_window.prev_actor
  8264.       end
  8265.   end
  8266.   
  8267. end



  8268. #==============================================================================
  8269. # ■ Game_Temp
  8270. #==============================================================================
  8271. class Game_Temp
  8272.   
  8273.   #--------------------------------------------------------------------------
  8274.   # ● Execute Pre Cache Party Menu
  8275.   #--------------------------------------------------------------------------   
  8276.   def execute_pre_cache_party_menu
  8277.       @pre_cache_party_menu = []
  8278.       @pre_cache_party_menu.push(Cache.menu_party("Background"))
  8279.       @pre_cache_party_menu.push(Cache.menu_party("Layout"))
  8280.   end   
  8281.    
  8282. end

  8283. #==============================================================================
  8284. # ■ Scene_Party
  8285. #==============================================================================
  8286. class Scene_Party
  8287.   include MOG_MENU_PARTY
  8288.   include MOG_MENU_BASE
  8289.   
  8290.   #--------------------------------------------------------------------------
  8291.   # ● Main
  8292.   #--------------------------------------------------------------------------        
  8293.   def main
  8294.       execute_setup
  8295.       execute_loop
  8296.       execute_dispose
  8297.   end  
  8298.   
  8299.   #--------------------------------------------------------------------------
  8300.   # ● Execute Setup
  8301.   #--------------------------------------------------------------------------        
  8302.   def execute_setup
  8303.       @phase = 0
  8304.       @actor = $game_party.members[0]
  8305.       @actor_old = @actor
  8306.       create_sprites
  8307.   end
  8308.   
  8309.   #--------------------------------------------------------------------------
  8310.   # ● Execute Lopp
  8311.   #--------------------------------------------------------------------------        
  8312.   def execute_loop
  8313.       Graphics.transition(10)
  8314.       loop do
  8315.          Input.update
  8316.          update
  8317.          Graphics.update
  8318.          break if SceneManager.scene != self
  8319.       end
  8320.   end
  8321.   
  8322. end

  8323. #==============================================================================
  8324. # ■ Actor Menu Status Party
  8325. #==============================================================================
  8326. class Actor_Menu_Status_Party
  8327.   
  8328.   include MOG_ACTOR_MENU_PARTY
  8329.   
  8330.   #--------------------------------------------------------------------------
  8331.   # ● Initialize
  8332.   #--------------------------------------------------------------------------
  8333.   def initialize
  8334.       @active = false
  8335.       @max_members = $game_party.max_battle_members
  8336.       @max_members = $game_party.members.size if @max_members > $game_party.members.size
  8337.       create_sprites
  8338.   end

  8339.   #--------------------------------------------------------------------------
  8340.   # ● Create Sprites
  8341.   #--------------------------------------------------------------------------  
  8342.   def create_sprites
  8343.       @face = []
  8344.       @face_org = []
  8345.       @name = []
  8346.       @name_org = []
  8347.       @actor_id = []
  8348.       space = 70
  8349.       index = 0
  8350.       for actor in $game_party.members  
  8351.          @face.push(Sprite.new)
  8352.          @face_org[index] = [FACE_POSITION[0],FACE_POSITION[1] + space * index]
  8353.          @face[index].x = @face_org[index][0] + 150 + (150 * index)
  8354.          @face[index].y = @face_org[index][1]
  8355.          @face[index].z = 10   
  8356.          @name.push(Sprite.new)
  8357.          @name[index].bitmap = Bitmap.new(200,120)
  8358.          @name[index].bitmap.font.size = FONT_SIZE
  8359.          @name[index].bitmap.font.bold = FONT_BOLD
  8360.          @name_org[index] = [NAME_POSITION[0],NAME_POSITION[1] + space * index]
  8361.          @name[index].x = @name_org[index][0] + 150 + (150 * index)
  8362.          @name[index].y = @name_org[index][1]
  8363.          @name[index].z = 11
  8364.          @actor_id[index] = actor.id
  8365.          index += 1
  8366.          break if index >= @max_members
  8367.       end
  8368.       refresh
  8369.   end
  8370.   
  8371.   #--------------------------------------------------------------------------
  8372.   # ● Refresh Position
  8373.   #--------------------------------------------------------------------------   
  8374.   def refresh_position(actor,index)
  8375.       @actor_id[index] = actor.id
  8376.       @face[index].x = @face_org[index][0] + 150 + (150 * index)
  8377.       @name[index].x = @name_org[index][0] + 150 + (150 * index)   
  8378.   end
  8379.   
  8380.   #--------------------------------------------------------------------------
  8381.   # ● Dispose
  8382.   #--------------------------------------------------------------------------      
  8383.   def dispose
  8384.       @face.each {|sprite| sprite.dispose }
  8385.       @name.each {|sprite| sprite.bitmap.dispose }
  8386.       @name.each {|sprite| sprite.dispose }
  8387.   end
  8388.    
  8389.   #--------------------------------------------------------------------------
  8390.   # ● Refresh
  8391.   #--------------------------------------------------------------------------      
  8392.   def refresh
  8393.       index = 0
  8394.       for actor in $game_party.members  
  8395.           face_name = "Face_B" + actor.id.to_s
  8396.           @face[index].bitmap = Cache.menu(face_name.to_s)
  8397.           @name[index].bitmap.clear
  8398.           @name[index].bitmap.draw_text(100,28,64,32,"LV " + actor.level.to_s,0)
  8399.           aname = actor.name
  8400.           @name[index].bitmap.draw_text(0,0,100,32,aname.to_s,0)
  8401.           refresh_position(actor,index) if @actor_id[index] != actor.id
  8402.           index += 1
  8403.           break if index >= @max_members
  8404.       end
  8405.   end
  8406.   
  8407. #--------------------------------------------------------------------------
  8408. # ● Update Slide
  8409. #--------------------------------------------------------------------------                       
  8410.   def update_slide(type,sprite,np)
  8411.       sprite.opacity += 5
  8412.       cp = type == 0 ? sprite.x : sprite.y
  8413.       sp = 3 + ((cp - np).abs / 10)
  8414.       if cp > np
  8415.          cp -= sp
  8416.          cp = np if cp < np
  8417.       elsif cp < np
  8418.          cp += sp
  8419.          cp = np if cp > np
  8420.       end     
  8421.       sprite.x = cp if type == 0
  8422.       sprite.y = cp if type == 1
  8423.   end      
  8424.   
  8425.   #--------------------------------------------------------------------------
  8426.   # ● Update
  8427.   #--------------------------------------------------------------------------
  8428.   def update(actor)
  8429.       for index in [email protected]
  8430.           update_slide(0,@face[index],@face_org[index][0])
  8431.           update_slide(1,@face[index],@face_org[index][1])
  8432.           update_slide(0,@name[index],@name_org[index][0])
  8433.           update_slide(1,@name[index],@name_org[index][1])
  8434.       end      
  8435.   end      
  8436.   
  8437. end

  8438. #==============================================================================
  8439. # ■ Window_MenuStatus Party
  8440. #==============================================================================
  8441. class Window_MenuStatus_Party < Window_Selectable
  8442.   attr_reader   :pending_index           
  8443.   
  8444.   #--------------------------------------------------------------------------
  8445.   # ● Initialize
  8446.   #--------------------------------------------------------------------------
  8447.   def initialize(x, y)
  8448.       super(x, y, window_width, window_height)
  8449.       @pending_index = -1
  8450.       self.opacity = 0
  8451.       self.contents.font.bold = true
  8452.       self.contents.font.size = 18
  8453.       refresh
  8454.   end
  8455.   
  8456.   #--------------------------------------------------------------------------
  8457.   # ● Window Width
  8458.   #--------------------------------------------------------------------------
  8459.   def window_width
  8460.       Graphics.width - 160
  8461.   end

  8462.   #--------------------------------------------------------------------------
  8463.   # ● Window Height
  8464.   #--------------------------------------------------------------------------
  8465.   def window_height
  8466.       Graphics.height
  8467.   end
  8468.   
  8469.   #--------------------------------------------------------------------------
  8470.   # ● Item Max
  8471.   #--------------------------------------------------------------------------
  8472.   def item_max
  8473.       $game_party.members.size
  8474.   end

  8475.   #--------------------------------------------------------------------------
  8476.   # ● Item Height
  8477.   #--------------------------------------------------------------------------
  8478.   def item_height
  8479.     (height - standard_padding * 2) / 4
  8480.   end
  8481.   
  8482.   #--------------------------------------------------------------------------
  8483.   # ● Draw Item
  8484.   #--------------------------------------------------------------------------
  8485.   def draw_item(index)
  8486.     actor = $game_party.members[index]
  8487.     enabled = $game_party.battle_members.include?(actor)
  8488.     rect = item_rect(index)
  8489.     draw_item_background(index)
  8490.     draw_actor_face(actor, rect.x + 1, rect.y + 1, enabled)
  8491.     self.contents.font.color = Color.new(255,155,55,255)
  8492.     draw_text(rect.x + 60,rect.y + 23,64,32,"LV",2)
  8493.     draw_text(rect.x + 60,rect.y + 43,64,32,"HP",2)
  8494.     draw_text(rect.x + 60,rect.y + 63,64,32,"MP",2)
  8495.    
  8496.     draw_text(rect.x + 140,rect.y + 23,64,32,"Atk",2)
  8497.     draw_text(rect.x + 140,rect.y + 43,64,32,"Def",2)
  8498.     draw_text(rect.x + 140,rect.y + 63,64,32,"Agi",2)   
  8499.    
  8500.     draw_text(rect.x + 220,rect.y + 23,64,32,"Mag",2)
  8501.     draw_text(rect.x + 220,rect.y + 43,64,32,"Mdf",2)
  8502.     draw_text(rect.x + 220,rect.y + 63,64,32,"Luk",2)      
  8503.    
  8504.     self.contents.font.color = Color.new(255,255,255,255)
  8505.     draw_text(rect.x + 105,rect.y,105,32,actor.name,0)

  8506.     draw_text(rect.x + 105,rect.y + 23,64,32,actor.level,2)
  8507.     draw_text(rect.x + 105,rect.y + 43,64,32,actor.mhp,2)
  8508.     draw_text(rect.x + 105,rect.y + 63,64,32,actor.mmp,2)   
  8509.    
  8510.    
  8511.     draw_text(rect.x + 185,rect.y + 23,64,32,actor.atk,2)
  8512.     draw_text(rect.x + 185,rect.y + 43,64,32,actor.def,2)
  8513.     draw_text(rect.x + 185,rect.y + 63,64,32,actor.agi,2)   
  8514.    
  8515.     draw_text(rect.x + 265,rect.y + 23,64,32,actor.mat,2)
  8516.     draw_text(rect.x + 265,rect.y + 43,64,32,actor.mdf,2)
  8517.     draw_text(rect.x + 265,rect.y + 63,64,32,actor.luk,2)      
  8518.    
  8519.   end
  8520.   
  8521.   
  8522.   #--------------------------------------------------------------------------
  8523.   # ● Draw Item Background
  8524.   #--------------------------------------------------------------------------
  8525.   def draw_item_background(index)
  8526.       if index == @pending_index
  8527.         contents.fill_rect(item_rect(index), pending_color)
  8528.       end
  8529.   end

  8530.   #--------------------------------------------------------------------------
  8531.   # ● Process OK
  8532.   #--------------------------------------------------------------------------
  8533.   def process_ok
  8534.       super
  8535.       $game_party.menu_actor = $game_party.members[index]
  8536.   end

  8537.   #--------------------------------------------------------------------------
  8538.   # ● Select Last
  8539.   #--------------------------------------------------------------------------
  8540.   def select_last
  8541.       select($game_party.menu_actor.index || 0)
  8542.   end
  8543.   
  8544.   #--------------------------------------------------------------------------
  8545.   # ● Pending Index
  8546.   #--------------------------------------------------------------------------
  8547.   def pending_index=(index)
  8548.       last_pending_index = @pending_index
  8549.       @pending_index = index
  8550.       redraw_item(@pending_index)
  8551.       redraw_item(last_pending_index)
  8552.   end
  8553. end

  8554. #==============================================================================
  8555. # ■ Scene_Party
  8556. #==============================================================================
  8557. class Scene_Party
  8558.   
  8559.   #--------------------------------------------------------------------------
  8560.   # ● Create Sprites
  8561.   #--------------------------------------------------------------------------
  8562.   def create_sprites
  8563.       create_menu_background
  8564.       create_layout
  8565.       create_particles
  8566.       create_status_window
  8567.       create_actor_menu
  8568.   end
  8569.   
  8570.   #--------------------------------------------------------------------------
  8571.   # ● Create Status Window
  8572.   #--------------------------------------------------------------------------
  8573.   def create_status_window
  8574.       @status_window = Window_MenuStatus_Party.new(0, 0)
  8575.       command_formation
  8576.   end  

  8577.   #--------------------------------------------------------------------------
  8578.   # ● Create Actor Menu
  8579.   #--------------------------------------------------------------------------  
  8580.   def create_actor_menu
  8581.       @actor_status = Actor_Menu_Status_Party.new   
  8582.   end
  8583.   
  8584.   #--------------------------------------------------------------------------
  8585.   # ● Command Personal
  8586.   #--------------------------------------------------------------------------
  8587.   def command_personal
  8588.     @status_window.select_last
  8589.     @status_window.activate
  8590.     @status_window.set_handler(:ok,     method(:on_personal_ok))
  8591.     @status_window.set_handler(:cancel, method(:on_personal_cancel))
  8592.   end
  8593.   
  8594.   #--------------------------------------------------------------------------
  8595.   # ● Command Formation
  8596.   #--------------------------------------------------------------------------
  8597.   def command_formation
  8598.     @status_window.index = 0
  8599.     @old_index = @status_window.index
  8600.     @status_window.activate
  8601.     @status_window.set_handler(:ok,     method(:on_formation_ok))
  8602.     @status_window.set_handler(:cancel, method(:on_formation_cancel))
  8603.   end

  8604.   #--------------------------------------------------------------------------
  8605.   # ● On Personal Cancel
  8606.   #--------------------------------------------------------------------------
  8607.   def on_personal_cancel
  8608.       @status_window.unselect
  8609.   end
  8610.   
  8611.   #--------------------------------------------------------------------------
  8612.   # ● On Formation OK
  8613.   #--------------------------------------------------------------------------
  8614.   def on_formation_ok   
  8615.       if @status_window.pending_index >= 0
  8616.         $game_party.swap_order(@status_window.index,
  8617.                                @status_window.pending_index)
  8618.         @status_window.pending_index = -1
  8619.         @status_window.redraw_item(@status_window.index)
  8620.         @actor_status.refresh
  8621.       else
  8622.         @status_window.pending_index = @status_window.index        
  8623.       end
  8624.       @status_window.activate
  8625.   end
  8626.   
  8627.   #--------------------------------------------------------------------------
  8628.   # ● On Formation Cancel
  8629.   #--------------------------------------------------------------------------
  8630.   def on_formation_cancel
  8631.       if @status_window.pending_index >= 0
  8632.          @status_window.pending_index = -1
  8633.          @status_window.activate         
  8634.       else
  8635.          return_scene
  8636.       end
  8637.   end  
  8638.   
  8639.   #--------------------------------------------------------------------------
  8640.   # ● Create Menu Background
  8641.   #--------------------------------------------------------------------------            
  8642.   def create_menu_background
  8643.       @background = Plane.new
  8644.       @background.bitmap = $game_temp.pre_cache_party_menu[0]
  8645.       @background.z = 0
  8646.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  8647.   end   
  8648.   
  8649.   #--------------------------------------------------------------------------
  8650.   # ● Create Layout
  8651.   #--------------------------------------------------------------------------              
  8652.   def create_layout     
  8653.       @layout = Sprite.new
  8654.       @layout.bitmap = $game_temp.pre_cache_party_menu[1]
  8655.       @layout.z = 3
  8656.   end  
  8657.   
  8658.   #--------------------------------------------------------------------------
  8659.   # ● Create Particles
  8660.   #--------------------------------------------------------------------------  
  8661.   def create_particles
  8662.       @particles_sprite =[]
  8663.       for i in 0...NUMBER_OF_PARTICLES
  8664.           @particles_sprite.push(Particles_Menu.new(nil))
  8665.       end
  8666.   end   
  8667.    
  8668. end

  8669. #==============================================================================
  8670. # ■ Scene_Party
  8671. #==============================================================================
  8672. class Scene_Party
  8673.   
  8674.   #--------------------------------------------------------------------------
  8675.   # ● Execute Dispose
  8676.   #--------------------------------------------------------------------------        
  8677.   def execute_dispose
  8678.       Graphics.freeze
  8679.       dispose_background
  8680.       dispose_layout
  8681.       dispose_particles
  8682.       dispose_status_window
  8683.       dispose_actor_menu
  8684.    end

  8685.   #--------------------------------------------------------------------------
  8686.   # ● Dispose Status Window
  8687.   #--------------------------------------------------------------------------           
  8688.    def dispose_status_window
  8689.        @status_window.dispose
  8690.    end
  8691.      
  8692.   #--------------------------------------------------------------------------
  8693.   # ● Dispose Background
  8694.   #--------------------------------------------------------------------------  
  8695.   def dispose_background
  8696.       return if @background == nil
  8697.       @background.dispose
  8698.       @background = nil
  8699.   end   
  8700.   
  8701.   #--------------------------------------------------------------------------
  8702.   # ● Dispose Layout
  8703.   #--------------------------------------------------------------------------               
  8704.   def dispose_layout
  8705.       return if @layout == nil
  8706.       @layout.dispose
  8707.       @layout = nil
  8708.   end  
  8709.   
  8710. #--------------------------------------------------------------------------
  8711. # ● Dispose Particles
  8712. #--------------------------------------------------------------------------   
  8713. def dispose_particles
  8714.      return if @particles_sprite == nil
  8715.      @particles_sprite.each {|sprite| sprite.dispose }
  8716. end     

  8717. #--------------------------------------------------------------------------
  8718. # ● Dispose Actor Menu
  8719. #--------------------------------------------------------------------------   
  8720. def dispose_actor_menu
  8721.      return if @actor_status == nil
  8722.      @actor_status.dispose
  8723. end   

  8724. end

  8725. #==============================================================================
  8726. # ■ Scene_Party
  8727. #==============================================================================
  8728. class Scene_Party
  8729.   
  8730.   #--------------------------------------------------------------------------
  8731.   # ● Update Sprites
  8732.   #--------------------------------------------------------------------------         
  8733.   def update_sprites   
  8734.       update_background
  8735.       update_particles
  8736.       update_status_window
  8737.   end
  8738.   
  8739.   #--------------------------------------------------------------------------
  8740.   # ● Update Background
  8741.   #--------------------------------------------------------------------------              
  8742.   def update_background
  8743.       return if @background == nil
  8744.       @background.ox += @background_scroll[0]
  8745.       @background.oy += @background_scroll[1]
  8746.   end   
  8747.   
  8748.   #--------------------------------------------------------------------------
  8749.   # ● Update Particles
  8750.   #--------------------------------------------------------------------------  
  8751.   def update_particles
  8752.       return if @particles_sprite == nil
  8753.       @particles_sprite.each {|sprite| sprite.update }
  8754.   end
  8755.   
  8756.   #--------------------------------------------------------------------------
  8757.   # ● Update Status Window
  8758.   #--------------------------------------------------------------------------   
  8759.   def update_status_window
  8760.       return if @status_window == nil
  8761.       @status_window.update
  8762.       update_slide(0,@status_window,0)
  8763.       update_slide(1,@status_window,0)
  8764.       @actor = $game_party.members[@status_window.index]
  8765.       @actor_status.update(@actor)
  8766.   end

  8767. #--------------------------------------------------------------------------
  8768. # ● Update Slide
  8769. #--------------------------------------------------------------------------                       
  8770.   def update_slide(type,sprite,np)
  8771.       sprite.contents_opacity += 5
  8772.       cp = type == 0 ? sprite.x : sprite.y
  8773.       sp = 3 + ((cp - np).abs / 10)
  8774.       if cp > np
  8775.          cp -= sp
  8776.          cp = np if cp < np
  8777.       elsif cp < np
  8778.          cp += sp
  8779.          cp = np if cp > np
  8780.       end     
  8781.       sprite.x = cp if type == 0
  8782.       sprite.y = cp if type == 1
  8783.   end   

  8784. end

  8785. #==============================================================================
  8786. # ■ Scene_Party
  8787. #==============================================================================
  8788. class Scene_Party
  8789.   
  8790.   #--------------------------------------------------------------------------
  8791.   # ● Update
  8792.   #--------------------------------------------------------------------------      
  8793.   def update
  8794.       update_sprites
  8795.       update_command
  8796.   end

  8797.   #--------------------------------------------------------------------------
  8798.   # ● Return Scene
  8799.   #--------------------------------------------------------------------------         
  8800.   def return_scene
  8801.       Sound.play_cancel
  8802.       SceneManager.return
  8803.   end

  8804.   #--------------------------------------------------------------------------
  8805.   # ● ON Actor Charge
  8806.   #--------------------------------------------------------------------------
  8807.   def on_actor_change
  8808.       $game_temp.actor_menu_temp = @actor
  8809.       SceneManager.goto(Scene_Status)
  8810.   end  
  8811.   
  8812. end

  8813. #==============================================================================
  8814. # ■ Scene_Party
  8815. #==============================================================================
  8816. class Scene_Party

  8817.   #--------------------------------------------------------------------------
  8818.   # ● Update Command
  8819.   #--------------------------------------------------------------------------      
  8820.   def update_command
  8821.    
  8822.   end
  8823.   
  8824. end

  8825. #==============================================================================
  8826. # ■ Game_Temp
  8827. #==============================================================================
  8828. class Game_Temp
  8829.   
  8830.   #--------------------------------------------------------------------------
  8831.   # ● Execute Pre Cache File Menu
  8832.   #--------------------------------------------------------------------------   
  8833.   def execute_pre_cache_file_menu
  8834.       @pre_cache_file_menu = []
  8835.       @pre_cache_file_menu.push(Cache.menu_save("Background"))
  8836.       @pre_cache_file_menu.push(Cache.menu_save("Layout"))
  8837.       @pre_cache_file_menu.push(Cache.menu_save("File_Mode"))
  8838.       @pre_cache_file_menu.push(Cache.menu_save("File_layout_1"))
  8839.       @pre_cache_file_menu.push(Cache.menu_save("File_layout_2"))
  8840.       @pre_cache_file_menu.push(Cache.menu_save("File_layout_3"))
  8841.       @pre_cache_file_menu.push(Cache.menu_save("Character_Floor"))
  8842.       @pre_cache_file_menu.push(Cache.menu_save("File_Number"))
  8843.   end   
  8844.    
  8845. end

  8846. #==============================================================================
  8847. # ■ Game Temp
  8848. #==============================================================================
  8849. class Game_Temp

  8850.   attr_accessor :scene_save
  8851.   #--------------------------------------------------------------------------
  8852.   # ● Initialize
  8853.   #--------------------------------------------------------------------------
  8854.   alias mog_scene_file_initialize initialize
  8855.   def initialize
  8856.       mog_scene_file_initialize
  8857.       @scene_save = false  
  8858.   end
  8859.   
  8860. end
  8861.    
  8862. #==============================================================================
  8863. # ■ Window_Base
  8864. #==============================================================================
  8865. class Window_Base < Window
  8866.   
  8867.   #--------------------------------------------------------------------------
  8868.   # ● draw_picture_number(x,y,value,file_name,align, space, frame_max ,frame_index)     
  8869.   #--------------------------------------------------------------------------
  8870.   # X - Posição na horizontal
  8871.   # Y - Posição na vertical
  8872.   # VALUE - Valor Numérico
  8873.   # FILE_NAME - Nome do arquivo
  8874.   # ALIGN - Centralizar 0 - Esquerda 1- Centro 2 - Direita  
  8875.   # SPACE - Espaço entre os números.
  8876.   # FRAME_MAX - Quantidade de quadros(Linhas) que a imagem vai ter.
  8877.   # FRAME_INDEX - Definição do quadro a ser utilizado.
  8878.   #--------------------------------------------------------------------------  
  8879.   def draw_picture_number_file(x,y,value, file_name,align = 0, space = 0, frame_max = 1,frame_index = 0)     
  8880.       number_image = $game_temp.pre_cache_file_menu[7]
  8881.       frame_max = 1 if frame_max < 1
  8882.       frame_index = frame_max -1 if frame_index > frame_max -1
  8883.       align = 2 if align > 2
  8884.       cw = number_image.width / 10
  8885.       ch = number_image.height / frame_max
  8886.       h = ch * frame_index
  8887.       number = value.abs.to_s.split(//)
  8888.       case align
  8889.          when 0
  8890.             plus_x = (-cw + space) * number.size
  8891.          when 1
  8892.             plus_x = (-cw + space) * number.size
  8893.             plus_x /= 2
  8894.          when 2  
  8895.             plus_x = 0
  8896.       end
  8897.       for r in 0..number.size - 1      
  8898.           number_abs = number[r].to_i
  8899.           number_rect = Rect.new(cw * number_abs, h, cw, ch)
  8900.           self.contents.blt(plus_x + x + ((cw - space) * r), y , number_image, number_rect)        
  8901.       end   
  8902.   end
  8903.    
  8904.   #--------------------------------------------------------------------------
  8905.   # ● Draw Help Layout
  8906.   #--------------------------------------------------------------------------
  8907.   def draw_face_save(name,x,y,type)
  8908.       if type == 0
  8909.          image_name = name + "_0"
  8910.       elsif type == 1
  8911.          image_name = name + "_1"         
  8912.       else  
  8913.          image_name = name + "_2"
  8914.       end
  8915.       image = Cache.face(image_name)   
  8916.       cw = image.width  
  8917.       ch = image.height
  8918.       src_rect = Rect.new(0, 0, cw, ch)   
  8919.       self.contents.blt(x , y , image, src_rect)  
  8920.       image.dispose
  8921.   end   
  8922.    
  8923.   #--------------------------------------------------------------------------
  8924.   # ● draw_parameter_layout
  8925.   #--------------------------------------------------------------------------  
  8926.   def draw_parameter_layout(x,y)
  8927.       image = $game_temp.pre_cache_file_menu[3]
  8928.       cw = image.width  
  8929.       ch = image.height
  8930.       src_rect = Rect.new(0, 0, cw, ch)   
  8931.       self.contents.blt(x , y , image, src_rect)     
  8932.   end   
  8933.   
  8934.   #--------------------------------------------------------------------------
  8935.   # ● draw_parameter_layout2
  8936.   #--------------------------------------------------------------------------  
  8937.   def draw_parameter_layout2(x,y,type)
  8938.       if type == 0
  8939.          image = $game_temp.pre_cache_file_menu[4]
  8940.       else   
  8941.          image = $game_temp.pre_cache_file_menu[5]
  8942.       end  
  8943.       cw = image.width  
  8944.       ch = image.height
  8945.       src_rect = Rect.new(0, 0, cw, ch)   
  8946.       self.contents.blt(x , y , image, src_rect)     
  8947.   end      
  8948.   
  8949.   #--------------------------------------------------------------------------
  8950.   # ● draw_character_floor
  8951.   #--------------------------------------------------------------------------  
  8952.   def draw_character_floor(x,y)
  8953.       image = $game_temp.pre_cache_file_menu[6]
  8954.       cw = image.width  
  8955.       ch = image.height
  8956.       src_rect = Rect.new(0, 0, cw, ch)   
  8957.       self.contents.blt(x , y , image, src_rect)   
  8958.   end
  8959.   
  8960. end  

  8961. #==============================================================================
  8962. # ■ DataManager
  8963. #==============================================================================
  8964. module DataManager

  8965.   #--------------------------------------------------------------------------
  8966.   # ● Make Save Header
  8967.   #--------------------------------------------------------------------------  
  8968.   def self.make_save_header
  8969.       header = {}
  8970.       header[:characters] = $game_party.characters_for_savefile
  8971.       header[:playtime_s] = $game_system.playtime_s
  8972.       header[:playtime] = $game_system.playtime
  8973.       header[:map_name] = $game_map.display_name
  8974.       header[:members] = $game_party.members
  8975.       header
  8976.   end  
  8977.    
  8978. end  

  8979. #==============================================================================
  8980. # ■ Scene Save
  8981. #==============================================================================
  8982. class Scene_Save < Scene_File

  8983.   #--------------------------------------------------------------------------
  8984.   # ● Initialize
  8985.   #--------------------------------------------------------------------------
  8986.   def initialize
  8987.       $game_temp.scene_save = true
  8988.       super
  8989.   end  

  8990. end  

  8991. #==============================================================================
  8992. # ■ Scene Load
  8993. #==============================================================================
  8994. class Scene_Load < Scene_File

  8995.   #--------------------------------------------------------------------------
  8996.   # ● Initialize
  8997.   #--------------------------------------------------------------------------
  8998.   def initialize
  8999.       $game_temp.scene_save = false
  9000.       super
  9001.   end  

  9002. end

  9003. #==============================================================================
  9004. # ■ Scene_File
  9005. #==============================================================================
  9006. class Scene_File
  9007.   include MOG_MENU_SAVE
  9008.   
  9009. #--------------------------------------------------------------------------
  9010. # ● Main
  9011. #--------------------------------------------------------------------------         
  9012. def main
  9013.      $game_temp.execute_pre_cache_file_menu
  9014.      create_sprites
  9015.      Graphics.transition(10)
  9016.      execute_loop
  9017.      execute_dispose
  9018. end   

  9019. #--------------------------------------------------------------------------
  9020. # ● Execute Loop
  9021. #--------------------------------------------------------------------------           
  9022. def execute_loop
  9023.      loop do
  9024.           Graphics.update
  9025.           Input.update
  9026.           update
  9027.           if SceneManager.scene != self
  9028.               break
  9029.           end
  9030.      end
  9031. end   

  9032. end

  9033. #==============================================================================
  9034. # ■ Window_SaveFile
  9035. #==============================================================================
  9036. class Window_SaveFile_A < Window_Base
  9037.   attr_reader   :filename               
  9038.   attr_reader   :file_exist               
  9039.   attr_reader   :time_stamp              
  9040.   attr_reader   :selected                 
  9041.   attr_reader   :file_index
  9042.   
  9043.   #--------------------------------------------------------------------------
  9044.   # ● Initialize
  9045.   #--------------------------------------------------------------------------
  9046.   def initialize(file_index, filename)
  9047.       super(0, 0,720, 140)
  9048.       self.opacity = 0
  9049.       @file_index = file_index
  9050.       @filename = filename
  9051.       load_gamedata
  9052.       refresh
  9053.       @selected = false
  9054.   end
  9055.   
  9056.   #--------------------------------------------------------------------------
  9057.   # ● load_gamedata
  9058.   #--------------------------------------------------------------------------
  9059.   def load_gamedata
  9060.     @time_stamp = Time.at(0)
  9061.     @file_exist = FileTest.exist?(@filename)
  9062.     if @file_exist
  9063.        header = DataManager.load_header(@file_index)
  9064.        if header == nil
  9065.           @file_exist = false
  9066.           return
  9067.        end  
  9068.        @characters = header[:characters]
  9069.        @total_sec = header[:playtime]
  9070.        @mapname = header[:map_name]
  9071.        @members = header[:members]
  9072.     end
  9073.   end
  9074.   
  9075.   #--------------------------------------------------------------------------
  9076.   # ● Refresh
  9077.   #--------------------------------------------------------------------------
  9078.   def refresh
  9079.       self.contents.clear
  9080.       self.contents.font.color = normal_color
  9081.       xp = 96
  9082.       ex = 60   
  9083.       if @file_exist
  9084.          if @total_sec == nil
  9085.             draw_parameter_layout2(0,50,0)
  9086.             draw_parameter_layout(-10 + xp,0)
  9087.             value = @file_index + 1
  9088.             draw_picture_number_file(13 + xp, 32,value, "File_Number_01",1,0,3,0)           
  9089.             self.contents.draw_text(140, 50, 450, 32, "Error! - Please, dont't use your old Save Files...", 0)
  9090.             return
  9091.         end  
  9092.         draw_parameter_layout2(0,50,0)
  9093.         draw_parameter_layout(-10 + xp,0)
  9094.         value = @file_index + 1
  9095.         draw_picture_number_file(13 + xp, 32,value, "File_Number_01",1,0,3,0)
  9096.         draw_party_characters(180 + xp, 75,ex)
  9097.         draw_playtime(495, 20, contents.width - 4, 2)
  9098.         draw_map_location( 400 + xp,64)
  9099.         draw_level(185 + xp,85,ex)
  9100.         draw_face_save(40 + xp,0)
  9101.       else  
  9102.         draw_parameter_layout2(0,50,1)
  9103.         draw_parameter_layout(-10 + xp,0)
  9104.         value = @file_index + 1
  9105.         draw_picture_number_file(13 + xp, 32,value, "File_Number_01",1,0,3,0)      
  9106.          self.contents.draw_text(260, 50, 120, 32, "No Data", 1)
  9107.       end
  9108.     end
  9109.    
  9110.   #--------------------------------------------------------------------------
  9111.   # ● draw_face
  9112.   #--------------------------------------------------------------------------
  9113.   def draw_face_save(x,y)
  9114.      draw_actor_face(@members[0], x, y)
  9115.   end
  9116.   
  9117.   #--------------------------------------------------------------------------
  9118.   # ● draw_level
  9119.   #--------------------------------------------------------------------------
  9120.   def draw_level(x,y,ex)
  9121.       self.contents.font.color = normal_color   
  9122.       for i in [email protected]
  9123.         break if i > 3
  9124.         level = @members[i].level
  9125.         draw_picture_number_file(x + (ex  * i) , y ,level, "File_Number_01",1,0,3,1)
  9126.       end        
  9127.   end
  9128.   
  9129.   #--------------------------------------------------------------------------
  9130.   # ● draw_map_location
  9131.   #--------------------------------------------------------------------------
  9132.   def draw_map_location(x,y)
  9133.       self.contents.font.bold = true
  9134.       self.contents.font.size = 20
  9135.       self.contents.font.italic = true
  9136.       self.contents.draw_text(x, y, 125, 32, @mapname.to_s, 0)
  9137.   end
  9138.   #--------------------------------------------------------------------------
  9139.   # ● draw_party_characters
  9140.   #--------------------------------------------------------------------------
  9141.   def draw_party_characters(x, y,ex)
  9142.       for i in [email protected]
  9143.         break if i > 3
  9144.         name = @characters[i][0]
  9145.         index = @characters[i][1]
  9146.         draw_character_floor(- 35 + x + i * ex,y - 20)      
  9147.         draw_character(name, index, x + i * ex, y)
  9148.       end
  9149.   end
  9150.   
  9151.   #--------------------------------------------------------------------------
  9152.   # ● draw_playtime
  9153.   #--------------------------------------------------------------------------
  9154.   def draw_playtime(x, y, width, align)
  9155.       hour = @total_sec / 60 / 60
  9156.       min = @total_sec / 60 % 60
  9157.       sec = @total_sec % 60
  9158.       time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
  9159.       draw_picture_number_file(x + 18 * 0, y ,0, "File_Number_01",0,0,3,0) if hour < 10
  9160.       draw_picture_number_file(x + 18 * 1, y ,hour, "File_Number_01",0,0,3,0)
  9161.       draw_picture_number_file(x + 18 * 3, y ,0, "File_Number_01",0,0,3,0) if min < 10
  9162.       draw_picture_number_file(x + 18 * 4, y ,min, "File_Number_01",0,0,3,0)
  9163.       draw_picture_number_file(x + 18 * 6, y ,0, "File_Number_01",0,0,3,0) if sec < 10
  9164.       draw_picture_number_file(x + 18 * 7, y ,sec , "File_Number_01",0,0,3,0)     
  9165.   end

  9166.   #--------------------------------------------------------------------------
  9167.   # ● selected
  9168.   #--------------------------------------------------------------------------
  9169.   def selected=(selected)
  9170.       @selected = selected
  9171.   end
  9172. end

  9173. #==============================================================================
  9174. # ■ Scene_File
  9175. #==============================================================================
  9176. class Scene_File
  9177.   
  9178.   #--------------------------------------------------------------------------
  9179.   # ● Create Sprites
  9180.   #--------------------------------------------------------------------------
  9181.   def create_sprites
  9182.       @saving = $game_temp.scene_save
  9183.       @file_max = FILES_MAX
  9184.       @file_max = 1 if FILES_MAX < 1
  9185.       create_background
  9186.       create_layout
  9187.       create_savefile_windows
  9188.       create_particles
  9189.       @index = DataManager.last_savefile_index
  9190.       @check_prev_index = true
  9191.       @savefile_windows[@index].selected = true   
  9192.   end  

  9193.   #--------------------------------------------------------------------------
  9194.   # ● Create Background
  9195.   #--------------------------------------------------------------------------            
  9196.   def create_background
  9197.       @background = Plane.new
  9198.       @background.bitmap = $game_temp.pre_cache_file_menu[0]
  9199.       @background.z = 0
  9200.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  9201.   end   

  9202.   #--------------------------------------------------------------------------
  9203.   # ● Create_Layout
  9204.   #--------------------------------------------------------------------------  
  9205.   def create_layout
  9206.       @layout_01 = Sprite.new  
  9207.       @layout_01.bitmap = $game_temp.pre_cache_file_menu[1]
  9208.       @layout_01.z = 1      
  9209.       @layout_01.blend_type = 1      
  9210.       @save_image = $game_temp.pre_cache_file_menu[2]
  9211.       @layout_02 = Sprite.new  
  9212.       @layout_02.bitmap = Bitmap.new(@save_image.width,@save_image.height)
  9213.       cw = @save_image.width
  9214.       ch = @save_image.height / 2
  9215.       if @saving
  9216.          h = 0
  9217.       else  
  9218.          h = ch
  9219.       end  
  9220.       src_rect = Rect.new(0, h, cw, ch)
  9221.       @layout_02.bitmap.blt(0,0, @save_image, src_rect)      
  9222.       @layout_02.z = 3
  9223.       @layout_02.y = 370
  9224.    end

  9225.   #--------------------------------------------------------------------------
  9226.   # ● Create Save File Window
  9227.   #--------------------------------------------------------------------------
  9228.   def create_savefile_windows
  9229.       @pw_pos = [-160,32]
  9230.       @aw_pos = [-96,160]
  9231.       @nw_pos = [-32,288]
  9232.       @savefile_windows = []
  9233.       for i in 0...@file_max
  9234.           @savefile_windows[i] = Window_SaveFile_A.new(i, DataManager.make_filename(i))
  9235.           @savefile_windows[i].z = 2
  9236.           @savefile_windows[i].visible = false
  9237.           @savefile_windows[i].x = 400
  9238.       end
  9239.       check_active_window
  9240.       @item_max = @file_max
  9241.   end
  9242.   
  9243.   #--------------------------------------------------------------------------
  9244.   # ● Create Particles
  9245.   #--------------------------------------------------------------------------  
  9246.   def create_particles
  9247.       @particles_sprite =[]
  9248.       for i in 0...NUMBER_OF_PARTICLES
  9249.           @particles_sprite.push(Particles_Menu.new(nil))
  9250.       end
  9251.   end   
  9252.    
  9253. end

  9254. #==============================================================================
  9255. # ■ Scene_File
  9256. #==============================================================================
  9257. class Scene_File

  9258.   #--------------------------------------------------------------------------
  9259.   # ● Execute Dispose
  9260.   #--------------------------------------------------------------------------
  9261.   def execute_dispose
  9262.       return if @background == nil
  9263.       Graphics.freeze
  9264.       dispose_background
  9265.       dispose_particles
  9266.       dispose_layout
  9267.       dispose_item_windows
  9268.   end
  9269.    
  9270. #--------------------------------------------------------------------------
  9271. # ● Dispose Layout
  9272. #--------------------------------------------------------------------------  
  9273. def dispose_layout
  9274.      @layout_01.dispose
  9275.      @layout_02.bitmap.dispose
  9276.      @layout_02.dispose  
  9277. end
  9278.    
  9279. #--------------------------------------------------------------------------
  9280. # ● Dispose Background
  9281. #--------------------------------------------------------------------------
  9282. def dispose_background
  9283.      @background.dispose
  9284.      @background = nil   
  9285. end
  9286.   
  9287. #--------------------------------------------------------------------------
  9288. # ● Dispose Particles
  9289. #--------------------------------------------------------------------------   
  9290. def dispose_particles
  9291.      return if @particles_sprite == nil
  9292.      @particles_sprite.each {|sprite| sprite.dispose }
  9293. end   
  9294.   
  9295.   #--------------------------------------------------------------------------
  9296.   # ● Dispose of Save File Window
  9297.   #--------------------------------------------------------------------------
  9298.   def dispose_item_windows
  9299.       for window in @savefile_windows
  9300.           window.dispose
  9301.       end
  9302.   end  

  9303. end

  9304. #==============================================================================
  9305. # ■ Scene_File
  9306. #==============================================================================
  9307. class Scene_File  
  9308.   
  9309.   #--------------------------------------------------------------------------
  9310.   # ● Update Sprites
  9311.   #--------------------------------------------------------------------------
  9312.   def update_sprites
  9313.       check_start_index
  9314.       update_savefile_windows      
  9315.       update_background
  9316.       update_particles      
  9317.   end

  9318.   #--------------------------------------------------------------------------
  9319.   # ● Update Background
  9320.   #--------------------------------------------------------------------------              
  9321.   def update_background
  9322.       return if @background == nil
  9323.       @background.ox += @background_scroll[0]
  9324.       @background.oy += @background_scroll[1]
  9325.   end   
  9326.   
  9327.   #--------------------------------------------------------------------------
  9328.   # ● Update Particles
  9329.   #--------------------------------------------------------------------------  
  9330.   def update_particles
  9331.       return if @particles_sprite == nil
  9332.       @particles_sprite.each {|sprite| sprite.update }
  9333.   end
  9334.    
  9335.   #--------------------------------------------------------------------------
  9336.   # ● check_start_index
  9337.   #--------------------------------------------------------------------------
  9338.   def check_start_index
  9339.       return if @check_prev_index == false
  9340.       @check_prev_index = false
  9341.       check_active_window   
  9342.   end  
  9343.    
  9344.   #--------------------------------------------------------------------------
  9345.   # ● check_active_window   
  9346.   #--------------------------------------------------------------------------
  9347.   def check_active_window   
  9348.       @index = 0 if @index == nil
  9349.       for i in 0...@file_max  
  9350.         @pw = @index - 1
  9351.         @pw = 0 if @pw > @file_max - 1
  9352.         @pw = @file_max- 1 if @pw < 0        
  9353.         @aw = @index
  9354.         @nw = @index + 1
  9355.         @nw = 0 if @nw > @file_max - 1
  9356.         @nw = @file_max - 1  if @nw < 0
  9357.         case @savefile_windows[i].file_index
  9358.            when @pw,@nw
  9359.                 @savefile_windows[i].visible = true
  9360.                 @savefile_windows[i].contents_opacity = 80
  9361.            when @aw  
  9362.                 @savefile_windows[i].visible = true
  9363.                 @savefile_windows[i].contents_opacity = 255
  9364.            else
  9365.                 @savefile_windows[i].visible = false
  9366.         end
  9367.       end         
  9368.   end
  9369.    
  9370.   #--------------------------------------------------------------------------
  9371.   # ● Update Save File Window
  9372.   #--------------------------------------------------------------------------
  9373.   def update_savefile_windows
  9374.       update_slide_window
  9375.       for window in @savefile_windows
  9376.         window.update
  9377.       end
  9378.   end
  9379.   
  9380.   #--------------------------------------------------------------------------
  9381.   # ● update_slide_window
  9382.   #--------------------------------------------------------------------------  
  9383.   def update_slide_window
  9384.       slide_window_x(@pw,@pw_pos[0])
  9385.       slide_window_x(@aw,@aw_pos[0])
  9386.       slide_window_x(@nw,@nw_pos[0])
  9387.       slide_window_y(@pw,@pw_pos[1])
  9388.       slide_window_y(@aw,@aw_pos[1])
  9389.       slide_window_y(@nw,@nw_pos[1])
  9390.   end
  9391.    
  9392.   #--------------------------------------------------------------------------
  9393.   # ● slide_window_x
  9394.   #--------------------------------------------------------------------------   
  9395.   def slide_window_x(i,x_pos)
  9396.       if @savefile_windows[i].x < x_pos
  9397.          @savefile_windows[i].x += 15
  9398.          @savefile_windows[i].x = x_pos if @savefile_windows[i].x > x_pos
  9399.       end  
  9400.       if @savefile_windows[i].x > x_pos
  9401.          @savefile_windows[i].x -= 15
  9402.          @savefile_windows[i].x = x_pos if @savefile_windows[i].x < x_pos        
  9403.        end            
  9404.   end   
  9405.      
  9406.   #--------------------------------------------------------------------------
  9407.   # ● slide_window_y
  9408.   #--------------------------------------------------------------------------   
  9409.   def slide_window_y(i,y_pos)
  9410.       if @savefile_windows[i].y < y_pos
  9411.          @savefile_windows[i].y += 15
  9412.          @savefile_windows[i].y = y_pos if @savefile_windows[i].y > y_pos
  9413.       end  
  9414.       if @savefile_windows[i].y > y_pos
  9415.          @savefile_windows[i].y -= 15
  9416.          @savefile_windows[i].y = y_pos if @savefile_windows[i].y < y_pos        
  9417.        end            
  9418.   end   
  9419.      
  9420.   #--------------------------------------------------------------------------
  9421.   # ● reset_position
  9422.   #--------------------------------------------------------------------------     
  9423.   def reset_position(diretion)
  9424.       check_active_window      
  9425.       case diretion
  9426.          when 0
  9427.             @savefile_windows[@pw].y = -64
  9428.             @savefile_windows[@pw].x = 0
  9429.          when 1  
  9430.             @savefile_windows[@nw].y = 440
  9431.             @savefile_windows[@nw].x = 0
  9432.       end        
  9433.   end   
  9434.   
  9435. end  

  9436. #==============================================================================
  9437. # ■ Scene_File
  9438. #==============================================================================
  9439. class Scene_File  
  9440.   
  9441.   #--------------------------------------------------------------------------
  9442.   # ● Frame Update
  9443.   #--------------------------------------------------------------------------
  9444.   def update
  9445.       update_sprites
  9446.       update_command      
  9447.   end
  9448.   
  9449.   #--------------------------------------------------------------------------
  9450.   # ● Update Command
  9451.   #--------------------------------------------------------------------------
  9452.   def update_command
  9453.       if Input.trigger?(Input::C)
  9454.          on_savefile_ok
  9455.       elsif Input.trigger?(Input::B)
  9456.          Sound.play_cancel
  9457.          return_scene
  9458.       else
  9459.         last_index = @index
  9460.         if Input.trigger?(Input::DOWN)
  9461.            execute_index(1)
  9462.            if @file_max > 2
  9463.               reset_position(1)
  9464.            else
  9465.               reset_position(0)
  9466.            end  
  9467.         end
  9468.         if Input.trigger?(Input::UP)
  9469.            execute_index(-1)
  9470.            reset_position(0)
  9471.         end
  9472.         if @index != last_index
  9473.            Sound.play_cursor
  9474.            @savefile_windows[last_index].selected = false
  9475.            @savefile_windows[@index].selected = true
  9476.         end      
  9477.       end
  9478.   end

  9479.   #--------------------------------------------------------------------------
  9480.   # ● Execute Index
  9481.   #--------------------------------------------------------------------------  
  9482.   def execute_index(value)
  9483.       @index += value
  9484.       @index = @index >= @file_max ? 0 : @index < 0 ? (@file_max - 1) : @index
  9485.   end
  9486.   
  9487. end

  9488. #==============================================================================
  9489. # ■ Game_Temp
  9490. #==============================================================================
  9491. class Game_Temp
  9492.   
  9493.   #--------------------------------------------------------------------------
  9494.   # ● Execute Pre Cache End Menu
  9495.   #--------------------------------------------------------------------------   
  9496.   def execute_pre_cache_end_menu
  9497.       @pre_cache_end_menu = []
  9498.       @pre_cache_end_menu.push(Cache.menu_end("Background"))
  9499.       @pre_cache_end_menu.push(Cache.menu_end("Layout"))
  9500.   end   
  9501.    
  9502. end

  9503. #==============================================================================
  9504. # ■ Scene_End
  9505. #==============================================================================
  9506. class Scene_End
  9507.   include MOG_MENU_END
  9508.   include MOG_MENU_BASE
  9509.   
  9510.   #--------------------------------------------------------------------------
  9511.   # ● Main
  9512.   #--------------------------------------------------------------------------        
  9513.   def main
  9514.       execute_setup
  9515.       execute_loop
  9516.       execute_dispose
  9517.   end  
  9518.   
  9519.   #--------------------------------------------------------------------------
  9520.   # ● Execute Setup
  9521.   #--------------------------------------------------------------------------        
  9522.   def execute_setup
  9523.       @phase = 0
  9524.       create_sprites
  9525.   end
  9526.   
  9527.   #--------------------------------------------------------------------------
  9528.   # ● Execute Lopp
  9529.   #--------------------------------------------------------------------------        
  9530.   def execute_loop
  9531.       Graphics.transition(10)
  9532.       loop do
  9533.          Input.update
  9534.          update
  9535.          Graphics.update
  9536.          break if SceneManager.scene != self
  9537.       end
  9538.   end
  9539.   
  9540. end

  9541. #==============================================================================
  9542. # ■ Scene_End
  9543. #==============================================================================
  9544. class Scene_End
  9545.   
  9546.   #--------------------------------------------------------------------------
  9547.   # ● Create Sprites
  9548.   #--------------------------------------------------------------------------
  9549.   def create_sprites
  9550.       create_menu_background
  9551.       create_layout
  9552.       create_particles
  9553.       create_command_window
  9554.   end

  9555.   #--------------------------------------------------------------------------
  9556.   # ● Create Menu Background
  9557.   #--------------------------------------------------------------------------            
  9558.   def create_menu_background
  9559.       @background = Plane.new
  9560.       @background.bitmap = $game_temp.pre_cache_end_menu[0]
  9561.       @background.z = 0
  9562.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  9563.   end   
  9564.   
  9565.   #--------------------------------------------------------------------------
  9566.   # ● Create Layout
  9567.   #--------------------------------------------------------------------------              
  9568.   def create_layout     
  9569.       @layout = Sprite.new
  9570.       @layout.bitmap = $game_temp.pre_cache_end_menu[1]
  9571.       @layout.z = 3
  9572.   end  
  9573.   
  9574.   #--------------------------------------------------------------------------
  9575.   # ● Create Particles
  9576.   #--------------------------------------------------------------------------  
  9577.   def create_particles
  9578.       @particles_sprite =[]
  9579.       for i in 0...NUMBER_OF_PARTICLES
  9580.           @particles_sprite.push(Particles_Menu.new(nil))
  9581.       end
  9582.   end   
  9583.    
  9584.   #--------------------------------------------------------------------------
  9585.   # ● Create Command Window
  9586.   #--------------------------------------------------------------------------
  9587.   def create_command_window
  9588.       @command_window = Window_GameEnd.new
  9589.       @command_window.set_handler(:to_title, method(:command_to_title))
  9590.       @command_window.set_handler(:shutdown, method(:command_shutdown))
  9591.       @command_window.set_handler(:cancel,   method(:return_scene))
  9592.   end  
  9593.   
  9594. end

  9595. #==============================================================================
  9596. # ■ Scene_End
  9597. #==============================================================================
  9598. class Scene_End
  9599.   
  9600.   #--------------------------------------------------------------------------
  9601.   # ● Execute Dispose
  9602.   #--------------------------------------------------------------------------        
  9603.   def execute_dispose
  9604.       Graphics.freeze
  9605.       dispose_background
  9606.       dispose_layout
  9607.       dispose_particles
  9608.       dispose_command_window
  9609.    end
  9610.   
  9611.   #--------------------------------------------------------------------------
  9612.   # ● Dispose Background
  9613.   #--------------------------------------------------------------------------  
  9614.   def dispose_background
  9615.       return if @background == nil
  9616.       @background.dispose
  9617.       @background = nil
  9618.   end
  9619.    
  9620.   
  9621.   #--------------------------------------------------------------------------
  9622.   # ● Dispose Layout
  9623.   #--------------------------------------------------------------------------               
  9624.   def dispose_layout
  9625.       return if @layout == nil
  9626.       @layout.dispose
  9627.       @layout = nil
  9628.   end  
  9629.   
  9630. #--------------------------------------------------------------------------
  9631. # ● Dispose Particles
  9632. #--------------------------------------------------------------------------   
  9633. def dispose_particles
  9634.      return if @particles_sprite == nil
  9635.      @particles_sprite.each {|sprite| sprite.dispose }
  9636. end     
  9637.   
  9638.   #--------------------------------------------------------------------------
  9639.   # ● Dispose Command Window
  9640.   #--------------------------------------------------------------------------
  9641.   def dispose_command_window
  9642.       return if @command_window == nil
  9643.       @command_window.dispose
  9644.   end     

  9645. end

  9646. #==============================================================================
  9647. # ■ Scene_End
  9648. #==============================================================================
  9649. class Scene_End
  9650.   
  9651.   #--------------------------------------------------------------------------
  9652.   # ● Update Sprites
  9653.   #--------------------------------------------------------------------------         
  9654.   def update_sprites   
  9655.       update_background
  9656.       update_particles     
  9657.       update_command_window
  9658.   end

  9659.   #--------------------------------------------------------------------------
  9660.   # ● Update Background
  9661.   #--------------------------------------------------------------------------              
  9662.   def update_background
  9663.       return if @background == nil
  9664.       @background.ox += @background_scroll[0]
  9665.       @background.oy += @background_scroll[1]
  9666.   end   
  9667.   
  9668.   #--------------------------------------------------------------------------
  9669.   # ● Update Particles
  9670.   #--------------------------------------------------------------------------  
  9671.   def update_particles
  9672.       return if @particles_sprite == nil
  9673.       @particles_sprite.each {|sprite| sprite.update }
  9674.   end

  9675.   #--------------------------------------------------------------------------
  9676.   # ● Update Command Window
  9677.   #--------------------------------------------------------------------------
  9678.   def update_command_window
  9679.       return if @command_window == nil
  9680.       @command_window.update
  9681.   end      
  9682.   
  9683. end

  9684. #==============================================================================
  9685. # ■ Scene_End
  9686. #==============================================================================
  9687. class Scene_End
  9688.   
  9689.   #--------------------------------------------------------------------------
  9690.   # ● Update
  9691.   #--------------------------------------------------------------------------      
  9692.   def update
  9693.       update_sprites
  9694.       update_command
  9695.   end

  9696.   #--------------------------------------------------------------------------
  9697.   # ● Return Scene
  9698.   #--------------------------------------------------------------------------         
  9699.   def return_scene
  9700.       Sound.play_cancel
  9701.       SceneManager.return
  9702.   end

  9703.   #--------------------------------------------------------------------------
  9704.   # ● ON Actor Charge
  9705.   #--------------------------------------------------------------------------
  9706.   def on_actor_change
  9707.       $game_temp.actor_menu_temp = @actor
  9708.       SceneManager.goto(Scene_Status)
  9709.   end  
  9710.   
  9711.   #--------------------------------------------------------------------------
  9712.   # ● Update Command
  9713.   #--------------------------------------------------------------------------      
  9714.   def update_command   
  9715.   end  
  9716.   
  9717. end
复制代码
战斗中换装备的脚本与这个脚本冲突,
在:第7363行  @background.bitmap = $game_temp.pre_cache_equip_menu[0]
像是装备隐藏窗口冲突了,是不是需要添加一个窗口脚本啊?

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
2
发表于 2014-12-17 14:50:10 | 只看该作者
1w行的脚本……大概没什么人愿意帮你看这个脚本……
有尝试过换脚本上下的位置吗?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
112 小时
注册时间
2008-12-9
帖子
166
3
 楼主| 发表于 2014-12-17 19:03:51 | 只看该作者
三途亚梦 发表于 2014-12-17 14:50
1w行的脚本……大概没什么人愿意帮你看这个脚本……
有尝试过换脚本上下的位置吗? ...

不太懂呀,

点评

就是先让你把冲突的两个脚本的上下(前后)位置调换一下的意思。  发表于 2014-12-17 21:02
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
112 小时
注册时间
2008-12-9
帖子
166
4
 楼主| 发表于 2014-12-19 19:14:13 | 只看该作者
007dd007 发表于 2014-12-17 19:03
不太懂呀,

不行,还是错误。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 12:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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