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

Project1

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

[已经过期] 求助,使用了菜单脚本后装备帮助增强无效了

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
461 小时
注册时间
2014-7-23
帖子
232
跳转到指定楼层
1
发表于 2014-12-4 16:08:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
不知道为什么使用了此脚本后装备帮助增强脚本没用了
装备帮助增强用的是VIP修改后的,原版的应该也不行
菜单脚本一共有9000多行,不行的话就算了
RUBY 代码复制
  1. #==============================================================================
  2. # +++ MOG - Monogatari (物語)  (v1.5) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # [url]http://www.atelier-rgss.com/[/url]
  6. #==============================================================================
  7. # Sistema avançado de menu, voltado para scripters que desejam saber sobre
  8. # técnicas de manipulação de sprites e janelas.
  9. #==============================================================================
  10.  
  11. #==============================================================================
  12. # Version History.
  13. #==============================================================================
  14. # 1.5 - Função de desabilitar o save.
  15. #       Definição dos nomes das fontes baseado na fonte padrão do sistema,
  16. #       para resolver o problema de compatibilidade de fontes de outras línguas.
  17. #       Melhoria na posição das janelas.
  18. #       Correção do bug de não atualizar o número de itens. (Dual Wield)
  19. # 1.4 - Compatibilidade com Mog Menu Cursor.
  20. # 1.3 - Corrigido o bug do som da Scene Skill.
  21. # 1.2 - Compatibilidade com Third Party scripts.
  22. #     - Scene File incorporado ao sistema Monogatari, melhorando a performance.
  23. #==============================================================================
  24.  
  25. #==============================================================================
  26. # NOTA - Como este é um script para apresentar técnicas de RGSS, não foram
  27. # adicionados comentários explicativos no modulo de configuração
  28. #==============================================================================
  29.  
  30. #==============================================================================
  31. # ■ MAIN MENU
  32. #==============================================================================
  33. module MOG_MENU
  34.    NUMBER_OF_PARTICLES = 20  
  35.    BACKGROUND_SCROLL_SPEED = [1,0]
  36.    COMMAND_POSITION = [32, 84]
  37.    COMMAND_POSITION_2 = [10,100]
  38.    COMMAND_SPACE = 4
  39.    COMMAND_NAME_POSITION = [0,0]
  40.    COMMAND_NAME_POSITION_2 = [220,48]
  41.    ACTOR_SPACE = 100
  42.    ACTOR_POSITION = [240,0]
  43.  
  44.    ACTOR_LAYOUT_POSITON = [0,275]
  45.    ACTOR_HP1_POSITON = [28,315]
  46.    ACTOR_HP2_POSITON = [50,330]
  47.    ACTOR_MP1_POSITON = [28,346]
  48.    ACTOR_MP2_POSITON = [50,361]   
  49.    ACTOR_HP_METER_POSITON = [29,329]
  50.    ACTOR_MP_METER_POSITON = [29,360]
  51.    ACTOR_LEVEL_POSITON = [30,290]
  52.    ACTOR_STATES_POSITION = [63,283]
  53.  
  54.    MEMBERS_FACE_POSITION =[150,55]
  55.    MEMBERS_FACE_SPACE = 64
  56.    MEMBERS_ARROW_LAYOUT_POSITION = [217,40]
  57.    MEMBERS_ARROW_1_POSITION = [180,40]
  58.    MEMBERS_ARROW_2_POSITION = [300,40]
  59.    TIME_NUMBER_POS = [415,10]
  60.    GOLD_NUMBER_POS = [170,388]
  61.    LOCATION_POS = [330,380]
  62. end
  63.  
  64. #==============================================================================
  65. # ■ MOG_MENU ITEM
  66. #==============================================================================
  67. module MOG_MENU_ITEM
  68.    NUMBER_OF_PARTICLES = 20  
  69.    BACKGROUND_SCROLL_SPEED = [0,0]
  70.    COMMAND_POSITION = [0, 69]
  71.    BUTTON_POSITION = [210, 30]
  72.    BUTTON_SPACE = 90
  73. end
  74.  
  75. #==============================================================================
  76. # ■ MOG_MENU SKILL
  77. #==============================================================================
  78. module MOG_MENU_SKILL
  79.    NUMBER_OF_PARTICLES = 20  
  80.    BACKGROUND_SCROLL_SPEED = [0,0]
  81.  
  82. end
  83.  
  84. #==============================================================================
  85. # ■ MOG_ACTOR SKILL STATUS
  86. #==============================================================================
  87. module MOG_ACTOR_SKILL_STATUS
  88.   MEMBERS_SPACE = 80  
  89.   LAYOUT_POSITION = [155,0]
  90.   PAR_POSITION = [0,0]
  91.   FACE_POSITION = [-13,-3]
  92.   HP_METER_POSITION = [158,15]
  93.   MP_METER_POSITION = [177,35]
  94.   STATES_POSITION = [71,36]
  95.   STATES_SCROLLING_ANIMATION = false  
  96.   NAME_POSITION = [105,34]
  97.   FONT_SIZE = 18
  98.   FONT_BOLD = true  
  99. end
  100.  
  101. #==============================================================================
  102. # ■ MOG_MENU EQUIP
  103. #==============================================================================
  104. module MOG_MENU_EQUIP
  105.    NUMBER_OF_PARTICLES = 20  
  106.    BACKGROUND_SCROLL_SPEED = [0,0]
  107.    FONT_SIZE = 18
  108.    FONT_BOLD = true
  109.    FONT_ITALIC = false   
  110. end
  111.  
  112. #==============================================================================
  113. # ■ MOG_MENU STATUS
  114. #==============================================================================
  115. module MOG_EQUIP_STATUS  
  116.   LAYOUT_POSITION = [0,80]
  117.   FACE_POSITION = [120,-45]
  118.   PAR_POSITION = [5,32]
  119.   NAME_POSITION = [15,-5]
  120.   FONT_SIZE = 18
  121.   FONT_BOLD = true
  122. end
  123.  
  124. #==============================================================================
  125. # ■ MOG_MENU STATUS
  126. #==============================================================================
  127. module MOG_MENU_STATUS
  128.    NUMBER_OF_PARTICLES = 20  
  129.    BACKGROUND_SCROLL_SPEED = [1,0]
  130. end
  131.  
  132. #==============================================================================
  133. # ■ MOG MENU PARTY
  134. #==============================================================================
  135. module MOG_MENU_PARTY
  136.    NUMBER_OF_PARTICLES = 20  
  137.    BACKGROUND_SCROLL_SPEED = [0,0]   
  138. end
  139.  
  140. #==============================================================================
  141. # ■ MOG MENU SAVE
  142. #==============================================================================
  143. module MOG_MENU_SAVE
  144.    FILES_MAX = 9   
  145.    NUMBER_OF_PARTICLES = 20   
  146.    BACKGROUND_SCROLL_SPEED = [1,0]
  147. end
  148.  
  149. #==============================================================================
  150. # ■ MOG MENU END
  151. #==============================================================================
  152. module MOG_MENU_END
  153.    NUMBER_OF_PARTICLES = 20
  154.    BACKGROUND_SCROLL_SPEED = [0,0]
  155. end
  156.  
  157. #==============================================================================
  158. # ■ MOG ACTOR MENU STATUS
  159. #==============================================================================
  160. module MOG_ACTOR_MENU_STATUS  
  161.   LAYOUT_POSITION = [385,115]
  162.   FACE_POSITION = [48,-32]
  163.   PAR_POSITION = [5,64]
  164.   STATES_POSITION = [15,25]
  165.   STATES_SCROLLING_ANIMATION = false
  166.   NAME_POSITION = [10,60]
  167.   FONT_SIZE = 18
  168.   FONT_BOLD = true
  169. end
  170.  
  171. #==============================================================================
  172. # ■ MOG MEMBERS LAYOUT
  173. #==============================================================================
  174. module MOG_MEMBERS_LAYOUT
  175.   MEMBERS_SPACE = 80  
  176.   LAYOUT_POSITION = [3,160]
  177.   PAR_POSITION = [0,0]
  178.   FACE_POSITION = [0,-2]
  179.   HP_METER_POSITION = [12,37]
  180.   MP_METER_POSITION = [86,37]
  181.   SCOPE_TEXT_POSITION = [0,170]
  182.   ARROW_1_POSITION = [50,55]
  183.   ARROW_2_POSITION = [50,4]
  184.   NAME_POSITION = [42,38]
  185.   FONT_SIZE = 18
  186.   FONT_BOLD = true  
  187. end
  188.  
  189. #==============================================================================
  190. # ■ MOG ACTOR MENU PARTY
  191. #==============================================================================
  192. module MOG_ACTOR_MENU_PARTY
  193.   FACE_POSITION = [390,96]
  194.   NAME_POSITION = [390,73]
  195.   FONT_SIZE = 16
  196.   FONT_BOLD = true
  197. end
  198.  
  199.  
  200. #==============================================================================
  201. # ■ MOG MENU BASE
  202. #==============================================================================
  203. module MOG_MENU_BASE
  204.  
  205. end
  206.  
  207. $imported = {} if $imported.nil?
  208. $imported[:mog_monogatari] = true
  209.  
  210. #==============================================================================
  211. # ■ Game Temp
  212. #==============================================================================
  213. class Game_Temp
  214.  
  215.   attr_accessor :menu_index
  216.   attr_accessor :actor_menu_temp
  217.   attr_accessor :item_scope
  218.   attr_accessor :temp_actor_equip
  219.  
  220.   #--------------------------------------------------------------------------
  221.   # ● Initialize
  222.   #--------------------------------------------------------------------------  
  223.   alias mog_menu_index_initialize initialize
  224.   def initialize
  225.       @menu_index = 0
  226.       @actor_menu_temp = -1      
  227.       @item_scope = 0
  228.       @temp_actor_equip = nil
  229.       mog_menu_index_initialize
  230.   end
  231.  
  232. end
  233.  
  234. #==============================================================================
  235. # ■ Scene Map
  236. #==============================================================================
  237. class Scene_Map < Scene_Base
  238.  
  239. #--------------------------------------------------------------------------
  240. # ● Update Call Menu
  241. #--------------------------------------------------------------------------   
  242. alias mog_menu_monogatari_update_call_menu update_call_menu   
  243. def update_call_menu
  244.      if $game_party.members.size == 0
  245.         @call_menu = false
  246.         return
  247.      end
  248.      mog_menu_monogatari_update_call_menu
  249. end
  250.  
  251. #--------------------------------------------------------------------------
  252. # ● Call Menu
  253. #--------------------------------------------------------------------------   
  254. alias mog_menu_monogatari_call_menu call_menu
  255. def call_menu
  256.      $game_temp.menu_index = 0     
  257.      mog_menu_monogatari_call_menu
  258. end
  259.  
  260. end
  261.  
  262. #==============================================================================
  263. # ■ Window Command
  264. #==============================================================================
  265. class Window_Command < Window_Selectable
  266.  
  267.   attr_reader :list
  268. end
  269.  
  270. #==============================================================================
  271. # ■ Game Party
  272. #==============================================================================
  273. class Game_Party < Game_Unit
  274.  
  275.    attr_accessor :menu_actor_id   
  276.  
  277. end
  278.  
  279. #==============================================================================
  280. # ■ Game Interpreter
  281. #==============================================================================
  282. class Game_Interpreter
  283.  
  284. #--------------------------------------------------------------------------
  285. # ● gain Tp
  286. #--------------------------------------------------------------------------      
  287. def gain_tp(actor_id,value)
  288.      return if $game_party.members[actor_id] == nil
  289.      $game_party.members[actor_id].tp += value.truncate
  290. end  
  291.  
  292. #--------------------------------------------------------------------------
  293. # ● Lose Tp
  294. #--------------------------------------------------------------------------      
  295. def lose_tp(actor_id,value)
  296.      return if $game_party.members[actor_id] == nil
  297.      $game_party.members[actor_id].tp -= value.truncate
  298. end   
  299.  
  300. end
  301.  
  302. #==============================================================================
  303. # ■ Cache
  304. #==============================================================================
  305. module Cache
  306.  
  307.   #--------------------------------------------------------------------------
  308.   # ● Menu
  309.   #--------------------------------------------------------------------------
  310.   def self.menu(filename)
  311.       load_bitmap("Graphics/Menus/", filename)
  312.   end  
  313.  
  314.   #--------------------------------------------------------------------------
  315.   # ● Menu Main
  316.   #--------------------------------------------------------------------------
  317.   def self.menu_main(filename)
  318.       load_bitmap("Graphics/Menus/Main/", filename)
  319.   end
  320.  
  321.   #--------------------------------------------------------------------------
  322.   # ● Menu Item
  323.   #--------------------------------------------------------------------------
  324.   def self.menu_item(filename)
  325.       load_bitmap("Graphics/Menus/Item/", filename)
  326.   end  
  327.  
  328.   #--------------------------------------------------------------------------
  329.   # ● Menu Skill
  330.   #--------------------------------------------------------------------------
  331.   def self.menu_skill(filename)
  332.       load_bitmap("Graphics/Menus/Skill/", filename)
  333.   end   
  334.  
  335.   #--------------------------------------------------------------------------
  336.   # ● Menu Equip
  337.   #--------------------------------------------------------------------------
  338.   def self.menu_equip(filename)
  339.       load_bitmap("Graphics/Menus/Equip/", filename)
  340.   end      
  341.  
  342.   #--------------------------------------------------------------------------
  343.   # ● Menu Status
  344.   #--------------------------------------------------------------------------
  345.   def self.menu_status(filename)
  346.       load_bitmap("Graphics/Menus/Status/", filename)
  347.   end   
  348.  
  349.   #--------------------------------------------------------------------------
  350.   # ● Menu Save
  351.   #--------------------------------------------------------------------------
  352.   def self.menu_save(filename)
  353.       load_bitmap("Graphics/Menus/Save/", filename)
  354.   end      
  355.  
  356.   #--------------------------------------------------------------------------
  357.   # ● Menu Party
  358.   #--------------------------------------------------------------------------
  359.   def self.menu_party(filename)
  360.       load_bitmap("Graphics/Menus/Party/", filename)
  361.   end     
  362.  
  363.   #--------------------------------------------------------------------------
  364.   # ● Menu End
  365.   #--------------------------------------------------------------------------
  366.   def self.menu_end(filename)
  367.       load_bitmap("Graphics/Menus/End/", filename)
  368.   end      
  369.  
  370. end
  371.  
  372. #==============================================================================
  373. # ■ Game_Temp
  374. #==============================================================================
  375. class Game_Temp
  376.  
  377.   attr_accessor :pre_cache_main_menu
  378.   attr_accessor :pre_cache_actor_menu
  379.   attr_accessor :pre_cache_item_menu
  380.   attr_accessor :pre_cache_skill_menu
  381.   attr_accessor :pre_cache_equip_menu
  382.   attr_accessor :pre_cache_status_menu
  383.   attr_accessor :pre_cache_party_menu
  384.   attr_accessor :pre_cache_file_menu
  385.   attr_accessor :pre_cache_end_menu
  386.   attr_accessor :pre_cache_icon
  387.   attr_accessor :pre_symbol
  388.  
  389.   #--------------------------------------------------------------------------
  390.   # ● Pre Cache Atelier Menu
  391.   #--------------------------------------------------------------------------  
  392.   def pre_cache_atelier_menu   
  393.       @pre_cache_main_menu = []
  394.       @pre_cache_item_menu = []
  395.       @pre_cache_skill_menu = []
  396.       @pre_cache_equip_menu = []
  397.       @pre_cache_status_menu = []
  398.       @pre_cache_party_menu = []
  399.       @pre_cache_file_menu = []
  400.       @pre_cache_end_menu = []
  401.       @pre_symbol = ""
  402.       execute_pre_cache_icon if can_pre_cache_icon?
  403.       execute_pre_cache_actor
  404.       execute_pre_cache_main_menu
  405.       execute_pre_cache_item_menu
  406.       execute_pre_cache_skill_menu
  407.       execute_pre_cache_equip_menu
  408.       execute_pre_cache_status_menu
  409.       execute_pre_cache_file_menu
  410.       execute_pre_cache_party_menu
  411.       execute_pre_cache_end_menu
  412.   end
  413.  
  414.   #--------------------------------------------------------------------------
  415.   # ● Pre Cache Icon
  416.   #--------------------------------------------------------------------------   
  417.   def execute_pre_cache_icon
  418.       @pre_cache_icon = Cache.system("Iconset")
  419.   end
  420.  
  421.   #--------------------------------------------------------------------------
  422.   # ● Can Pre Cache Menu?
  423.   #--------------------------------------------------------------------------  
  424.   def can_pre_cache_icon?
  425.       return true if @pre_cache_icon == nil
  426.       return true if @pre_cache_icon.disposed? rescue return false
  427.       return false
  428.   end
  429.  
  430. end
  431.  
  432. #==============================================================================
  433. # ■ Spriteset_Map
  434. #==============================================================================
  435. class Spriteset_Map  
  436.  
  437.   #--------------------------------------------------------------------------
  438.   # ● Initialize
  439.   #--------------------------------------------------------------------------
  440.   alias mog_atelier_menu_initialize initialize
  441.   def initialize
  442.       $game_temp.pre_cache_atelier_menu if $game_temp.can_pre_cache_icon?
  443.       mog_atelier_menu_initialize
  444.   end
  445.  
  446. end
  447.  
  448. #==============================================================================
  449. # ■ Particles_Menu
  450. #==============================================================================
  451. class Particles_Menu < Sprite
  452.  
  453. #--------------------------------------------------------------------------
  454. # ● Initialize
  455. #--------------------------------------------------------------------------            
  456.   def initialize(viewport = nil)
  457.       super(viewport)
  458.       @speed_x = 0
  459.       @speed_y = 0
  460.       @speed_a = 0
  461.       self.bitmap = Cache.menu("Particles")
  462.       self.blend_type = 0
  463.       self.z = 1
  464.       reset_setting(true)
  465.   end  
  466.  
  467. #--------------------------------------------------------------------------
  468. # ● Reset Setting
  469. #--------------------------------------------------------------------------               
  470.   def reset_setting(initial = false)
  471.       zoom = (50 + rand(100)) / 100.1
  472.       self.zoom_x = zoom
  473.       self.zoom_y = zoom
  474.       self.x = rand(576) - 160
  475.       self.y = initial == true ? rand(480) : 512
  476.       self.opacity = 0
  477.       @speed_y = -(1 + rand(3))
  478.       @speed_x = (1 + rand(2))
  479.       @speed_a = (1 + rand(2))     
  480.   end
  481.  
  482. #--------------------------------------------------------------------------
  483. # ● Dispose
  484. #--------------------------------------------------------------------------               
  485.   def dispose
  486.       super
  487.       self.bitmap.dispose if self.bitmap != nil
  488.   end  
  489.  
  490. #--------------------------------------------------------------------------
  491. # ● Update
  492. #--------------------------------------------------------------------------               
  493.   def update
  494.       super
  495.       self.x += @speed_x
  496.       self.y += @speed_y
  497.       self.opacity += 5
  498.       reset_setting if can_reset_setting?
  499.   end  
  500.  
  501. #--------------------------------------------------------------------------
  502. # ● Can Reset Setting
  503. #--------------------------------------------------------------------------                 
  504.   def can_reset_setting?
  505.       return true if self.y < -50
  506.       return true if self.x > 576
  507.       return false
  508.   end  
  509.  
  510. end
  511.  
  512.  
  513.  
  514.  
  515. #==============================================================================
  516. # ■ Window_Actor_Status_0
  517. #==============================================================================
  518. class Members_Windows_Status < Window_Selectable
  519.   attr_reader   :pending_index         
  520.  
  521.   #--------------------------------------------------------------------------
  522.   # ● Initialize
  523.   #--------------------------------------------------------------------------
  524.   def initialize(x = 0, y = 0)
  525.     super(x, y, window_width, window_height)
  526.     self.windowskin = Cache.menu("")
  527.     self.opacity = 0
  528.     self.contents_opacity = 0
  529.     self.visible = false
  530.     @input_lag = 0
  531.     @old_index = -1
  532.     @pending_index = -1
  533.     refresh
  534.   end
  535.  
  536.   #--------------------------------------------------------------------------
  537.   # ● Window Width
  538.   #--------------------------------------------------------------------------
  539.   def window_width
  540.       40
  541.   end
  542.  
  543.   #--------------------------------------------------------------------------
  544.   # ● Window Height
  545.   #--------------------------------------------------------------------------
  546.   def window_height
  547.       40
  548.   end
  549.  
  550.   #--------------------------------------------------------------------------
  551.   # ● Cursor Movable?
  552.   #--------------------------------------------------------------------------  
  553.   def cursor_movable?
  554.       active && open? && !@cursor_fix && !@cursor_all && item_max > 0 && @input_lag == 0
  555.   end  
  556.  
  557.   #--------------------------------------------------------------------------
  558.   # ● Item Max
  559.   #--------------------------------------------------------------------------
  560.   def item_max
  561.       $game_party.members.size
  562.   end
  563.  
  564.   #--------------------------------------------------------------------------
  565.   # ● Item Height
  566.   #--------------------------------------------------------------------------
  567.   def item_height
  568.     (height - standard_padding * 2) / 4
  569.   end
  570.  
  571.   #--------------------------------------------------------------------------
  572.   # ● Draw Item Background
  573.   #--------------------------------------------------------------------------
  574.   def draw_item_background(index)
  575.   end
  576.  
  577.   #--------------------------------------------------------------------------
  578.   # ● Pending Index
  579.   #--------------------------------------------------------------------------
  580.   def pending_index=(index)
  581.       last_pending_index = @pending_index
  582.       @pending_index = index
  583.   end
  584.  
  585.   #--------------------------------------------------------------------------
  586.   # ● Process OK
  587.   #--------------------------------------------------------------------------
  588.   def process_ok
  589.       $game_party.target_actor = $game_party.members[index] unless @cursor_all
  590.       call_ok_handler
  591.   end
  592.  
  593.   #--------------------------------------------------------------------------
  594.   # ● Select Last
  595.   #--------------------------------------------------------------------------
  596.   def select_last
  597.       select($game_party.target_actor.index || 0)
  598.   end
  599.  
  600.   #--------------------------------------------------------------------------
  601.   # ● Select For Item
  602.   #--------------------------------------------------------------------------
  603.   def select_for_item(item)
  604.       @cursor_fix = item.for_user?
  605.       @cursor_all = item.for_all?
  606.       if @cursor_fix
  607.          select($game_party.menu_actor.index)
  608.       elsif @cursor_all
  609.          select(0)
  610.       else
  611.           @index = @index < 0 ? 0 : @index
  612.       end
  613.   end
  614.  
  615.   #--------------------------------------------------------------------------
  616.   # ● Draw Item
  617.   #--------------------------------------------------------------------------  
  618.   def draw_item(index)
  619.   end
  620.  
  621.   #--------------------------------------------------------------------------
  622.   # ● Process Cursor Move 2
  623.   #--------------------------------------------------------------------------
  624.   def process_cursor_move2
  625.       return unless cursor_movable?
  626.       last_index = @index
  627.       cursor_down (Input.trigger?(:RIGHT))  if Input.repeat?(:RIGHT)
  628.       cursor_up   (Input.trigger?(:LEFT))    if Input.repeat?(:LEFT)
  629.       Sound.play_cursor if @index != last_index
  630.   end   
  631.  
  632.   #--------------------------------------------------------------------------
  633.   # ● Update
  634.   #--------------------------------------------------------------------------  
  635.   def update
  636.       super
  637.       @input_lag -= 1 if @input_lag > 0
  638.       if @old_index != @index
  639.          @old_index = @index
  640.          @input_lag = 5
  641.       end   
  642.   end
  643.  
  644. end
  645.  
  646. #==============================================================================
  647. # ■ Members Menu
  648. #==============================================================================
  649. class Members_Menu
  650.   include MOG_MEMBERS_LAYOUT
  651.  
  652.   attr_accessor :actor
  653.  
  654.   #--------------------------------------------------------------------------
  655.   # ● Initialize
  656.   #--------------------------------------------------------------------------
  657.   def initialize(actor,index)
  658.       @actor = actor
  659.       @index = index
  660.       @index_old = -1
  661.       @com_index = 0
  662.       @max_index = $game_party.members.size - 1      
  663.       @active = false
  664.       @active_old = false
  665.       @opac = 0
  666.       @opac_active = [0,0]
  667.       @par = []
  668.       [url=home.php?mod=space&uid=14099]@Float[/url] = [0,0,0]
  669.       set_old_parameter
  670.       create_sprites
  671.       create_sprites_support if @index == 0
  672.   end
  673.  
  674.   #--------------------------------------------------------------------------
  675.   # ● Create Sprites
  676.   #--------------------------------------------------------------------------   
  677.   def create_sprites
  678.       @meter_image = $game_temp.pre_cache_actor_menu[6]
  679.       @meter_cw = @meter_image.width
  680.       @meter_ch = @meter_image.height / 2   
  681.       @parameter_number = $game_temp.pre_cache_actor_menu[2]
  682.       @parameter_cw = @parameter_number.width / 10
  683.       @parameter_ch = @parameter_number.height
  684.       @visible = false
  685.       create_layout
  686.       create_parameter
  687.       create_face
  688.       create_name
  689.       create_hp_meter
  690.       create_mp_meter
  691.       @next_pos = [[email]-@layout.width[/email] - 64,0]
  692.       @now_index = [[email]-@layout.width[/email] - 64,0,0]
  693.       @before_index = [[email]-@layout.width[/email] - 64,0,0]
  694.       @next_index = [[email]-@layout.width[/email] - 64,0,0]
  695.       set_position([email]-@layout.width[/email] - 64,0)
  696.       set_opacity(0)
  697.   end
  698.  
  699.   #--------------------------------------------------------------------------
  700.   # ● Create Sprites
  701.   #--------------------------------------------------------------------------     
  702.   def create_sprites_support
  703.       create_scope_all
  704.       create_arrow
  705.   end
  706.  
  707.   #--------------------------------------------------------------------------
  708.   # ● Create Scope All
  709.   #--------------------------------------------------------------------------      
  710.   def create_scope_all
  711.       @scope = Sprite.new
  712.       @scope.bitmap = $game_temp.pre_cache_actor_menu[4]
  713.       @scope_cw = @scope.bitmap.width
  714.       @org_pos_scope = [SCOPE_TEXT_POSITION[0],SCOPE_TEXT_POSITION[1],SCOPE_TEXT_POSITION[0] - @scope_cw]
  715.       @scope.x = @org_pos_scope[2]
  716.       @scope.y = @org_pos_scope[1]
  717.       @scope.z = 15
  718.   end
  719.  
  720.   #--------------------------------------------------------------------------
  721.   # ● Update Scope
  722.   #--------------------------------------------------------------------------         
  723.   def update_scope
  724.       if @active and all_targets
  725.          if @scope.x < @org_pos_scope[0]
  726.             @scope.x += 15
  727.             if @scope.x >= @org_pos_scope[0]
  728.                @scope.x = @org_pos_scope[0]
  729.             end   
  730.          end
  731.       else
  732.          if @scope.x > @org_pos_scope[2]         
  733.             @scope.x -= 15
  734.             if @scope.x <= @org_pos_scope[2]
  735.                @scope.x = @org_pos_scope[2]
  736.             end         
  737.           end
  738.       end
  739.   end
  740.  
  741.   #--------------------------------------------------------------------------
  742.   # ● Create Arrow
  743.   #--------------------------------------------------------------------------           
  744.   def create_arrow
  745.       @arrow_float = [0,0,0]
  746.       @arrow_np_1 = [0,0]
  747.       @arrow_np_2 = [0,0]
  748.       @arrow_image = $game_temp.pre_cache_actor_menu[5]
  749.       @arrow_image_cw = @arrow_image.width
  750.       @arrow_image_ch = @arrow_image.height# / 2
  751.       @arrow_1 = Sprite.new
  752.       @arrow_1.bitmap = Bitmap.new(@arrow_image_cw,@arrow_image_ch)
  753.       @arrow_cw = @arrow_1.bitmap.width
  754.       @org_pos_arrow_1 = [ARROW_1_POSITION[0],ARROW_1_POSITION[1]]
  755.       @arrow_1.x = @org_pos_arrow_1[0]
  756.       @arrow_1.y = @org_pos_arrow_1[1]
  757.       @arrow_1.z = 15
  758.       @arrow_1.opacity = 0
  759.       @arrow_2 = Sprite.new
  760.       @arrow_2.bitmap = Bitmap.new(@arrow_image_cw,@arrow_image_ch)
  761.       @arrow_2.ox = @arrow_2.bitmap.width / 2
  762.       @arrow_2.oy = @arrow_2.bitmap.height / 2
  763.       @arrow_2.angle = 180
  764.       ar_y = (MEMBERS_SPACE * 4) + ARROW_2_POSITION[1]
  765.       @org_pos_arrow_2 = [ARROW_2_POSITION[0] + @arrow_2.ox,ar_y]
  766.       @arrow_2.x = @org_pos_arrow_2[0]
  767.       @arrow_2.y = @org_pos_arrow_2[1]
  768.       @arrow_2.z = 15  
  769.       @arrow_2.opacity = 0
  770.       @arrow_time_1 = 0
  771.       @arrow_time_2 = 0
  772.       refresh_arrow(0,@arrow_1,0)
  773.       refresh_arrow(1,@arrow_2,0)
  774.   end
  775.  
  776.   #--------------------------------------------------------------------------
  777.   # ● Refresh_arrow 1
  778.   #--------------------------------------------------------------------------            
  779.   def refresh_arrow(arrow,sprite,type)
  780.       sprite.bitmap.clear
  781.       h = @arrow_image_ch * type
  782.       a_rect = Rect.new(0,h,@arrow_image_cw,@arrow_image_ch)
  783.       sprite.bitmap.blt(0,0,@arrow_image,a_rect)
  784.       @arrow_time_1 = 20 if arrow == 0
  785.       @arrow_time_2 = 20 if arrow ==1
  786.   end
  787.  
  788.   #--------------------------------------------------------------------------
  789.   # ● Update Arrow
  790.   #--------------------------------------------------------------------------            
  791.   def update_arrow
  792.     #  update_arrow_type
  793.       update_arrow_visible
  794.       update_arrow_float_animation
  795.   end
  796.  
  797.   #--------------------------------------------------------------------------
  798.   # ● Update Arrow Type
  799.   #--------------------------------------------------------------------------               
  800.   def update_arrow_type
  801.       if @arrow_time_1 > 0
  802.          @arrow_time_1 -= 1
  803.          refresh_arrow(0,@arrow_1,0) if @arrow_time_1 == 0
  804.       end   
  805.       if @arrow_time_2 > 0
  806.          @arrow_time_2 -= 1
  807.          refresh_arrow(1,@arrow_2,0) if @arrow_time_2 == 0
  808.       end         
  809.   end
  810.  
  811.   #--------------------------------------------------------------------------
  812.   # ● Refresh Arrow Type
  813.   #--------------------------------------------------------------------------                 
  814.   def refresh_arrow_type
  815.       return
  816.       if @index_old > @com_index
  817.          refresh_arrow(0,@arrow_1,1)
  818.       else  
  819.          refresh_arrow(1,@arrow_2,1)
  820.       end  
  821.   end  
  822.  
  823.   #--------------------------------------------------------------------------
  824.   # ● Update Arrow Visible
  825.   #--------------------------------------------------------------------------              
  826.   def update_arrow_visible
  827.       if can_arrow_visible?
  828.         @arrow_1.opacity += 15
  829.         @arrow_2.opacity += 15
  830.         @arrow_np_1 = [@org_pos_arrow_1[0],@org_pos_arrow_1[1]]
  831.         @arrow_np_2 = [@org_pos_arrow_2[0],@org_pos_arrow_2[1]]
  832.       else  
  833.         @arrow_1.opacity -= 10
  834.         @arrow_2.opacity -= 10
  835.         @arrow_np_1 = [-@arrow_cw,@org_pos[1]]
  836.         @arrow_np_2 = [-@arrow_cw + @arrow_2.ox,@org_pos[1] + @arrow_2.oy]        
  837.       end  
  838.  
  839.   end
  840.  
  841. #--------------------------------------------------------------------------
  842. # ● Update Slide Arrow
  843. #--------------------------------------------------------------------------                       
  844.   def update_slide_arrow(type,sprite,cp,np)
  845.       cp -= @arrow_float[1] if type == 1
  846.       sp = 2 + ((cp - np).abs / 20)
  847.       if cp > np
  848.          cp -= sp
  849.          cp = np if cp < np
  850.       elsif cp < np
  851.          cp += sp
  852.          cp = np if cp > np
  853.       end     
  854.       sprite.x = cp if type == 0
  855.       sprite.y = cp + @arrow_float[1] if type == 1
  856.   end      
  857.  
  858.   #--------------------------------------------------------------------------
  859.   # ● Can Arrow Visiblle?
  860.   #--------------------------------------------------------------------------               
  861.   def can_arrow_visible?
  862.       return false if !@active
  863.       return false if all_targets
  864.       return false if $game_party.members.size < 2
  865.       return  true
  866.   end
  867.  
  868.   #--------------------------------------------------------------------------
  869.   # ● Update Arrow Float Animation
  870.   #--------------------------------------------------------------------------               
  871.   def update_arrow_float_animation
  872.       @arrow_float[2] += 1
  873.       if @arrow_float[2] > 2
  874.          @arrow_float[2] = 0
  875.          @arrow_float[0] += 1
  876.          case @arrow_float[0]
  877.             when 1..11
  878.               @arrow_float[1] += 1
  879.             when 12..22
  880.               @arrow_float[1] -= 1
  881.             else  
  882.               @arrow_float[0] = 0
  883.               @arrow_float[1] = 0
  884.          end  
  885.       end
  886.     update_slide_arrow(0,@arrow_1,@arrow_1.x,@arrow_np_1[0])
  887.     update_slide_arrow(1,@arrow_1,@arrow_1.y,@arrow_np_1[1])
  888.     update_slide_arrow(0,@arrow_2,@arrow_2.x,@arrow_np_2[0])
  889.     update_slide_arrow(1,@arrow_2,@arrow_2.y,@arrow_np_2[1])   
  890.   end
  891.  
  892.   #--------------------------------------------------------------------------
  893.   # ● Create Scope All
  894.   #--------------------------------------------------------------------------      
  895.   def update_support
  896.       update_scope
  897.       update_arrow
  898.   end
  899.  
  900.   #--------------------------------------------------------------------------
  901.   # ● Set Old Parameter
  902.   #--------------------------------------------------------------------------  
  903.   def set_old_parameter
  904.       @par.clear
  905.       @par = [@actor.hp,@actor.mhp,@actor.mp,@actor.mmp,@actor.level]
  906.   end   
  907.  
  908.   #--------------------------------------------------------------------------
  909.   # ● Members Spate
  910.   #--------------------------------------------------------------------------   
  911.   def members_space
  912.       LAYOUT_POSITION[1] + (@index * MEMBERS_SPACE)
  913.   end  
  914.  
  915.   #--------------------------------------------------------------------------
  916.   # ● Dispose
  917.   #--------------------------------------------------------------------------  
  918.   def dispose
  919.       dispose_layout
  920.       dispose_parameter
  921.       dispose_face
  922.       dispose_name
  923.       dispose_hp_meter
  924.       dispose_mp_meter
  925.       dispose_support if @index == 0
  926.   end
  927.  
  928.   #--------------------------------------------------------------------------
  929.   # ● Dispose Support
  930.   #--------------------------------------------------------------------------   
  931.   def dispose_support
  932.       dispose_scope
  933.       dispose_arrow
  934.   end
  935.  
  936.   #--------------------------------------------------------------------------
  937.   # ● Dispose Layout
  938.   #--------------------------------------------------------------------------   
  939.   def dispose_layout
  940.       @layout.dispose
  941.   end
  942.  
  943.   #--------------------------------------------------------------------------
  944.   # ● Dispose Scope
  945.   #--------------------------------------------------------------------------         
  946.   def dispose_scope
  947.       @scope.dispose
  948.   end  
  949.  
  950.   #--------------------------------------------------------------------------
  951.   # ● Dispose_Arrow
  952.   #--------------------------------------------------------------------------            
  953.   def dispose_arrow
  954.       @arrow_1.bitmap.dispose
  955.       @arrow_1.dispose
  956.       @arrow_2.bitmap.dispose
  957.       @arrow_2.dispose
  958.   end
  959.  
  960.   #--------------------------------------------------------------------------
  961.   # ● Dispose Parameter
  962.   #--------------------------------------------------------------------------      
  963.   def dispose_parameter
  964.       @parameter.bitmap.dispose
  965.       @parameter.dispose
  966.   end  
  967.  
  968.   #--------------------------------------------------------------------------
  969.   # ● Dispose Face
  970.   #--------------------------------------------------------------------------   
  971.   def dispose_face
  972.       @face.dispose
  973.   end   
  974.  
  975.   #--------------------------------------------------------------------------
  976.   # ● Dispose HP Meter
  977.   #--------------------------------------------------------------------------      
  978.   def dispose_hp_meter
  979.       @hp_meter.bitmap.dispose
  980.       @hp_meter.dispose
  981.   end
  982.  
  983.   #--------------------------------------------------------------------------
  984.   # ● Dispose MP Meter
  985.   #--------------------------------------------------------------------------      
  986.   def dispose_mp_meter
  987.       @mp_meter.bitmap.dispose
  988.       @mp_meter.dispose
  989.   end  
  990.  
  991.   #--------------------------------------------------------------------------
  992.   # ● Dispose Name
  993.   #--------------------------------------------------------------------------        
  994.   def dispose_name
  995.       @name.bitmap.dispose
  996.       @name.dispose
  997.   end  
  998.  
  999.   #--------------------------------------------------------------------------
  1000.   # ● Create Layout
  1001.   #--------------------------------------------------------------------------
  1002.   def create_layout
  1003.       @layout = Sprite.new
  1004.       @layout.bitmap = Cache.menu("Actor_Layout_1")
  1005.       @org_pos = [LAYOUT_POSITION[0],LAYOUT_POSITION[1]]
  1006.       @layout.x = @org_pos[0]
  1007.       @layout.y = @org_pos[1]
  1008.       @layout.z = 10
  1009.       #@layout.opacity = 0
  1010.   end
  1011.  
  1012.   #--------------------------------------------------------------------------
  1013.   # ● Create Parameter
  1014.   #--------------------------------------------------------------------------
  1015.   def create_parameter
  1016.       @parameter = Sprite.new
  1017.       @parameter.bitmap = Bitmap.new(@layout.bitmap.width,@layout.bitmap.height)
  1018.       @org_pos_par = [@org_pos[0] + PAR_POSITION[0],
  1019.                       @org_pos[1] + PAR_POSITION[1]]
  1020.       @parameter.x = @org_pos_par[0]
  1021.       @parameter.y = @org_pos_par[1]
  1022.       @parameter.z = 12
  1023. #      @parameter.opacity = 0
  1024.       refresh_parameter
  1025.   end  
  1026.  
  1027.   #--------------------------------------------------------------------------
  1028.   # ● Create HP Meter
  1029.   #--------------------------------------------------------------------------  
  1030.   def create_hp_meter
  1031.       @hp_meter_old = [-1,-1]
  1032.       @hp_meter = Sprite.new
  1033.       @hp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  1034.       @org_pos_hp = [@org_pos[0] + HP_METER_POSITION[0],
  1035.                      @org_pos[1] + HP_METER_POSITION[1]]      
  1036.       @hp_meter.x = @org_pos_hp[0]
  1037.       @hp_meter.y = @org_pos_hp[1]
  1038.       @hp_meter.z = 11
  1039.   end  
  1040.  
  1041.   #--------------------------------------------------------------------------
  1042.   # ● Refresh HP Meter
  1043.   #--------------------------------------------------------------------------   
  1044.   def refresh_hp_meter
  1045.       @hp_meter_old[0] = @actor.hp
  1046.       @hp_meter_old[1] = @actor.mhp
  1047.       @hp_meter.bitmap.clear
  1048.       width_range = @meter_cw * @actor.hp / @actor.mhp
  1049.       m_rect = Rect.new(0,0,width_range,@meter_ch)
  1050.       @hp_meter.bitmap.blt(0,0,@meter_image,m_rect)
  1051.   end
  1052.  
  1053.   #--------------------------------------------------------------------------
  1054.   # ● Create MP Meter
  1055.   #--------------------------------------------------------------------------  
  1056.   def create_mp_meter
  1057.       @mp_meter_old = [-1,-1]
  1058.       @mp_meter = Sprite.new
  1059.       @mp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  1060.       @org_pos_mp = [@org_pos[0] + MP_METER_POSITION[0],
  1061.                      @org_pos[1] + MP_METER_POSITION[1]]      
  1062.       @mp_meter.x = @org_pos_mp[0]
  1063.       @mp_meter.y = @org_pos_mp[1]
  1064.       @mp_meter.z = 11
  1065.   end  
  1066.  
  1067.   #--------------------------------------------------------------------------
  1068.   # ● Refresh MP Meter
  1069.   #--------------------------------------------------------------------------   
  1070.   def refresh_mp_meter
  1071.       @mp_meter_old[0] = @actor.mp
  1072.       @mp_meter_old[1] = @actor.mmp
  1073.       @mp_meter.bitmap.clear
  1074.       width_range = @meter_cw * @actor.mp / @actor.mmp rescue nil
  1075.       width_range = 0 if width_range == nil
  1076.       m_rect = Rect.new(0,@meter_ch,width_range,@meter_ch)
  1077.       @mp_meter.bitmap.blt(0,0,@meter_image,m_rect)
  1078.   end  
  1079.  
  1080.   #--------------------------------------------------------------------------
  1081.   # ● Create Face
  1082.   #--------------------------------------------------------------------------   
  1083.   def refresh_parameter
  1084.       set_old_parameter   
  1085.       @parameter.bitmap.clear
  1086.  
  1087.       value = @actor.level
  1088.       x = 146
  1089.       y = 8
  1090.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1091.  
  1092.       value = @actor.hp
  1093.       x = 72
  1094.       y = 24
  1095.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1096.  
  1097.       value = @actor.mp
  1098.       x = 146
  1099.       y = 24
  1100.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1101.  
  1102.   end  
  1103.  
  1104.   #--------------------------------------------------------------------------
  1105.   # ● Refresh Number
  1106.   #--------------------------------------------------------------------------     
  1107.   def refresh_number(sprite,image,value,number_cw,number_ch,x,y)
  1108.       number = value.abs.to_s.split(//)
  1109.       x2 = -number_cw * number.size
  1110.       for i in 0..number.size - 1
  1111.           number_abs = number[i].to_i
  1112.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  1113.           sprite.bitmap.blt(x + x2 + (number_cw  *  i), y, image, nsrc_rect)        
  1114.       end      
  1115.  
  1116.   end
  1117.  
  1118.   #--------------------------------------------------------------------------
  1119.   # ● Create Face
  1120.   #--------------------------------------------------------------------------  
  1121.   def create_face
  1122.       @face = Sprite.new
  1123.       @org_pos_face = [@org_pos[0] + FACE_POSITION[0],
  1124.                        @org_pos[1] + FACE_POSITION[1]]
  1125.       @face.x = @org_pos_face[0]
  1126.       @face.y = @org_pos_face[1]
  1127.       @face.z = 11
  1128.    #   @face.opacity = 0
  1129.       refresh_face
  1130.   end  
  1131.  
  1132.   #--------------------------------------------------------------------------
  1133.   # ● Refresh Face
  1134.   #--------------------------------------------------------------------------   
  1135.   def refresh_face
  1136.       face_name = "Face_B" + @actor.id.to_s
  1137.       @face.bitmap = Cache.menu(face_name.to_s)
  1138.   end
  1139.  
  1140.   #--------------------------------------------------------------------------
  1141.   # ● Create Name
  1142.   #--------------------------------------------------------------------------   
  1143.   def create_name
  1144.       @name = Sprite.new
  1145.       @name.bitmap = Bitmap.new(140,32)
  1146.       @name.bitmap.font.size = FONT_SIZE
  1147.       @name.bitmap.font.bold = FONT_BOLD
  1148.       @org_pos_name = [@org_pos[0] + NAME_POSITION[0],
  1149.                        @org_pos[1] + NAME_POSITION[1]]
  1150.       @name.x = @org_pos_name[0]
  1151.       @name.y = @org_pos_name[1]
  1152.       @name.z = 11
  1153.       refresh_name     
  1154.   end  
  1155.  
  1156.   #--------------------------------------------------------------------------
  1157.   # ● Refresh Name
  1158.   #--------------------------------------------------------------------------      
  1159.   def refresh_name
  1160.       @name.bitmap.clear
  1161.       @name.bitmap.draw_text(0,0,140,32,@actor.name.to_s,0)
  1162.   end  
  1163.  
  1164.   #--------------------------------------------------------------------------
  1165.   # ● Set Actor
  1166.   #--------------------------------------------------------------------------        
  1167.   def set_actor(actor)
  1168.       @actor = actor
  1169.   end
  1170.  
  1171.   #--------------------------------------------------------------------------
  1172.   # ● Can Refresh HP Meter
  1173.   #--------------------------------------------------------------------------         
  1174.   def can_refresh_hp_meter?
  1175.       return true if @hp_meter_old[0] != @actor.hp
  1176.       return true if @hp_meter_old[1] != @actor.mhp
  1177.       return false
  1178.   end
  1179.  
  1180.   #--------------------------------------------------------------------------
  1181.   # ● Can Refresh MP Meter
  1182.   #--------------------------------------------------------------------------         
  1183.   def can_refresh_mp_meter?
  1184.       return true if @mp_meter_old[0] != @actor.mp
  1185.       return true if @mp_meter_old[1] != @actor.mmp
  1186.       return false
  1187.   end  
  1188.  
  1189.   #--------------------------------------------------------------------------
  1190.   # ● Can Refresh Parameter
  1191.   #--------------------------------------------------------------------------
  1192.   def can_refresh_parameter?
  1193.       return true if @par[0] != @actor.hp
  1194.       return true if @par[1] != @actor.mhp
  1195.       return true if @par[2] != @actor.mp
  1196.       return true if @par[3] != @actor.mmp
  1197.       return true if @par[4] != @actor.level
  1198.       return false
  1199.   end   
  1200.  
  1201.   #--------------------------------------------------------------------------
  1202.   # ● Refresh_Visible
  1203.   #--------------------------------------------------------------------------   
  1204.   def refresh_visible
  1205.       if can_visible?
  1206.          set_visible(true)
  1207.       else  
  1208.          set_visible(false)
  1209.       end  
  1210.   end  
  1211.  
  1212.   #--------------------------------------------------------------------------
  1213.   # ● Set Index
  1214.   #--------------------------------------------------------------------------     
  1215.   def set_index
  1216.       @now_index[0] = @com_index
  1217.       @before_index[0] = @com_index - 1
  1218.       @next_index[0] = @com_index + 1
  1219.       @before_index[0] = @max_index if @before_index[0] < 0
  1220.       @next_index[0] = 0 if @next_index[0] > @max_index   
  1221.   end
  1222.  
  1223.   #--------------------------------------------------------------------------
  1224.   # ● Can Visible?
  1225.   #--------------------------------------------------------------------------     
  1226.   def can_visible?
  1227.       return true if @index == @now_index[0]
  1228.       return true if @index == @next_index[0]
  1229.       return true if @index == @before_index[0]
  1230.       return false
  1231.   end
  1232.  
  1233.   #--------------------------------------------------------------------------
  1234.   # ● Set Visible
  1235.   #--------------------------------------------------------------------------     
  1236.   def set_visible(value)
  1237.       @visible = value
  1238.       return
  1239.       @layout.visible = @visible
  1240.       @parameter.visible = @visible
  1241.       @hp_meter.visible = @visible
  1242.       @mp_meter.visible = @visible
  1243.       @face.visible = @visible
  1244.       @name.visible = @visible
  1245.   end
  1246.  
  1247.   #--------------------------------------------------------------------------
  1248.   # ● Update Position
  1249.   #--------------------------------------------------------------------------      
  1250.   def update_position
  1251.       update_slide(0,@layout,@layout.x,@next_pos[0] + @org_pos[0])
  1252.       update_slide(1,@layout,@layout.y,@next_pos[1] + @org_pos[1])
  1253.       update_slide(0,@parameter,@parameter.x,@next_pos[0] + @org_pos_par[0])
  1254.       update_slide(1,@parameter,@parameter.y,@next_pos[1] + @org_pos_par[1])
  1255.       update_slide(0,@hp_meter,@hp_meter.x,@next_pos[0] + @org_pos_hp[0])
  1256.       update_slide(1,@hp_meter,@hp_meter.y,@next_pos[1] + @org_pos_hp[1])  
  1257.       update_slide(0,@mp_meter,@mp_meter.x,@next_pos[0] + @org_pos_mp[0])
  1258.       update_slide(1,@mp_meter,@mp_meter.y,@next_pos[1] + @org_pos_mp[1])        
  1259.       update_slide(0,@face,@face.x,@next_pos[0] + @org_pos_face[0])
  1260.       update_slide(1,@face,@face.y,@next_pos[1] + @org_pos_face[1])        
  1261.       update_slide(0,@name,@name.x,@next_pos[0] + @org_pos_name[0])
  1262.       update_slide(1,@name,@name.y,@next_pos[1] + @org_pos_name[1])      
  1263.   end
  1264.  
  1265.   #--------------------------------------------------------------------------
  1266.   # ● Update Float
  1267.   #--------------------------------------------------------------------------         
  1268.   def update_float
  1269.       @float[2] += 1
  1270.       if @float[2] > 5
  1271.          @float[2] = 0
  1272.          @float[0] += 1
  1273.          case @float[0]         
  1274.               when 1..5
  1275.                   @float[1] -= 1  
  1276.               when 6..15
  1277.                   @float[1] += 1
  1278.               when 16..20
  1279.                   @float[1] -= 1
  1280.               else
  1281.                  @float = [0,0,0]
  1282.           end
  1283.        end
  1284.   end
  1285.  
  1286. #--------------------------------------------------------------------------
  1287. # ● Update Slide
  1288. #--------------------------------------------------------------------------                       
  1289.   def update_slide(type,sprite,cp,np)
  1290.       cp -= @float[1] if type == 1
  1291.       sp = 3 + ((cp - np).abs / 10)
  1292.       if cp > np
  1293.          cp -= sp
  1294.          cp = np if cp < np
  1295.       elsif cp < np
  1296.          cp += sp
  1297.          cp = np if cp > np
  1298.       end     
  1299.       sprite.x = cp if type == 0
  1300.       sprite.y = cp + @float[1] if type == 1
  1301.   end   
  1302.  
  1303.   #--------------------------------------------------------------------------
  1304.   # ● All Targets
  1305.   #--------------------------------------------------------------------------                        
  1306.   def all_targets
  1307.       return true if $game_temp.item_scope == 8
  1308.       return true if $game_temp.item_scope == 10
  1309.       return false
  1310.   end  
  1311.  
  1312.   #--------------------------------------------------------------------------
  1313.   # ● Update Opacity
  1314.   #--------------------------------------------------------------------------  
  1315.   def update_opacity
  1316.       if @visible
  1317.          if all_targets
  1318.             if @max_index == 0
  1319.                @next_pos = [0,0]
  1320.             else   
  1321.                if @index == @before_index[0]
  1322.                   @next_pos = [0,-MEMBERS_SPACE]
  1323.                elsif @index == @next_index[0]
  1324.                   @next_pos = [0,MEMBERS_SPACE]
  1325.                else  
  1326.                   @next_pos = [0,0]
  1327.                end      
  1328.             end            
  1329.             update_opacity_active
  1330.             update_float
  1331.          else  
  1332.              if ((@index == @before_index[0]) or (@index == @next_index[0])) and
  1333.                   @max_index != 0
  1334.                   opac_limit = 170
  1335.                   if @opac > opac_limit
  1336.                      @opac -= 10
  1337.                      @opac = opac_limit if @opac < opac_limit
  1338.                   elsif @opac < opac_limit
  1339.                      @opac += 10
  1340.                      @opac = opac_limit if @opac > opac_limit
  1341.                   end   
  1342.                   @float = [0,0,0]
  1343.              else  
  1344.                  update_opacity_active
  1345.                  update_float
  1346.              end  
  1347.          end   
  1348.       else
  1349.           @opac -= 10 if @opac > 0
  1350.           @opac = 0 if @opac < 0
  1351.           @float = [0,0,0]
  1352.       end
  1353.       set_opacity(@opac)
  1354.   end
  1355.  
  1356.   #--------------------------------------------------------------------------
  1357.   # ● Update Opacity Active
  1358.   #--------------------------------------------------------------------------   
  1359.   def update_opacity_active
  1360.       @opac_active[0] += 1
  1361.       case @opac_active[0]
  1362.          when 1..30
  1363.             @opac_active[1] +=  4
  1364.          when 31..60           
  1365.             @opac_active[1] -=  4
  1366.          else
  1367.            @opac_active[1] = 0
  1368.            @opac_active[0] = 0
  1369.       end
  1370.       @opac = 160 + @opac_active[1]
  1371.   end         
  1372.  
  1373.   #--------------------------------------------------------------------------
  1374.   # ● Set Opacity
  1375.   #--------------------------------------------------------------------------   
  1376.   def set_opacity(opac)
  1377.       @layout.opacity = opac
  1378.       @layout.opacity = opac
  1379.       @parameter.opacity = opac
  1380.       @parameter.opacity = opac
  1381.       @hp_meter.opacity = opac
  1382.       @hp_meter.opacity = opac
  1383.       @mp_meter.opacity = opac
  1384.       @mp_meter.opacity = opac
  1385.       @face.opacity = opac
  1386.       @face.opacity = opac
  1387.       @name.opacity = opac
  1388.       @name.opacity = opac
  1389.   end   
  1390.  
  1391.   #--------------------------------------------------------------------------
  1392.   # ● Refresh Index
  1393.   #--------------------------------------------------------------------------   
  1394.   def refresh_index
  1395.       refresh_arrow_type if @index == 0
  1396.       @index_old = @com_index
  1397.       set_index
  1398.       refresh_visible
  1399.       set_next_position
  1400.   end
  1401.  
  1402.   #--------------------------------------------------------------------------
  1403.   # ● Set Next Position
  1404.   #--------------------------------------------------------------------------      
  1405.   def set_next_position
  1406.       if @max_index == 0
  1407.          @next_pos = [0,0]
  1408.          return
  1409.       end  
  1410.       if @visible
  1411.       if @index == @before_index[0]
  1412.          @next_pos = [-32,-MEMBERS_SPACE]
  1413.          if @layout.opacity < 150
  1414.             set_position(@next_pos[0],-MEMBERS_SPACE * 2)
  1415.             set_opacity(0)
  1416.          end   
  1417.       elsif @index == @next_index[0]
  1418.          @next_pos = [-32,MEMBERS_SPACE]
  1419.          if @layout.opacity < 150  
  1420.             set_position(@next_pos[0],MEMBERS_SPACE * 2)
  1421.             set_opacity(0)
  1422.          end   
  1423.       else  
  1424.          @next_pos = [0,0]
  1425.       end   
  1426.       else
  1427.          @next_pos = [-64,0]
  1428.       end  
  1429.   end
  1430.  
  1431.   #--------------------------------------------------------------------------
  1432.   # ● Update Position
  1433.   #--------------------------------------------------------------------------      
  1434.   def set_position(pos_x,pos_y)
  1435.       @layout.x = @org_pos[0] + pos_x
  1436.       @layout.y = @org_pos[1] + pos_y
  1437.       @parameter.x = @org_pos_par[0] + pos_x
  1438.       @parameter.y = @org_pos_par[1] + pos_y
  1439.       @hp_meter.x = @org_pos_hp[0] + pos_x
  1440.       @hp_meter.y = @org_pos_hp[1] + pos_y
  1441.       @mp_meter.x = @org_pos_mp[0] + pos_x
  1442.       @mp_meter.y = @org_pos_mp[1] + pos_y
  1443.       @face.x = @org_pos_face[0] + pos_x
  1444.       @face.y = @org_pos_face[1] + pos_y
  1445.       @name.x = @org_pos_name[0] + pos_x
  1446.       @name.y = @org_pos_name[1] + pos_y
  1447.   end  
  1448.  
  1449.   #--------------------------------------------------------------------------
  1450.   # ● Refresh Active
  1451.   #--------------------------------------------------------------------------         
  1452.   def refresh_active
  1453.       @active_old = @active
  1454.       @visible = @active
  1455.       refresh_index
  1456.       if !@active
  1457.          @visible = @active
  1458.          @next_pos = [[email]-@layout.width[/email] - 64,0]
  1459.       else   
  1460.          set_position([email]-@layout.width[/email] - 64,0)
  1461.       end   
  1462.   end
  1463.  
  1464.   #--------------------------------------------------------------------------
  1465.   # ● Update
  1466.   #--------------------------------------------------------------------------  
  1467.   def update(active,com_index)
  1468.       @active = active
  1469.       @com_index = com_index
  1470.       refresh_active if @active != @active_old
  1471.       update_opacity
  1472.       update_position
  1473.       update_support if @index == 0
  1474.       return if !@active
  1475.       refresh_index if @index_old != @com_index
  1476.       return if !@active or !@visible
  1477.       refresh_hp_meter if can_refresh_hp_meter?
  1478.       refresh_mp_meter if can_refresh_mp_meter?
  1479.       refresh_parameter if can_refresh_parameter?
  1480.   end
  1481.  
  1482.   #--------------------------------------------------------------------------
  1483.   # ● Current Actor
  1484.   #--------------------------------------------------------------------------   
  1485.   def current_actor
  1486.       return true if @com_index == @index
  1487.       return false
  1488.   end
  1489.  
  1490. end
  1491.  
  1492. #==============================================================================
  1493. # ■ Game_Temp
  1494. #==============================================================================
  1495. class Game_Temp
  1496.  
  1497.   #--------------------------------------------------------------------------
  1498.   # ● Execute Pre Cache Actor
  1499.   #--------------------------------------------------------------------------  
  1500.   def execute_pre_cache_actor
  1501.       @pre_cache_actor_menu = []
  1502.       @pre_cache_actor_menu.push(Cache.menu("Actor_Layout_1"))
  1503.       @pre_cache_actor_menu.push(Cache.menu("Actor_Layout_2"))      
  1504.       @pre_cache_actor_menu.push(Cache.menu("Actor_Number_1"))
  1505.       @pre_cache_actor_menu.push(Cache.menu("Actor_Number_2"))
  1506.       @pre_cache_actor_menu.push(Cache.menu("Actor_Scope_All"))
  1507.       @pre_cache_actor_menu.push(Cache.menu("Actor_Members_Arrow"))
  1508.       @pre_cache_actor_menu.push(Cache.menu("Actor_Meter"))
  1509.   end
  1510.  
  1511. end
  1512.  
  1513. #==============================================================================
  1514. # ■ Actor Menu Status
  1515. #==============================================================================
  1516. class Actor_Menu_Status
  1517.  
  1518.   include MOG_ACTOR_MENU_STATUS
  1519.  
  1520.   #--------------------------------------------------------------------------
  1521.   # ● Initialize
  1522.   #--------------------------------------------------------------------------
  1523.   def initialize(actor)
  1524.       @actor = actor
  1525.       @active = false
  1526.       set_old_parameter
  1527.       create_sprites
  1528.   end
  1529.  
  1530.   #--------------------------------------------------------------------------
  1531.   # ● Create Sprites
  1532.   #--------------------------------------------------------------------------  
  1533.   def create_sprites
  1534.       @parameter_number = $game_temp.pre_cache_actor_menu[3]
  1535.       @parameter_cw = @parameter_number.width / 10
  1536.       @parameter_ch = @parameter_number.height   
  1537.       create_layout
  1538.       create_face
  1539.       create_parameter
  1540.       create_name
  1541.       create_states  
  1542.   #    update(true,@actor)
  1543.   end
  1544.  
  1545.   #--------------------------------------------------------------------------
  1546.   # ● Dispose
  1547.   #--------------------------------------------------------------------------  
  1548.   def dispose
  1549.       dispose_layout
  1550.       dispose_face
  1551.       dispose_parameter
  1552.       dispose_name
  1553.       dispose_states
  1554.   end
  1555.  
  1556.   #--------------------------------------------------------------------------
  1557.   # ● Dispose Layout
  1558.   #--------------------------------------------------------------------------   
  1559.   def dispose_layout
  1560.       @layout.dispose
  1561.   end
  1562.  
  1563.   #--------------------------------------------------------------------------
  1564.   # ● Dispose Face
  1565.   #--------------------------------------------------------------------------   
  1566.   def dispose_face
  1567.       @face.bitmap.dispose if @face.bitmap != nil
  1568.       @face.dispose
  1569.   end  
  1570.  
  1571.   #--------------------------------------------------------------------------
  1572.   # ● Dispose Parameter
  1573.   #--------------------------------------------------------------------------      
  1574.   def dispose_parameter
  1575.       @parameter.bitmap.dispose
  1576.       @parameter.dispose
  1577.   end
  1578.  
  1579.   #--------------------------------------------------------------------------
  1580.   # ● Dispose Name
  1581.   #--------------------------------------------------------------------------        
  1582.   def dispose_name
  1583.       @name.bitmap.dispose
  1584.       @name.dispose
  1585.   end
  1586.  
  1587.   #--------------------------------------------------------------------------
  1588.   # ● Dispose States
  1589.   #--------------------------------------------------------------------------            
  1590.    def dispose_states
  1591.        return if @status == nil
  1592.        @status.bitmap.dispose
  1593.        @status.dispose
  1594.        if @actor_status != nil
  1595.           @actor_status.dispose
  1596.           @actor_status = nil
  1597.        end   
  1598.    end   
  1599.  
  1600.   #--------------------------------------------------------------------------
  1601.   # ● Set Old Parameter
  1602.   #--------------------------------------------------------------------------  
  1603.   def set_old_parameter
  1604.       @par = [] if @par == nil
  1605.       @par.clear
  1606.       @par = [@actor.hp,@actor.mhp,@actor.mp,@actor.mmp,@actor.atk,@actor.def,
  1607.               @actor.mat,@actor.mdf,@actor.agi,@actor.luk,@actor.level,@actor.tp]
  1608.   end   
  1609.  
  1610.   #--------------------------------------------------------------------------
  1611.   # ● Create Layout
  1612.   #--------------------------------------------------------------------------
  1613.   def create_layout
  1614.       @layout = Sprite.new
  1615.       @layout.bitmap = $game_temp.pre_cache_actor_menu[1]
  1616.       @org_pos = [LAYOUT_POSITION[0],LAYOUT_POSITION[1]]
  1617.       @layout.x = @org_pos[0] + 150
  1618.       @layout.y = @org_pos[1]
  1619.       @layout.z = 10
  1620.       @layout.opacity = 0
  1621.   end
  1622.  
  1623.   #--------------------------------------------------------------------------
  1624.   # ● Create Parameter
  1625.   #--------------------------------------------------------------------------
  1626.   def create_parameter
  1627.       @parameter = Sprite.new
  1628.       @parameter.bitmap = Bitmap.new(@layout.bitmap.width,@layout.bitmap.height)
  1629.       @org_pos_par = [@org_pos[0] + PAR_POSITION[0],
  1630.                       @org_pos[1] + PAR_POSITION[1]]
  1631.       @parameter.x = @org_pos_par[0] + 150
  1632.       @parameter.y = @org_pos_par[1]
  1633.       @parameter.z = 11
  1634.       @parameter.opacity = 0
  1635.       refresh_parameter
  1636.   end
  1637.  
  1638.   #--------------------------------------------------------------------------
  1639.   # ● Create Face
  1640.   #--------------------------------------------------------------------------  
  1641.   def create_face
  1642.       @face = Sprite.new
  1643.       @face.bitmap = Bitmap.new(96,96)
  1644.       @org_pos_face = [@org_pos[0] + FACE_POSITION[0],
  1645.                        @org_pos[1] + FACE_POSITION[1]]
  1646.       @face.x = @org_pos_face[0] + 150
  1647.       @face.y = @org_pos_face[1]
  1648.       @face.z = 11
  1649.       @face.opacity = 0
  1650.       refresh_face
  1651.   end
  1652.  
  1653.   #--------------------------------------------------------------------------
  1654.   # ● Create Name
  1655.   #--------------------------------------------------------------------------   
  1656.   def create_name
  1657.       @name = Sprite.new
  1658.       @name.bitmap = Bitmap.new(140,32)
  1659.       @name.bitmap.font.size = FONT_SIZE
  1660.       @name.bitmap.font.bold = FONT_BOLD
  1661.       @org_pos_name = [@org_pos[0] + NAME_POSITION[0],
  1662.                        @org_pos[1] + NAME_POSITION[1]]
  1663.       @name.x = @org_pos_name[0] + 150
  1664.       @name.y = @org_pos_name[1]
  1665.       @name.z = 11
  1666.       @name.opacity = 0
  1667.       refresh_name     
  1668.   end  
  1669.  
  1670.   #--------------------------------------------------------------------------
  1671.   # ● Create_States
  1672.   #--------------------------------------------------------------------------      
  1673.   def create_states
  1674.       @status_old = nil
  1675.       @status_flow = [-24,0]   
  1676.       @status = Sprite.new
  1677.       @status.bitmap = Bitmap.new(24,24)
  1678.       @org_pos_states = [@org_pos[0] + STATES_POSITION[0],
  1679.                          @org_pos[1] + STATES_POSITION[1]]      
  1680.       @status.x = @org_pos_states[0] + 150
  1681.       @status.y = @org_pos_states[1]
  1682.       @status.z = 11
  1683.   end      
  1684.  
  1685.   #--------------------------------------------------------------------------
  1686.   # * Refresh States
  1687.   #--------------------------------------------------------------------------        
  1688.   def refresh_states
  1689.       check_icon_image
  1690.       @status_old = @actor.states
  1691.       @status_flow = [0,0]
  1692.       @actor_status.dispose if @actor_status != nil
  1693.       @states_size = @actor.states.size > 0 ? (26 * @actor.states.size) : 24
  1694.       @actor_status = Bitmap.new(@states_size,24)
  1695.       index = 0
  1696.       for i in @actor.states
  1697.          rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
  1698.          @actor_status.blt(26 * index , 0, @icon_image, rect)
  1699.          index += 1
  1700.       end
  1701.   end   
  1702.  
  1703.   #--------------------------------------------------------------------------
  1704.   # * Flow_Status
  1705.   #--------------------------------------------------------------------------         
  1706.   def flow_states
  1707.       return if @actor_status == nil
  1708.       @status.bitmap.clear
  1709.       return if @actor.states.size == 0
  1710.       st_src_rect = Rect.new(@status_flow[0],0, 24,24)
  1711.       @status.bitmap.blt(0,0, @actor_status, st_src_rect)
  1712.       if STATES_SCROLLING_ANIMATION
  1713.          @status_flow[0] += 1
  1714.          @status_flow[0] = -24 if @status_flow[0] >= @states_size + 2
  1715.       else   
  1716.          @status_flow[1] += 1 unless @actor.states.size <= 1
  1717.          if @status_flow[1] > 30
  1718.             @status_flow[1] = 0
  1719.             @status_flow[0] += 26
  1720.             @status_flow[0] = 0 if @status_flow[0] >= (@states_size - 0)
  1721.          end   
  1722.      end   
  1723.   end        
  1724.  
  1725.   #--------------------------------------------------------------------------
  1726.   # * Check Icon Image
  1727.   #--------------------------------------------------------------------------         
  1728.   def check_icon_image
  1729.       if @icon_image == nil or @icon_image.disposed?
  1730.          @icon_image = Cache.system("Iconset")
  1731.       end   
  1732.   end   
  1733.  
  1734.   #--------------------------------------------------------------------------
  1735.   # ● Can Refresh Parameter
  1736.   #--------------------------------------------------------------------------
  1737.   def can_refresh_parameter?
  1738.       return false if !@active
  1739.       return true if @par[0] != @actor.hp
  1740.       return true if @par[1] != @actor.mhp
  1741.       return true if @par[2] != @actor.mp
  1742.       return true if @par[3] != @actor.mmp
  1743.       return true if @par[4] != @actor.atk
  1744.       return true if @par[5] != @actor.def
  1745.       return true if @par[6] != @actor.mat
  1746.       return true if @par[7] != @actor.mdf
  1747.       return true if @par[8] != @actor.agi
  1748.       return true if @par[9] != @actor.luk
  1749.       return true if @par[10] != @actor.level
  1750.       return true if @par[11] != @actor.tp
  1751.       return false
  1752.   end  
  1753.  
  1754.   #--------------------------------------------------------------------------
  1755.   # ● Refresh All
  1756.   #--------------------------------------------------------------------------  
  1757.   def refresh_all(actor)      
  1758.       @actor = actor
  1759.       refresh_parameter
  1760.       refresh_face
  1761.       refresh_name
  1762.   end  
  1763.  
  1764.   #--------------------------------------------------------------------------
  1765.   # ● Refresh Name
  1766.   #--------------------------------------------------------------------------      
  1767.   def refresh_name   
  1768.       @name.bitmap.clear
  1769.       @name.bitmap.draw_text(0,0,140,32,@actor.name.to_s,0)
  1770.   end
  1771.  
  1772.   #--------------------------------------------------------------------------
  1773.   # ● Create Face
  1774.   #--------------------------------------------------------------------------   
  1775.   def refresh_parameter
  1776.       set_old_parameter
  1777.       @parameter.bitmap.clear      
  1778.       value = @actor.level
  1779.       x = 67
  1780.       y = 24
  1781.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1782.  
  1783.       value = @actor.tp
  1784.       x = 140
  1785.       y = 24
  1786.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1787.  
  1788.       value = @actor.hp
  1789.       x = 70
  1790.       y = 46
  1791.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1792.  
  1793.       value = @actor.mhp
  1794.       x = 140
  1795.       y = 46
  1796.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1797.  
  1798.       value = @actor.mp
  1799.       x = 70
  1800.       y = 46 + 22 * 1
  1801.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1802.  
  1803.       value = @actor.mmp
  1804.       x = 140
  1805.       y = 46 + 22 * 1
  1806.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1807.  
  1808.       value = @actor.atk
  1809.       x = 70
  1810.       y = 46 + 22 * 2
  1811.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1812.  
  1813.       value = @actor.def
  1814.       x = 70
  1815.       y = 46 + 22 * 3
  1816.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1817.  
  1818.       value = @actor.agi
  1819.       x = 70
  1820.       y = 46 + 22 * 4
  1821.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1822.  
  1823.       value = @actor.mat
  1824.       x = 140
  1825.       y = 46 + 22 * 2
  1826.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1827.  
  1828.       value = @actor.mdf
  1829.       x = 140
  1830.       y = 46 + 22 * 3
  1831.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1832.  
  1833.       value = @actor.luk
  1834.       x = 140
  1835.       y = 46 + 22 * 4
  1836.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1837.   end
  1838.  
  1839.   #--------------------------------------------------------------------------
  1840.   # ● Refresh Number
  1841.   #--------------------------------------------------------------------------     
  1842.   def refresh_number(sprite,image,value,number_cw,number_ch,x,y)
  1843.       number = value.truncate.abs.to_s.split(//)
  1844.       x2 = -number_cw * number.size
  1845.       for i in 0..number.size - 1
  1846.           number_abs = number[i].to_i
  1847.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  1848.           sprite.bitmap.blt(x + x2 + (number_cw  *  i), y, image, nsrc_rect)        
  1849.       end      
  1850.   end
  1851.  
  1852.   #--------------------------------------------------------------------------
  1853.   # ● Refresh Face
  1854.   #--------------------------------------------------------------------------  
  1855.   def refresh_face
  1856.       #return
  1857.       @face.bitmap.clear
  1858.       face_image = Cache.face(@actor.face_name)
  1859.       arect = Rect.new(@actor.face_index  % 4 * 96, @actor.face_index / 4 * 96, 96, 96)
  1860.       @face.bitmap.blt(0,0, face_image, arect)
  1861.      # face_image.dispose
  1862.   end
  1863.  
  1864.   #--------------------------------------------------------------------------
  1865.   # ● Update Slide
  1866.   #--------------------------------------------------------------------------  
  1867.   def update_slide
  1868.       slide_speed = 10
  1869.       opac_speed = 23
  1870.       @slide_range = (@org_pos[0] + 150)
  1871.       if @active
  1872.          if @layout.x > @org_pos[0]
  1873.             @layout.x -= slide_speed
  1874.             @parameter.x -= slide_speed
  1875.             @face.x -= slide_speed
  1876.             @name.x -= slide_speed
  1877.             @status.x -= slide_speed
  1878.             @layout.opacity += opac_speed
  1879.             @parameter.opacity += opac_speed
  1880.             @face.opacity += opac_speed
  1881.             @name.opacity += opac_speed
  1882.             @status.opacity += opac_speed
  1883.             if @layout.x <= @org_pos[0]
  1884.                @layout.x = @org_pos[0]
  1885.                @parameter.x = @org_pos_par[0]
  1886.                @face.x = @org_pos_face[0]
  1887.                @name.x = @org_pos_name[0]
  1888.                @status.x = @org_pos_states[0]
  1889.                @layout.opacity = 255
  1890.                @parameter.opacity = 255
  1891.                @face.opacity = 255
  1892.                @name.opacity = 255  
  1893.                @status.opacity = 255
  1894.             end  
  1895.          end   
  1896.       else
  1897.          if @layout.x <  @slide_range
  1898.             @layout.x += slide_speed
  1899.             @parameter.x += slide_speed
  1900.             @face.x += slide_speed
  1901.             @name.x += slide_speed
  1902.             @status.x += slide_speed
  1903.             @layout.opacity -= opac_speed
  1904.             @parameter.opacity -= opac_speed
  1905.             @face.opacity -= opac_speed
  1906.             @name.opacity -= opac_speed
  1907.             @status.opacity -= opac_speed
  1908.             if @layout.x >=  @slide_range
  1909.                @layout.x =  @slide_range
  1910.                @parameter.x = @org_pos_par[0] + 150
  1911.                @face.x = @org_pos_face[0] + 150
  1912.                @name.x = @org_pos_name[0] + 150
  1913.                @status.x = @org_pos_states[0] + 150
  1914.                @layout.opacity = 0
  1915.                @parameter.opacity = 0
  1916.                @face.opacity = 0
  1917.                @name.opacity = 0   
  1918.                @status.opacity = 0   
  1919.             end  
  1920.          end   
  1921.  
  1922.       end  
  1923.   end
  1924.  
  1925.   #--------------------------------------------------------------------------
  1926.   # ● Update
  1927.   #--------------------------------------------------------------------------
  1928.   def update(active,actor)
  1929.       @active = active
  1930.       update_slide
  1931.       return if !@active
  1932.       refresh_all(actor) if actor != @actor
  1933.       refresh_parameter if can_refresh_parameter?
  1934.       refresh_states if @status_old != @actor.states      
  1935.       flow_states
  1936.   end      
  1937.  
  1938. end
  1939.  
  1940.  
  1941.  
  1942. #==============================================================================
  1943. # ■ Game_Temp
  1944. #==============================================================================
  1945. class Game_Temp
  1946.  
  1947.   #--------------------------------------------------------------------------
  1948.   # ● Execute Pre Cache Main Menu
  1949.   #--------------------------------------------------------------------------   
  1950.   def execute_pre_cache_main_menu
  1951.       @pre_cache_main_menu = []
  1952.       @pre_cache_main_menu.push(Cache.menu_main("Background"))
  1953.       @pre_cache_main_menu.push(Cache.menu_main("Layout"))
  1954.       @pre_cache_main_menu.push(Cache.menu_main("Time_Number"))
  1955.       @pre_cache_main_menu.push(Cache.menu_main("Gold_Number"))
  1956.       @pre_cache_main_menu.push(Cache.menu_main("Members_Layout"))
  1957.       @pre_cache_main_menu.push(Cache.menu_main("Members_Arrow"))
  1958.       @pre_cache_main_menu.push(Cache.menu_main("Par_Number_1"))
  1959.       @pre_cache_main_menu.push(Cache.menu_main("Par_Number_2"))
  1960.       @pre_cache_main_menu.push(Cache.menu_main("Par_Meter"))
  1961.       @pre_cache_main_menu.push(Cache.menu_main("Par_Layout"))
  1962.   end   
  1963.  
  1964. end
  1965.  
  1966. #==============================================================================
  1967. # ■ Scene_Menu
  1968. #==============================================================================
  1969. class Scene_Menu
  1970.   include MOG_MENU
  1971.   include MOG_MENU_BASE
  1972.  
  1973.   #--------------------------------------------------------------------------
  1974.   # ● Main
  1975.   #--------------------------------------------------------------------------        
  1976.   def main
  1977.       execute_setup
  1978.       execute_loop
  1979.       execute_dispose
  1980.   end  
  1981.  
  1982.   #--------------------------------------------------------------------------
  1983.   # ● Execute Setup
  1984.   #--------------------------------------------------------------------------        
  1985.   def execute_setup
  1986.       $game_temp.execute_pre_cache_icon if $game_temp.can_pre_cache_icon?
  1987.       @phase = 0
  1988.       @members_windows_active = false
  1989.       @members_index = 0
  1990.       create_sprites
  1991.   end
  1992.  
  1993.   #--------------------------------------------------------------------------
  1994.   # ● Execute Lopp
  1995.   #--------------------------------------------------------------------------        
  1996.   def execute_loop
  1997.       Graphics.transition(10)
  1998.       loop do
  1999.          Input.update
  2000.          update
  2001.          Graphics.update
  2002.          break if SceneManager.scene != self
  2003.       end
  2004.   end  
  2005.  
  2006. end
  2007.  
  2008. #==============================================================================
  2009. # ■ Face Members
  2010. #==============================================================================
  2011. class Face_Members_Sprite < Sprite
  2012.   include MOG_MENU
  2013.   attr_accessor :index
  2014.   attr_accessor :active
  2015.   attr_accessor :actor_id
  2016.  
  2017. #--------------------------------------------------------------------------
  2018. # ● Initialize
  2019. #--------------------------------------------------------------------------                  
  2020.   def initialize(viewport = nil, index, actor_id)
  2021.       super(viewport)
  2022.       @active = false
  2023.       @index = index
  2024.       @actor_id = actor_id
  2025.       @active = false
  2026.       self.bitmap = Cache.menu("Face" + @actor_id.to_s)
  2027.       self.z = 12
  2028.       self.ox = self.bitmap.width / 2
  2029.       self.oy = self.bitmap.height / 2
  2030.       members_size = $game_party.members.size - 1
  2031.       members_size = 3 if members_size > 3
  2032.       space_base = (MEMBERS_FACE_SPACE * @index)
  2033.       space = space_base - ((ACTOR_SPACE * members_size ) / 2) +  MEMBERS_FACE_POSITION[0]
  2034.       @org_pos =  [space + self.ox , self.oy   ]
  2035.       @ny = 0
  2036.       @zoom_duration = [0,0,false]
  2037.       self.x = @org_pos[0]
  2038.       self.y = @org_pos[1]
  2039.   end  
  2040.  
  2041. #--------------------------------------------------------------------------
  2042. # ● Dispose
  2043. #--------------------------------------------------------------------------                     
  2044.   def dispose
  2045.       super
  2046.       self.bitmap.dispose
  2047.   end  
  2048.  
  2049. #--------------------------------------------------------------------------
  2050. # ● Update
  2051. #--------------------------------------------------------------------------                     
  2052.   def update_command(index, ny)
  2053.       @active = index == @index ? true : false
  2054.       @ny = ny
  2055.       update_slide(index)
  2056.       update_opacity
  2057.       update_zoom   
  2058.   end  
  2059.  
  2060. #--------------------------------------------------------------------------
  2061. # ● Update Opacity
  2062. #--------------------------------------------------------------------------                       
  2063.   def update_opacity
  2064.       if @active
  2065.          self.opacity += 12
  2066.       else  
  2067.          self.opacity -= 6 if self.opacity > 120
  2068.       end  
  2069.   end  
  2070.  
  2071. #--------------------------------------------------------------------------
  2072. # ● Update Zoom
  2073. #--------------------------------------------------------------------------                       
  2074.   def update_zoom
  2075.       if @active
  2076.          if !@zoom_duration[2]
  2077.             update_zoom_out
  2078.             @zoom_duration = [0,0,true] if self.zoom_x == 1.00  
  2079.          else  
  2080.             update_zoom_effect
  2081.          end
  2082.       else
  2083.          @zoom_duration[2] = false   
  2084.          update_zoom_in
  2085.       end  
  2086.   end   
  2087.  
  2088. #--------------------------------------------------------------------------
  2089. # ● Update Zoom Out
  2090. #--------------------------------------------------------------------------                        
  2091.   def update_zoom_out
  2092.       return if self.zoom_x == 1.00
  2093.       self.zoom_x += 0.03
  2094.       self.zoom_y += 0.03
  2095.       if self.zoom_x >= 1.00
  2096.             self.zoom_x = 1.00
  2097.             self.zoom_y = 1.00
  2098.       end   
  2099.    end   
  2100.  
  2101. #--------------------------------------------------------------------------
  2102. # ● Update Zoom In
  2103. #--------------------------------------------------------------------------                           
  2104.   def update_zoom_in
  2105.       return if self.zoom_x == 0.80
  2106.       self.zoom_x -= 0.03
  2107.       self.zoom_y -= 0.03
  2108.       if self.zoom_x <= 0.80
  2109.          self.zoom_x = 0.80
  2110.          self.zoom_y = 0.80
  2111.       end   
  2112.   end      
  2113.  
  2114. #--------------------------------------------------------------------------
  2115. # ● Update Zoom_effect
  2116. #--------------------------------------------------------------------------                        
  2117. def update_zoom_effect
  2118.      @zoom_duration[0] += 1
  2119.      return if @zoom_duration[0] < 1
  2120.      @zoom_duration[0] = 0
  2121.      @zoom_duration[1] += 1
  2122.      case @zoom_duration[1]
  2123.           when 1..30
  2124.              self.zoom_x -= 0.005
  2125.              self.zoom_y -= 0.005                 
  2126.           when 31..60
  2127.              self.zoom_x += 0.005
  2128.              self.zoom_y += 0.005           
  2129.           when 61..999  
  2130.           @zoom_duration[1] = 0
  2131.           self.zoom_x = 1.00
  2132.           self.zoom_y = 1.00
  2133.      end
  2134. end  
  2135.  
  2136. #--------------------------------------------------------------------------
  2137. # ● Update Slide
  2138. #--------------------------------------------------------------------------                       
  2139.   def update_slide(index)
  2140.       np = @org_pos[0] - (index * MEMBERS_FACE_SPACE) + @ny
  2141.       cp = self.x
  2142.       sp = 5 + ((cp - np).abs / 5)
  2143.       if cp > np
  2144.          cp -= sp
  2145.          cp = np if cp < np
  2146.       elsif cp < np
  2147.          cp += sp
  2148.          cp = np if cp > np
  2149.       end     
  2150.       self.x = cp      
  2151.   end  
  2152.  
  2153. #--------------------------------------------------------------------------
  2154. # ● Active
  2155. #--------------------------------------------------------------------------                        
  2156.   def active(value)
  2157.       @active = value
  2158.   end   
  2159.  
  2160. end
  2161.  
  2162. #==============================================================================
  2163. # ■ Members Arrow Sprite
  2164. #==============================================================================
  2165. class Members_Arrow_Sprite
  2166.    include MOG_MENU
  2167.    attr_accessor :active
  2168.  
  2169. #--------------------------------------------------------------------------
  2170. # ● Initialize
  2171. #--------------------------------------------------------------------------
  2172.   def initialize
  2173.       @active = false
  2174.       create_members_layout
  2175.       create_arrows
  2176.   end
  2177.  
  2178. #--------------------------------------------------------------------------
  2179. # ● Create Members Layout
  2180. #--------------------------------------------------------------------------  
  2181.   def create_members_layout
  2182.       @layout_members = Sprite.new
  2183.       @layout_members.bitmap = $game_temp.pre_cache_main_menu[4]
  2184.       @layout_members.z = 13
  2185.       @layout_members_pos = [MEMBERS_ARROW_LAYOUT_POSITION[0], MEMBERS_ARROW_LAYOUT_POSITION[1]]
  2186.       @layout_members.x = @layout_members_pos[0]
  2187.       @layout_members.y = @layout_members_pos[1]
  2188.       @layout_members.opacity = 0
  2189.   end
  2190.  
  2191. #--------------------------------------------------------------------------
  2192. # ● Create Arrows
  2193. #--------------------------------------------------------------------------  
  2194.   def create_arrows
  2195.       @arrow_animation_duration = [0,0]
  2196.       @arrow_1 = Sprite.new
  2197.       @arrow_1.bitmap = $game_temp.pre_cache_main_menu[5]
  2198.       @arrow_1.z = 13
  2199.       @arrow1_pos = [MEMBERS_ARROW_1_POSITION[0], MEMBERS_ARROW_1_POSITION[1]]
  2200.       @arrow_1.x = @arrow1_pos[0]
  2201.       @arrow_1.y = @arrow1_pos[1]
  2202.       @arrow_1.opacity = 0
  2203.       @arrow_2 = Sprite.new
  2204.       @arrow_2.bitmap = $game_temp.pre_cache_main_menu[5]
  2205.       @arrow_2.z = 13
  2206.       @arrow_2.mirror = true
  2207.       @arrow2_pos = [MEMBERS_ARROW_2_POSITION[0], MEMBERS_ARROW_2_POSITION[1]]
  2208.       @arrow_2.x = @arrow2_pos[0]
  2209.       @arrow_2.y = @arrow2_pos[1]
  2210.       @arrow_2.opacity = 0
  2211.       @nx = 0
  2212.       @nx2 = 0
  2213.   end  
  2214.  
  2215. #--------------------------------------------------------------------------
  2216. # ● Dispose
  2217. #--------------------------------------------------------------------------                              
  2218.   def dispose
  2219.       dispose_members_layout
  2220.       dispose_arrows
  2221.   end
  2222.  
  2223. #--------------------------------------------------------------------------
  2224. # ● Dispose Arrows
  2225. #--------------------------------------------------------------------------                                
  2226. def dispose_arrows
  2227.      return if @arrow_1 == nil
  2228.      @arrow_1.dispose
  2229.      @arrow_2.dispose
  2230.      @arrow_1 = nil
  2231. end  
  2232.  
  2233. #--------------------------------------------------------------------------
  2234. # ● Dispose Members Layout
  2235. #--------------------------------------------------------------------------   
  2236.   def dispose_members_layout
  2237.       return if @layout_members == nil
  2238.       @layout_members.dispose
  2239.       @layout_members = nil
  2240.   end
  2241.  
  2242. #--------------------------------------------------------------------------
  2243. # ● Update
  2244. #--------------------------------------------------------------------------                              
  2245.   def update
  2246.       update_arrow_animation
  2247.       update_position
  2248.       @layout_members.opacity += 15
  2249.       @arrow_1.opacity += 15
  2250.       @arrow_2.opacity += 15
  2251.   end  
  2252.  
  2253. #--------------------------------------------------------------------------
  2254. # ● Update Position
  2255. #--------------------------------------------------------------------------                                
  2256.   def update_position
  2257.       @arrow_1.x = @arrow1_pos[0] + @nx + @nx2
  2258.       @arrow_2.x = @arrow2_pos[0] + @nx - @nx2   
  2259.       @layout_members.x = @layout_members_pos[0] + @nx
  2260.   end
  2261.  
  2262. #--------------------------------------------------------------------------
  2263. # ● Update Arrow Animation
  2264. #--------------------------------------------------------------------------                                
  2265.   def update_arrow_animation
  2266.       @arrow_animation_duration[0] += 1
  2267.       return if @arrow_animation_duration[0] < 2
  2268.       @arrow_animation_duration[0] = 0
  2269.       @arrow_animation_duration[1] += 1
  2270.       case @arrow_animation_duration[1]
  2271.          when 1..20
  2272.            @nx2 -= 1
  2273.          when 21..40
  2274.            @nx2 += 1
  2275.          when 41..999  
  2276.            @nx2 = 0
  2277.            @arrow_animation_duration[1] = 0            
  2278.       end
  2279.   end
  2280.  
  2281. #--------------------------------------------------------------------------
  2282. # ● Active
  2283. #--------------------------------------------------------------------------                        
  2284.   def nx(value)
  2285.       @nx = value
  2286.   end   
  2287.  
  2288. end
  2289.  
  2290. #==============================================================================
  2291. # ■ Command Menu Sprite
  2292. #==============================================================================
  2293. class Command_Menu_Sprite < Sprite
  2294.   include MOG_MENU
  2295.   attr_accessor :index
  2296.  
  2297. #--------------------------------------------------------------------------
  2298. # ● Initialize
  2299. #--------------------------------------------------------------------------                  
  2300.   def initialize(viewport = nil,index,command_name)
  2301.       super(viewport)
  2302.       @index = index
  2303.       @command_name = command_name
  2304.       self.bitmap = Cache.menu_main("CM_" + @command_name.to_s)
  2305.       @cw = self.bitmap.width
  2306.       @ch = self.bitmap.height      
  2307.       cw1 = self.bitmap.height / 2
  2308.       cw2 = (self.bitmap.width + COMMAND_SPACE) * index
  2309.       self.ox = self.bitmap.width / 2
  2310.       self.oy = self.bitmap.height / 2
  2311.       @org_pos = [COMMAND_POSITION[0] + cw2 + self.ox, COMMAND_POSITION[1] + self.oy]
  2312.       @slide_max = @org_pos[1] + cw1
  2313.       @zoom_duration = [0,0,false]
  2314.       @zoom_limit = [1.00, 1.20]
  2315.       self.x = -@cw
  2316.       self.y = -@ch
  2317.       self.z = 10
  2318.       @active = false
  2319.       @visible_old = true
  2320.       @np = [-@cw,-@ch]
  2321.       @sprite_name = Sprite.new
  2322.       @sprite_name.bitmap = Bitmap.new(100,32)
  2323.       @sprite_name.bitmap.draw_text(0,0,100,32,@command_name.to_s,0)
  2324.       @sprite_name.z = 11
  2325.       @np_name = [-@cw,-@ch]
  2326.       @cw_name_pos = [@cw - self.ox + 4, -self.oy + 4]
  2327.   end  
  2328.  
  2329. #--------------------------------------------------------------------------
  2330. # ● Dispose
  2331. #--------------------------------------------------------------------------                     
  2332.   def dispose_command
  2333.       self.bitmap.dispose
  2334.       @sprite_name.bitmap.dispose
  2335.       @sprite_name.dispose
  2336.   end  
  2337.  
  2338. #--------------------------------------------------------------------------
  2339. # ● Update
  2340. #--------------------------------------------------------------------------                     
  2341.   def update_command(index, visible)
  2342.       @active = index == @index ? true : false
  2343.       refresh_active(visible) if @visible_old != visible
  2344.       update_position
  2345.       if !visible
  2346.           if @active
  2347.              self.opacity += 15
  2348.           else
  2349.              self.opacity -= 15
  2350.           end   
  2351.           return
  2352.       end  
  2353.       update_zoom
  2354.       update_opacity
  2355.   end   
  2356.  
  2357. #--------------------------------------------------------------------------
  2358. # ● Update Slide
  2359. #--------------------------------------------------------------------------                       
  2360.   def update_slide(type,cp,np)
  2361.       sp = 2 + ((cp - np).abs / 15)
  2362.       if cp > np
  2363.          cp -= sp
  2364.          cp = np if cp < np
  2365.       elsif cp < np
  2366.          cp += sp
  2367.          cp = np if cp > np
  2368.       end     
  2369.       self.x = cp if type == 0
  2370.       self.y = cp if type == 1
  2371.       @sprite_name.x = cp if type == 2
  2372.       @sprite_name.y = cp if type == 3
  2373.   end
  2374.  
  2375. #--------------------------------------------------------------------------
  2376. # ● Update Position
  2377. #--------------------------------------------------------------------------  
  2378.   def update_position
  2379.       unless !@visible_old
  2380.       if @active
  2381.          @np[0] = @org_pos[0]
  2382.          @np[1] = @slide_max
  2383.       else
  2384.          @np[0] = @org_pos[0]
  2385.          @np[1] = @org_pos[1]
  2386.       end  
  2387.       end
  2388.       update_slide(0,self.x,@np[0])
  2389.       update_slide(1,self.y,@np[1])
  2390.       update_sprite_name_position
  2391.   end      
  2392.  
  2393. #--------------------------------------------------------------------------
  2394. # ● Update Sprite Name Position
  2395. #--------------------------------------------------------------------------  
  2396. def update_sprite_name_position
  2397.       if (@active and !@visible_old) or !@active
  2398.          @np_name[0] = self.x + @cw_name_pos[0] + COMMAND_NAME_POSITION[0]
  2399.          @np_name[1] = self.y + @cw_name_pos[1] + COMMAND_NAME_POSITION[1]
  2400.       else
  2401.          @np_name[0] = COMMAND_NAME_POSITION_2[0]
  2402.          @np_name[1] = COMMAND_NAME_POSITION_2[1]
  2403.       end
  2404.       update_slide(2,@sprite_name.x,@np_name[0])
  2405.       update_slide(3,@sprite_name.y,@np_name[1])      
  2406.       @sprite_name.visible = @active ? true : false
  2407.   end     
  2408.  
  2409.  
  2410. #--------------------------------------------------------------------------
  2411. # ● Refresh Active
  2412. #--------------------------------------------------------------------------                       
  2413.   def refresh_active(visible)
  2414.       if @active and !visible
  2415.          @np[0] = COMMAND_POSITION_2[0] + (@cw / 2)
  2416.          @np[1] = COMMAND_POSITION_2[1]  
  2417.          self.zoom_x = @zoom_limit[0]
  2418.          self.zoom_y = @zoom_limit[0]
  2419.       else
  2420.          @np[0] = @org_pos[0]
  2421.          @np[1] = @org_pos[1]     
  2422.       end
  2423.       @visible_old = visible
  2424.   end
  2425.  
  2426. #--------------------------------------------------------------------------
  2427. # ● Update Opacity
  2428. #--------------------------------------------------------------------------  
  2429.   def update_opacity
  2430.       if @active
  2431.          self.opacity += 15
  2432.       else
  2433.          self.opacity -= 15 if self.opacity > 160
  2434.          if self.opacity < 160
  2435.             self.opacity += 15
  2436.             self.opacity = 160 if self.opacity > 160
  2437.          end   
  2438.       end   
  2439.   end  
  2440.  
  2441. #--------------------------------------------------------------------------
  2442. # ● Update Zoom
  2443. #--------------------------------------------------------------------------                       
  2444.   def update_zoom
  2445.       if @active
  2446.          if !@zoom_duration[2]
  2447.             update_zoom_out
  2448.             @zoom_duration = [0,0,true] if self.zoom_x == @zoom_limit[1]
  2449.          else  
  2450.             update_zoom_effect
  2451.          end
  2452.       else
  2453.          @zoom_duration[2] = false   
  2454.          update_zoom_in
  2455.       end  
  2456.   end   
  2457.  
  2458. #--------------------------------------------------------------------------
  2459. # ● Update Zoom Out
  2460. #--------------------------------------------------------------------------                        
  2461.   def update_zoom_out
  2462.       return if self.zoom_x == @zoom_limit[1]
  2463.       self.zoom_x += 0.03
  2464.       self.zoom_y += 0.03
  2465.       if self.zoom_x >= @zoom_limit[1]
  2466.             self.zoom_x = @zoom_limit[1]
  2467.             self.zoom_y = @zoom_limit[1]
  2468.       end   
  2469.    end   
  2470.  
  2471. #--------------------------------------------------------------------------
  2472. # ● Update Zoom In
  2473. #--------------------------------------------------------------------------                           
  2474.   def update_zoom_in
  2475.       return if self.zoom_x == @zoom_limit[0]
  2476.       self.zoom_x -= 0.03
  2477.       self.zoom_y -= 0.03
  2478.       if self.zoom_x <= @zoom_limit[0]
  2479.          self.zoom_x = @zoom_limit[0]
  2480.          self.zoom_y = @zoom_limit[0]
  2481.       end   
  2482.   end      
  2483.  
  2484. #--------------------------------------------------------------------------
  2485. # ● Update Zoom_effect
  2486. #--------------------------------------------------------------------------                        
  2487. def update_zoom_effect
  2488.      @zoom_duration[0] += 1
  2489.      return if @zoom_duration[0] < 1
  2490.      @zoom_duration[0] = 0
  2491.      @zoom_duration[1] += 1
  2492.      case @zoom_duration[1]
  2493.           when 1..30
  2494.              self.zoom_x -= 0.005
  2495.              self.zoom_y -= 0.005                 
  2496.           when 31..60
  2497.              self.zoom_x += 0.005
  2498.              self.zoom_y += 0.005           
  2499.           when 61..999  
  2500.           @zoom_duration[1] = 0
  2501.           self.zoom_x = @zoom_limit[1]
  2502.           self.zoom_y = @zoom_limit[1]
  2503.      end
  2504. end   
  2505.  
  2506. end
  2507.  
  2508. #==============================================================================
  2509. # ■ Actor Menu Pictures
  2510. #==============================================================================
  2511. class Actor_Menu_Pictures < Sprite
  2512.   include MOG_MENU
  2513.   attr_accessor :index
  2514.  
  2515. #--------------------------------------------------------------------------
  2516. # ● Initialize
  2517. #--------------------------------------------------------------------------                  
  2518.   def initialize(viewport = nil,index,actor_id)
  2519.       super(viewport)
  2520.       @index = index
  2521.       @actor_id = actor_id
  2522.       self.bitmap = Cache.menu("Actor" + @actor_id.to_s)
  2523.       self.z = 2
  2524.       set_position
  2525.       @slide_max = @org_pos[0] + 24
  2526.       auto_y = Graphics.height - self.bitmap.height
  2527.       self.ox = self.bitmap.width / 2
  2528.       self.x = @org_pos[0] - 15
  2529.       self.y = auto_y
  2530.       self.opacity = 0
  2531.       @op_time = 10 * @index
  2532.   end  
  2533.  
  2534. #--------------------------------------------------------------------------
  2535. # ● Set Position
  2536. #--------------------------------------------------------------------------  
  2537.   def set_position
  2538.       members_size = $game_party.members.size
  2539.       members_size = $game_party.max_battle_members if members_size > $game_party.max_battle_members
  2540.       space_members = ((Graphics.width ) / members_size)
  2541.       space_members_2 = (space_members * @index)
  2542.       space_members_3 = ((space_members / 2) * (members_size - 1))
  2543.       center = Graphics.width / 2
  2544.       space = center + space_members_2 - space_members_3
  2545.       @org_pos =  [space, ACTOR_POSITION[1]]   
  2546.   end
  2547.  
  2548. #--------------------------------------------------------------------------
  2549. # ● Dispose
  2550. #--------------------------------------------------------------------------                     
  2551.   def dispose_picture
  2552.       self.bitmap.dispose
  2553.   end  
  2554.  
  2555. #--------------------------------------------------------------------------
  2556. # ● Update Picture
  2557. #--------------------------------------------------------------------------  
  2558.   def update_picture
  2559.       @op_time -= 1 if @op_time > 0
  2560.       return if @op_time > 0
  2561.       self.opacity += 15
  2562.       self.x += 1 if self.x < @org_pos[0]
  2563.   end
  2564.  
  2565. end
  2566.  
  2567. #==============================================================================
  2568. # ■ Actor Menu Parameter
  2569. #==============================================================================
  2570. class Actor_Menu_Parameter
  2571.  
  2572.   include MOG_MENU
  2573.   attr_accessor :index
  2574.  
  2575.   #--------------------------------------------------------------------------
  2576.   # ● Initialize
  2577.   #--------------------------------------------------------------------------                     
  2578.   def initialize(index, actor)
  2579.       setup(index, actor)
  2580.       create_layout_par
  2581.       create_hp_number
  2582.       create_hp2_number
  2583.       create_mp_number
  2584.       create_mp2_number
  2585.       create_hp_meter
  2586.       create_mp_meter
  2587.       create_level
  2588.       create_states
  2589.       create_name
  2590.   end
  2591.  
  2592.   #--------------------------------------------------------------------------
  2593.   # ● Setup
  2594.   #--------------------------------------------------------------------------                       
  2595.   def setup(index, actor)
  2596.       @actor = actor
  2597.       @index = index
  2598.       set_position
  2599.       @number_image_1 = $game_temp.pre_cache_main_menu[6]
  2600.       @number_image_1_cw = @number_image_1.width / 10
  2601.       @number_image_1_ch = @number_image_1.height / 3
  2602.       @number_image_2 = $game_temp.pre_cache_main_menu[7]
  2603.       @number_image_2_cw = @number_image_2.width / 10
  2604.       @number_image_2_ch = @number_image_2.height
  2605.       @par_meter_image = $game_temp.pre_cache_main_menu[8]
  2606.       @par_meter_cw = @par_meter_image.width / 3
  2607.       @par_meter_ch = @par_meter_image.height / 2
  2608.       @par_meter_flow = 0
  2609.       @par_meter_flow_max = @par_meter_image.width - @par_meter_cw
  2610.       @icon_image = $game_temp.pre_cache_icon
  2611.   end
  2612.  
  2613.   #--------------------------------------------------------------------------
  2614.   # ● Set Position
  2615.   #--------------------------------------------------------------------------                       
  2616.   def set_position
  2617.       members_size = $game_party.members.size
  2618.       members_size = $game_party.max_battle_members if members_size >= $game_party.max_battle_members
  2619.       space_members = ((Graphics.width ) / members_size)
  2620.       space_members_2 = (space_members * @index)
  2621.       space_members_3 = ((space_members / 2) * (members_size - 1))
  2622.       center = Graphics.width / 2
  2623.       layout_ox = $game_temp.pre_cache_main_menu[9].width / 2
  2624.       @base_x = center - layout_ox + space_members_2 - space_members_3  
  2625.   end
  2626.  
  2627.   #--------------------------------------------------------------------------
  2628.   # ● Create Layout Par
  2629.   #--------------------------------------------------------------------------                       
  2630.   def create_layout_par
  2631.       @layout_par = Sprite.new
  2632.       @layout_par.bitmap = $game_temp.pre_cache_main_menu[9]
  2633.       @layout_par.z = 10
  2634.       @layout_par.x = @base_x + ACTOR_LAYOUT_POSITON[0]      
  2635.       @layout_par.y = ACTOR_LAYOUT_POSITON[1]
  2636.   end
  2637.  
  2638.   #--------------------------------------------------------------------------
  2639.   # ● Create Name
  2640.   #--------------------------------------------------------------------------  
  2641.   def create_name
  2642.       @actor_name = Sprite.new
  2643.       @actor_name.bitmap = Bitmap.new(160,32)
  2644.       @actor_name.bitmap.font.size = 18
  2645.       @actor_name.bitmap.font.bold = true
  2646.       @actor_name.bitmap.font.italic = true
  2647.       actor_name = @actor.name
  2648.       @actor_name.bitmap.font.color = Color.new(0,0,0)
  2649.       @actor_name.bitmap.draw_text(1,1,140,32,actor_name,1)
  2650.       @actor_name.bitmap.font.color = Color.new(255 ,255,255)
  2651.       @actor_name.bitmap.draw_text(0,0,140,32,actor_name,1)
  2652.       @actor_name.z = 12
  2653.       @actor_name.x = @base_x - 20
  2654.       @actor_name.y = 250
  2655.   end
  2656.  
  2657.   #--------------------------------------------------------------------------
  2658.   # ● Create HP Number
  2659.   #--------------------------------------------------------------------------  
  2660.   def create_hp_number
  2661.       @hp_number = Sprite.new
  2662.       @hp_number.bitmap = Bitmap.new(@number_image_1_cw * 4,@number_image_1_ch)
  2663.       @hp_number.z = 12
  2664.       @hp_number.x = @base_x + ACTOR_HP1_POSITON[0]
  2665.       @hp_number.y =  ACTOR_HP1_POSITON[1]
  2666.       refresh_hp
  2667.   end
  2668.  
  2669.   #--------------------------------------------------------------------------
  2670.   # ● Refresh HP
  2671.   #--------------------------------------------------------------------------   
  2672.   def refresh_hp
  2673.       @hp_number.bitmap.clear
  2674.       number = @actor.hp.abs.to_s.split(//)
  2675.       number_cw = @number_image_1_cw
  2676.       number_ch = @number_image_1_ch
  2677.       for i in 0..number.size - 1
  2678.           number_abs = number[i].to_i
  2679.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  2680.           @hp_number.bitmap.blt(number_cw  *  i, 0, @number_image_1, nsrc_rect)        
  2681.       end
  2682.   end
  2683.  
  2684.   #--------------------------------------------------------------------------
  2685.   # ● Create HP2 Number
  2686.   #--------------------------------------------------------------------------  
  2687.   def create_hp2_number
  2688.       @hp2_number = Sprite.new
  2689.       @hp2_number.bitmap = Bitmap.new(@number_image_2_cw * 4,@number_image_2_ch)
  2690.       @hp2_number.z = 12
  2691.       @hp2_number.x = @base_x + ACTOR_HP2_POSITON[0]
  2692.       @hp2_number.y =  ACTOR_HP2_POSITON[1]
  2693.       refresh_hp2
  2694.   end
  2695.  
  2696.   #--------------------------------------------------------------------------
  2697.   # ● Refresh HP2
  2698.   #--------------------------------------------------------------------------   
  2699.   def refresh_hp2
  2700.       @hp2_number.bitmap.clear
  2701.       number = @actor.mhp.abs.to_s.split(//)
  2702.       number_cw = @number_image_2_cw
  2703.       number_ch = @number_image_2_ch
  2704.       for i in 0..number.size - 1
  2705.           number_abs = number[i].to_i
  2706.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  2707.           @hp2_number.bitmap.blt(number_cw  *  i, 0, @number_image_2, nsrc_rect)        
  2708.       end
  2709.   end  
  2710.  
  2711.   #--------------------------------------------------------------------------
  2712.   # ● Create MP Number
  2713.   #--------------------------------------------------------------------------  
  2714.   def create_mp_number
  2715.       @mp_number = Sprite.new
  2716.       @mp_number.bitmap = Bitmap.new(@number_image_1_cw * 4,@number_image_1_ch)
  2717.       @mp_number.z = 12
  2718.       @mp_number.x = @base_x + ACTOR_MP1_POSITON[0]
  2719.       @mp_number.y =  ACTOR_MP1_POSITON[1]
  2720.       refresh_mp
  2721.   end
  2722.  
  2723.   #--------------------------------------------------------------------------
  2724.   # ● Refresh MP
  2725.   #--------------------------------------------------------------------------   
  2726.   def refresh_mp
  2727.       @mp_number.bitmap.clear
  2728.       number = @actor.mp.abs.to_s.split(//)
  2729.       number_cw = @number_image_1_cw
  2730.       number_ch = @number_image_1_ch
  2731.       for i in 0..number.size - 1
  2732.           number_abs = number[i].to_i
  2733.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  2734.           @mp_number.bitmap.blt(number_cw  *  i, 0, @number_image_1, nsrc_rect)        
  2735.       end
  2736.     end
  2737.  
  2738.   #--------------------------------------------------------------------------
  2739.   # ● Create MP2 Number
  2740.   #--------------------------------------------------------------------------  
  2741.   def create_mp2_number
  2742.       @mp2_number = Sprite.new
  2743.       @mp2_number.bitmap = Bitmap.new(@number_image_2_cw * 4,@number_image_2_ch)
  2744.       @mp2_number.z = 12
  2745.       @mp2_number.x = @base_x + ACTOR_MP2_POSITON[0]
  2746.       @mp2_number.y =  ACTOR_MP2_POSITON[1]
  2747.       refresh_mp2
  2748.   end
  2749.  
  2750.   #--------------------------------------------------------------------------
  2751.   # ● Refresh MP2
  2752.   #--------------------------------------------------------------------------   
  2753.   def refresh_mp2
  2754.       @mp2_number.bitmap.clear
  2755.       number = @actor.mmp.abs.to_s.split(//)
  2756.       number_cw = @number_image_2_cw
  2757.       number_ch = @number_image_2_ch
  2758.       for i in 0..number.size - 1
  2759.           number_abs = number[i].to_i
  2760.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  2761.           @mp2_number.bitmap.blt(number_cw  *  i, 0, @number_image_2, nsrc_rect)        
  2762.       end
  2763.   end      
  2764.  
  2765.   #--------------------------------------------------------------------------
  2766.   # ● Create Level
  2767.   #--------------------------------------------------------------------------      
  2768.   def create_level
  2769.       @level = Sprite.new
  2770.       @level.bitmap = Bitmap.new(@number_image_1_cw * 2, @number_image_1_ch)
  2771.       @level.z = 12
  2772.       @level.x = @base_x + ACTOR_LEVEL_POSITON[0]
  2773.       @level.y = ACTOR_LEVEL_POSITON[1]
  2774.       refresh_level
  2775.   end
  2776.  
  2777.   #--------------------------------------------------------------------------
  2778.   # ● Refresh Level
  2779.   #--------------------------------------------------------------------------        
  2780.   def refresh_level
  2781.       @level.bitmap.clear
  2782.       number = @actor.level.abs.to_s.split(//)
  2783.       number_cw = @number_image_1_cw
  2784.       number_ch = @number_image_1_ch
  2785.       for i in 0..number.size - 1
  2786.           number_abs = number[i].to_i
  2787.           nsrc_rect = Rect.new(number_cw * number_abs, number_ch * 2, number_cw , number_ch)
  2788.           @level.bitmap.blt(number_cw  *  i, 0, @number_image_1, nsrc_rect)        
  2789.       end      
  2790.   end  
  2791.  
  2792.   #--------------------------------------------------------------------------
  2793.   # ● Create HP Meter
  2794.   #--------------------------------------------------------------------------      
  2795.   def create_hp_meter
  2796.       @hp_meter = Sprite.new
  2797.       @hp_meter.bitmap = Bitmap.new(@par_meter_cw,@par_meter_ch)
  2798.       @hp_meter.z = 11
  2799.       @hp_meter.x = @base_x + ACTOR_HP_METER_POSITON[0]
  2800.       @hp_meter.y = ACTOR_HP_METER_POSITON[1]
  2801.       update_flow_hp
  2802.   end
  2803.  
  2804.   #--------------------------------------------------------------------------
  2805.   # ● Update Flow HP
  2806.   #--------------------------------------------------------------------------        
  2807.   def update_flow_hp
  2808.       @hp_meter.bitmap.clear
  2809.       par_width = @par_meter_cw * @actor.hp / @actor.mhp
  2810.       m_scr = Rect.new(@par_meter_flow,0, par_width, @par_meter_ch)
  2811.       @hp_meter.bitmap.blt(0,0,@par_meter_image, m_scr)
  2812.   end  
  2813.  
  2814.   #--------------------------------------------------------------------------
  2815.   # ● Create MP Meter
  2816.   #--------------------------------------------------------------------------      
  2817.   def create_mp_meter
  2818.       @mp_meter = Sprite.new
  2819.       @mp_meter.bitmap = Bitmap.new(@par_meter_cw,@par_meter_ch)
  2820.       @mp_meter.z = 11
  2821.       @mp_meter.x = @base_x + ACTOR_MP_METER_POSITON[0]
  2822.       @mp_meter.y = ACTOR_MP_METER_POSITON[1]
  2823.       update_flow_mp
  2824.   end
  2825.  
  2826.   #--------------------------------------------------------------------------
  2827.   # ● Update Flow MP
  2828.   #--------------------------------------------------------------------------        
  2829.   def update_flow_mp
  2830.       @mp_meter.bitmap.clear
  2831.       par_width = @par_meter_cw * @actor.mp / @actor.mmp rescue nil
  2832.       par_width = 0 if par_width == nil
  2833.       m_scr = Rect.new(@par_meter_flow,@par_meter_ch, par_width, @par_meter_ch)
  2834.       @mp_meter.bitmap.blt(0,0,@par_meter_image, m_scr)
  2835.       @par_meter_flow += 3
  2836.       @par_meter_flow = 0 if @par_meter_flow > @par_meter_flow_max
  2837.   end   
  2838.  
  2839.   #--------------------------------------------------------------------------
  2840.   # ● Create_States
  2841.   #--------------------------------------------------------------------------      
  2842.   def create_states
  2843.       refresh_states
  2844.       @status = Sprite.new
  2845.       @status.bitmap = Bitmap.new(24,24)
  2846.       @status.x = @base_x +  ACTOR_STATES_POSITION[0]
  2847.       @status.y = ACTOR_STATES_POSITION[1]
  2848.       @status_flow = -24
  2849.       @states_speed = 50
  2850.       @status.z = 503
  2851.       @old_states = @actor.states
  2852.       refresh_states
  2853.       update_flow_states
  2854.   end      
  2855.  
  2856.   #--------------------------------------------------------------------------
  2857.   # ● Upate Flow_Status
  2858.   #--------------------------------------------------------------------------         
  2859.   def update_flow_states
  2860.       return if @actor.states.size == 0 and !@status.visible
  2861.       @states_speed = 0
  2862.       @status.bitmap.clear
  2863.       src_rect = Rect.new(@status_flow,0, 24,24)
  2864.       @status.bitmap.blt(0,0, @actor_status, src_rect)
  2865.       @status.visible = @actor.states.size == 0 ? false : true
  2866.       @status_flow += 1
  2867.       @status_flow = -24 if @status_flow >= @states_size - 24
  2868.   end   
  2869.  
  2870.   #--------------------------------------------------------------------------
  2871.   # ● Refresh States
  2872.   #--------------------------------------------------------------------------        
  2873.   def refresh_states
  2874.       @old_states = @actor.states
  2875.       if @actor_status != nil
  2876.          @actor_status.dispose
  2877.          @actor_status = nil
  2878.       end
  2879.       @states_size = @actor.states.size > 0 ? (48 * @actor.states.size) : 24
  2880.       @actor_status = Bitmap.new(@states_size,24)
  2881.       index = 0
  2882.       for i in  @actor.states
  2883.          rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
  2884.          @actor_status.blt(48 * index , 0, @icon_image, rect)
  2885.          index += 1
  2886.       end
  2887.   end   
  2888.  
  2889.   #--------------------------------------------------------------------------
  2890.   # ● Update
  2891.   #--------------------------------------------------------------------------         
  2892.   def update
  2893.       update_flow_hp
  2894.       update_flow_mp
  2895.       update_flow_states
  2896.   end  
  2897.  
  2898. end
  2899.  
  2900.  
  2901. #==============================================================================
  2902. # ■ Actor Menu Parameter
  2903. #==============================================================================
  2904. class Actor_Menu_Parameter
  2905.  
  2906.   #--------------------------------------------------------------------------
  2907.   # ● Dispose
  2908.   #--------------------------------------------------------------------------                     
  2909.   def dispose
  2910.       dispose_actor_layout_par
  2911.       dispose_name
  2912.       dispose_hp_number
  2913.       dispose_mp_number
  2914.       dispose_hp_meter
  2915.       dispose_mp_meter
  2916.       dispose_states
  2917.       dispose_level
  2918.   end  
  2919.  
  2920.   #--------------------------------------------------------------------------
  2921.   # ● Dispose Actor Layout Par
  2922.   #--------------------------------------------------------------------------                        
  2923.   def dispose_actor_layout_par
  2924.       return if @layout_par == nil
  2925.       @layout_par.dispose
  2926.       @layout_par = nil
  2927.   end   
  2928.  
  2929.   #--------------------------------------------------------------------------
  2930.   # ● Dispose Name
  2931.   #--------------------------------------------------------------------------  
  2932.   def dispose_name
  2933.       return if @actor_name == nil
  2934.       @actor_name.bitmap.dispose
  2935.       @actor_name.dispose
  2936.       @actor_name = nil
  2937.   end
  2938.  
  2939.   #--------------------------------------------------------------------------
  2940.   # ● Dispose HP Number
  2941.   #--------------------------------------------------------------------------      
  2942.   def dispose_hp_number
  2943.       return if @hp_number == nil
  2944.       @hp_number.bitmap.dispose
  2945.       @hp_number.dispose
  2946.       @hp_number = nil
  2947.       @hp2_number.bitmap.dispose
  2948.       @hp2_number.dispose
  2949.       @hp2_number = nil      
  2950.  
  2951.   end   
  2952.  
  2953.   #--------------------------------------------------------------------------
  2954.   # ● Dispose MP Number
  2955.   #--------------------------------------------------------------------------      
  2956.   def dispose_mp_number
  2957.       return if @mp_number == nil
  2958.       @mp_number.bitmap.dispose
  2959.       @mp_number.dispose
  2960.       @mp_number = nil
  2961.       @mp2_number.bitmap.dispose
  2962.       @mp2_number.dispose
  2963.       @mp2_number = nil      
  2964.   end   
  2965.  
  2966.   #--------------------------------------------------------------------------
  2967.   # ● Dispose States
  2968.   #--------------------------------------------------------------------------            
  2969.    def dispose_states
  2970.        return if @status == nil
  2971.        @status.bitmap.dispose
  2972.        @status.dispose
  2973.        if @actor_status != nil
  2974.           @actor_status.dispose
  2975.           @actor_status = nil
  2976.        end   
  2977.    end  
  2978.  
  2979.   #--------------------------------------------------------------------------
  2980.   # ● Dispose MP Meter
  2981.   #--------------------------------------------------------------------------        
  2982.   def dispose_mp_meter
  2983.       return if @mp_meter == nil
  2984.       @mp_meter.bitmap.dispose
  2985.       @mp_meter.dispose
  2986.       @mp_meter = nil
  2987.   end     
  2988.  
  2989.   #--------------------------------------------------------------------------
  2990.   # ● Dispose HP Meter
  2991.   #--------------------------------------------------------------------------        
  2992.   def dispose_hp_meter
  2993.       return if @hp_meter == nil
  2994.       @hp_meter.bitmap.dispose
  2995.       @hp_meter.dispose
  2996.       @hp_meter = nil
  2997.   end
  2998.  
  2999.   #--------------------------------------------------------------------------
  3000.   # ● Dispose Level
  3001.   #--------------------------------------------------------------------------        
  3002.   def dispose_level
  3003.       return if @level == nil
  3004.       @level.bitmap.dispose
  3005.       @level.dispose
  3006.       @level = nil
  3007.   end
  3008.  
  3009. end  
  3010.  
  3011. #==============================================================================
  3012. # ■ Scene_Menu
  3013. #==============================================================================
  3014. class Scene_Menu
  3015.  
  3016.   #--------------------------------------------------------------------------
  3017.   # ● Create Sprites
  3018.   #--------------------------------------------------------------------------         
  3019.   def create_sprites
  3020.       create_menu_background
  3021.       create_layout
  3022.       create_particles
  3023.       create_command
  3024.       create_actor_pictures
  3025.       create_timer_sprite
  3026.       create_gold_number
  3027.       create_location
  3028.       create_actor_parameter
  3029.       create_members
  3030.       create_members_layout
  3031.       update_members_face
  3032.   end
  3033.  
  3034.   #--------------------------------------------------------------------------
  3035.   # ● Create Menu Background
  3036.   #--------------------------------------------------------------------------            
  3037.   def create_menu_background
  3038.       @background = Plane.new
  3039.       @background.bitmap = $game_temp.pre_cache_main_menu[0]
  3040.       @background.z = 0
  3041.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  3042.   end  
  3043.  
  3044.   #--------------------------------------------------------------------------
  3045.   # ● Create Menu Background
  3046.   #--------------------------------------------------------------------------              
  3047.   def create_layout
  3048.       @layout = Sprite.new
  3049.       @layout.bitmap = $game_temp.pre_cache_main_menu[1]
  3050.       @layout.z = 3
  3051.   end
  3052.  
  3053.   #--------------------------------------------------------------------------
  3054.   # ● Create Particles
  3055.   #--------------------------------------------------------------------------  
  3056.   def create_particles
  3057.       @particles_sprite =[]
  3058.       for i in 0...NUMBER_OF_PARTICLES
  3059.           @particles_sprite.push(Particles_Menu.new(nil))
  3060.       end
  3061.   end
  3062.  
  3063.   #--------------------------------------------------------------------------
  3064.   # ● Create Command
  3065.   #--------------------------------------------------------------------------   
  3066.   def create_command
  3067.       create_command_window
  3068.       @command_window.visible = false
  3069.       @command_window.x -=544      
  3070.       @command_max = @command_window.list.size
  3071.       @commnad_name = []
  3072.       index = 0
  3073.       for i in @command_window.list
  3074.          @commnad_name.push(i[:name])
  3075.          index += 1
  3076.       end   
  3077.       @command_scroll_max = @command_max > 6 ? 6 : @command_max
  3078.       @command_ny = 0
  3079.       @command_sprites = []
  3080.       index = 0
  3081.       for i in 0...@command_max
  3082.           @command_sprites.push(Command_Menu_Sprite.new(nil, index,@commnad_name[index]) )
  3083.           index += 1
  3084.       end
  3085.   end  
  3086.  
  3087.   #--------------------------------------------------------------------------
  3088.   # ● Create Command Window
  3089.   #--------------------------------------------------------------------------     
  3090.   def create_command_window
  3091.       @command_window = Window_MenuCommand.new
  3092.       @command_window.set_handler(:item,      method(:command_item))
  3093.       @command_window.set_handler(:skill,     method(:command_personal))
  3094.       @command_window.set_handler(:equip,     method(:command_personal))
  3095.       @command_window.set_handler(:status,    method(:command_personal))
  3096.       @command_window.set_handler(:formation, method(:command_formation))
  3097.       @command_window.set_handler(:save,      method(:command_save))
  3098.       @command_window.set_handler(:game_end,  method(:command_game_end))
  3099.       @command_window.set_handler(:cancel,    method(:return_scene))  
  3100.       @command_window.index = $game_temp.menu_index
  3101.    end   
  3102.  
  3103.   #--------------------------------------------------------------------------
  3104.   # ● Create Actor Pictures
  3105.   #--------------------------------------------------------------------------     
  3106.   def create_actor_pictures
  3107.       @actor_pictures = []
  3108.       members_size = $game_party.members.size
  3109.       members_size = $game_party.max_battle_members if members_size >= $game_party.max_battle_members
  3110.       for i in 0...members_size
  3111.          @actor_pictures.push(Actor_Menu_Pictures.new(nil,i,$game_party.members[i].id))
  3112.       end   
  3113.   end
  3114.  
  3115.   #--------------------------------------------------------------------------
  3116.   # ● Create Timer Number
  3117.   #--------------------------------------------------------------------------      
  3118.   def create_timer_sprite
  3119.       update_timer
  3120.       @min_old = @min
  3121.       @timer_image = $game_temp.pre_cache_main_menu[2]
  3122.       @timer_cw = @timer_image.width / 10
  3123.       @timer_ch = @timer_image.height
  3124.       @timer_sprite = Sprite.new
  3125.       @timer_sprite.bitmap = Bitmap.new(@timer_image.width ,@timer_image.height)
  3126.       @timer_sprite.z = 11
  3127.       @timer_sprite.x = TIME_NUMBER_POS[0]
  3128.       @timer_sprite.y = TIME_NUMBER_POS[1]
  3129.       refresh_timer
  3130.   end
  3131.  
  3132.   #--------------------------------------------------------------------------
  3133.   # ● Create Gold Number
  3134.   #--------------------------------------------------------------------------         
  3135.   def create_gold_number
  3136.       @gold = $game_party.gold
  3137.       @gold_image = $game_temp.pre_cache_main_menu[3]
  3138.       @gold_cw = @gold_image.width / 10
  3139.       @gold_ch = @gold_image.height
  3140.       @gold_sprite = Sprite.new
  3141.       @gold_sprite.bitmap = Bitmap.new(@gold_image.width ,@gold_image.height)
  3142.       @gold_sprite.z = 11
  3143.       @gold_sprite.x = GOLD_NUMBER_POS[0]
  3144.       @gold_sprite.y = GOLD_NUMBER_POS[1]
  3145.       refresh_gold
  3146.   end  
  3147.  
  3148.   #--------------------------------------------------------------------------
  3149.   # ● Create Location
  3150.   #--------------------------------------------------------------------------         
  3151.   def create_location
  3152.       @location = Sprite.new
  3153.       @location.bitmap = Bitmap.new(200,40)
  3154.       @location.bitmap.font.size = 20
  3155.       @location.bitmap.font.bold = true
  3156.       @location.bitmap.font.italic = true
  3157.       @location.z = 12
  3158.       @location.x = LOCATION_POS[0]
  3159.       @location.y = LOCATION_POS[1]
  3160.       refresh_location
  3161.   end
  3162.  
  3163.   #--------------------------------------------------------------------------
  3164.   # ● Refresh Location
  3165.   #--------------------------------------------------------------------------            
  3166.   def refresh_location
  3167.       location_name = $game_map.display_name
  3168.       @location.bitmap.clear
  3169.       @location.bitmap.font.color = Color.new(120,120,120,120)
  3170.       @location.bitmap.draw_text(6,4,190,32, location_name.to_s,2)
  3171.       @location.bitmap.font.color = Color.new(255,255,255)
  3172.       @location.bitmap.draw_text(0,0,190,32, location_name.to_s,2)
  3173.   end
  3174.  
  3175.   #--------------------------------------------------------------------------
  3176.   # ● Create Actor Parameter
  3177.   #--------------------------------------------------------------------------              
  3178.   def create_actor_parameter
  3179.       @actor_par = []
  3180.       members_size = $game_party.members.size
  3181.       members_size = $game_party.max_battle_members if members_size >= $game_party.max_battle_members
  3182.       for i in 0...members_size
  3183.           @actor_par.push(Actor_Menu_Parameter.new(i,$game_party.members[i]))
  3184.       end   
  3185.   end
  3186.  
  3187.   #--------------------------------------------------------------------------
  3188.   # ● Create Members
  3189.   #--------------------------------------------------------------------------               
  3190.   def create_members
  3191.       @members_viewport = Viewport.new(MEMBERS_FACE_POSITION[0],MEMBERS_FACE_POSITION[1],400,96)
  3192.       @members_viewport.z = 12
  3193.       @members_viewport.ox = -544
  3194.       @members_slide_max = (MEMBERS_FACE_POSITION[0] - 544)
  3195.       @members = []
  3196.       for i in 0...$game_party.members.size        
  3197.           @members.push(Face_Members_Sprite.new(@members_viewport,i, $game_party.members[i].id))
  3198.       end
  3199.   end
  3200.  
  3201.   #--------------------------------------------------------------------------
  3202.   # ● Create Members Layout
  3203.   #--------------------------------------------------------------------------                  
  3204.   def create_members_layout
  3205.       @members_layout = Members_Arrow_Sprite.new
  3206.   end  
  3207.  
  3208. end
  3209.  
  3210. #==============================================================================
  3211. # ■ Scene_Menu
  3212. #==============================================================================
  3213. class Scene_Menu
  3214.  
  3215.   #--------------------------------------------------------------------------
  3216.   # ● Execute Dispose
  3217.   #--------------------------------------------------------------------------        
  3218.   def execute_dispose
  3219.       Graphics.freeze
  3220.       dispose_background
  3221.       dispose_layout
  3222.       dispose_particles
  3223.       dispose_command_sprites
  3224.       dispose_actor_sprites
  3225.       dispose_actor_parameter
  3226.       dispose_timer_sprite
  3227.       dispose_gold_number
  3228.       dispose_location
  3229.       dispose_members
  3230.   end
  3231.  
  3232.   #--------------------------------------------------------------------------
  3233.   # ● Dispose Background
  3234.   #--------------------------------------------------------------------------  
  3235.   def dispose_background
  3236.       return if @background == nil
  3237.       @background.dispose
  3238.       @background = nil
  3239.   end
  3240.  
  3241.   #--------------------------------------------------------------------------
  3242.   # ● Dispose Layout
  3243.   #--------------------------------------------------------------------------               
  3244.   def dispose_layout
  3245.       return if @layout == nil
  3246.       @layout.dispose
  3247.       @layout = nil
  3248.   end  
  3249.  
  3250. #--------------------------------------------------------------------------
  3251. # ● Dispose Particles
  3252. #--------------------------------------------------------------------------   
  3253. def dispose_particles
  3254.      return if @particles_sprite == nil
  3255.      @particles_sprite.each {|sprite| sprite.dispose }
  3256. end
  3257.  
  3258.   #--------------------------------------------------------------------------
  3259.   # ● Dispose Command Sprites
  3260.   #--------------------------------------------------------------------------     
  3261.   def dispose_command_sprites
  3262.       return if @command_sprites == nil
  3263.       @command_sprites.each {|sprite| sprite.dispose_command }
  3264.       @command_sprites = nil
  3265.       @command_window.dispose
  3266.   end   
  3267.  
  3268.   #--------------------------------------------------------------------------
  3269.   # ● Dispose Actor Sprites
  3270.   #--------------------------------------------------------------------------     
  3271.   def dispose_actor_sprites
  3272.       return if @actor_pictures == nil
  3273.       @actor_pictures.each {|sprite| sprite.dispose_picture }
  3274.       @actor_pictures = nil
  3275.   end     
  3276.  
  3277.   #--------------------------------------------------------------------------
  3278.   # ● Dispose timer Sprite
  3279.   #--------------------------------------------------------------------------         
  3280.   def dispose_timer_sprite
  3281.       return if @timer_sprite == nil
  3282.       @timer_sprite.dispose
  3283.   end
  3284.  
  3285.   #--------------------------------------------------------------------------
  3286.   # ● Dispose Gold Number
  3287.   #--------------------------------------------------------------------------           
  3288.   def dispose_gold_number
  3289.       return if @gold_image == nil
  3290.       @gold_sprite.dispose
  3291.       @gold_sprite = nil
  3292.   end
  3293.  
  3294.   #--------------------------------------------------------------------------
  3295.   # ● Dispose Location
  3296.   #--------------------------------------------------------------------------            
  3297.   def dispose_location
  3298.       return if @location == nil
  3299.       @location.bitmap.dispose
  3300.       @location.dispose
  3301.       @location = nil
  3302.   end   
  3303.  
  3304.   #--------------------------------------------------------------------------
  3305.   # ● Dispose Actor Parameter
  3306.   #--------------------------------------------------------------------------               
  3307.   def dispose_actor_parameter
  3308.       return if @actor_par == nil
  3309.       @actor_par.each {|sprite| sprite.dispose }
  3310.       @actor_par = nil
  3311.   end
  3312.  
  3313.   #--------------------------------------------------------------------------
  3314.   # ● Dispose Members
  3315.   #--------------------------------------------------------------------------                  
  3316.   def dispose_members
  3317.       return if @members == nil
  3318.       @members.each {|sprite| sprite.dispose }
  3319.       @members = nil
  3320.       @members_layout.dispose
  3321.       @members_viewport.dispose
  3322.   end  
  3323.  
  3324. end
  3325.  
  3326. #==============================================================================
  3327. # ■ Scene_Menu
  3328. #==============================================================================
  3329. class Scene_Menu
  3330.  
  3331.   #--------------------------------------------------------------------------
  3332.   # ● Update Sprites
  3333.   #--------------------------------------------------------------------------         
  3334.   def update_sprites   
  3335.       update_background
  3336.       update_particles
  3337.       update_command_sprites
  3338.       update_actor_parameter
  3339.       update_actor_sprites
  3340.       update_members_face
  3341.       refresh_timer if @min_old != @min
  3342.       refresh_gold if @gold != $game_party.gold      
  3343.   end
  3344.  
  3345.   #--------------------------------------------------------------------------
  3346.   # ● Update Background
  3347.   #--------------------------------------------------------------------------              
  3348.   def update_background
  3349.       return if @background == nil
  3350.       @background.ox += @background_scroll[0]
  3351.       @background.oy += @background_scroll[1]
  3352.   end   
  3353.  
  3354.   #--------------------------------------------------------------------------
  3355.   # ● Update Particles
  3356.   #--------------------------------------------------------------------------  
  3357.   def update_particles
  3358.       return if @particles_sprite == nil
  3359.       @particles_sprite.each {|sprite| sprite.update }
  3360.   end
  3361.  
  3362.   #--------------------------------------------------------------------------
  3363.   # ● Update Command Sprites
  3364.   #--------------------------------------------------------------------------     
  3365.   def update_command_sprites
  3366.       return if @command_window == nil
  3367.       visible = @phase == 0 ? true : false
  3368.       @command_sprites.each {|sprite| sprite.update_command(@command_window.index,visible) }
  3369.   end     
  3370.  
  3371.   #--------------------------------------------------------------------------
  3372.   # ● Refresh Number
  3373.   #--------------------------------------------------------------------------  
  3374.   def refresh_timer
  3375.       @min_old = @min
  3376.       @timer_sprite.bitmap.clear
  3377.       draw_number(@timer_cw * 1,0,0) if @hour < 10              
  3378.       draw_number(@timer_cw * 2,0,@hour)
  3379.       draw_number(@timer_cw * 4,0,0) if @min < 10            
  3380.       draw_number(@timer_cw * 5,0,@min)
  3381.   end  
  3382.  
  3383.   #--------------------------------------------------------------------------
  3384.   # ● Draw Number
  3385.   #--------------------------------------------------------------------------  
  3386.   def draw_number(x,y,value)
  3387.       @number_text = value.abs.to_s.split(//)
  3388.       plus_x = -@timer_cw * @number_text.size
  3389.       for r in [email]0..@number_text.size[/email] - 1
  3390.          @number_abs = @number_text[r].to_i
  3391.          nsrc_rect = Rect.new(@timer_cw * @number_abs, 0, @timer_cw, @timer_ch)
  3392.          @timer_sprite.bitmap.blt(plus_x + x + (@timer_cw  *  r), y, @timer_image, nsrc_rect)        
  3393.       end     
  3394.   end     
  3395.  
  3396.   #--------------------------------------------------------------------------
  3397.   # ● update
  3398.   #--------------------------------------------------------------------------  
  3399.   def update_timer
  3400.       time = $game_system.playtime
  3401.       @hour = time / 60 / 60
  3402.       @min = time / 60 % 60
  3403.       @sec = time % 60
  3404.   end      
  3405.  
  3406.   #--------------------------------------------------------------------------
  3407.   # ● Refresh Gold
  3408.   #--------------------------------------------------------------------------           
  3409.   def refresh_gold
  3410.       @gold = $game_party.gold
  3411.       @gold_sprite.bitmap.clear
  3412.       value_text = @gold.abs.to_s.split(//)
  3413.       index = 0
  3414.       for i in 0..value_text.size - 1
  3415.           value_abs = value_text[i].to_i
  3416.           nsrc_rect = Rect.new(@gold_cw * value_abs, 0, @gold_cw, @gold_ch)
  3417.           @gold_sprite.bitmap.blt(@gold_cw *  i, 0, @gold_image, nsrc_rect)
  3418.           index += 1
  3419.       end
  3420.       ey = (index * @gold_cw)  
  3421.       @gold_sprite.x = GOLD_NUMBER_POS[0] -  ey
  3422.   end
  3423.  
  3424.   #--------------------------------------------------------------------------
  3425.   # ● Update Actor Parameter
  3426.   #--------------------------------------------------------------------------               
  3427.   def update_actor_parameter
  3428.       return if @actor_par == nil
  3429.       @actor_par.each {|sprite| sprite.update }
  3430.   end
  3431.  
  3432.   #--------------------------------------------------------------------------
  3433.   # ● Update Actor Sprites
  3434.   #--------------------------------------------------------------------------     
  3435.   def update_actor_sprites
  3436.       return if @actor_pictures == nil
  3437.       @actor_pictures.each {|sprite| sprite.update_picture }
  3438.   end     
  3439.  
  3440.   #--------------------------------------------------------------------------
  3441.   # ● Update Members Face
  3442.   #--------------------------------------------------------------------------                  
  3443.   def update_members_face
  3444.       return if @members == nil or @members == 0
  3445.       if @members_index > 4
  3446.          ny = (5 * 64)
  3447.          else
  3448.          ny = 64 * @members_index
  3449.       end
  3450.       @members.each {|sprite| sprite.update_command(@members_index, ny) }
  3451.       @members_layout.update
  3452.       if @members_windows_active
  3453.          if @members_viewport.ox < 0
  3454.             @members_viewport.ox += 25
  3455.          end
  3456.        else   
  3457.          if @members_viewport.ox > -544
  3458.             @members_viewport.ox -= 25
  3459.           end         
  3460.       end
  3461.       @members_layout.nx(@members_viewport.ox)
  3462.   end  
  3463.  
  3464. end
  3465.  
  3466. #==============================================================================
  3467. # ■ Scene_Menu
  3468. #==============================================================================
  3469. class Scene_Menu
  3470.  
  3471.   #--------------------------------------------------------------------------
  3472.   # ● Update
  3473.   #--------------------------------------------------------------------------      
  3474.   def update
  3475.       update_timer
  3476.       update_sprites
  3477.       update_command
  3478.       @members_windows_active = @phase == 100 ? true : false
  3479.   end
  3480.  
  3481. end
  3482.  
  3483. #==============================================================================
  3484. # ■ Scene_Menu
  3485. #==============================================================================
  3486. class Scene_Menu
  3487.  
  3488.   #--------------------------------------------------------------------------
  3489.   # ● Update Command
  3490.   #--------------------------------------------------------------------------      
  3491.   def update_command
  3492.       case @phase
  3493.         when 0;       update_main_command
  3494.         when 100;      update_select_members            
  3495.      end   
  3496.   end
  3497.  
  3498.   #--------------------------------------------------------------------------
  3499.   # ● Update Main Command
  3500.   #--------------------------------------------------------------------------        
  3501.   def update_main_command
  3502.       if Input.trigger?(:UP) or Input.trigger?(:LEFT)
  3503.          move_command_index(-1)
  3504.       elsif Input.trigger?(:DOWN) or Input.trigger?(:RIGHT)
  3505.          move_command_index(1)
  3506.       elsif Input.trigger?(:C)
  3507.          execute_select
  3508.       elsif Input.trigger?(:B)
  3509.          return_to_map
  3510.       end  
  3511.   end
  3512.  
  3513.   #--------------------------------------------------------------------------
  3514.   # ● Update Main Command
  3515.   #--------------------------------------------------------------------------   
  3516.   def move_command_index(value)
  3517.       Sound.play_cursor
  3518.       @command_window.index += value
  3519.       @command_window.index = 0 if @command_window.index >= @command_max
  3520.       @command_window.index = (@command_max - 1) if @command_window.index < 0
  3521.   end   
  3522.  
  3523.   #--------------------------------------------------------------------------
  3524.   # ● Execute Select
  3525.   #--------------------------------------------------------------------------     
  3526.   def execute_select
  3527.       if @command_window.current_symbol == :save and $game_system.save_disabled
  3528.          Sound.play_buzzer
  3529.          return
  3530.       end
  3531.       @phase = @command_window.index
  3532.       $game_temp.menu_index = @phase
  3533.       Sound.play_ok
  3534.       $game_temp.pre_symbol = @command_window.current_symbol
  3535.       @command_window.call_handler(@command_window.current_symbol)
  3536.   end
  3537.  
  3538.   #--------------------------------------------------------------------------
  3539.   # ● Update Select Members
  3540.   #--------------------------------------------------------------------------        
  3541.   def update_select_members  
  3542.       if $game_party.members.size == 0
  3543.          execute_cancel
  3544.          return
  3545.       end  
  3546.       if Input.trigger?(:LEFT)
  3547.          move_members_index(-1)
  3548.       elsif Input.trigger?(:RIGHT)
  3549.          move_members_index(1)
  3550.       elsif Input.trigger?(:C)
  3551.          execute_select_members
  3552.       elsif Input.trigger?(:B)
  3553.          execute_cancel
  3554.       end   
  3555.   end  
  3556.  
  3557.   #--------------------------------------------------------------------------
  3558.   # ● Execute Cancel
  3559.   #--------------------------------------------------------------------------         
  3560.   def execute_cancel
  3561.       Sound.play_cancel
  3562.       @phase = 0
  3563.       @members_index = 0
  3564.   end
  3565.  
  3566.   #--------------------------------------------------------------------------
  3567.   # ● Move Members Index
  3568.   #--------------------------------------------------------------------------         
  3569.   def move_members_index(value)
  3570.       Sound.play_cursor
  3571.       @members_index += value
  3572.       @members_index = 0 if @members_index >= $game_party.members.size
  3573.       @members_index = ($game_party.members.size - 1) if @members_index < 0
  3574.   end
  3575.  
  3576.   #--------------------------------------------------------------------------
  3577.   # ● Command Formation
  3578.   #--------------------------------------------------------------------------
  3579.   def command_formation
  3580.       SceneManager.call(Scene_Party)
  3581.   end  
  3582.  
  3583.   #--------------------------------------------------------------------------
  3584.   # ● Can Access Scene
  3585.   #--------------------------------------------------------------------------              
  3586.   def can_access_scene?
  3587.       if $game_party.members.size == 0
  3588.          #Sound.play_buzzer   
  3589.          execute_cancel
  3590.          return false
  3591.       end   
  3592.       return true
  3593.   end
  3594.  
  3595.   #--------------------------------------------------------------------------
  3596.   # ● Execute Select Members
  3597.   #--------------------------------------------------------------------------     
  3598.   def execute_select_members
  3599.       @phase = @command_window.index
  3600.       $game_temp.menu_index = @phase
  3601.       Sound.play_ok
  3602.       on_personal_ok
  3603.   end  
  3604.  
  3605.   #--------------------------------------------------------------------------
  3606.   # ● ON Personal OK
  3607.   #--------------------------------------------------------------------------            
  3608.   alias mog_monogatari_on_personal_ok on_personal_ok
  3609.   def on_personal_ok
  3610.       $game_temp.actor_menu_temp =  $game_party.members[@members_index]
  3611.       $game_party.menu_actor = $game_party.members[@members_index]
  3612.       mog_monogatari_on_personal_ok
  3613.   end   
  3614.  
  3615.   #--------------------------------------------------------------------------
  3616.   # ● Return To Map
  3617.   #--------------------------------------------------------------------------              
  3618.   def return_to_map
  3619.       $game_temp.menu_index = 0
  3620.       Sound.play_cancel
  3621.       SceneManager.return
  3622.   end  
  3623.  
  3624.   #--------------------------------------------------------------------------
  3625.   # ● Command Personal
  3626.   #--------------------------------------------------------------------------
  3627.   def command_personal
  3628.       @phase = 100
  3629.   end
  3630.  
  3631. end
  3632.  
  3633. #==============================================================================
  3634. # ■ Game_Temp
  3635. #==============================================================================
  3636. class Game_Temp
  3637.  
  3638.   #--------------------------------------------------------------------------
  3639.   # ● Execute Pre Cache Item Menu
  3640.   #--------------------------------------------------------------------------   
  3641.   def execute_pre_cache_item_menu
  3642.       @pre_cache_item_menu = []
  3643.       @pre_cache_item_menu.push(Cache.menu_item("Background"))
  3644.       @pre_cache_item_menu.push(Cache.menu_item("Layout"))
  3645.   end   
  3646.  
  3647. end
  3648.  
  3649. #==============================================================================
  3650. # ■ Scene_Menu
  3651. #==============================================================================
  3652. class Scene_Item
  3653.   include MOG_MENU_ITEM
  3654.   include MOG_MENU_BASE
  3655.  
  3656.   #--------------------------------------------------------------------------
  3657.   # ● Main
  3658.   #--------------------------------------------------------------------------        
  3659.   def main
  3660.       execute_setup
  3661.       execute_loop
  3662.       execute_dispose
  3663.   end  
  3664.  
  3665.   #--------------------------------------------------------------------------
  3666.   # ● Execute Setup
  3667.   #--------------------------------------------------------------------------        
  3668.   def execute_setup
  3669.       @phase = 0
  3670.       @command_index = 0
  3671.       @actor = $game_party.members[0]
  3672.       @wait_time = 0
  3673.       create_sprites
  3674.   end
  3675.  
  3676.   #--------------------------------------------------------------------------
  3677.   # ● Execute Lopp
  3678.   #--------------------------------------------------------------------------        
  3679.   def execute_loop
  3680.       Graphics.transition(10)
  3681.       loop do
  3682.          Input.update
  3683.          update
  3684.          Graphics.update
  3685.          break if SceneManager.scene != self
  3686.       end
  3687.   end  
  3688.  
  3689. end
  3690.  
  3691. #==============================================================================
  3692. # ■ Window_ItemList Z
  3693. #==============================================================================
  3694. class Window_ItemList_Z < Window_Selectable
  3695.  
  3696.   #--------------------------------------------------------------------------
  3697.   # ● Initialize
  3698.   #--------------------------------------------------------------------------
  3699.   def initialize(x, y, width, height)
  3700.       super
  3701.       @category = :none
  3702.       @data = []
  3703.   end
  3704.  
  3705.   #--------------------------------------------------------------------------
  3706.   # ● Category
  3707.   #--------------------------------------------------------------------------
  3708.   def category=(category)
  3709.       return if @category == category
  3710.       @category = category
  3711.       self.oy = 0
  3712.   end
  3713.  
  3714.   #--------------------------------------------------------------------------
  3715.   # ● Col Max
  3716.   #--------------------------------------------------------------------------
  3717.   def col_max
  3718.       return 1
  3719.   end
  3720.   #--------------------------------------------------------------------------
  3721.   # ● Item Max
  3722.   #--------------------------------------------------------------------------
  3723.   def item_max
  3724.       @data ? @data.size : 1
  3725.   end
  3726.   #--------------------------------------------------------------------------
  3727.   # ● Item
  3728.   #--------------------------------------------------------------------------
  3729.   def item
  3730.       @data && index >= 0 ? @data[index] : nil
  3731.   end
  3732.  
  3733.   #--------------------------------------------------------------------------
  3734.   # ● Current Item Enabled?
  3735.   #--------------------------------------------------------------------------
  3736.   def current_item_enabled?
  3737.       enable?(@data[index])
  3738.   end
  3739.  
  3740.   #--------------------------------------------------------------------------
  3741.   # ● Include?
  3742.   #--------------------------------------------------------------------------
  3743.   def include?(item)
  3744.       case @category
  3745.       when :item
  3746.            item.is_a?(RPG::Item) && !item.key_item?
  3747.       when :weapon
  3748.            item.is_a?(RPG::Weapon)
  3749.       when :armor
  3750.            item.is_a?(RPG::Armor)
  3751.       when :key_item
  3752.            item.is_a?(RPG::Item) && item.key_item?
  3753.       else
  3754.            false
  3755.       end
  3756.   end
  3757.  
  3758.   #--------------------------------------------------------------------------
  3759.   # ● Enable?
  3760.   #--------------------------------------------------------------------------
  3761.   def enable?(item)
  3762.       $game_party.usable?(item)
  3763.   end
  3764.  
  3765.   #--------------------------------------------------------------------------
  3766.   # ● Make Item List
  3767.   #--------------------------------------------------------------------------
  3768.   def make_item_list
  3769.       @data = $game_party.all_items.select {|item| include?(item) }
  3770.       @data.push(nil) if include?(nil)
  3771.   end
  3772.  
  3773.   #--------------------------------------------------------------------------
  3774.   # ● Select Last
  3775.   #--------------------------------------------------------------------------
  3776.   def select_last
  3777.       select(@data.index($game_party.last_item.object) || 0)
  3778.   end
  3779.  
  3780.   #--------------------------------------------------------------------------
  3781.   # ● Draw Item
  3782.   #--------------------------------------------------------------------------
  3783.   def draw_item(index)
  3784.       item = @data[index]
  3785.       if item
  3786.          rect = item_rect(index)
  3787.          rect.width -= 4
  3788.          draw_item_name(item, rect.x, rect.y, enable?(item))
  3789.          draw_item_number(rect, item)
  3790.       end
  3791.   end
  3792.  
  3793.   #--------------------------------------------------------------------------
  3794.   # ● Draw Item Number
  3795.   #--------------------------------------------------------------------------
  3796.   def draw_item_number(rect, item)
  3797.       draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  3798.   end
  3799.  
  3800.   #--------------------------------------------------------------------------
  3801.   # ● Update Help
  3802.   #--------------------------------------------------------------------------
  3803.   def update_help
  3804.       @help_window.set_item(item)
  3805.   end
  3806.  
  3807.   #--------------------------------------------------------------------------
  3808.   # ● Refresh
  3809.   #--------------------------------------------------------------------------
  3810.   def refresh
  3811.       make_item_list
  3812.       create_contents
  3813.       draw_all_items
  3814.   end
  3815.  
  3816. end
  3817.  
  3818. #==============================================================================
  3819. # ■ Window_ItemList Z
  3820. #==============================================================================
  3821. class Window_ItemList_Item_1 < Window_Selectable
  3822.  
  3823.   #--------------------------------------------------------------------------
  3824.   # ● Initialize
  3825.   #--------------------------------------------------------------------------
  3826.   def initialize(x, y, width, height)
  3827.       super
  3828.       @category = :none
  3829.       @data = []
  3830.   end
  3831.  
  3832.   #--------------------------------------------------------------------------
  3833.   # ● Category
  3834.   #--------------------------------------------------------------------------
  3835.   def category=(category)
  3836.       return if @category == category
  3837.       @category = category
  3838.       self.oy = 0
  3839.   end
  3840.  
  3841.   #--------------------------------------------------------------------------
  3842.   # ● Col Max
  3843.   #--------------------------------------------------------------------------
  3844.   def col_max
  3845.       return 1
  3846.   end
  3847.   #--------------------------------------------------------------------------
  3848.   # ● Item Max
  3849.   #--------------------------------------------------------------------------
  3850.   def item_max
  3851.       @data ? @data.size : 1
  3852.   end
  3853.   #--------------------------------------------------------------------------
  3854.   # ● Item
  3855.   #--------------------------------------------------------------------------
  3856.   def item
  3857.       @data && index >= 0 ? @data[index] : nil
  3858.   end
  3859.  
  3860.   #--------------------------------------------------------------------------
  3861.   # ● Current Item Enabled?
  3862.   #--------------------------------------------------------------------------
  3863.   def current_item_enabled?
  3864.       enable?(@data[index])
  3865.   end
  3866.  
  3867.   #--------------------------------------------------------------------------
  3868.   # ● Include?
  3869.   #--------------------------------------------------------------------------
  3870.   def include?(item)
  3871.       case @category
  3872.       when :item   ;   item.is_a?(RPG::Item) && !item.key_item?
  3873.       else
  3874.            false
  3875.       end
  3876.   end
  3877.  
  3878.   #--------------------------------------------------------------------------
  3879.   # ● Enable?
  3880.   #--------------------------------------------------------------------------
  3881.   def enable?(item)
  3882.       $game_party.usable?(item)
  3883.   end
  3884.  
  3885.   #--------------------------------------------------------------------------
  3886.   # ● Make Item List
  3887.   #--------------------------------------------------------------------------
  3888.   def make_item_list
  3889.       @data = $game_party.all_items.select {|item| include?(item) }
  3890.       @data.push(nil) if include?(nil)
  3891.   end
  3892.  
  3893.   #--------------------------------------------------------------------------
  3894.   # ● Select Last
  3895.   #--------------------------------------------------------------------------
  3896.   def select_last
  3897.       select(@data.index($game_party.last_item.object) || 0)
  3898.   end
  3899.  
  3900.   #--------------------------------------------------------------------------
  3901.   # ● Draw Item
  3902.   #--------------------------------------------------------------------------
  3903.   def draw_item(index)
  3904.       item = @data[index]
  3905.       if item
  3906.          rect = item_rect(index)
  3907.          rect.width -= 4
  3908.          draw_item_number(rect, item)
  3909.       end
  3910.   end
  3911.  
  3912.   #--------------------------------------------------------------------------
  3913.   # ● Draw Item Number
  3914.   #--------------------------------------------------------------------------
  3915.   def draw_item_number(rect, item)
  3916.       draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  3917.   end  
  3918.  
  3919.   #--------------------------------------------------------------------------
  3920.   # ● Update Help
  3921.   #--------------------------------------------------------------------------
  3922.   def update_help
  3923.       @help_window.set_item(item)
  3924.   end
  3925.  
  3926.   #--------------------------------------------------------------------------
  3927.   # ● Refresh
  3928.   #--------------------------------------------------------------------------
  3929.   def refresh
  3930.       make_item_list
  3931.       create_contents
  3932.       draw_all_items
  3933.    end
  3934.  
  3935. end
  3936.  
  3937. #==============================================================================
  3938. # ■ Window_ItemList Z
  3939. #==============================================================================
  3940. class Window_ItemList_Item_2 < Window_Selectable
  3941.  
  3942.   #--------------------------------------------------------------------------
  3943.   # ● Initialize
  3944.   #--------------------------------------------------------------------------
  3945.   def initialize(x, y, width, height)
  3946.       super
  3947.       @category = :none
  3948.       @data = []
  3949.   end
  3950.  
  3951.   #--------------------------------------------------------------------------
  3952.   # ● Category
  3953.   #--------------------------------------------------------------------------
  3954.   def category=(category)
  3955.       return if @category == category
  3956.       @category = category
  3957.       self.oy = 0
  3958.   end
  3959.  
  3960.   #--------------------------------------------------------------------------
  3961.   # ● Col Max
  3962.   #--------------------------------------------------------------------------
  3963.   def col_max
  3964.       return 1
  3965.   end
  3966.   #--------------------------------------------------------------------------
  3967.   # ● Item Max
  3968.   #--------------------------------------------------------------------------
  3969.   def item_max
  3970.       @data ? @data.size : 1
  3971.   end
  3972.   #--------------------------------------------------------------------------
  3973.   # ● Item
  3974.   #--------------------------------------------------------------------------
  3975.   def item
  3976.       @data && index >= 0 ? @data[index] : nil
  3977.   end
  3978.  
  3979.   #--------------------------------------------------------------------------
  3980.   # ● Current Item Enabled?
  3981.   #--------------------------------------------------------------------------
  3982.   def current_item_enabled?
  3983.       enable?(@data[index])
  3984.   end
  3985.  
  3986.   #--------------------------------------------------------------------------
  3987.   # ● Include?
  3988.   #--------------------------------------------------------------------------
  3989.   def include?(item)
  3990.       case @category
  3991.       when :item   ;   item.is_a?(RPG::Item) && !item.key_item?
  3992.       else
  3993.            false
  3994.       end
  3995.   end
  3996.  
  3997.   #--------------------------------------------------------------------------
  3998.   # ● Enable?
  3999.   #--------------------------------------------------------------------------
  4000.   def enable?(item)
  4001.       $game_party.usable?(item)
  4002.   end
  4003.  
  4004.   #--------------------------------------------------------------------------
  4005.   # ● Make Item List
  4006.   #--------------------------------------------------------------------------
  4007.   def make_item_list
  4008.       @data = $game_party.all_items.select {|item| include?(item) }
  4009.       @data.push(nil) if include?(nil)
  4010.   end
  4011.  
  4012.   #--------------------------------------------------------------------------
  4013.   # ● Select Last
  4014.   #--------------------------------------------------------------------------
  4015.   def select_last
  4016.       select(@data.index($game_party.last_item.object) || 0)
  4017.   end
  4018.  
  4019.   #--------------------------------------------------------------------------
  4020.   # ● Draw Item
  4021.   #--------------------------------------------------------------------------
  4022.   def draw_item(index)
  4023.       item = @data[index]
  4024.       if item
  4025.          rect = item_rect(index)
  4026.          rect.width -= 4
  4027.          draw_item_name(item, rect.x, rect.y, enable?(item))
  4028.         # draw_item_number(rect, item)
  4029.       end
  4030.   end
  4031.  
  4032.   #--------------------------------------------------------------------------
  4033.   # ● Draw Item Number
  4034.   #--------------------------------------------------------------------------
  4035.   def draw_item_number(rect, item)
  4036.       draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  4037.   end
  4038.  
  4039.   #--------------------------------------------------------------------------
  4040.   # ● Update Help
  4041.   #--------------------------------------------------------------------------
  4042.   def update_help      
  4043.   end
  4044.  
  4045.   #--------------------------------------------------------------------------
  4046.   # ● Refresh
  4047.   #--------------------------------------------------------------------------
  4048.   def refresh
  4049.       make_item_list
  4050.       create_contents
  4051.       draw_all_items
  4052.   end
  4053.  
  4054. end
  4055.  
  4056. #==============================================================================
  4057. # ■ Scene_Item
  4058. #==============================================================================
  4059. class Scene_Item
  4060.  
  4061.   #--------------------------------------------------------------------------
  4062.   # ● Create Sprites
  4063.   #--------------------------------------------------------------------------         
  4064.   def create_sprites
  4065.       create_menu_background
  4066.       create_layout
  4067.       create_particles
  4068.       create_command
  4069.       create_button
  4070.       create_help_window
  4071.       create_item_window
  4072.       create_weapon_window
  4073.       create_armor_window
  4074.       create_key_window
  4075.       create_actor_window
  4076.       set_initial_visible
  4077.   end
  4078.  
  4079.   #--------------------------------------------------------------------------
  4080.   # ● Create Actor Window
  4081.   #--------------------------------------------------------------------------
  4082.   def create_actor_window
  4083.       @actor_window = Members_Windows_Status.new
  4084.       @actor_window.set_handler(:ok,     method(:on_actor_ok))
  4085.       @actor_window.set_handler(:cancel, method(:on_actor_cancel))
  4086.       @actor_window.opacity = 0      
  4087.       @actor_window.x = -10
  4088.       @actor_window.y = 36
  4089.       @actor_window_slide_range = [@actor_window.x, [email]-@actor_window.width[/email]]
  4090.       @actor_window.x = @actor_window_slide_range[1]
  4091.       @actor_window.visible = true
  4092.       @actor_window_index_old = @actor_window.index
  4093.       create_members_window
  4094.       create_actor_status
  4095.       update_active_window
  4096.       update_command_sprites
  4097.   end
  4098.  
  4099.   #--------------------------------------------------------------------------
  4100.   # ● Create Members Window
  4101.   #--------------------------------------------------------------------------  
  4102.   def create_members_window
  4103.       index = 0
  4104.       @members_status = []      
  4105.       for actor in $game_party.members
  4106.           @members_status.push(Members_Menu.new(actor,index))
  4107.           index += 1
  4108.       end   
  4109.   end
  4110.  
  4111.   #--------------------------------------------------------------------------
  4112.   # ● Create Actor Status
  4113.   #--------------------------------------------------------------------------  
  4114.   def create_actor_status
  4115.       @actor_status = Actor_Menu_Status.new(@actor)
  4116.   end  
  4117.  
  4118.   #--------------------------------------------------------------------------
  4119.   # ● Create Item Window
  4120.   #--------------------------------------------------------------------------
  4121.   def create_item_window
  4122.       @item_window = Window_ItemList_Item_1.new(162,92,225,240)  
  4123.       @item_window.help_window = @help_window
  4124.       @item_window.set_handler(:ok,     method(:on_item_ok))
  4125.       @item_window.set_handler(:cancel, method(:on_item_cancel))
  4126.       @item_window.category = :item
  4127.       @item_window.active = true
  4128.       @item_window.refresh
  4129.       @item_window.index = 0
  4130.       @item_window.opacity = 0      
  4131.       @item_window_2 = Window_ItemList_Item_2.new(162,92,225,240)  
  4132.       @item_window_2.help_window = @help_window
  4133.       @item_window_2.set_handler(:ok,     method(:on_item_ok))
  4134.       @item_window_2.set_handler(:cancel, method(:on_item_cancel))
  4135.       @item_window_2.category = :item
  4136.       @item_window_2.active = true
  4137.       @item_window_2.refresh
  4138.       @item_window_2.index = 0
  4139.       @item_window_2.opacity = 0      
  4140.   end  
  4141.  
  4142.   #--------------------------------------------------------------------------
  4143.   # ● Create Weapon Window
  4144.   #--------------------------------------------------------------------------
  4145.   def create_weapon_window
  4146.       @weapon_window = Window_ItemList_Z.new(162,92,225,240)  
  4147.       @weapon_window.help_window = @help_window
  4148.       @weapon_window.set_handler(:ok,     method(:on_item_ok))
  4149.       @weapon_window.set_handler(:cancel, method(:on_item_cancel))
  4150.       @weapon_window.category = :weapon
  4151.       @weapon_window.active = true
  4152.       @weapon_window.refresh
  4153.       @weapon_window.index = 0
  4154.       @weapon_window.opacity = 0
  4155.   end  
  4156.  
  4157.   #--------------------------------------------------------------------------
  4158.   # ● Create Armor Window
  4159.   #--------------------------------------------------------------------------
  4160.   def create_armor_window
  4161.       @armor_window = Window_ItemList_Z.new(162,92,225,240)  
  4162.       @armor_window.help_window = @help_window
  4163.       @armor_window.set_handler(:ok,     method(:on_item_ok))
  4164.       @armor_window.set_handler(:cancel, method(:on_item_cancel))
  4165.       @armor_window.category = :armor
  4166.       @armor_window.active = true
  4167.       @armor_window.refresh
  4168.       @armor_window.index = 0
  4169.       @armor_window.opacity = 0
  4170.   end   
  4171.  
  4172.   #--------------------------------------------------------------------------
  4173.   # ● Create Key Window
  4174.   #--------------------------------------------------------------------------
  4175.   def create_key_window
  4176.       @key_window = Window_ItemList_Z.new(162,92,225,240)  
  4177.       @key_window.help_window = @help_window
  4178.       @key_window.set_handler(:ok,     method(:on_item_ok))
  4179.       @key_window.set_handler(:cancel, method(:on_item_cancel))
  4180.       @key_window.category = :key_item
  4181.       @key_window.active = true
  4182.       @key_window.refresh
  4183.       @key_window.index = 0
  4184.       @key_window.opacity = 0
  4185.   end   
  4186.  
  4187.   #--------------------------------------------------------------------------
  4188.   # ● Create Help Window
  4189.   #--------------------------------------------------------------------------              
  4190.   def create_help_window
  4191.       @help_window = Window_Help.new
  4192.       @help_window.x = 0
  4193.       @help_window.y = Graphics.height - @help_window.height
  4194.       @help_window.opacity = 0
  4195.   end  
  4196.  
  4197.   #--------------------------------------------------------------------------
  4198.   # ● Create Menu Background
  4199.   #--------------------------------------------------------------------------            
  4200.   def create_menu_background
  4201.       @background = Plane.new
  4202.       @background.bitmap = $game_temp.pre_cache_item_menu[0]
  4203.       @background.z = 0
  4204.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  4205.   end  
  4206.  
  4207.   #--------------------------------------------------------------------------
  4208.   # ● Create Layout
  4209.   #--------------------------------------------------------------------------              
  4210.   def create_layout
  4211.       @layout = Sprite.new
  4212.       @layout.bitmap = $game_temp.pre_cache_item_menu[1]
  4213.       @layout.z = 3
  4214.   end
  4215.  
  4216.   #--------------------------------------------------------------------------
  4217.   # ● Create Particles
  4218.   #--------------------------------------------------------------------------  
  4219.   def create_particles
  4220.       @particles_sprite =[]
  4221.       for i in 0...NUMBER_OF_PARTICLES
  4222.           @particles_sprite.push(Particles_Menu.new(nil))
  4223.       end
  4224.   end
  4225.  
  4226.   #--------------------------------------------------------------------------
  4227.   # ● Create Command
  4228.   #--------------------------------------------------------------------------   
  4229.   def create_command
  4230.       @command_sprites = []
  4231.       index = 0      
  4232.       for i in 0...4
  4233.           @command_sprites.push(Layout_Window_Sprite.new(nil, index) )
  4234.           index += 1
  4235.       end
  4236.   end   
  4237.  
  4238.   #--------------------------------------------------------------------------
  4239.   # ● Create Button
  4240.   #--------------------------------------------------------------------------   
  4241.   def create_button
  4242.       @button_sprites = []
  4243.       index = 0      
  4244.       for i in 0...4
  4245.           @button_sprites.push(Item_Button_Sprite.new(nil, index) )
  4246.           index += 1
  4247.       end
  4248.   end      
  4249.  
  4250.   #--------------------------------------------------------------------------
  4251.   # ● Set Initial Visible
  4252.   #--------------------------------------------------------------------------            
  4253.   def set_initial_visible
  4254.       @item_window.visible = false
  4255.       @item_window_2.visible = false
  4256.       @weapon_window.visible = false
  4257.       @armor_window.visible = false
  4258.       @key_window.visible = false  
  4259.   end  
  4260.  
  4261. end
  4262.  
  4263. #==============================================================================
  4264. # ■ Layout Window Sprite
  4265. #==============================================================================
  4266. class Layout_Window_Sprite < Sprite
  4267.   include MOG_MENU_ITEM
  4268.   attr_accessor :index
  4269.   attr_accessor :position
  4270.  
  4271. #--------------------------------------------------------------------------
  4272. # ● Initialize
  4273. #--------------------------------------------------------------------------                  
  4274.   def initialize(viewport = nil,index)
  4275.       super(viewport)
  4276.       @index = index
  4277.       self.bitmap = Cache.menu_item("Item_Window" + @index.to_s)
  4278.       self.z = 10
  4279.       @org_pos = [COMMAND_POSITION[0],COMMAND_POSITION[1]]
  4280.       @slide_max = @org_pos[0] + 24
  4281.       @center = (544 - self.bitmap.width) - (544 / 2) + (self.bitmap.width / 2)
  4282.       @left = -self.bitmap.width
  4283.       @right = 544
  4284.       @position = 0
  4285.       @direction = 0
  4286.       @org_pos = [@left ,COMMAND_POSITION[1]]
  4287.       self.x = @org_pos[0]
  4288.       self.y = @org_pos[1]
  4289.       self.visible = false if @index > 0
  4290.   end  
  4291.  
  4292. #--------------------------------------------------------------------------
  4293. # ● Dispose
  4294. #--------------------------------------------------------------------------                     
  4295.   def dispose_sprite
  4296.       self.bitmap.dispose
  4297.   end  
  4298.  
  4299. #--------------------------------------------------------------------------
  4300. # ● Update
  4301. #--------------------------------------------------------------------------                     
  4302.   def update_command(index)
  4303.       slide_speed = 30
  4304.       if @index == index
  4305.          if self.x < @center
  4306.             self.x += slide_speed
  4307.             self.x = @center if self.x >= @center
  4308.          elsif self.x > @center
  4309.             self.x -= slide_speed
  4310.             self.x = @center if self.x <= @center
  4311.          end
  4312.        else   
  4313.           if @direction == -1
  4314.              self.x -= slide_speed if self.x > @left
  4315.           else
  4316.              self.x += slide_speed if self.x < @right
  4317.           end   
  4318.       end  
  4319.   end   
  4320.  
  4321. #--------------------------------------------------------------------------
  4322. # ● New P
  4323. #--------------------------------------------------------------------------  
  4324.   def newp(index,direction)
  4325.       now_command = index
  4326.       if direction == -1
  4327.          pre_command = index + 1
  4328.          pre_command = 0 if pre_command > 3
  4329.       else   
  4330.          pre_command = index - 1
  4331.          pre_command = 3 if pre_command < 0
  4332.         end
  4333.       if index == @index
  4334.          self.visible = true
  4335.          self.x = @right if direction == -1
  4336.          self.x = @left if direction == 1
  4337.       elsif pre_command ==  @index
  4338.          self.visible = true
  4339.       else   
  4340.          self.visible = false
  4341.       end   
  4342.       @direction = direction
  4343.   end
  4344.  
  4345. end
  4346.  
  4347. #==============================================================================
  4348. # ■ Item Button Sprite
  4349. #==============================================================================
  4350. class Item_Button_Sprite < Sprite
  4351.   include MOG_MENU_ITEM
  4352.   attr_accessor :index
  4353.  
  4354. #--------------------------------------------------------------------------
  4355. # ● Initialize
  4356. #--------------------------------------------------------------------------                  
  4357.   def initialize(viewport = nil,index)
  4358.       super(viewport)
  4359.       @index = index
  4360.       self.bitmap = Cache.menu_item("Button" + @index.to_s)
  4361.       self.z = 12
  4362.       self.ox = self.bitmap.width / 2
  4363.       self.oy = self.bitmap.height / 2
  4364.       @org_pos = [(BUTTON_SPACE * @index) + BUTTON_POSITION[0],BUTTON_POSITION[1]]
  4365.       @slide_max = @org_pos[1] + 24
  4366.       @next_pos = [@org_pos[0],@org_pos[1]]
  4367.       self.x = @org_pos[0]
  4368.       self.y = @org_pos[1] - 128 - (128 * @index)
  4369.       @zoom_duration = [0,0,false]
  4370.       @active = false
  4371.   end  
  4372.  
  4373. #--------------------------------------------------------------------------
  4374. # ● Dispose
  4375. #--------------------------------------------------------------------------                     
  4376.   def dispose_sprite
  4377.       self.bitmap.dispose
  4378.   end  
  4379.  
  4380. #--------------------------------------------------------------------------
  4381. # ● Update
  4382. #--------------------------------------------------------------------------                     
  4383.   def update_command(index)
  4384.       if @index == index
  4385.         # self.y += 2
  4386.         # self.y = @slide_max if self.y > @slide_max
  4387.          @next_pos[1] =@slide_max
  4388.          self.opacity += 15
  4389.          @active = true
  4390.       else
  4391.         # self.y -= 2
  4392.         # self.y = @org_pos[1] if self.y < @org_pos[1]
  4393.          @next_pos[1] = @org_pos[1]
  4394.         self.opacity -= 15 if self.opacity > 160
  4395.          @active = false
  4396.       end
  4397.       update_slide(1,self.y,@next_pos[1])
  4398.       update_zoom
  4399.   end   
  4400.  
  4401.  
  4402. #--------------------------------------------------------------------------
  4403. # ● Update Slide
  4404. #--------------------------------------------------------------------------                       
  4405.   def update_slide(type,cp,np)
  4406.       sp = 3 + ((cp - np).abs / 10)
  4407.       if cp > np
  4408.          cp -= sp
  4409.          cp = np if cp < np
  4410.       elsif cp < np
  4411.          cp += sp
  4412.          cp = np if cp > np
  4413.       end     
  4414.       self.x = cp if type == 0
  4415.       self.y = cp if type == 1
  4416.   end  
  4417.  
  4418. #--------------------------------------------------------------------------
  4419. # ● Update Zoom
  4420. #--------------------------------------------------------------------------                       
  4421.   def update_zoom
  4422.       if @active
  4423.          if !@zoom_duration[2]
  4424.             update_zoom_in
  4425.             @zoom_duration = [0,0,true] if self.zoom_x == 1.00  
  4426.          else  
  4427.             update_zoom_effect
  4428.          end
  4429.       else
  4430.          @zoom_duration[2] = false   
  4431.          update_zoom_in
  4432.       end  
  4433.   end   
  4434.  
  4435. #--------------------------------------------------------------------------
  4436. # ● Update Zoom Out
  4437. #--------------------------------------------------------------------------                        
  4438.   def update_zoom_out
  4439.       return if self.zoom_x == 1.00
  4440.       self.zoom_x += 0.03
  4441.       self.zoom_y += 0.03
  4442.       if self.zoom_x >= 1.00
  4443.             self.zoom_x = 1.00
  4444.             self.zoom_y = 1.00
  4445.       end   
  4446.    end   
  4447.  
  4448. #--------------------------------------------------------------------------
  4449. # ● Update Zoom In
  4450. #--------------------------------------------------------------------------                           
  4451.   def update_zoom_in
  4452.       return if self.zoom_x == 1.00
  4453.       self.zoom_x -= 0.03
  4454.       self.zoom_y -= 0.03
  4455.       if self.zoom_x <= 1.00
  4456.          self.zoom_x = 1.00
  4457.          self.zoom_y = 1.00
  4458.       end   
  4459.   end      
  4460.  
  4461. #--------------------------------------------------------------------------
  4462. # ● Update Zoom_effect
  4463. #--------------------------------------------------------------------------                        
  4464. def update_zoom_effect
  4465.      @zoom_duration[0] += 1
  4466.      return if @zoom_duration[0] < 1
  4467.      @zoom_duration[0] = 0
  4468.      @zoom_duration[1] += 1
  4469.      case @zoom_duration[1]
  4470.           when 1..30
  4471.              self.zoom_x += 0.005
  4472.              self.zoom_y += 0.005                 
  4473.           when 31..60
  4474.              self.zoom_x -= 0.005
  4475.              self.zoom_y -= 0.005           
  4476.           when 61..999  
  4477.           @zoom_duration[1] = 0
  4478.           self.zoom_x = 1.00
  4479.           self.zoom_y = 1.00
  4480.      end
  4481. end      
  4482.  
  4483. end
  4484.  
  4485. #==============================================================================
  4486. # ■ Scene_Item
  4487. #==============================================================================
  4488. class Scene_Item
  4489.  
  4490.   #--------------------------------------------------------------------------
  4491.   # ● Execute Dispose
  4492.   #--------------------------------------------------------------------------        
  4493.   def execute_dispose
  4494.       Graphics.freeze
  4495.       dispose_background
  4496.       dispose_layout
  4497.       dispose_particles
  4498.       dispose_command_sprites
  4499.       dispose_button_sprites
  4500.       dispose_windows
  4501.       dispose_members_status
  4502.   end
  4503.  
  4504.   #--------------------------------------------------------------------------
  4505.   # ● Dispose Background
  4506.   #--------------------------------------------------------------------------  
  4507.   def dispose_background
  4508.       return if @background == nil
  4509.       @background.dispose
  4510.       @background = nil
  4511.   end
  4512.  
  4513.   #--------------------------------------------------------------------------
  4514.   # ● Dispose Layout
  4515.   #--------------------------------------------------------------------------               
  4516.   def dispose_layout
  4517.       return if @layout == nil
  4518.       @layout.dispose
  4519.       @layout = nil
  4520.   end  
  4521.  
  4522. #--------------------------------------------------------------------------
  4523. # ● Dispose Particles
  4524. #--------------------------------------------------------------------------   
  4525. def dispose_particles
  4526.      return if @particles_sprite == nil
  4527.      @particles_sprite.each {|sprite| sprite.dispose }
  4528. end
  4529.  
  4530.   #--------------------------------------------------------------------------
  4531.   # ● Dispose Command Sprites
  4532.   #--------------------------------------------------------------------------     
  4533.   def dispose_command_sprites
  4534.       return if @command_sprites == nil
  4535.       @command_sprites.each {|sprite| sprite.dispose_sprite }
  4536.       @command_sprites = nil
  4537.   end   
  4538.  
  4539.   #--------------------------------------------------------------------------
  4540.   # ● Dispose Button Sprites
  4541.   #--------------------------------------------------------------------------     
  4542.   def dispose_button_sprites
  4543.       return if @button_sprites == nil
  4544.       @button_sprites.each {|sprite| sprite.dispose_sprite }
  4545.       @button_sprites = nil
  4546.   end   
  4547.  
  4548.   #--------------------------------------------------------------------------
  4549.   # ● Dispose Members Status
  4550.   #--------------------------------------------------------------------------            
  4551.   def dispose_members_status
  4552.       return if @members_status == nil
  4553.       @members_status.each {|sprite| sprite.dispose }
  4554.   end  
  4555.  
  4556.   #--------------------------------------------------------------------------
  4557.   # ● Dispose Winndows
  4558.   #--------------------------------------------------------------------------         
  4559.   def dispose_windows
  4560.       return if @item_window == nil
  4561.       @item_window.dispose
  4562.       @item_window_2.dispose
  4563.       @weapon_window.dispose
  4564.       @armor_window.dispose
  4565.       @key_window.dispose
  4566.       @actor_window.dispose
  4567.       @actor_status.dispose
  4568.       @help_window.dispose
  4569.   end  
  4570.  
  4571. end
  4572.  
  4573. #==============================================================================
  4574. # ■ Scene_Item
  4575. #==============================================================================
  4576. class Scene_Item
  4577.  
  4578.   #--------------------------------------------------------------------------
  4579.   # ● Update Sprites
  4580.   #--------------------------------------------------------------------------         
  4581.   def update_sprites   
  4582.       update_background
  4583.       update_particles
  4584.       update_command_sprites
  4585.       update_button_sprites
  4586.       update_windows
  4587.       update_members_status
  4588.   end
  4589.  
  4590.   #--------------------------------------------------------------------------
  4591.   # ● Update Members Status
  4592.   #--------------------------------------------------------------------------            
  4593.   def update_members_status
  4594.       @members_status.each {|sprite| sprite.update(@actor_window.active,@actor_window.index) }
  4595.   end
  4596.  
  4597.   #--------------------------------------------------------------------------
  4598.   # ● Update Background
  4599.   #--------------------------------------------------------------------------              
  4600.   def update_background
  4601.       return if @background == nil
  4602.       @background.ox += @background_scroll[0]
  4603.       @background.oy += @background_scroll[1]
  4604.   end   
  4605.  
  4606.   #--------------------------------------------------------------------------
  4607.   # ● Update Particles
  4608.   #--------------------------------------------------------------------------  
  4609.   def update_particles
  4610.       return if @particles_sprite == nil
  4611.       @particles_sprite.each {|sprite| sprite.update }
  4612.   end
  4613.  
  4614.   #--------------------------------------------------------------------------
  4615.   # ● Update Command Sprites
  4616.   #--------------------------------------------------------------------------     
  4617.   def update_command_sprites
  4618.       return if @command_sprites == nil
  4619.       for i in @command_sprites
  4620.           i.update_command(@command_index)
  4621.           if i.index == 0
  4622.              @item_window.x = i.x
  4623.              @item_window.visible = i.visible
  4624.              @item_window_2.x = i.x
  4625.              @item_window_2.visible = i.visible            
  4626.            elsif i.index == 1
  4627.              @weapon_window.x = i.x
  4628.              @weapon_window.visible = i.visible            
  4629.            elsif i.index == 2
  4630.              @armor_window.x = i.x
  4631.              @armor_window.visible = i.visible
  4632.            elsif i.index == 3
  4633.              @key_window.x = i.x
  4634.              @key_window.visible = i.visible               
  4635.          end
  4636.       end      
  4637.   end   
  4638.  
  4639.   #--------------------------------------------------------------------------
  4640.   # ● Update Button Sprites
  4641.   #--------------------------------------------------------------------------     
  4642.   def update_button_sprites
  4643.       return if @button_sprites == nil
  4644.       @button_sprites.each {|sprite| sprite.update_command(@command_index) }
  4645.   end     
  4646.  
  4647.   #--------------------------------------------------------------------------
  4648.   # ● Update Winndow
  4649.   #--------------------------------------------------------------------------      
  4650.   def update_windows
  4651.       return if @item_window == nil
  4652.       @item_window_2.index = @item_window.index
  4653.       @item_window.update
  4654.       @weapon_window.update   
  4655.       @armor_window.update
  4656.       @key_window.update         
  4657.       @actor_window.update      
  4658.       update_actor_window_slide
  4659.       update_actor_window2_slide
  4660.   end
  4661.  
  4662.   #--------------------------------------------------------------------------
  4663.   # ● Update Actor Window Slide
  4664.   #--------------------------------------------------------------------------  
  4665.   def update_actor_window_slide
  4666.       if @actor_window.active
  4667.          if @actor_window.x < @actor_window_slide_range[0]
  4668.             @actor_window.x += 15
  4669.             @actor_window.contents_opacity += 23
  4670.             if @actor_window.x >= @actor_window_slide_range[0]
  4671.                @actor_window.x = @actor_window_slide_range[0]
  4672.                @actor_window.contents_opacity = 255
  4673.             end  
  4674.          end  
  4675.       else         
  4676.          if @actor_window.x >= @actor_window_slide_range[1]
  4677.             @actor_window.x -= 15
  4678.             @actor_window.contents_opacity -= 3
  4679.             if @actor_window.x <= @actor_window_slide_range[1]
  4680.                @actor_window.x = @actor_window_slide_range[1]
  4681.                @actor_window.contents_opacity = 0
  4682.             end         
  4683.          end
  4684.       end
  4685.   end   
  4686.  
  4687.   #--------------------------------------------------------------------------
  4688.   # ● Update Actor Window Slide
  4689.   #--------------------------------------------------------------------------  
  4690.   def update_actor_window2_slide
  4691.       @actor_status.update(@actor_window.active,@actor)
  4692.   end   
  4693.  
  4694. end
  4695.  
  4696. #==============================================================================
  4697. # ■ Scene_Item
  4698. #==============================================================================
  4699. class Scene_Item
  4700.  
  4701.   #--------------------------------------------------------------------------
  4702.   # ● Update
  4703.   #--------------------------------------------------------------------------      
  4704.   def update
  4705.       update_command   
  4706.       update_sprites
  4707.   end
  4708.  
  4709. end
  4710.  
  4711. #==============================================================================
  4712. # ■ Scene_Item
  4713. #==============================================================================
  4714. class Scene_Item
  4715.  
  4716.   #--------------------------------------------------------------------------
  4717.   # ● Update Command
  4718.   #--------------------------------------------------------------------------      
  4719.   def update_command
  4720.       if @actor_window.active
  4721.          update_target_select         
  4722.       else
  4723.          update_main_command
  4724.          update_active_window
  4725.       end  
  4726.   end
  4727.  
  4728.   #--------------------------------------------------------------------------
  4729.   # ● Update Active Window
  4730.   #--------------------------------------------------------------------------        
  4731.   def update_active_window
  4732.       @item_window_2.active = false
  4733.       if @command_index == 0
  4734.          @item_window.active = true
  4735.          @weapon_window.active = false
  4736.          @armor_window.active = false
  4737.          @key_window.active = false
  4738.       elsif @command_index == 1           
  4739.          @item_window.active = false
  4740.          @weapon_window.active = true
  4741.          @armor_window.active = false
  4742.          @key_window.active = false
  4743.       elsif @command_index == 2   
  4744.          @item_window.active = false
  4745.          @weapon_window.active = false
  4746.          @armor_window.active = true
  4747.          @key_window.active = false
  4748.       elsif @command_index == 3
  4749.          @item_window.active = false
  4750.          @weapon_window.active = false
  4751.          @armor_window.active = false
  4752.          @key_window.active = true
  4753.       end         
  4754.   end
  4755.  
  4756.   #--------------------------------------------------------------------------
  4757.   # ● Update Main Command
  4758.   #--------------------------------------------------------------------------        
  4759.   def update_main_command
  4760.       @wait_time -= 1 if @wait_time > 0
  4761.       if Input.trigger?(:LEFT)
  4762.          move_command_index(-1)
  4763.       elsif Input.trigger?(:RIGHT)
  4764.          move_command_index(1)
  4765.       elsif Input.trigger?(:B)
  4766.          return_scene
  4767.       end  
  4768.   end
  4769.  
  4770.   #--------------------------------------------------------------------------
  4771.   # ● Return Scene
  4772.   #--------------------------------------------------------------------------         
  4773.   def return_scene
  4774.       Sound.play_cancel
  4775.       SceneManager.return
  4776.   end
  4777.  
  4778.   #--------------------------------------------------------------------------
  4779.   # ● Cancel_Selection
  4780.   #--------------------------------------------------------------------------         
  4781.   def cancel_selection
  4782.       Sound.play_cancel
  4783.       @phase = 0
  4784.   end
  4785.  
  4786.   #--------------------------------------------------------------------------
  4787.   # ● Update Main Command
  4788.   #--------------------------------------------------------------------------   
  4789.   def move_command_index(value)
  4790.       return if @wait_time > 0
  4791.       @wait_time = 7
  4792.       pre_index = @command_index
  4793.       @command_index += value
  4794.       @command_index = 0 if @command_index > 3
  4795.       @command_index = 3 if @command_index < 0
  4796.       for i in @command_sprites
  4797.           i.newp(@command_index,value)
  4798.       end         
  4799.       Sound.play_cursor
  4800.   end      
  4801.  
  4802.   #--------------------------------------------------------------------------
  4803.   # ● ON Category OK
  4804.   #--------------------------------------------------------------------------
  4805.   def on_category_ok
  4806.       if @command_index == 0
  4807.          @item_window.activate
  4808.          @item_window.select_last
  4809.       elsif @command_index == 1   
  4810.          @weapon_window.activate
  4811.          @weapon_window.select_last         
  4812.       elsif @command_index == 2   
  4813.          @armor_window.activate
  4814.          @armor_window.select_last
  4815.       elsif @command_index == 3   
  4816.          @key_window.activate
  4817.          @key_window.select_last
  4818.       end
  4819.       refresh_actor_status  
  4820.   end
  4821.  
  4822.   #--------------------------------------------------------------------------
  4823.   # ● ON Item OK
  4824.   #--------------------------------------------------------------------------
  4825.   def on_item_ok
  4826.       $game_party.last_item.object = item
  4827.       determine_item
  4828.   end
  4829.  
  4830.   #--------------------------------------------------------------------------
  4831.   # ● ON Item Cancel
  4832.   #--------------------------------------------------------------------------
  4833.   def on_item_cancel
  4834.      @item_window.unselect
  4835.   end
  4836.  
  4837.   #--------------------------------------------------------------------------
  4838.   # ● Play SE For Item
  4839.   #--------------------------------------------------------------------------
  4840.   def play_se_for_item
  4841.       Sound.play_use_item
  4842.   end  
  4843.  
  4844.   #--------------------------------------------------------------------------
  4845.   # ● Item
  4846.   #--------------------------------------------------------------------------
  4847.   def item
  4848.       if @command_index == 0
  4849.          @item_window.item
  4850.       elsif @command_index == 1   
  4851.          @weapon_window.item   
  4852.       elsif @command_index == 2   
  4853.          @armor_window.item
  4854.       elsif @command_index == 3   
  4855.          @key_window.item         
  4856.       end        
  4857.   end
  4858.  
  4859.   #--------------------------------------------------------------------------
  4860.   # ● User
  4861.   #--------------------------------------------------------------------------
  4862.   def user
  4863.       $game_party.movable_members.max_by {|member| member.pha }
  4864.   end
  4865.  
  4866.   #--------------------------------------------------------------------------
  4867.   # ● Cursor Left
  4868.   #--------------------------------------------------------------------------
  4869.   def cursor_left?
  4870.       @item_window.index % 2 == 0
  4871.   end
  4872.  
  4873.   #--------------------------------------------------------------------------
  4874.   # ● Show Sub Window
  4875.   #--------------------------------------------------------------------------
  4876.   def show_sub_window(window)
  4877.     window.show.activate
  4878.   end
  4879.  
  4880.   #--------------------------------------------------------------------------
  4881.   # ● Hide Sub Window
  4882.   #--------------------------------------------------------------------------
  4883.   def hide_sub_window(window)
  4884.       window.deactivate
  4885.       activate_item_window
  4886.   end
  4887.  
  4888.   #--------------------------------------------------------------------------
  4889.   # ● ON Actor OK
  4890.   #--------------------------------------------------------------------------
  4891.   def on_actor_ok
  4892.       if item_usable?
  4893.          use_item
  4894.          refresh_window
  4895.       else
  4896.         Sound.play_buzzer
  4897.       end
  4898.   end
  4899.  
  4900.   #--------------------------------------------------------------------------
  4901.   # ● Refresh Window
  4902.   #--------------------------------------------------------------------------  
  4903.   def refresh_window
  4904.       if @command_index == 0
  4905.          old_item = @item_window.item
  4906.          @item_window.refresh
  4907. #         set_actor_for_members_menu
  4908.          if @item_window.item  == nil
  4909.             @item_window.index -= 1
  4910.             @item_window.index = 0 if @item_window.index < 0
  4911.             @item_window.update
  4912.          end
  4913.          if old_item != @item_window.item
  4914.             on_actor_cancel
  4915.             cancel_selection
  4916.             @item_window_2.refresh
  4917.             @item_window.update_help
  4918.          end
  4919.       elsif @command_index == 1   
  4920.          @weapon_window.refresh
  4921.       elsif @command_index == 2   
  4922.          @armor_window.refresh
  4923.       elsif @command_index == 3   
  4924.          @key_window.refresh      
  4925.       end
  4926.   end
  4927.  
  4928.   #--------------------------------------------------------------------------
  4929.   # ● Set Actor for Members Menu
  4930.   #--------------------------------------------------------------------------   
  4931.   def set_actor_for_members_menu
  4932.       index = 0
  4933.       for actor in $game_party.members
  4934.           @members_status[index].set_actor(actor)
  4935.           index += 1
  4936.       end  
  4937.   end
  4938.  
  4939.   #--------------------------------------------------------------------------
  4940.   # ● ON Actor Cancel
  4941.   #--------------------------------------------------------------------------
  4942.   def on_actor_cancel
  4943.       hide_sub_window(@actor_window)
  4944.   end
  4945.  
  4946.   #--------------------------------------------------------------------------
  4947.   # ● Determine Item
  4948.   #--------------------------------------------------------------------------
  4949.   def determine_item
  4950.       if item.for_friend?
  4951.          show_sub_window(@actor_window)
  4952.          @actor_window.select_for_item(item)
  4953.          $game_temp.item_scope = @item_window.item.scope rescue nil
  4954.       else
  4955.          use_item
  4956.          activate_item_window
  4957.       end
  4958.   end
  4959.  
  4960.   #--------------------------------------------------------------------------
  4961.   # ● Activate Item Window
  4962.   #--------------------------------------------------------------------------
  4963.   def activate_item_window
  4964.       if @command_index == 0
  4965.          @item_window.refresh
  4966.          @item_window.activate
  4967.       elsif @command_index == 1   
  4968.          @weapon_window.refresh
  4969.          @weapon_window.activate
  4970.       elsif @command_index == 2   
  4971.          @armor_window.refresh
  4972.          @armor_window.activate
  4973.       elsif @command_index == 3   
  4974.          @key_window.refresh     
  4975.          @key_window.activate
  4976.       end   
  4977.   end
  4978.  
  4979.   #--------------------------------------------------------------------------
  4980.   # ● Item Target Actors
  4981.   #--------------------------------------------------------------------------
  4982.   def item_target_actors
  4983.       if !item.for_friend?
  4984.         []
  4985.       elsif item.for_all?
  4986.         $game_party.members
  4987.       else
  4988.         [$game_party.members[@actor_window.index]]
  4989.       end
  4990.   end
  4991.  
  4992.   #--------------------------------------------------------------------------
  4993.   # ● Item Usable?
  4994.   #--------------------------------------------------------------------------
  4995.   def item_usable?
  4996.       user.usable?(item) && item_effects_valid?
  4997.   end
  4998.  
  4999.   #--------------------------------------------------------------------------
  5000.   # ● Item Effects Valid?
  5001.   #--------------------------------------------------------------------------
  5002.   def item_effects_valid?
  5003.       item_target_actors.any? do |target|
  5004.            target.item_test(user, item)
  5005.       end
  5006.   end
  5007.  
  5008.   #--------------------------------------------------------------------------
  5009.   # ● Use Item to Actors
  5010.   #--------------------------------------------------------------------------
  5011.   def use_item_to_actors
  5012.       item_target_actors.each do |target|
  5013.         item.repeats.times { target.item_apply(user, item) }
  5014.       end
  5015.   end
  5016.  
  5017.   #--------------------------------------------------------------------------
  5018.   # ● Use Item
  5019.   #--------------------------------------------------------------------------
  5020.   def use_item
  5021.       play_se_for_item
  5022.       user.use_item(item)
  5023.       use_item_to_actors
  5024.       check_common_event
  5025.       check_gameover
  5026.       @actor_window.refresh
  5027.   end
  5028.  
  5029.   #--------------------------------------------------------------------------
  5030.   # ● Check Common Event
  5031.   #--------------------------------------------------------------------------
  5032.   def check_common_event
  5033.       SceneManager.goto(Scene_Map) if $game_temp.common_event_reserved?
  5034.   end
  5035.  
  5036.   #--------------------------------------------------------------------------
  5037.   # ● Update Target Select
  5038.   #--------------------------------------------------------------------------  
  5039.   def update_target_select
  5040.       @actor = $game_party.members[@actor_window.index]
  5041.       if Input.trigger?(:B)         
  5042.          cancel_selection
  5043.       end      
  5044.   end  
  5045.  
  5046. end
  5047.  
  5048.  
  5049. #==============================================================================
  5050. # ■ Game_Temp
  5051. #==============================================================================
  5052. class Game_Temp
  5053.  
  5054.   #--------------------------------------------------------------------------
  5055.   # ● Execute Pre Cache Skill Menu
  5056.   #--------------------------------------------------------------------------   
  5057.   def execute_pre_cache_skill_menu
  5058.       @pre_cache_skill_menu = []
  5059.       @pre_cache_skill_menu.push(Cache.menu_skill("Background"))
  5060.       @pre_cache_skill_menu.push(Cache.menu_skill("Layout"))
  5061.       @pre_cache_skill_menu.push(Cache.menu_skill("Type_Layout"))
  5062.       @pre_cache_skill_menu.push(Cache.menu_skill("List_Layout"))
  5063.       @pre_cache_skill_menu.push(Cache.menu_skill("Actor_Layout"))
  5064.  
  5065.   end   
  5066.  
  5067. end
  5068.  
  5069. #==============================================================================
  5070. # ■ Scene_Skill
  5071. #==============================================================================
  5072. class Scene_Skill
  5073.   include MOG_MENU_SKILL
  5074.   include MOG_MENU_BASE
  5075.  
  5076.   #--------------------------------------------------------------------------
  5077.   # ● Main
  5078.   #--------------------------------------------------------------------------        
  5079.   def main
  5080.       execute_setup
  5081.       execute_loop
  5082.       execute_dispose
  5083.   end  
  5084.  
  5085.   #--------------------------------------------------------------------------
  5086.   # ● Execute Setup
  5087.   #--------------------------------------------------------------------------        
  5088.   def execute_setup
  5089.       @actor = $game_temp.actor_menu_temp
  5090.       @index_max = (@actor.added_skill_types.size - 1)
  5091.       @index_max = 0 if @index_max < 0      
  5092.       @phase = 0
  5093.       @press_time = 0
  5094.       @press_lag = 0
  5095.       @scene_active = @actor.added_skill_types.size > 0 ? true : false
  5096.       create_sprites
  5097.   end
  5098.  
  5099.   #--------------------------------------------------------------------------
  5100.   # ● Execute Lopp
  5101.   #--------------------------------------------------------------------------        
  5102.   def execute_loop
  5103.       Graphics.transition(10)
  5104.       loop do
  5105.          Input.update
  5106.          update
  5107.          Graphics.update
  5108.          break if SceneManager.scene != self
  5109.       end
  5110.   end
  5111.  
  5112. end
  5113.  
  5114. #==============================================================================
  5115. # ■ Actor Skill Status
  5116. #==============================================================================
  5117. class Actor_Skill_Status
  5118.   include MOG_ACTOR_SKILL_STATUS
  5119.  
  5120.   #--------------------------------------------------------------------------
  5121.   # ● Initialize
  5122.   #--------------------------------------------------------------------------
  5123.   def initialize(actor)
  5124.       @actor = actor
  5125.       set_old_parameter
  5126.       create_sprites
  5127.   end
  5128.  
  5129.   #--------------------------------------------------------------------------
  5130.   # ● Create Sprites
  5131.   #--------------------------------------------------------------------------   
  5132.   def create_sprites
  5133.       @meter_image = $game_temp.pre_cache_actor_menu[6]
  5134.       @meter_cw = @meter_image.width
  5135.       @meter_ch = @meter_image.height / 2   
  5136.       @parameter_number = $game_temp.pre_cache_actor_menu[2]
  5137.       @parameter_cw = @parameter_number.width / 10
  5138.       @parameter_ch = @parameter_number.height
  5139.       @opac = 0
  5140.       create_layout
  5141.       create_parameter
  5142.       create_face
  5143.       create_name
  5144.       create_hp_meter
  5145.       create_mp_meter
  5146.       create_states
  5147.       set_position(0,[email]-@layout.bitmap.height[/email] - 48)
  5148.   end
  5149.  
  5150.   #--------------------------------------------------------------------------
  5151.   # ● Set Old Parameter
  5152.   #--------------------------------------------------------------------------  
  5153.   def set_old_parameter
  5154.       @par = [] if @par == nil
  5155.       @par.clear
  5156.       @par = [@actor.hp,@actor.mhp,@actor.mp,@actor.mmp,@actor.level]
  5157.   end   
  5158.  
  5159.   #--------------------------------------------------------------------------
  5160.   # ● Dispose
  5161.   #--------------------------------------------------------------------------  
  5162.   def dispose
  5163.       dispose_layout
  5164.       dispose_parameter
  5165.       dispose_face
  5166.       dispose_name
  5167.       dispose_hp_meter
  5168.       dispose_mp_meter
  5169.       dispose_states
  5170.   end
  5171.  
  5172.   #--------------------------------------------------------------------------
  5173.   # ● Dispose Layout
  5174.   #--------------------------------------------------------------------------   
  5175.   def dispose_layout
  5176.       @layout.dispose
  5177.   end
  5178.  
  5179.   #--------------------------------------------------------------------------
  5180.   # ● Dispose Parameter
  5181.   #--------------------------------------------------------------------------      
  5182.   def dispose_parameter
  5183.       @parameter.bitmap.dispose
  5184.       @parameter.dispose
  5185.   end  
  5186.  
  5187.   #--------------------------------------------------------------------------
  5188.   # ● Dispose Face
  5189.   #--------------------------------------------------------------------------   
  5190.   def dispose_face
  5191.       @face.bitmap.dispose if @face.bitmap != nil
  5192.       @face.dispose
  5193.   end   
  5194.  
  5195.   #--------------------------------------------------------------------------
  5196.   # ● Dispose HP Meter
  5197.   #--------------------------------------------------------------------------      
  5198.   def dispose_hp_meter
  5199.       @hp_meter.bitmap.dispose
  5200.       @hp_meter.dispose
  5201.   end
  5202.  
  5203.   #--------------------------------------------------------------------------
  5204.   # ● Dispose MP Meter
  5205.   #--------------------------------------------------------------------------      
  5206.   def dispose_mp_meter
  5207.       @mp_meter.bitmap.dispose
  5208.       @mp_meter.dispose
  5209.   end  
  5210.  
  5211.   #--------------------------------------------------------------------------
  5212.   # ● Dispose Name
  5213.   #--------------------------------------------------------------------------        
  5214.   def dispose_name
  5215.       @name.bitmap.dispose
  5216.       @name.dispose
  5217.   end  
  5218.  
  5219.   #--------------------------------------------------------------------------
  5220.   # ● Dispose States
  5221.   #--------------------------------------------------------------------------            
  5222.    def dispose_states
  5223.        return if @status == nil
  5224.        @status.bitmap.dispose
  5225.        @status.dispose
  5226.        if @actor_status != nil
  5227.           @actor_status.dispose
  5228.           @actor_status = nil
  5229.        end   
  5230.     end   
  5231.  
  5232.   #--------------------------------------------------------------------------
  5233.   # ● Create Layout
  5234.   #--------------------------------------------------------------------------
  5235.   def create_layout
  5236.       @layout = Sprite.new
  5237.       @layout.bitmap = $game_temp.pre_cache_skill_menu[4]
  5238.       @org_pos = [LAYOUT_POSITION[0],LAYOUT_POSITION[1]]
  5239.       @layout.x = @org_pos[0]
  5240.       @layout.y = @org_pos[1]
  5241.       @layout.z = 10
  5242.       #@layout.opacity = 0
  5243.   end
  5244.  
  5245.   #--------------------------------------------------------------------------
  5246.   # ● Create Parameter
  5247.   #--------------------------------------------------------------------------
  5248.   def create_parameter
  5249.       @parameter = Sprite.new
  5250.       @parameter.bitmap = Bitmap.new(@layout.bitmap.width,@layout.bitmap.height)
  5251.       @org_pos_par = [@org_pos[0] + PAR_POSITION[0],
  5252.                       @org_pos[1] + PAR_POSITION[1]]
  5253.       @parameter.x = @org_pos_par[0]
  5254.       @parameter.y = @org_pos_par[1]
  5255.       @parameter.z = 12
  5256. #      @parameter.opacity = 0
  5257.       refresh_parameter
  5258.   end  
  5259.  
  5260.   #--------------------------------------------------------------------------
  5261.   # ● Create HP Meter
  5262.   #--------------------------------------------------------------------------  
  5263.   def create_hp_meter
  5264.       @hp_meter_old = [-1,-1]
  5265.       @hp_meter = Sprite.new
  5266.       @hp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  5267.       @org_pos_hp = [@org_pos[0] + HP_METER_POSITION[0],
  5268.                      @org_pos[1] + HP_METER_POSITION[1]]      
  5269.       @hp_meter.x = @org_pos_hp[0]
  5270.       @hp_meter.y = @org_pos_hp[1]
  5271.       @hp_meter.z = 11
  5272.   end  
  5273.  
  5274.   #--------------------------------------------------------------------------
  5275.   # ● Refresh HP Meter
  5276.   #--------------------------------------------------------------------------   
  5277.   def refresh_hp_meter
  5278.       @hp_meter_old[0] = @actor.hp
  5279.       @hp_meter_old[1] = @actor.mhp
  5280.       @hp_meter.bitmap.clear
  5281.       width_range = @meter_cw * @actor.hp / @actor.mhp
  5282.       m_rect = Rect.new(0,0,width_range,@meter_ch)
  5283.       @hp_meter.bitmap.blt(0,0,@meter_image,m_rect)
  5284.   end
  5285.  
  5286.   #--------------------------------------------------------------------------
  5287.   # ● Create MP Meter
  5288.   #--------------------------------------------------------------------------  
  5289.   def create_mp_meter
  5290.       @mp_meter_old = [-1,-1]
  5291.       @mp_meter = Sprite.new
  5292.       @mp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  5293.       @org_pos_mp = [@org_pos[0] + MP_METER_POSITION[0],
  5294.                      @org_pos[1] + MP_METER_POSITION[1]]      
  5295.       @mp_meter.x = @org_pos_mp[0]
  5296.       @mp_meter.y = @org_pos_mp[1]
  5297.       @mp_meter.z = 11
  5298.   end  
  5299.  
  5300.   #--------------------------------------------------------------------------
  5301.   # ● Create_States
  5302.   #--------------------------------------------------------------------------      
  5303.   def create_states
  5304.       @status_old = nil
  5305.       @status_flow = [-24,0]   
  5306.       @status = Sprite.new
  5307.       @status.bitmap = Bitmap.new(24,24)
  5308.       @org_pos_states = [@org_pos[0] + STATES_POSITION[0],
  5309.                          @org_pos[1] + STATES_POSITION[1]]      
  5310.       @status.x = @org_pos_states[0] + 1
  5311.       @status.y = @org_pos_states[1]
  5312.       @status.z = 11
  5313.   end      
  5314.  
  5315.   #--------------------------------------------------------------------------
  5316.   # * Refresh States
  5317.   #--------------------------------------------------------------------------        
  5318.   def refresh_states
  5319.       check_icon_image
  5320.       @status_old = @actor.states
  5321.       @status_flow = [0,0]
  5322.       @actor_status.dispose if @actor_status != nil
  5323.       @states_size = @actor.states.size > 0 ? (26 * @actor.states.size) : 24
  5324.       @actor_status = Bitmap.new(@states_size,24)
  5325.       index = 0
  5326.       for i in @actor.states
  5327.          rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
  5328.          @actor_status.blt(26 * index , 0, @icon_image, rect)
  5329.          index += 1
  5330.       end
  5331.   end   
  5332.  
  5333.   #--------------------------------------------------------------------------
  5334.   # * Flow_Status
  5335.   #--------------------------------------------------------------------------         
  5336.   def flow_states
  5337.       return if @actor_status == nil
  5338.       @status.bitmap.clear
  5339.       return if @actor.states.size == 0
  5340.       st_src_rect = Rect.new(@status_flow[0],0, 24,24)
  5341.       @status.bitmap.blt(0,0, @actor_status, st_src_rect)
  5342.       if STATES_SCROLLING_ANIMATION
  5343.          @status_flow[0] += 1
  5344.          @status_flow[0] = -24 if @status_flow[0] >= @states_size + 2
  5345.       else   
  5346.          @status_flow[1] += 1 unless @actor.states.size <= 1
  5347.          if @status_flow[1] > 30
  5348.             @status_flow[1] = 0
  5349.             @status_flow[0] += 26
  5350.             @status_flow[0] = 0 if @status_flow[0] >= (@states_size - 0)
  5351.          end   
  5352.      end   
  5353.   end        
  5354.  
  5355.   #--------------------------------------------------------------------------
  5356.   # * Check Icon Image
  5357.   #--------------------------------------------------------------------------         
  5358.   def check_icon_image
  5359.       if @icon_image == nil or @icon_image.disposed?
  5360.          @icon_image = Cache.system("Iconset")
  5361.       end   
  5362.   end   
  5363.  
  5364.  
  5365.   #--------------------------------------------------------------------------
  5366.   # ● Refresh MP Meter
  5367.   #--------------------------------------------------------------------------   
  5368.   def refresh_mp_meter
  5369.       @mp_meter_old[0] = @actor.mp
  5370.       @mp_meter_old[1] = @actor.mmp
  5371.       @mp_meter.bitmap.clear
  5372.       width_range = @meter_cw * @actor.mp / @actor.mmp rescue nil
  5373.       width_range = 0 if width_range == nil
  5374.       m_rect = Rect.new(0,@meter_ch,width_range,@meter_ch)
  5375.       @mp_meter.bitmap.blt(0,0,@meter_image,m_rect)
  5376.   end  
  5377.  
  5378.   #--------------------------------------------------------------------------
  5379.   # ● Create Face
  5380.   #--------------------------------------------------------------------------   
  5381.   def refresh_parameter
  5382.       set_old_parameter   
  5383.       @parameter.bitmap.clear
  5384.  
  5385.       value = @actor.level
  5386.       x = 112
  5387.       y = 8
  5388.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  5389.  
  5390.       value = @actor.hp
  5391.       x = 218
  5392.       y = 2
  5393.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  5394.  
  5395.       value = @actor.mp
  5396.       x = 238
  5397.       y = 22
  5398.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  5399.  
  5400.   end  
  5401.  
  5402.   #--------------------------------------------------------------------------
  5403.   # ● Refresh Number
  5404.   #--------------------------------------------------------------------------     
  5405.   def refresh_number(sprite,image,value,number_cw,number_ch,x,y)
  5406.       number = value.abs.to_s.split(//)
  5407.       x2 = -number_cw * number.size
  5408.       for i in 0..number.size - 1
  5409.           number_abs = number[i].to_i
  5410.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  5411.           sprite.bitmap.blt(x + x2 + (number_cw  *  i), y, image, nsrc_rect)        
  5412.       end      
  5413.  
  5414.   end
  5415.  
  5416.   #--------------------------------------------------------------------------
  5417.   # ● Create Face
  5418.   #--------------------------------------------------------------------------  
  5419.   def create_face
  5420.       @face = Sprite.new
  5421.       @org_pos_face = [@org_pos[0] + FACE_POSITION[0],
  5422.                        @org_pos[1] + FACE_POSITION[1]]
  5423.       @face.x = @org_pos_face[0]
  5424.       @face.y = @org_pos_face[1]
  5425.       @face.z = 11
  5426.    #   @face.opacity = 0
  5427.       refresh_face
  5428.   end  
  5429.  
  5430.   #--------------------------------------------------------------------------
  5431.   # ● Refresh Face
  5432.   #--------------------------------------------------------------------------   
  5433.   def refresh_face
  5434.       face_name = "Face" + @actor.id.to_s
  5435.       @face.bitmap = Cache.menu(face_name.to_s)
  5436.   end
  5437.  
  5438.   #--------------------------------------------------------------------------
  5439.   # ● Create Name
  5440.   #--------------------------------------------------------------------------   
  5441.   def create_name
  5442.       @name = Sprite.new
  5443.       @name.bitmap = Bitmap.new(140,32)
  5444.       @name.bitmap.font.size = FONT_SIZE
  5445.       @name.bitmap.font.bold = FONT_BOLD
  5446.       @org_pos_name = [@org_pos[0] + NAME_POSITION[0],
  5447.                        @org_pos[1] + NAME_POSITION[1]]
  5448.       @name.x = @org_pos_name[0]
  5449.       @name.y = @org_pos_name[1]
  5450.       @name.z = 11
  5451.      #@name.opacity = 0
  5452.       refresh_name     
  5453.   end  
  5454.  
  5455.   #--------------------------------------------------------------------------
  5456.   # ● Refresh Name
  5457.   #--------------------------------------------------------------------------      
  5458.   def refresh_name
  5459.       @name.bitmap.clear
  5460.       @name.bitmap.draw_text(0,0,140,32,@actor.name.to_s,0)
  5461.   end  
  5462.  
  5463.   #--------------------------------------------------------------------------
  5464.   # ● Set Actor
  5465.   #--------------------------------------------------------------------------        
  5466.   def set_actor(actor)
  5467.       @actor = actor
  5468.   end
  5469.  
  5470.   #--------------------------------------------------------------------------
  5471.   # ● Can Refresh HP Meter
  5472.   #--------------------------------------------------------------------------         
  5473.   def can_refresh_hp_meter?
  5474.       return true if @hp_meter_old[0] != @actor.hp
  5475.       return true if @hp_meter_old[1] != @actor.mhp
  5476.       return false
  5477.   end
  5478.  
  5479.   #--------------------------------------------------------------------------
  5480.   # ● Can Refresh MP Meter
  5481.   #--------------------------------------------------------------------------         
  5482.   def can_refresh_mp_meter?
  5483.       return true if @mp_meter_old[0] != @actor.mp
  5484.       return true if @mp_meter_old[1] != @actor.mmp
  5485.       return false
  5486.   end  
  5487.  
  5488.   #--------------------------------------------------------------------------
  5489.   # ● Can Refresh Parameter
  5490.   #--------------------------------------------------------------------------
  5491.   def can_refresh_parameter?
  5492.       return true if @par[0] != @actor.hp
  5493.       return true if @par[1] != @actor.mhp
  5494.       return true if @par[2] != @actor.mp
  5495.       return true if @par[3] != @actor.mmp
  5496.       return false
  5497.   end
  5498.  
  5499.   #--------------------------------------------------------------------------
  5500.   # ● Update Position
  5501.   #--------------------------------------------------------------------------      
  5502.   def update_position
  5503.       update_slide(0,@layout,@layout.x,@org_pos[0])
  5504.       update_slide(1,@layout,@layout.y,@org_pos[1])
  5505.       update_slide(0,@parameter,@parameter.x,@org_pos_par[0])
  5506.       update_slide(1,@parameter,@parameter.y,@org_pos_par[1])
  5507.       update_slide(0,@hp_meter,@hp_meter.x,@org_pos_hp[0])
  5508.       update_slide(1,@hp_meter,@hp_meter.y,@org_pos_hp[1])  
  5509.       update_slide(0,@mp_meter,@mp_meter.x,@org_pos_mp[0])
  5510.       update_slide(1,@mp_meter,@mp_meter.y,@org_pos_mp[1])        
  5511.       update_slide(0,@face,@face.x,@org_pos_face[0])
  5512.       update_slide(1,@face,@face.y,@org_pos_face[1])        
  5513.       update_slide(0,@name,@name.x,@org_pos_name[0])
  5514.       update_slide(1,@name,@name.y,@org_pos_name[1])      
  5515.       update_slide(0,@status,@status.x,@org_pos_states[0])
  5516.       update_slide(1,@status,@status.y,@org_pos_states[1])         
  5517.   end
  5518.  
  5519. #--------------------------------------------------------------------------
  5520. # ● Update Slide
  5521. #--------------------------------------------------------------------------                       
  5522.   def update_slide(type,sprite,cp,np)
  5523.       sp = 3 + ((cp - np).abs / 10)
  5524.       if cp > np
  5525.          cp -= sp
  5526.          cp = np if cp < np
  5527.       elsif cp < np
  5528.          cp += sp
  5529.          cp = np if cp > np
  5530.       end     
  5531.       sprite.x = cp if type == 0
  5532.       sprite.y = cp if type == 1
  5533.   end   
  5534.  
  5535.   #--------------------------------------------------------------------------
  5536.   # ● Update Opacity
  5537.   #--------------------------------------------------------------------------  
  5538.   def update_opacity
  5539.       @opac += 10
  5540.       @opac = 255 if @opac > 255
  5541.       set_opacity(@opac)
  5542.   end
  5543.  
  5544.   #--------------------------------------------------------------------------
  5545.   # ● Set Opacity
  5546.   #--------------------------------------------------------------------------   
  5547.   def set_opacity(opac)
  5548.       @layout.opacity = opac
  5549.       @layout.opacity = opac
  5550.       @parameter.opacity = opac
  5551.       @parameter.opacity = opac
  5552.       @hp_meter.opacity = opac
  5553.       @hp_meter.opacity = opac
  5554.       @mp_meter.opacity = opac
  5555.       @mp_meter.opacity = opac
  5556.       @face.opacity = opac
  5557.       @face.opacity = opac
  5558.       @name.opacity = opac
  5559.       @name.opacity = opac
  5560.       @status.opacity = opac
  5561.   end   
  5562.  
  5563.   #--------------------------------------------------------------------------
  5564.   # ● Update Position
  5565.   #--------------------------------------------------------------------------      
  5566.   def set_position(pos_x,pos_y)
  5567.       @layout.x = @org_pos[0] + pos_x
  5568.       @layout.y = @org_pos[1] + pos_y
  5569.       @parameter.x = @org_pos_par[0] + pos_x
  5570.       @parameter.y = @org_pos_par[1] + pos_y
  5571.       @hp_meter.x = @org_pos_hp[0] + pos_x
  5572.       @hp_meter.y = @org_pos_hp[1] + pos_y
  5573.       @mp_meter.x = @org_pos_mp[0] + pos_x
  5574.       @mp_meter.y = @org_pos_mp[1] + pos_y
  5575.       @face.x = @org_pos_face[0] + pos_x
  5576.       @face.y = @org_pos_face[1] + pos_y
  5577.       @name.x = @org_pos_name[0] + pos_x
  5578.       @name.y = @org_pos_name[1] + pos_y
  5579.       @status.x = @org_pos_states[0] + pos_x
  5580.       @status.y = @org_pos_states[1] + pos_y
  5581.   end   
  5582.  
  5583.   #--------------------------------------------------------------------------
  5584.   # ● Update
  5585.   #--------------------------------------------------------------------------  
  5586.   def update
  5587.       refresh_hp_meter if can_refresh_hp_meter?
  5588.       refresh_mp_meter if can_refresh_mp_meter?
  5589.       refresh_parameter if can_refresh_parameter?
  5590.       refresh_states if @status_old != @actor.states
  5591.       update_opacity
  5592.       update_position
  5593.       flow_states      
  5594.   end
  5595.  
  5596. end
  5597.  
  5598. #==============================================================================
  5599. # ■ Window_SkillCommand
  5600. #==============================================================================
  5601. class Window_SkillCommand_2 < Window_Command
  5602.  
  5603.   attr_reader   :skill_window
  5604.  
  5605.   #--------------------------------------------------------------------------
  5606.   # ● Initialize
  5607.   #--------------------------------------------------------------------------
  5608.   def initialize(x, y)
  5609.     super(x, y)
  5610.     @actor = nil
  5611.     @index_max = 0
  5612.   end
  5613.  
  5614.   #--------------------------------------------------------------------------
  5615.   # ● Window Width
  5616.   #--------------------------------------------------------------------------
  5617.   def window_width
  5618.     return 140
  5619.   end
  5620.  
  5621.   #--------------------------------------------------------------------------
  5622.   # ● Actor
  5623.   #--------------------------------------------------------------------------
  5624.   def actor=(actor)
  5625.       return if @actor == actor
  5626.       @actor = actor
  5627.       @index_max = (@actor.added_skill_types.size - 1)
  5628.       @index_max = 0 if @index_max < 0
  5629.       refresh
  5630.       select_last
  5631.   end
  5632.  
  5633.   #--------------------------------------------------------------------------
  5634.   # ● Visible Line Number
  5635.   #--------------------------------------------------------------------------
  5636.   def visible_line_number
  5637.       return 4
  5638.   end
  5639.  
  5640.   #--------------------------------------------------------------------------
  5641.   # ● Make Command List
  5642.   #--------------------------------------------------------------------------
  5643.   def make_command_list
  5644.       return unless @actor
  5645.          @actor.added_skill_types.sort.each do |stype_id|
  5646.          name = $data_system.skill_types[stype_id]
  5647.          add_command(name, :skill, true, stype_id)
  5648.       end
  5649.   end
  5650.  
  5651.   #--------------------------------------------------------------------------
  5652.   # ● Update
  5653.   #--------------------------------------------------------------------------
  5654.   def update
  5655.       super
  5656.       @skill_window.stype_id = current_ext if @skill_window
  5657.      # update_index
  5658.   end
  5659.  
  5660.   #--------------------------------------------------------------------------
  5661.   # ● Update
  5662.   #--------------------------------------------------------------------------  
  5663.   def update_index
  5664.       return if @index_max <= 0
  5665.       if Input.trigger?(:RIGHT)
  5666.          add_index(1)
  5667.       elsif Input.trigger?(:LEFT)   
  5668.          add_index(-1)
  5669.       end  
  5670.   end
  5671.  
  5672.   #--------------------------------------------------------------------------
  5673.   # ● Add Index
  5674.   #--------------------------------------------------------------------------   
  5675.   def add_index(value)
  5676.       Sound.play_cursor
  5677.       @index += value
  5678.       @index = 0 if @index > @index_max
  5679.       @index = @index_max if @index < 0
  5680.   end
  5681.  
  5682.   #--------------------------------------------------------------------------
  5683.   # ● Skill Window
  5684.   #--------------------------------------------------------------------------
  5685.   def skill_window=(skill_window)
  5686.       @skill_window = skill_window
  5687.       update
  5688.   end  
  5689.  
  5690.   #--------------------------------------------------------------------------
  5691.   # ● Select Last
  5692.   #--------------------------------------------------------------------------
  5693.   def select_last
  5694.       skill = @actor.last_skill.object
  5695.       if skill
  5696.          select_ext(skill.stype_id)
  5697.       else
  5698.          select(0)
  5699.       end
  5700.   end
  5701.  
  5702. end
  5703.  
  5704. #==============================================================================
  5705. # ■ Window_SkillList
  5706. #==============================================================================
  5707. class Window_SkillList_Menu < Window_Selectable
  5708.  
  5709.   attr_accessor :windows_index
  5710.  
  5711.   #--------------------------------------------------------------------------
  5712.   # ● Initialize
  5713.   #--------------------------------------------------------------------------
  5714.   def initialize(x, y, width, height)
  5715.       super
  5716.       @stype_id = 0
  5717.       @data = []
  5718.       @windows_index = 0
  5719.       self.opacity = 0
  5720.       @actor = nil
  5721.   end
  5722.  
  5723.   #--------------------------------------------------------------------------
  5724.   # ● Actor
  5725.   #--------------------------------------------------------------------------
  5726.   def actor=(actor)
  5727.       return if @actor == actor
  5728.       @actor = actor
  5729.       self.oy = 0
  5730.   end
  5731.  
  5732.   #--------------------------------------------------------------------------
  5733.   # ● Setup
  5734.   #--------------------------------------------------------------------------  
  5735.   def setup(actor,skill_type,index)
  5736.       @actor = actor
  5737.       @stype_id = skill_type
  5738.       @windows_index = index
  5739.       refresh
  5740.   end
  5741.  
  5742.   #--------------------------------------------------------------------------
  5743.   # ● Stype ID
  5744.   #--------------------------------------------------------------------------
  5745.   def stype_id=(stype_id)
  5746.   end
  5747.  
  5748.   #--------------------------------------------------------------------------
  5749.   # ● Col Max
  5750.   #--------------------------------------------------------------------------
  5751.   def col_max
  5752.       return 1
  5753.   end
  5754.  
  5755.   #--------------------------------------------------------------------------
  5756.   # ● Item Max
  5757.   #--------------------------------------------------------------------------
  5758.   def item_max
  5759.       @data ? @data.size : 1
  5760.   end
  5761.  
  5762.   #--------------------------------------------------------------------------
  5763.   # ● Item
  5764.   #--------------------------------------------------------------------------
  5765.   def item
  5766.       @data && index >= 0 ? @data[index] : nil
  5767.   end
  5768.  
  5769.   #--------------------------------------------------------------------------
  5770.   # ● Current Item Enabled
  5771.   #--------------------------------------------------------------------------
  5772.   def current_item_enabled?
  5773.       enable?(@data[index])
  5774.   end
  5775.  
  5776.   #--------------------------------------------------------------------------
  5777.   # ● Include
  5778.   #--------------------------------------------------------------------------
  5779.   def include?(item)
  5780.       item && item.stype_id == @stype_id
  5781.   end
  5782.  
  5783.   #--------------------------------------------------------------------------
  5784.   # ● Enable
  5785.   #--------------------------------------------------------------------------
  5786.   def enable?(item)
  5787.       @actor && @actor.usable?(item)
  5788.   end
  5789.  
  5790.   #--------------------------------------------------------------------------
  5791.   # ● Male Item List
  5792.   #--------------------------------------------------------------------------
  5793.   def make_item_list
  5794.       @data = @actor ? @actor.skills.select {|skill| include?(skill) } : []
  5795.   end
  5796.  
  5797.   #--------------------------------------------------------------------------
  5798.   # ● Select Last
  5799.   #--------------------------------------------------------------------------
  5800.   def select_last
  5801.       select(@data.index(@actor.last_skill.object) || 0)
  5802.   end
  5803.  
  5804.   #--------------------------------------------------------------------------
  5805.   # ● Draw Item
  5806.   #--------------------------------------------------------------------------
  5807.   def draw_item(index)
  5808.       self.contents.font.size = 18
  5809.       self.contents.font.bold = true
  5810.       skill = @data[index]
  5811.       if skill
  5812.          rect = item_rect(index)
  5813.          rect.width -= 4
  5814.          draw_item_name(skill, rect.x, rect.y, enable?(skill),110)
  5815.          draw_skill_cost(rect, skill)
  5816.       end
  5817.   end
  5818.  
  5819.   #--------------------------------------------------------------------------
  5820.   # ● Draw Skill Cost
  5821.   #--------------------------------------------------------------------------
  5822.   def draw_skill_cost(rect, skill)
  5823.       if @actor.skill_tp_cost(skill) > 0
  5824.          change_color(tp_cost_color, enable?(skill))
  5825.          draw_text(rect, @actor.skill_tp_cost(skill), 2)
  5826.       elsif @actor.skill_mp_cost(skill) > 0
  5827.          change_color(mp_cost_color, enable?(skill))
  5828.          draw_text(rect, @actor.skill_mp_cost(skill), 2)
  5829.       end
  5830.   end
  5831.  
  5832.   #--------------------------------------------------------------------------
  5833.   # ● Update Help
  5834.   #--------------------------------------------------------------------------
  5835.   def update_help
  5836.       @help_window.set_item(item)
  5837.   end
  5838.  
  5839.   #--------------------------------------------------------------------------
  5840.   # ● Refresh
  5841.   #--------------------------------------------------------------------------
  5842.   def refresh
  5843.       make_item_list
  5844.       create_contents
  5845.       draw_all_items
  5846.   end
  5847.  
  5848. end
  5849.  
  5850. #==============================================================================
  5851. # ■ Scene Skill
  5852. #==============================================================================
  5853. class Scene_Skill
  5854.  
  5855.   #--------------------------------------------------------------------------
  5856.   # ● Create Sprites
  5857.   #--------------------------------------------------------------------------         
  5858.   def create_sprites
  5859.       create_menu_background
  5860.       create_layout
  5861.       create_particles
  5862.       create_actor_status
  5863.       create_help_window
  5864.       create_command_window
  5865.       create_type_layout
  5866.       create_item_window
  5867.       create_list_layout
  5868.       create_actor_window
  5869.       create_type_name
  5870.       @command_window.active = true        
  5871.   end
  5872.  
  5873.   #--------------------------------------------------------------------------
  5874.   # ● Create Menu Background
  5875.   #--------------------------------------------------------------------------            
  5876.   def create_menu_background
  5877.       @background = Plane.new
  5878.       @background.bitmap = $game_temp.pre_cache_skill_menu[0]
  5879.       @background.z = 0
  5880.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  5881.   end  
  5882.  
  5883.   #--------------------------------------------------------------------------
  5884.   # ● Create Layout
  5885.   #--------------------------------------------------------------------------              
  5886.   def create_layout
  5887.       @layout = Sprite.new
  5888.       @layout.bitmap = $game_temp.pre_cache_skill_menu[1]
  5889.       @layout.z = 3
  5890.   end
  5891.  
  5892.   #--------------------------------------------------------------------------
  5893.   # ● Create Particles
  5894.   #--------------------------------------------------------------------------  
  5895.   def create_particles
  5896.       @particles_sprite =[]
  5897.       for i in 0...NUMBER_OF_PARTICLES
  5898.           @particles_sprite.push(Particles_Menu.new(nil))
  5899.       end
  5900.   end
  5901.  
  5902.   #--------------------------------------------------------------------------
  5903.   # ● Create Actor Status
  5904.   #--------------------------------------------------------------------------   
  5905.   def create_actor_status
  5906.       @actor_skill_status = Actor_Skill_Status.new(@actor)
  5907.   end  
  5908.  
  5909.   #--------------------------------------------------------------------------
  5910.   # ● Create Help Window
  5911.   #--------------------------------------------------------------------------              
  5912.   def create_help_window
  5913.       @help_window = Window_Help.new
  5914.       @help_window.x = 0
  5915.       @help_window.y = Graphics.height - @help_window.height
  5916.       @help_window.opacity = 0
  5917.   end   
  5918.  
  5919.   #--------------------------------------------------------------------------
  5920.   # ● Create Command Window
  5921.   #--------------------------------------------------------------------------
  5922.   def create_command_window
  5923.       @command_window = Window_SkillCommand_2.new(0, 84)
  5924.       @command_window.help_window = @help_window
  5925.       @command_window.actor = @actor
  5926.       @command_window.set_handler(:skill,    method(:command_skill))
  5927.       @command_window.set_handler(:pagedown, method(:next_actor))
  5928.       @command_window.set_handler(:pageup,   method(:prev_actor))
  5929.       @command_window.active = false
  5930.       @command_window.opacity = 0
  5931.       @command_window.index = 0
  5932.       @command_window.visible = @scene_active
  5933.       @skill_list_slide_range = [@command_window.x, -(@command_window.x + @command_window.width)]
  5934.       @command_window.x = @skill_list_slide_range[1] - 80
  5935.       @command_window.opacity = 0
  5936.   end  
  5937.  
  5938.   #--------------------------------------------------------------------------
  5939.   # ● Create Type Layout
  5940.   #--------------------------------------------------------------------------
  5941.   def create_type_layout
  5942.       @type_layout = Sprite.new
  5943.       @type_layout.bitmap = $game_temp.pre_cache_skill_menu[2]
  5944.       @type_layout.z = @command_window.z - 1
  5945.       @type_layout.x = @command_window.x
  5946.       @type_layout.y = @command_window.y - 30
  5947.       @type_layout.opacity = 0      
  5948.   end  
  5949.  
  5950.   #--------------------------------------------------------------------------
  5951.   # ● Create Item Window
  5952.   #--------------------------------------------------------------------------
  5953.   def create_item_window
  5954.       @skill_window = []
  5955.       index = 0
  5956.       window_max = @actor.added_skill_types.size
  5957.       window_max = 1 if window_max == 0
  5958.       for item in 0...window_max
  5959.           @skill_window.push(Window_SkillList_Menu.new(170,95,205,240))
  5960.           @skill_window[index].setup(@actor,@actor.added_skill_types[index],index)
  5961.           @skill_window[index].help_window = @help_window
  5962.           @skill_window[index].set_handler(:ok,     method(:on_item_ok))
  5963.           @skill_window[index].set_handler(:cancel, method(:on_item_cancel))
  5964.           @skill_window[index].active = false
  5965.           @skill_window[index].index = -1
  5966.           @skill_window[index].opacity = 0
  5967.           @skill_window[index].contents_opacity = 0
  5968.           @item_slide_range = [@skill_window[index].x, @skill_window[index].x + 50]
  5969.           @skill_window[index].x = @item_slide_range[1]
  5970.           index += 1
  5971.       end  
  5972.       @item_pre_index = @skill_window[@command_window.index].index
  5973.       @old_command_index = @skill_window[@command_window.index].index
  5974.   end  
  5975.  
  5976.   #--------------------------------------------------------------------------
  5977.   # ● Create List Layout
  5978.   #--------------------------------------------------------------------------  
  5979.   def create_list_layout
  5980.       @list_layout = Sprite.new
  5981.       @list_layout.bitmap = $game_temp.pre_cache_skill_menu[3]
  5982.       @list_layout.z = @skill_window[@command_window.index].z - 1
  5983.       @list_layout.x = @item_slide_range[0] - 4
  5984.       @list_layout.y = @skill_window[@command_window.index].y - 20
  5985.       @list_layout.opacity = 0
  5986.       @list_layout_slide_range = [@list_layout.x,@list_layout.x + 50]
  5987.       @list_layout.x = @list_layout_slide_range[1]
  5988.   end
  5989.  
  5990.   #--------------------------------------------------------------------------
  5991.   # ● Create Actor Window
  5992.   #--------------------------------------------------------------------------
  5993.   def create_actor_window
  5994.       @actor_window = Members_Windows_Status.new
  5995.       @actor_window.set_handler(:ok,     method(:on_actor_ok))
  5996.       @actor_window.set_handler(:cancel, method(:on_actor_cancel))
  5997.       @actor_window.opacity = 0
  5998.       @actor_window.x = -10
  5999.       @actor_window.y = 36
  6000.       @actor_window_slide_range = [@actor_window.x, [email]-@actor_window.width[/email]]
  6001.       @actor_window.x = @actor_window_slide_range[1]
  6002.       @actor_window.visible = true
  6003.       @actor_window_index_old = @actor_window.index
  6004.       create_members_window
  6005.       update_active
  6006.   end
  6007.  
  6008.   #--------------------------------------------------------------------------
  6009.   # ● Create Members Window
  6010.   #--------------------------------------------------------------------------  
  6011.   def create_members_window
  6012.       @actor_status = Actor_Menu_Status.new(@actor)
  6013.       index = 0
  6014.       @members_status = []      
  6015.       for actor in $game_party.members
  6016.           @members_status.push(Members_Menu.new(actor,index))
  6017.           index += 1
  6018.       end   
  6019.   end  
  6020.  
  6021.   #--------------------------------------------------------------------------
  6022.   # ● Create Type Name
  6023.   #--------------------------------------------------------------------------  
  6024.   def create_type_name
  6025.       @type_name = Sprite.new
  6026.       @type_name.x = 260
  6027.       @type_name.y = 60
  6028.       @type_name.z = @list_layout.z + 2
  6029.       @type_name.bitmap = Bitmap.new(100,32)
  6030.       @type_name.bitmap.font.size = 18
  6031.       @type_name.bitmap.font.bold = true
  6032.       @type_name.opacity = 0
  6033.       refresh_type_name
  6034.   end
  6035.  
  6036.   #--------------------------------------------------------------------------
  6037.   # ● Refresh Type Name
  6038.   #--------------------------------------------------------------------------   
  6039.   def refresh_type_name
  6040.      @type_name.bitmap.clear
  6041.      return if !@scene_active
  6042.      stype_id = @actor.added_skill_types[@command_window.index]
  6043.      type_name = $data_system.skill_types[stype_id]
  6044.      @type_name.bitmap.draw_text(0,0,100,32,type_name,2)
  6045.   end
  6046.  
  6047. end
  6048.  
  6049. #==============================================================================
  6050. # ■ Scene_Skill
  6051. #==============================================================================
  6052. class Scene_Skill
  6053.  
  6054.   #--------------------------------------------------------------------------
  6055.   # ● Execute Dispose
  6056.   #--------------------------------------------------------------------------        
  6057.   def execute_dispose
  6058.       Graphics.freeze
  6059.       dispose_background
  6060.       dispose_layout
  6061.       dispose_list_layout
  6062.       dispose_particles
  6063.       dispose_windows
  6064.       dispose_members_status
  6065.       dispose_type_name
  6066.   end
  6067.  
  6068.   #--------------------------------------------------------------------------
  6069.   # ● Dispose Background
  6070.   #--------------------------------------------------------------------------  
  6071.   def dispose_background
  6072.       return if @background == nil
  6073.       @background.dispose
  6074.       @background = nil
  6075.   end
  6076.  
  6077.  
  6078.   #--------------------------------------------------------------------------
  6079.   # ● Dispose Layout
  6080.   #--------------------------------------------------------------------------               
  6081.   def dispose_layout
  6082.       return if @layout == nil
  6083.       @layout.dispose
  6084.       @layout = nil
  6085.   end  
  6086.  
  6087. #--------------------------------------------------------------------------
  6088. # ● Dispose Particles
  6089. #--------------------------------------------------------------------------   
  6090. def dispose_particles
  6091.      return if @particles_sprite == nil
  6092.      @particles_sprite.each {|sprite| sprite.dispose }
  6093. end   
  6094.  
  6095. #--------------------------------------------------------------------------
  6096. # ● Dispose Window
  6097. #--------------------------------------------------------------------------     
  6098. def dispose_windows
  6099.      return if @command_window == nil
  6100.      @skill_window.each {|sprite| sprite.dispose }
  6101.      @command_window.dispose
  6102.      @actor_window.dispose
  6103.      @help_window.dispose
  6104. end
  6105.  
  6106. #--------------------------------------------------------------------------
  6107. # ● Dispose List Layout
  6108. #--------------------------------------------------------------------------      
  6109. def dispose_list_layout
  6110.      return if @list_layout == nil
  6111.      @list_layout.dispose
  6112.      @type_layout.dispose
  6113.      @list_layout = nil
  6114. end
  6115.  
  6116.   #--------------------------------------------------------------------------
  6117.   # ● Dispose Members Status
  6118.   #--------------------------------------------------------------------------            
  6119.   def dispose_members_status
  6120.       return if @members_status == nil
  6121.       @actor_status.dispose
  6122.       @actor_skill_status.dispose
  6123.       @members_status.each {|sprite| sprite.dispose }
  6124.   end   
  6125.  
  6126.   #--------------------------------------------------------------------------
  6127.   # ● Dispose Type Name
  6128.   #--------------------------------------------------------------------------   
  6129.   def dispose_type_name
  6130.       @type_name.bitmap.dispose
  6131.       @type_name.dispose
  6132.   end  
  6133.  
  6134. end
  6135.  
  6136. #==============================================================================
  6137. # ■ Scene Skill
  6138. #==============================================================================
  6139. class Scene_Skill
  6140.  
  6141.   #--------------------------------------------------------------------------
  6142.   # ● Update Sprites
  6143.   #--------------------------------------------------------------------------         
  6144.   def update_sprites   
  6145.       update_background
  6146.       update_particles     
  6147.       update_actor_status
  6148.       update_slide_item
  6149.       update_members_status
  6150.       update_windows
  6151.   end
  6152.  
  6153.   #--------------------------------------------------------------------------
  6154.   # ● Update Background
  6155.   #--------------------------------------------------------------------------              
  6156.   def update_background
  6157.       return if @background == nil
  6158.       @background.ox += @background_scroll[0]
  6159.       @background.oy += @background_scroll[1]
  6160.   end   
  6161.  
  6162.   #--------------------------------------------------------------------------
  6163.   # ● Update Particles
  6164.   #--------------------------------------------------------------------------  
  6165.   def update_particles
  6166.       return if @particles_sprite == nil
  6167.       @particles_sprite.each {|sprite| sprite.update }
  6168.   end
  6169.  
  6170.   #--------------------------------------------------------------------------
  6171.   # ● Update Windows
  6172.   #--------------------------------------------------------------------------   
  6173.   def update_windows
  6174.       @press_lag -= 1 if @press_lag > 0
  6175.       return if @command_window == nil
  6176.       for skw in @skill_window
  6177.           skw.update unless @press_lag > 0
  6178.           if skw.windows_index == @command_window.index
  6179.              skw.active = true
  6180.              if @phase == 0
  6181.                 skw.index = 0 if skw.index < 0 or skw.index >= skw.item_max
  6182.              end   
  6183.              skw.visible = true
  6184.           else   
  6185.              skw.visible = false
  6186.              skw.active = false
  6187.           end  
  6188.       end
  6189.       #@skill_window[@command_window.index].update
  6190.       @command_window.update   
  6191.       @actor_window.update
  6192.       update_actor_window_slide
  6193.       update_skill_list_slide
  6194.   end
  6195.  
  6196.   #--------------------------------------------------------------------------
  6197.   # ● Update Skill List Slide
  6198.   #--------------------------------------------------------------------------      
  6199.   def update_skill_list_slide
  6200.       return if @phase == 999
  6201.       if @actor_window.active or !@command_window.active
  6202.          if @command_window.x > @skill_list_slide_range[1]
  6203.             @command_window.x -= 15
  6204.             @command_window.x = @skill_list_slide_range[1] if @command_window.x < @skill_list_slide_range[1]
  6205.          end  
  6206.       else
  6207.          if @command_window.x < @skill_list_slide_range[0]
  6208.             @command_window.x += 15
  6209.             @command_window.x = @skill_list_slide_range[0] if @command_window.x > @skill_list_slide_range[0]
  6210.          end         
  6211.       end  
  6212.       @type_layout.x = @command_window.x
  6213.   end
  6214.  
  6215.   #--------------------------------------------------------------------------
  6216.   # ● Update Actor Window Slide
  6217.   #--------------------------------------------------------------------------  
  6218.   def update_actor_window_slide
  6219.       if @actor_window.active
  6220.          if @actor_window.x < @actor_window_slide_range[0]
  6221.             @actor_window.x += 15
  6222.             @actor_window.contents_opacity += 23
  6223.             if @actor_window.x >= @actor_window_slide_range[0]
  6224.                @actor_window.x = @actor_window_slide_range[0]
  6225.                @actor_window.contents_opacity = 255
  6226.             end  
  6227.          end  
  6228.       else         
  6229.          if @actor_window.x >= @actor_window_slide_range[1]
  6230.             @actor_window.x -= 15
  6231.             @actor_window.contents_opacity -= 3
  6232.             if @actor_window.x <= @actor_window_slide_range[1]
  6233.                @actor_window.x = @actor_window_slide_range[1]
  6234.                @actor_window.contents_opacity = 0
  6235.             end         
  6236.          end
  6237.       end
  6238.   end   
  6239.  
  6240.   #--------------------------------------------------------------------------
  6241.   # ● Update Actor Status
  6242.   #--------------------------------------------------------------------------               
  6243.   def update_actor_status
  6244.       refresh_actor_status(true) if @actor_window_index_old != @actor_window.index
  6245.   end  
  6246.  
  6247.   #--------------------------------------------------------------------------
  6248.   # ● Refresh Actor Status
  6249.   #--------------------------------------------------------------------------               
  6250.   def refresh_actor_status(reset = false)
  6251. #      @actor = $game_party.members[@actor_window.index]
  6252. #      @actor_window_index_old = @actor_window.index
  6253.   end  
  6254.  
  6255.   #--------------------------------------------------------------------------
  6256.   # ● Update Slide Item
  6257.   #--------------------------------------------------------------------------  
  6258.   def update_slide_item
  6259.       if @phase == 0
  6260.          @command_window.contents_opacity += 10
  6261.       else   
  6262.          @command_window.contents_opacity -= 10 if @command_window.contents_opacity > 160
  6263.       end  
  6264.       @type_layout.opacity = @command_window.contents_opacity
  6265.       @type_name.opacity = @skill_window[@command_window.index].contents_opacity
  6266.       if @phase == 1
  6267.          @skill_window[@command_window.index].contents_opacity += 5
  6268.          @list_layout.opacity += 5
  6269.       else   
  6270.          @skill_window[@command_window.index].contents_opacity -= 10 if @skill_window[@command_window.index].contents_opacity > 165
  6271.          @list_layout.opacity -= 10 if @list_layout.opacity > 160
  6272.       end  
  6273.       if @skill_window[@command_window.index].x > @item_slide_range[0]
  6274.          @skill_window[@command_window.index].x -= 3
  6275.          @list_layout.x -= 3
  6276.          if @skill_window[@command_window.index].x <= @item_slide_range[0]
  6277.             @skill_window[@command_window.index].x = @item_slide_range[0]
  6278.             @list_layout.x = @list_layout_slide_range[0]
  6279.          end  
  6280.       end  
  6281.   end   
  6282.  
  6283.   #--------------------------------------------------------------------------
  6284.   # ● Update Members Status
  6285.   #--------------------------------------------------------------------------            
  6286.   def update_members_status
  6287.       for members in @members_status
  6288.           members.update(@actor_window.active,@actor_window.index)
  6289.           @actor_2 = members.actor if members.current_actor
  6290.       end  
  6291.       @actor_2 = @actor if @actor_2 == nil
  6292.       @actor_skill_status.update
  6293.       @actor_status.update(@actor_window.active,@actor_2)
  6294.       #@members_status.each {|sprite| sprite.update(@actor_window.active,@actor_window.index) }
  6295.   end  
  6296.  
  6297. end
  6298.  
  6299. #==============================================================================
  6300. # ■ Scene_Skill
  6301. #==============================================================================
  6302. class Scene_Skill
  6303.  
  6304.   #--------------------------------------------------------------------------
  6305.   # ● Update
  6306.   #--------------------------------------------------------------------------      
  6307.   def update
  6308.       unless @skill_window[@command_window.index].index < 0
  6309.           @item_pre_index = @skill_window[@command_window.index].index
  6310.       end   
  6311.       update_command
  6312.       update_sprites
  6313.   end
  6314.  
  6315.   #--------------------------------------------------------------------------
  6316.   # ● Show Sub Window
  6317.   #--------------------------------------------------------------------------
  6318.   def show_sub_window(window)
  6319.       window.show.activate
  6320.   end
  6321.   #--------------------------------------------------------------------------
  6322.   # ● Hide Sub Window
  6323.   #--------------------------------------------------------------------------
  6324.   def hide_sub_window(window)
  6325.       window.hide.deactivate
  6326.       activate_item_window     
  6327.   end
  6328.  
  6329.   #--------------------------------------------------------------------------
  6330.   # ● Determine Item
  6331.   #--------------------------------------------------------------------------
  6332.   def determine_item
  6333.       if item.for_friend?         
  6334.          @phase = 2
  6335.          show_sub_window(@actor_window)
  6336.          @actor_window.select_for_item(item)   
  6337.          $game_temp.item_scope = @skill_window[@command_window.index].item.scope rescue nil
  6338.       else
  6339.          use_item
  6340.          activate_item_window
  6341.       end
  6342.   end  
  6343.  
  6344.   #--------------------------------------------------------------------------
  6345.   # ● ON Item OK
  6346.   #--------------------------------------------------------------------------
  6347.   def on_item_ok
  6348.       return if @press_time > 1
  6349.       @actor.last_skill.object = item
  6350.       determine_item
  6351.   end
  6352.  
  6353.   #--------------------------------------------------------------------------
  6354.   # ● Item
  6355.   #--------------------------------------------------------------------------
  6356.   def item
  6357.     @skill_window[@command_window.index].item
  6358.   end  
  6359.  
  6360.   #--------------------------------------------------------------------------
  6361.   # ● Use Item
  6362.   #--------------------------------------------------------------------------
  6363.   def use_item
  6364.       super
  6365.       @skill_window[@command_window.index].refresh if can_refresh_item_window?
  6366.   end  
  6367.  
  6368.   #--------------------------------------------------------------------------
  6369.   # ● Activate Item Window
  6370.   #--------------------------------------------------------------------------
  6371.   def activate_item_window   
  6372.     @skill_window[@command_window.index].refresh if can_refresh_item_window?
  6373.     @skill_window[@command_window.index].activate
  6374.   end  
  6375.  
  6376.   #--------------------------------------------------------------------------
  6377.   # ● On Item Cancel
  6378.   #--------------------------------------------------------------------------
  6379.   def on_item_cancel
  6380.       @skill_window[@command_window.index].unselect
  6381.       @command_window.activate
  6382.   end  
  6383.  
  6384.   #--------------------------------------------------------------------------
  6385.   # ● Can Refresh Item Window
  6386.   #--------------------------------------------------------------------------  
  6387.   def can_refresh_item_window?
  6388.       return true if @actor.mp < @skill_window[@command_window.index].item.mp_cost
  6389.       return true if @actor.tp < @skill_window[@command_window.index].item.tp_cost
  6390.       return false
  6391.   end
  6392.  
  6393. end
  6394.  
  6395. #==============================================================================
  6396. # ■ Scene_Item
  6397. #==============================================================================
  6398. class Scene_Skill
  6399.  
  6400.   #--------------------------------------------------------------------------
  6401.   # ● Update Command
  6402.   #--------------------------------------------------------------------------      
  6403.   def update_command
  6404.       @skill_window[@command_window.index].index = @item_pre_index        
  6405.       if @phase == 0
  6406.          update_main_command
  6407.       elsif @phase == 1
  6408.          update_item_window
  6409.       elsif @phase == 2        
  6410.          update_target_window
  6411.       end        
  6412.       update_active
  6413.   end
  6414.  
  6415.   #--------------------------------------------------------------------------
  6416.   # ● Command Skill
  6417.   #--------------------------------------------------------------------------
  6418.   def command_skill
  6419.       @skill_window[@command_window.index].activate
  6420.       @skill_window[@command_window.index].select_last
  6421.    # @item_window.activate
  6422.    # @item_window.select_last
  6423.   end  
  6424.  
  6425.   #--------------------------------------------------------------------------
  6426.   # ● Update Active
  6427.   #--------------------------------------------------------------------------      
  6428.   def update_active
  6429.       if @phase == 0
  6430.          @skill_window[@command_window.index].active = false
  6431.          @command_window.active = true
  6432.          @actor_window.active = false
  6433.       elsif @phase == 1
  6434.          @skill_window[@command_window.index].active = true
  6435.          @command_window.active = false
  6436.          @actor_window.active = false
  6437.       elsif @phase == 2
  6438.          @skill_window[@command_window.index].active = false
  6439.          @command_window.active = false
  6440.          @actor_window.active = true
  6441.       end
  6442.   end
  6443.  
  6444.   #--------------------------------------------------------------------------
  6445.   # ● Update Main Command
  6446.   #--------------------------------------------------------------------------        
  6447.   def update_main_command
  6448.       reset_item_index
  6449.       if Input.trigger?(:C) and @scene_active
  6450.          Sound.play_ok
  6451.          @phase = 1
  6452.          @press_time = 2
  6453.          @press_lag = 2
  6454.          @skill_window[@command_window.index].index = 0 if @skill_window[@command_window.index].index == -1
  6455.       elsif Input.trigger?(:B)
  6456.          return_scene
  6457.       end  
  6458.   end
  6459.  
  6460.   #--------------------------------------------------------------------------
  6461.   # ● Return Scene
  6462.   #--------------------------------------------------------------------------         
  6463.   def return_scene
  6464.       Sound.play_cancel
  6465.       SceneManager.return
  6466.     end
  6467.  
  6468.   #--------------------------------------------------------------------------
  6469.   # ● ON Actor Charge
  6470.   #--------------------------------------------------------------------------
  6471.   def on_actor_change
  6472.       @phase = 999
  6473.       $game_temp.actor_menu_temp = @actor
  6474.       SceneManager.goto(Scene_Skill)
  6475.   end
  6476.  
  6477.   #--------------------------------------------------------------------------
  6478.   # ● Reset Item Index
  6479.   #--------------------------------------------------------------------------            
  6480.   def reset_item_index
  6481.        return if @old_command_index == @command_window.index
  6482.        return if @command_window.index == -1
  6483.        @old_command_index = @command_window.index
  6484.        refresh_type_name
  6485.        reset_item_position
  6486.   end  
  6487.  
  6488.   #--------------------------------------------------------------------------
  6489.   # ● Reset Item Position
  6490.   #--------------------------------------------------------------------------              
  6491.   def reset_item_position
  6492.       @skill_window[@command_window.index].x = @item_slide_range[1]
  6493.       @skill_window[@command_window.index].contents_opacity = 160
  6494.       @list_layout.x = @list_layout_slide_range[1]
  6495.       @list_layout.opacity = 160
  6496.   end  
  6497.  
  6498. end
  6499.  
  6500. #==============================================================================
  6501. # ■ Scene_Skill
  6502. #==============================================================================
  6503. class Scene_Skill
  6504.  
  6505.   #--------------------------------------------------------------------------
  6506.   # ● Update Item Window
  6507.   #--------------------------------------------------------------------------               
  6508.   def update_item_window
  6509.       @press_time -= 1 if @press_time > 0
  6510.       update_item_command
  6511.       update_index_type
  6512.   end
  6513.  
  6514.   #--------------------------------------------------------------------------
  6515.   # ● Update Main Command
  6516.   #--------------------------------------------------------------------------        
  6517.   def update_item_command
  6518.       if Input.trigger?(:B)
  6519.          @phase = 0
  6520.          Sound.play_cancel
  6521.       end  
  6522.   end  
  6523.  
  6524.   #--------------------------------------------------------------------------
  6525.   # ● Update
  6526.   #--------------------------------------------------------------------------  
  6527.   def update_index_type
  6528.       return if @index_max <= 0
  6529.       return if @command_window == nil
  6530.       if Input.trigger?(:RIGHT)
  6531.          add_index(1)
  6532.       elsif Input.trigger?(:LEFT)   
  6533.          add_index(-1)
  6534.       end  
  6535.   end
  6536.  
  6537.   #--------------------------------------------------------------------------
  6538.   # ● Add Index
  6539.   #--------------------------------------------------------------------------   
  6540.   def add_index(value)
  6541.       Sound.play_cursor      
  6542.       @command_window.index += value
  6543.       @command_window.index = 0 if @command_window.index > @index_max
  6544.       @command_window.index = @index_max if @command_window.index < 0
  6545.       reset_item_index
  6546.   end   
  6547.  
  6548. end
  6549.  
  6550. #==============================================================================
  6551. # ■ Scene_Skill
  6552. #==============================================================================
  6553. class Scene_Skill
  6554.  
  6555.   #--------------------------------------------------------------------------
  6556.   # ● Update Item Window
  6557.   #--------------------------------------------------------------------------               
  6558.   def update_target_window
  6559.       update_target_command
  6560.   end
  6561.  
  6562.   #--------------------------------------------------------------------------
  6563.   # ● Update Main Command
  6564.   #--------------------------------------------------------------------------        
  6565.   def update_target_command
  6566.       if Input.trigger?(:B)
  6567.          @phase = 1
  6568.          @skill_window[@command_window.index].index = @item_pre_index
  6569.        end  
  6570.   end  
  6571.  
  6572. end
  6573.  
  6574.  
  6575. #==============================================================================
  6576. # ■ Game_Temp
  6577. #==============================================================================
  6578. class Game_Temp
  6579.  
  6580.   #--------------------------------------------------------------------------
  6581.   # ● Execute Pre Cache Skill Menu
  6582.   #--------------------------------------------------------------------------   
  6583.   def execute_pre_cache_equip_menu
  6584.       @pre_cache_equip_menu = []
  6585.       @pre_cache_equip_menu.push(Cache.menu_equip("Background"))
  6586.       @pre_cache_equip_menu.push(Cache.menu_equip("Layout_U"))
  6587.       @pre_cache_equip_menu.push(Cache.menu_equip("Layout_R"))
  6588.       @pre_cache_equip_menu.push(Cache.menu_equip("Layout_D"))
  6589.       @pre_cache_equip_menu.push(Cache.menu_equip("Layout_L"))
  6590.       @pre_cache_equip_menu.push(Cache.menu_equip("Par_Number"))
  6591.   end   
  6592.  
  6593. end
  6594.  
  6595. #==============================================================================
  6596. # ■ Scene_Skill
  6597. #==============================================================================
  6598. class Scene_Equip
  6599.   include MOG_MENU_EQUIP
  6600.   include MOG_MENU_BASE
  6601.  
  6602.   #--------------------------------------------------------------------------
  6603.   # ● Main
  6604.   #--------------------------------------------------------------------------        
  6605.   def main
  6606.       execute_setup
  6607.       execute_loop
  6608.       execute_dispose
  6609.   end  
  6610.  
  6611.   #--------------------------------------------------------------------------
  6612.   # ● Execute Setup
  6613.   #--------------------------------------------------------------------------        
  6614.   def execute_setup
  6615.       @actor = $game_temp.actor_menu_temp
  6616.       @actor_old = @actor
  6617.       @phase = 0
  6618.       create_sprites
  6619.   end
  6620.  
  6621.   #--------------------------------------------------------------------------
  6622.   # ● Execute Lopp
  6623.   #--------------------------------------------------------------------------        
  6624.   def execute_loop
  6625.       Graphics.transition(10)
  6626.       loop do
  6627.          Input.update
  6628.          update
  6629.          Graphics.update
  6630.          break if SceneManager.scene != self
  6631.       end
  6632.   end
  6633.  
  6634. end
  6635.  
  6636. #==============================================================================
  6637. # ■ Window_EquipStatus
  6638. #==============================================================================
  6639. class Window_EquipStatus < Window_Base
  6640.  
  6641.   #--------------------------------------------------------------------------
  6642.   # ● Initializee
  6643.   #--------------------------------------------------------------------------
  6644.   def initialize(x, y)
  6645.       super(x, y, window_width, window_height)
  6646.       @actor = nil
  6647.       @temp_actor = nil
  6648.       self.visible = false
  6649.   end
  6650.  
  6651.   #--------------------------------------------------------------------------
  6652.   # ● Window Width
  6653.   #--------------------------------------------------------------------------
  6654.   def window_width
  6655.       return 208
  6656.   end
  6657.  
  6658.   #--------------------------------------------------------------------------
  6659.   # ● Window Height
  6660.   #--------------------------------------------------------------------------
  6661.   def window_height
  6662.       return 296
  6663.   end
  6664.  
  6665.   #--------------------------------------------------------------------------
  6666.   # ● Visible Line Number
  6667.   #--------------------------------------------------------------------------
  6668.   def visible_line_number
  6669.       return 1
  6670.   end
  6671.   #--------------------------------------------------------------------------
  6672.   # ● Actor
  6673.   #--------------------------------------------------------------------------
  6674.   def actor=(actor)
  6675.       return if @actor == actor
  6676.       @actor = actor
  6677.   end
  6678.  
  6679.   #--------------------------------------------------------------------------
  6680.   # ● Refresh
  6681.   #--------------------------------------------------------------------------
  6682.   def refresh
  6683.       contents.clear
  6684.   end
  6685.  
  6686.   #--------------------------------------------------------------------------
  6687.   # ● Set Temp Actor
  6688.   #--------------------------------------------------------------------------
  6689.   def set_temp_actor(temp_actor)
  6690.       return if @temp_actor == temp_actor
  6691.       @temp_actor = temp_actor
  6692.       $game_temp.temp_actor_equip = @temp_actor
  6693.   end
  6694.  
  6695. end
  6696.  
  6697. #==============================================================================
  6698. # ■ Window_EquipCommand
  6699. #==============================================================================
  6700. class Window_EquipCommand < Window_HorzCommand
  6701.  
  6702.   #--------------------------------------------------------------------------
  6703.   # ● Initialize
  6704.   #--------------------------------------------------------------------------
  6705.   def initialize(x, y, width)
  6706.       @window_width = width
  6707.       super(x, y)
  6708.   end
  6709.  
  6710.   #--------------------------------------------------------------------------
  6711.   # ● Window Width
  6712.   #--------------------------------------------------------------------------
  6713.   def window_width
  6714.       @window_width
  6715.   end
  6716.  
  6717.   #--------------------------------------------------------------------------
  6718.   # ● Col Max
  6719.   #--------------------------------------------------------------------------
  6720.   def col_max
  6721.       return 3
  6722.   end
  6723.  
  6724.   #--------------------------------------------------------------------------
  6725.   # ● Make Command List
  6726.   #--------------------------------------------------------------------------
  6727.   def make_command_list
  6728.       add_command(Vocab::equip2,   :equip)
  6729.       add_command(Vocab::optimize, :optimize)
  6730.       add_command(Vocab::clear,    :clear)
  6731.   end
  6732.  
  6733.   #--------------------------------------------------------------------------
  6734.   # ● Draw Item
  6735.   #--------------------------------------------------------------------------  
  6736.   def draw_item(index)
  6737.   end  
  6738.  
  6739. end
  6740.  
  6741. #==============================================================================
  6742. # ■ Window_EquipSlot
  6743. #==============================================================================
  6744. class Window_EquipSlot < Window_Selectable
  6745.  
  6746.   attr_reader   :status_window        
  6747.   attr_reader   :item_window
  6748.  
  6749.   include MOG_MENU_EQUIP
  6750.  
  6751.   #--------------------------------------------------------------------------
  6752.   # ● Set Equip Font
  6753.   #--------------------------------------------------------------------------         
  6754.   def set_font_equip
  6755.       return if self.disposed?
  6756.       return if self.contents == nil
  6757.       self.contents.font.size = FONT_SIZE
  6758.       self.contents.font.bold = FONT_BOLD
  6759.   end  
  6760.  
  6761.   #--------------------------------------------------------------------------
  6762.   # ● Initialize
  6763.   #--------------------------------------------------------------------------
  6764.   def initialize(x, y, width)
  6765.       super(x, y, width, window_height)
  6766.       @actor = nil   
  6767.       refresh
  6768.   end
  6769.  
  6770.   #--------------------------------------------------------------------------
  6771.   # ● Window Height
  6772.   #--------------------------------------------------------------------------
  6773.   def window_height
  6774.       fitting_height(visible_line_number)
  6775.   end
  6776.  
  6777.   #--------------------------------------------------------------------------
  6778.   # ● Visible Line Number
  6779.   #--------------------------------------------------------------------------
  6780.   def visible_line_number
  6781.       return 5
  6782.   end
  6783.  
  6784.   #--------------------------------------------------------------------------
  6785.   # ● Actor
  6786.   #--------------------------------------------------------------------------
  6787.   def actor=(actor)
  6788.       return if @actor == actor
  6789.       @actor = actor
  6790.       refresh
  6791.   end
  6792.  
  6793.   #--------------------------------------------------------------------------
  6794.   # ● Update
  6795.   #--------------------------------------------------------------------------
  6796.   def update
  6797.       super
  6798.       @item_window.slot_id = index if @item_window
  6799.   end
  6800.  
  6801.   #--------------------------------------------------------------------------
  6802.   # ● Item Max
  6803.   #--------------------------------------------------------------------------
  6804.   def item_max
  6805.       @actor ? @actor.equip_slots.size : 0
  6806.   end
  6807.  
  6808.   #--------------------------------------------------------------------------
  6809.   # ● Item
  6810.   #--------------------------------------------------------------------------
  6811.   def item
  6812.       @actor ? @actor.equips[index] : nil
  6813.   end
  6814.  
  6815.   #--------------------------------------------------------------------------
  6816.   # ● Draw Item
  6817.   #--------------------------------------------------------------------------
  6818.   def draw_item(index)
  6819.       return unless @actor
  6820.       rect = item_rect_for_text(index)
  6821.       change_color(system_color, enable?(index))
  6822.       set_font_equip
  6823.       draw_item_name(@actor.equips[index], rect.x + 92, rect.y, enable?(index))
  6824.   end
  6825.  
  6826.   #--------------------------------------------------------------------------
  6827.   # ● Slot Name
  6828.   #--------------------------------------------------------------------------
  6829.   def slot_name(index)
  6830.       @actor ? Vocab::etype(@actor.equip_slots[index]) : ""
  6831.   end
  6832.  
  6833.   #--------------------------------------------------------------------------
  6834.   # ● Enable
  6835.   #--------------------------------------------------------------------------
  6836.   def enable?(index)
  6837.       @actor ? @actor.equip_change_ok?(index) : false
  6838.   end
  6839.  
  6840.   #--------------------------------------------------------------------------
  6841.   # ● Current Item Enabled
  6842.   #--------------------------------------------------------------------------
  6843.   def current_item_enabled?
  6844.     enable?(index)
  6845.   end
  6846.  
  6847.   #--------------------------------------------------------------------------
  6848.   # ● Status  Window
  6849.   #--------------------------------------------------------------------------
  6850.   def status_window=(status_window)
  6851.       @status_window = status_window
  6852.       call_update_help
  6853.   end
  6854.  
  6855.   #--------------------------------------------------------------------------
  6856.   # ● Item Window
  6857.   #--------------------------------------------------------------------------
  6858.   def item_window=(item_window)
  6859.       @item_window = item_window
  6860.       update
  6861.   end
  6862.  
  6863.   #--------------------------------------------------------------------------
  6864.   # ● Update Help
  6865.   #--------------------------------------------------------------------------
  6866.   def update_help
  6867.       super
  6868.       @help_window.set_item(item) if @help_window
  6869.       $game_temp.temp_actor_equip = nil if @status_window
  6870.   end
  6871.  
  6872. end
  6873.  
  6874. #==============================================================================
  6875. # ■ Window_EquipItem
  6876. #==============================================================================
  6877. class Window_EquipItem_Menu < Window_ItemList
  6878.  
  6879.   attr_reader   :status_window   
  6880.   attr_accessor :windows_index
  6881.  
  6882.   include MOG_MENU_EQUIP
  6883.  
  6884.   #--------------------------------------------------------------------------
  6885.   # ● Set Equip Font
  6886.   #--------------------------------------------------------------------------         
  6887.   def set_font_equip
  6888.       return if self.disposed?
  6889.       return if self.contents == nil
  6890.       self.contents.font.size = FONT_SIZE
  6891.       self.contents.font.bold = FONT_BOLD
  6892.   end  
  6893.  
  6894.   #--------------------------------------------------------------------------
  6895.   # ● Initialize
  6896.   #--------------------------------------------------------------------------
  6897.   def initialize(x, y, width, height)
  6898.       super
  6899.       @actor = nil
  6900.       @slot_id = 0
  6901.       @windows_index = 0
  6902.       self.visible = false
  6903.       self.opacity = 0
  6904.   end
  6905.  
  6906.   #--------------------------------------------------------------------------
  6907.   # ● Col Max
  6908.   #--------------------------------------------------------------------------
  6909.   def col_max
  6910.       return 1
  6911.   end  
  6912.  
  6913.   #--------------------------------------------------------------------------
  6914.   # ● Actor
  6915.   #--------------------------------------------------------------------------
  6916.   def actor=(actor)
  6917.       return if @actor == actor
  6918.       @actor = actor
  6919.       self.oy = 0
  6920.   end
  6921.  
  6922.   #--------------------------------------------------------------------------
  6923.   # ● Setup
  6924.   #--------------------------------------------------------------------------  
  6925.   def setup(actor,equip_type,index)
  6926.       @actor = actor
  6927.       @slot_id = equip_type
  6928.       @windows_index = index      
  6929.       refresh
  6930.   end  
  6931.  
  6932.   #--------------------------------------------------------------------------
  6933.   # ● Slot ID
  6934.   #--------------------------------------------------------------------------
  6935.   def slot_id=(slot_id)
  6936.   end
  6937.  
  6938.   #--------------------------------------------------------------------------
  6939.   # ● Include?
  6940.   #--------------------------------------------------------------------------
  6941.   def include?(item)
  6942.       return true if item == nil
  6943.       return false unless item.is_a?(RPG::EquipItem)
  6944.       return false if @slot_id < 0
  6945.       return false if item.etype_id != @actor.equip_slots[@slot_id]
  6946.       return @actor.equippable?(item)
  6947.   end
  6948.  
  6949.   #--------------------------------------------------------------------------
  6950.   # ● Enable?
  6951.   #--------------------------------------------------------------------------
  6952.   def enable?(item)
  6953.       return true
  6954.   end
  6955.  
  6956.   #--------------------------------------------------------------------------
  6957.   # ● Select Last
  6958.   #--------------------------------------------------------------------------
  6959.   def select_last
  6960.   end
  6961.  
  6962.   #--------------------------------------------------------------------------
  6963.   # ● Status Window
  6964.   #--------------------------------------------------------------------------
  6965.   def status_window=(status_window)
  6966.       @status_window = status_window
  6967.       call_update_help
  6968.   end
  6969.  
  6970.   #--------------------------------------------------------------------------
  6971.   # ● Update Help
  6972.   #--------------------------------------------------------------------------
  6973.   def update_help
  6974.       super
  6975.       if @actor && @status_window
  6976.          temp_actor = Marshal.load(Marshal.dump(@actor))
  6977.          temp_actor.force_change_equip(@slot_id, item)
  6978.          $game_temp.temp_actor_equip = temp_actor
  6979.       end
  6980.   end
  6981.  
  6982.   #--------------------------------------------------------------------------
  6983.   # ● Draw Item
  6984.   #--------------------------------------------------------------------------
  6985.   def draw_item(index)
  6986.       item = @data[index]
  6987.       if item
  6988.           set_font_equip
  6989.           rect = item_rect(index)
  6990.           rect.width -= 4
  6991.           draw_item_name(item, rect.x, rect.y, enable?(item))
  6992.           draw_item_number(rect, item)
  6993.       end
  6994.   end      
  6995.  
  6996.   #--------------------------------------------------------------------------
  6997.   # ● Draw Item Number
  6998.   #--------------------------------------------------------------------------
  6999.   def draw_item_number(rect, item)
  7000.       draw_text(rect, sprintf(": %2d", $game_party.item_number(item)), 2)
  7001.   end  
  7002.  
  7003. end
  7004.  
  7005. #==============================================================================
  7006. # ■ Actor Menu Status
  7007. #==============================================================================
  7008. class Actor_Equip_Status
  7009.  
  7010.   include MOG_EQUIP_STATUS  
  7011.  
  7012.   #--------------------------------------------------------------------------
  7013.   # ● Initialize
  7014.   #--------------------------------------------------------------------------
  7015.   def initialize(actor)
  7016.       @actor = actor
  7017.       @actor_old = @actor
  7018.       $game_temp.temp_actor_equip = nil
  7019.       @old_temp_actor = $game_temp.temp_actor_equip
  7020.       set_old_parameter
  7021.       create_sprites
  7022.   end
  7023.  
  7024.   #--------------------------------------------------------------------------
  7025.   # ● Create Sprites
  7026.   #--------------------------------------------------------------------------  
  7027.   def create_sprites
  7028.       @parameter_number = $game_temp.pre_cache_equip_menu[5]
  7029.       @parameter_cw = @parameter_number.width / 11
  7030.       @parameter_ch = @parameter_number.height / 3
  7031.       create_layout
  7032.       create_face
  7033.       create_parameter
  7034.       create_name
  7035.   end
  7036.  
  7037.   #--------------------------------------------------------------------------
  7038.   # ● Dispose
  7039.   #--------------------------------------------------------------------------  
  7040.   def dispose
  7041.       dispose_layout
  7042.       dispose_face
  7043.       dispose_parameter
  7044.       dispose_name
  7045.   end
  7046.  
  7047.   #--------------------------------------------------------------------------
  7048.   # ● Dispose Layout
  7049.   #--------------------------------------------------------------------------   
  7050.   def dispose_layout
  7051.       @layout.dispose
  7052.   end
  7053.  
  7054.   #--------------------------------------------------------------------------
  7055.   # ● Dispose Face
  7056.   #--------------------------------------------------------------------------   
  7057.   def dispose_face
  7058.       @face.dispose
  7059.   end  
  7060.  
  7061.   #--------------------------------------------------------------------------
  7062.   # ● Dispose Parameter
  7063.   #--------------------------------------------------------------------------      
  7064.   def dispose_parameter
  7065.       @parameter.bitmap.dispose
  7066.       @parameter.dispose
  7067.   end
  7068.  
  7069.   #--------------------------------------------------------------------------
  7070.   # ● Dispose Name
  7071.   #--------------------------------------------------------------------------        
  7072.   def dispose_name
  7073.       @name.bitmap.dispose
  7074.       @name.dispose
  7075.   end
  7076.  
  7077.   #--------------------------------------------------------------------------
  7078.   # ● Create Layout
  7079.   #--------------------------------------------------------------------------
  7080.   def create_layout
  7081.       @layout = Sprite.new
  7082.       @layout.bitmap = $game_temp.pre_cache_equip_menu[4]
  7083.       @org_pos = [LAYOUT_POSITION[0],LAYOUT_POSITION[1]]
  7084.       @layout.x = @org_pos[0] - 150
  7085.       @layout.y = @org_pos[1]
  7086.       @layout.z = 10
  7087.       @layout.opacity = 0
  7088.       @slide_range = (@org_pos[0] - 150)
  7089.   end
  7090.  
  7091.   #--------------------------------------------------------------------------
  7092.   # ● Create Parameter
  7093.   #--------------------------------------------------------------------------
  7094.   def create_parameter
  7095.       @parameter = Sprite.new
  7096.       @parameter.bitmap = Bitmap.new(@layout.bitmap.width,@layout.bitmap.height)
  7097.       @org_pos_par = [@org_pos[0] + PAR_POSITION[0],
  7098.                       @org_pos[1] + PAR_POSITION[1]]
  7099.       @parameter.x = @org_pos_par[0] - 150
  7100.       @parameter.y = @org_pos_par[1]
  7101.       @parameter.z = 11
  7102.       @parameter.opacity = 0
  7103.       refresh_parameter
  7104.   end
  7105.  
  7106.   #--------------------------------------------------------------------------
  7107.   # ● Create Face
  7108.   #--------------------------------------------------------------------------  
  7109.   def create_face
  7110.       @face = Sprite.new
  7111.       @org_pos_face = [@org_pos[0] + FACE_POSITION[0],
  7112.                        @org_pos[1] + FACE_POSITION[1]]
  7113.       @face.x = @org_pos_face[0] - 150
  7114.       @face.y = @org_pos_face[1]
  7115.       @face.z = 11
  7116.       @face.opacity = 0
  7117.       refresh_face
  7118.   end
  7119.  
  7120.   #--------------------------------------------------------------------------
  7121.   # ● Create Name
  7122.   #--------------------------------------------------------------------------   
  7123.   def create_name
  7124.       @name = Sprite.new
  7125.       @name.bitmap = Bitmap.new(140,32)
  7126.       @name.bitmap.font.size = FONT_SIZE
  7127.       @name.bitmap.font.bold = FONT_BOLD
  7128.       @org_pos_name = [@org_pos[0] + NAME_POSITION[0],
  7129.                        @org_pos[1] + NAME_POSITION[1]]
  7130.       @name.x = @org_pos_name[0] - 150
  7131.       @name.y = @org_pos_name[1]
  7132.       @name.z = 11
  7133.       @name.opacity = 0
  7134.       refresh_name     
  7135.   end  
  7136.  
  7137.   #--------------------------------------------------------------------------
  7138.   # ● Set Old Parameter
  7139.   #--------------------------------------------------------------------------  
  7140.   def set_old_parameter
  7141.       @par = [] if @par == nil
  7142.       @par.clear
  7143.       @par = [
  7144.       @actor.param(0),@actor.param(1),@actor.param(2),@actor.param(3),
  7145.       @actor.param(4),@actor.param(5),@actor.param(6),@actor.param(7),
  7146.       @old_temp_actor
  7147.       ]
  7148.   end   
  7149.  
  7150.   #--------------------------------------------------------------------------
  7151.   # ● Can Refresh Parameter
  7152.   #--------------------------------------------------------------------------
  7153.   def can_refresh_parameter?
  7154.       return true if @par[0] != @actor.param(0)
  7155.       return true if @par[1] != @actor.param(1)
  7156.       return true if @par[2] != @actor.param(2)
  7157.       return true if @par[3] != @actor.param(3)
  7158.       return true if @par[4] != @actor.param(4)
  7159.       return true if @par[5] != @actor.param(5)
  7160.       return true if @par[6] != @actor.param(6)
  7161.       return true if @par[7] != @actor.param(7)
  7162.       return true if @old_temp_actor != $game_temp.temp_actor_equip
  7163.       return false
  7164.   end  
  7165.  
  7166.   #--------------------------------------------------------------------------
  7167.   # ● Refresh Name
  7168.   #--------------------------------------------------------------------------      
  7169.   def refresh_name   
  7170.       @name.bitmap.clear
  7171.       @name.bitmap.draw_text(0,0,140,32,@actor.name.to_s,0)
  7172.   end
  7173.  
  7174.   #--------------------------------------------------------------------------
  7175.   # ● Create Face
  7176.   #--------------------------------------------------------------------------   
  7177.   def refresh_parameter
  7178.       set_old_parameter
  7179.       @parameter.bitmap.clear
  7180.       @old_temp_actor = $game_temp.temp_actor_equip
  7181.       x = 180      
  7182.       for p in 0...8
  7183.           y = 24 * p
  7184.           refresh_number(@parameter,@parameter_number,p,@parameter_cw,@parameter_ch,x,y,0)
  7185.       end      
  7186.       if $game_temp.temp_actor_equip != nil
  7187.          x = 180 - (@parameter_cw * 7)
  7188.          for p in 0...8
  7189.              y = 24 * p
  7190.              refresh_number(@parameter,@parameter_number,p,@parameter_cw,@parameter_ch,x,y,1)
  7191.          end     
  7192.      end
  7193.   end
  7194.  
  7195.   #--------------------------------------------------------------------------
  7196.   # ● Refresh Number
  7197.   #--------------------------------------------------------------------------     
  7198.   def refresh_number(sprite,image,p,number_cw,number_ch,x,y,type)
  7199.       value = @actor.param(p)
  7200.       new_value = 0
  7201.       ch = 0
  7202.       if type == 1         
  7203.          if $game_temp.temp_actor_equip != nil
  7204.             new_value = $game_temp.temp_actor_equip.param(p)
  7205.          end         
  7206.          d_value = new_value - value
  7207.          if d_value < 0
  7208.             ch = 2
  7209.          elsif d_value > 0
  7210.             ch = 1
  7211.          else
  7212.             ch = 0
  7213.          end   
  7214.          value = new_value
  7215.       end
  7216.       draw_arrow(sprite,image,number_cw,number_ch,x,y,ch)
  7217.       draw_number(sprite,image,value,number_cw,number_ch,x,y,ch)
  7218.   end
  7219.  
  7220.   #--------------------------------------------------------------------------
  7221.   # ● Draw Arrow
  7222.   #--------------------------------------------------------------------------        
  7223.   def draw_arrow(sprite,image,number_cw,number_ch,x,y,ch)
  7224.       nsrc_rect = Rect.new(number_cw * 10, number_ch * ch , number_cw , number_ch)
  7225.       sprite.bitmap.blt(x + number_cw, y, image, nsrc_rect)     
  7226.   end
  7227.  
  7228.   #--------------------------------------------------------------------------
  7229.   # ● Draw Number
  7230.   #--------------------------------------------------------------------------      
  7231.   def draw_number(sprite,image,value,number_cw,number_ch,x,y,ch)
  7232.       number = value.truncate.abs.to_s.split(//)
  7233.       x2 = -number_cw * number.size
  7234.       for i in 0..number.size  - 1
  7235.           number_abs = number[i].to_i
  7236.           nsrc_rect = Rect.new(number_cw * number_abs, number_ch * ch , number_cw , number_ch)
  7237.           sprite.bitmap.blt(x + x2 + (number_cw  *  i), y, image, nsrc_rect)        
  7238.       end      
  7239.   end
  7240.  
  7241.   #--------------------------------------------------------------------------
  7242.   # ● Refresh Face
  7243.   #--------------------------------------------------------------------------  
  7244.   def refresh_face
  7245.       face_name = "Face" + @actor.id.to_s
  7246.       @face.bitmap = Cache.menu(face_name.to_s)
  7247.   end
  7248.  
  7249.   #--------------------------------------------------------------------------
  7250.   # ● Update Move
  7251.   #--------------------------------------------------------------------------  
  7252.   def update_move
  7253.       update_slide(0,@layout,@layout.x,@org_pos[0])
  7254.       update_slide(1,@layout,@layout.y,@org_pos[1])      
  7255.       update_slide(0,@parameter,@parameter.x,@org_pos_par[0])
  7256.       update_slide(1,@parameter,@parameter.y,@org_pos_par[1])
  7257.       update_slide(0,@face,@face.x,@org_pos_face[0])
  7258.       update_slide(1,@face,@face.y,@org_pos_face[1])
  7259.       update_slide(0,@name,@name.x,@org_pos_name[0])
  7260.       update_slide(1,@name,@name.y,@org_pos_name[1])
  7261.   end
  7262.  
  7263. #--------------------------------------------------------------------------
  7264. # ● Update Slide
  7265. #--------------------------------------------------------------------------                       
  7266.   def update_slide(type,sprite,cp,np)
  7267.       sprite.opacity += 5
  7268.       sp = 3 + ((cp - np).abs / 10)
  7269.       if cp > np
  7270.          cp -= sp
  7271.          cp = np if cp < np
  7272.       elsif cp < np
  7273.          cp += sp
  7274.          cp = np if cp > np
  7275.       end     
  7276.       sprite.x = cp if type == 0
  7277.       sprite.y = cp if type == 1
  7278.   end      
  7279.  
  7280.   #--------------------------------------------------------------------------
  7281.   # ● Refresh All
  7282.   #--------------------------------------------------------------------------  
  7283.   def refresh_all(actor)      
  7284.       @actor = actor
  7285.       refresh_parameter
  7286.       refresh_face
  7287.       refresh_name
  7288.   end   
  7289.  
  7290.   #--------------------------------------------------------------------------
  7291.   # ● Update
  7292.   #--------------------------------------------------------------------------
  7293.   def update(actor)
  7294.       update_move
  7295.       refresh_all(actor) if actor != @actor
  7296.       refresh_parameter if can_refresh_parameter?
  7297.   end      
  7298.  
  7299. end
  7300.  
  7301. #==============================================================================
  7302. # ■ Scene_Equip
  7303. #==============================================================================
  7304. class Scene_Equip
  7305.  
  7306.   #--------------------------------------------------------------------------
  7307.   # ● Create Sprites
  7308.   #--------------------------------------------------------------------------
  7309.   def create_sprites
  7310.       create_menu_background
  7311.       create_layout
  7312.       create_particles
  7313.       create_help_window
  7314.       create_status_window
  7315.       create_command_window
  7316.       create_slot_window
  7317.       create_item_window
  7318.       create_actor_status
  7319.       set_sprite_position
  7320.   end
  7321.  
  7322.   #--------------------------------------------------------------------------
  7323.   # ● Set Sprite Position
  7324.   #--------------------------------------------------------------------------  
  7325.   def set_sprite_position
  7326.       @status_window.opacity = 0
  7327.       @command_window.opacity = 0
  7328.       @slot_window.opacity = 0
  7329.       @help_window.opacity = 0
  7330.       @status_window.contents_opacity = 0
  7331.       @command_window.contents_opacity = 0
  7332.       @slot_window.contents_opacity = 0
  7333.       @help_window.contents_opacity = 0      
  7334.       @layout2.opacity = 0
  7335.       @layout3.opacity = 0
  7336.       @layout4.opacity = 0
  7337.       @org_pos_help = [@help_window.x,@help_window.y]
  7338.       @help_window.x = @org_pos_help[0]
  7339.       @help_window.y = @org_pos_help[1] + 150     
  7340.       @org_pos_com = [@command_window.x,@command_window.y]
  7341.       @command_window.x = @org_pos_com[0]
  7342.       @command_window.y = @org_pos_com[1] - 150
  7343.       @org_pos_slot = [@slot_window.x,@slot_window.y]
  7344.       @slot_window.x = @org_pos_slot[0] + 150
  7345.       @slot_window.y = @org_pos_slot[1]      
  7346.       @layout2.y = -150
  7347.       @layout3.x = 150
  7348.       @layout4.y = 150      
  7349.   end
  7350.  
  7351.   #--------------------------------------------------------------------------
  7352.   # ● Create Actor Status
  7353.   #--------------------------------------------------------------------------  
  7354.   def create_actor_status
  7355.       @actor_status = Actor_Equip_Status.new(@actor)
  7356.   end  
  7357.  
  7358.   #--------------------------------------------------------------------------
  7359.   # ● Create Menu Background
  7360.   #--------------------------------------------------------------------------            
  7361.   def create_menu_background
  7362.       @background = Plane.new
  7363.       @background.bitmap = $game_temp.pre_cache_equip_menu[0]
  7364.       @background.z = 0
  7365.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  7366.   end   
  7367.  
  7368.   #--------------------------------------------------------------------------
  7369.   # ● Create Layout
  7370.   #--------------------------------------------------------------------------              
  7371.   def create_layout     
  7372.       @layout2 = Sprite.new
  7373.       @layout2.bitmap = $game_temp.pre_cache_equip_menu[1]
  7374.       @layout2.z = 3
  7375.       @layout3 = Sprite.new
  7376.       @layout3.bitmap = $game_temp.pre_cache_equip_menu[2]
  7377.       @layout3.z = 3
  7378.       @layout4 = Sprite.new
  7379.       @layout4.bitmap = $game_temp.pre_cache_equip_menu[3]
  7380.       @layout4.z = 3
  7381.   end  
  7382.  
  7383.   #--------------------------------------------------------------------------
  7384.   # ● Create Particles
  7385.   #--------------------------------------------------------------------------  
  7386.   def create_particles
  7387.       @particles_sprite =[]
  7388.       for i in 0...NUMBER_OF_PARTICLES
  7389.           @particles_sprite.push(Particles_Menu.new(nil))
  7390.       end
  7391.   end   
  7392.  
  7393.   #--------------------------------------------------------------------------
  7394.   # ● Create Help Window
  7395.   #--------------------------------------------------------------------------              
  7396.   def create_help_window
  7397.       @help_window = Window_Help.new
  7398.       @help_window.x = 0
  7399.       @help_window.y = Graphics.height - @help_window.height
  7400.   end     
  7401.  
  7402.   #--------------------------------------------------------------------------
  7403.   # ● Create Status Window
  7404.   #--------------------------------------------------------------------------
  7405.   def create_status_window
  7406.       @status_window = Window_EquipStatus.new(0, @help_window.height)
  7407.       @status_window.viewport = @viewport
  7408.       @status_window.actor = @actor
  7409.       @status_window.y = 48
  7410.   end
  7411.  
  7412.   #--------------------------------------------------------------------------
  7413.   # ● Create Command Window
  7414.   #--------------------------------------------------------------------------
  7415.   def create_command_window
  7416.       @command_window = Window_EquipCommand.new(208, 0, 336)
  7417.       @command_window.help_window = @help_window
  7418.       @command_window.set_handler(:equip,    method(:command_equip))
  7419.       @command_window.set_handler(:optimize, method(:command_optimize))
  7420.       @command_window.set_handler(:clear,    method(:command_clear))
  7421.       @command_window.set_handler(:cancel,   method(:return_scene))
  7422.       @command_window.set_handler(:pagedown, method(:next_actor))
  7423.       @command_window.set_handler(:pageup,   method(:prev_actor))
  7424.   end
  7425.  
  7426.   #--------------------------------------------------------------------------
  7427.   # ● Create Slot Window
  7428.   #--------------------------------------------------------------------------
  7429.   def create_slot_window
  7430.       wx = @status_window.width
  7431.       wy = @command_window.y + @command_window.height + 5
  7432.       ww = Graphics.width - @status_window.width
  7433.       @slot_window = Window_EquipSlot.new(wx, wy, ww)
  7434.       @slot_window.help_window = @help_window
  7435.       @slot_window.status_window = @status_window
  7436.       @slot_window.actor = @actor
  7437.       @slot_window.set_handler(:ok,       method(:on_slot_ok))
  7438.       @slot_window.set_handler(:cancel,   method(:on_slot_cancel))
  7439.       @slot_window.set_handler(:pagedown, method(:next_actor))
  7440.       @slot_window.set_handler(:pageup,   method(:prev_actor))  
  7441.   end
  7442.  
  7443.   #--------------------------------------------------------------------------
  7444.   # ● Create Item Window
  7445.   #--------------------------------------------------------------------------
  7446.   def create_item_window
  7447.       @equip_window = []
  7448.       index = 0
  7449.       window_max = 5
  7450.       for item in 0...window_max     
  7451.           wx = @slot_window.x
  7452.           wy = @slot_window.y + @slot_window.height + 5
  7453.           ww = @slot_window.width
  7454.           wh = @slot_window.height - 5
  7455.           @equip_window.push(Window_EquipItem_Menu.new(wx, wy, ww, wh))
  7456.           @equip_window[item].setup(@actor,item, index)
  7457.           @equip_window[item].visible = false
  7458.           @equip_window[item].help_window = @help_window
  7459.           @equip_window[item].status_window = @status_window
  7460.           @equip_window[item].actor = @actor
  7461.           @equip_window[item].set_handler(:ok,     method(:on_item_ok))
  7462.           @equip_window[item].set_handler(:cancel, method(:on_item_cancel))
  7463.           @equip_window[item].opacity = 0
  7464.           @org_pos_equip = [@equip_window[item].x,@equip_window[item].y]
  7465.           index += 1
  7466.        end     
  7467.  
  7468.    end
  7469.  
  7470. end
  7471.  
  7472. #==============================================================================
  7473. # ■ Scene_Equip
  7474. #==============================================================================
  7475. class Scene_Equip
  7476.  
  7477.   #--------------------------------------------------------------------------
  7478.   # ● Execute Dispose
  7479.   #--------------------------------------------------------------------------        
  7480.   def execute_dispose
  7481.       Graphics.freeze
  7482.       dispose_background
  7483.       dispose_layout
  7484.       dispose_particles
  7485.       dispose_window
  7486.       dispose_actor_status
  7487.   end
  7488.  
  7489.   #--------------------------------------------------------------------------
  7490.   # ● Dispose Background
  7491.   #--------------------------------------------------------------------------  
  7492.   def dispose_background
  7493.       return if @background == nil
  7494.       @background.dispose
  7495.       @background = nil
  7496.   end
  7497.  
  7498.   #--------------------------------------------------------------------------
  7499.   # ● Dispose Layout
  7500.   #--------------------------------------------------------------------------               
  7501.   def dispose_layout
  7502.       return if @layout2 == nil
  7503.       @layout2.dispose
  7504.       @layout3.dispose
  7505.       @layout4.dispose
  7506.       @layout2 = nil
  7507.   end  
  7508.  
  7509. #--------------------------------------------------------------------------
  7510. # ● Dispose Particles
  7511. #--------------------------------------------------------------------------   
  7512. def dispose_particles
  7513.      return if @particles_sprite == nil
  7514.      @particles_sprite.each {|sprite| sprite.dispose }
  7515. end     
  7516.  
  7517.   #--------------------------------------------------------------------------
  7518.   # ● Dispose Window
  7519.   #--------------------------------------------------------------------------         
  7520.   def dispose_window
  7521.       @status_window.dispose
  7522.       @command_window.dispose
  7523.       @slot_window.dispose
  7524.       @equip_window.each {|sprite| sprite.dispose }
  7525.       @help_window.dispose
  7526.   end  
  7527.  
  7528.   #--------------------------------------------------------------------------
  7529.   # ● Dispose Actor Status
  7530.   #--------------------------------------------------------------------------  
  7531.   def dispose_actor_status
  7532.       return if @actor_status == nil
  7533.       @actor_status.dispose
  7534.   end   
  7535.  
  7536. end
  7537.  
  7538. #==============================================================================
  7539. # ■ Scene_Equip
  7540. #==============================================================================
  7541. class Scene_Equip   
  7542.  
  7543.   #--------------------------------------------------------------------------
  7544.   # ● Update Sprites
  7545.   #--------------------------------------------------------------------------         
  7546.   def update_sprites
  7547.       update_actor_status
  7548.       update_background
  7549.       update_particles
  7550.       update_window
  7551.       update_move
  7552.   end
  7553.  
  7554.   #--------------------------------------------------------------------------
  7555.   # ● Update Move
  7556.   #--------------------------------------------------------------------------
  7557.   def update_move
  7558.  
  7559.       update_slide(0,@command_window,@org_pos_com[0],0)
  7560.       update_slide(1,@command_window,@org_pos_com[1],0)
  7561.  
  7562.       update_slide(0,@help_window,@org_pos_help[0],0)
  7563.       update_slide(1,@help_window,@org_pos_help[1],0)      
  7564.  
  7565.       update_slide(0,@slot_window,@org_pos_slot[0],0)
  7566.       update_slide(1,@slot_window,@org_pos_slot[1],0)        
  7567.  
  7568.       update_slide(0,@layout2,0,1)
  7569.       update_slide(1,@layout2,0,1)
  7570.  
  7571.       update_slide(0,@layout3,0,1)
  7572.       update_slide(1,@layout3,0,1)      
  7573.  
  7574.       update_slide(0,@layout4,0,1)
  7575.       update_slide(1,@layout4,0,1)      
  7576.  
  7577.   end
  7578.  
  7579. #--------------------------------------------------------------------------
  7580. # ● Update Slide
  7581. #--------------------------------------------------------------------------                       
  7582.   def update_slide(type,sprite,np,op_type)
  7583.       if op_type == 0
  7584.          sprite.contents_opacity += 5
  7585.       else
  7586.          sprite.opacity += 5
  7587.       end
  7588.       cp = type == 0 ? sprite.x : sprite.y
  7589.       sp = 3 + ((cp - np).abs / 10)
  7590.       if cp > np
  7591.          cp -= sp
  7592.          cp = np if cp < np
  7593.       elsif cp < np
  7594.          cp += sp
  7595.          cp = np if cp > np
  7596.       end     
  7597.       sprite.x = cp if type == 0
  7598.       sprite.y = cp if type == 1
  7599.   end   
  7600.  
  7601.   #--------------------------------------------------------------------------
  7602.   # ● Update Actor Status
  7603.   #--------------------------------------------------------------------------            
  7604.   def update_actor_status
  7605.       return if @actor_status == nil
  7606.       @actor_status.update(@actor)
  7607.   end
  7608.  
  7609.   #--------------------------------------------------------------------------
  7610.   # ● Update Background
  7611.   #--------------------------------------------------------------------------              
  7612.   def update_background
  7613.       return if @background == nil
  7614.       @background.ox += @background_scroll[0]
  7615.       @background.oy += @background_scroll[1]
  7616.   end   
  7617.  
  7618.   #--------------------------------------------------------------------------
  7619.   # ● Update Particles
  7620.   #--------------------------------------------------------------------------  
  7621.   def update_particles
  7622.       return if @particles_sprite == nil
  7623.       @particles_sprite.each {|sprite| sprite.update }
  7624.   end  
  7625.  
  7626.   #--------------------------------------------------------------------------
  7627.   # ● Update Window
  7628.   #--------------------------------------------------------------------------            
  7629.   def update_window
  7630.       @status_window.update
  7631.       @command_window.update
  7632.       @slot_window.update
  7633.       for equip in @equip_window
  7634.           update_slide(0,equip,@org_pos_equip[0],0)
  7635.           update_slide(1,equip,@org_pos_equip[1],0)           
  7636.           if equip.windows_index == @slot_window.index
  7637.              equip.visible = true
  7638.              equip.update  
  7639.           else
  7640.              equip.visible = false
  7641.           end
  7642.       end  
  7643.   end
  7644.  
  7645. end
  7646.  
  7647. #==============================================================================
  7648. # ■ Scene_Equip
  7649. #==============================================================================
  7650. class Scene_Equip
  7651.  
  7652.   #--------------------------------------------------------------------------
  7653.   # ● Update
  7654.   #--------------------------------------------------------------------------      
  7655.   def update
  7656.       update_sprites
  7657.       update_command
  7658.   end
  7659.  
  7660.   #--------------------------------------------------------------------------
  7661.   # ● Command Equip
  7662.   #--------------------------------------------------------------------------
  7663.   def command_equip
  7664.       @slot_window.activate
  7665.       @slot_window.select(0)
  7666.   end
  7667.  
  7668.   #--------------------------------------------------------------------------
  7669.   # ● Command Optimize
  7670.   #--------------------------------------------------------------------------
  7671.   def command_optimize
  7672.       Sound.play_equip
  7673.       @actor.optimize_equipments
  7674.       @status_window.refresh
  7675.       @slot_window.refresh
  7676.       @command_window.activate
  7677.   end
  7678.  
  7679.   #--------------------------------------------------------------------------
  7680.   # ● Command Clear
  7681.   #--------------------------------------------------------------------------
  7682.   def command_clear
  7683.       Sound.play_equip
  7684.       @actor.clear_equipments
  7685.       @status_window.refresh
  7686.       @slot_window.refresh
  7687.       @command_window.activate
  7688.   end
  7689.  
  7690.   #--------------------------------------------------------------------------
  7691.   # ● On Slot OK
  7692.   #--------------------------------------------------------------------------
  7693.   def on_slot_ok
  7694.       @equip_window[@slot_window.index].activate
  7695.       @equip_window[@slot_window.index].select(0)
  7696.   end
  7697.  
  7698.   #--------------------------------------------------------------------------
  7699.   # ● On Slot Cancel
  7700.   #--------------------------------------------------------------------------
  7701.   def on_slot_cancel
  7702.       @slot_window.unselect
  7703.       @command_window.activate
  7704.   end
  7705.  
  7706.   #--------------------------------------------------------------------------
  7707.   # ● On Item OK
  7708.   #--------------------------------------------------------------------------
  7709.   def on_item_ok
  7710.       Sound.play_equip
  7711.       @actor.change_equip(@slot_window.index, @equip_window[@slot_window.index].item)
  7712.       @slot_window.activate
  7713.       @slot_window.refresh
  7714.       @equip_window.each do |i| i.refresh; i.index = 0; i.unselect end
  7715.   end
  7716.  
  7717.   #--------------------------------------------------------------------------
  7718.   # ● On Item Cancel
  7719.   #--------------------------------------------------------------------------
  7720.   def on_item_cancel
  7721.       @slot_window.activate
  7722.       @equip_window[@slot_window.index].unselect
  7723.   end
  7724.  
  7725.   #--------------------------------------------------------------------------
  7726.   # ● Return Scene
  7727.   #--------------------------------------------------------------------------         
  7728.   def return_scene
  7729.       Sound.play_cancel
  7730.       SceneManager.return
  7731.     end
  7732.  
  7733.   #--------------------------------------------------------------------------
  7734.   # ● ON Actor Charge
  7735.   #--------------------------------------------------------------------------
  7736.   def on_actor_change
  7737.       $game_temp.actor_menu_temp = @actor
  7738.       SceneManager.goto(Scene_Equip)
  7739.   end  
  7740.  
  7741. end
  7742.  
  7743. #==============================================================================
  7744. # ■ Scene_Equip
  7745. #==============================================================================
  7746. class Scene_Equip
  7747.  
  7748.   #--------------------------------------------------------------------------
  7749.   # ● Update Command
  7750.   #--------------------------------------------------------------------------      
  7751.   def update_command
  7752.  
  7753.   end
  7754.  
  7755. end
  7756.  
  7757. #==============================================================================
  7758. # ■ Game_Temp
  7759. #==============================================================================
  7760. class Game_Temp
  7761.  
  7762.   #--------------------------------------------------------------------------
  7763.   # ● Execute Pre Cache Status Menu
  7764.   #--------------------------------------------------------------------------   
  7765.   def execute_pre_cache_status_menu
  7766.       @pre_cache_status_menu = []
  7767.       @pre_cache_status_menu.push(Cache.menu_status("Background"))
  7768.       @pre_cache_status_menu.push(Cache.menu_status("Layout"))
  7769.   end   
  7770.  
  7771. end
  7772.  
  7773. #==============================================================================
  7774. # ■ Scene_Status
  7775. #==============================================================================
  7776. class Scene_Status
  7777.   include MOG_MENU_STATUS
  7778.   include MOG_MENU_BASE
  7779.  
  7780.   #--------------------------------------------------------------------------
  7781.   # ● Main
  7782.   #--------------------------------------------------------------------------        
  7783.   def main
  7784.       execute_setup
  7785.       execute_loop
  7786.       execute_dispose
  7787.   end  
  7788.  
  7789.   #--------------------------------------------------------------------------
  7790.   # ● Execute Setup
  7791.   #--------------------------------------------------------------------------        
  7792.   def execute_setup
  7793.       @actor = $game_temp.actor_menu_temp
  7794.       @actor_old = @actor
  7795.       @phase = 0
  7796.       create_sprites
  7797.   end
  7798.  
  7799.   #--------------------------------------------------------------------------
  7800.   # ● Execute Lopp
  7801.   #--------------------------------------------------------------------------        
  7802.   def execute_loop
  7803.       Graphics.transition(10)
  7804.       loop do
  7805.          Input.update
  7806.          update
  7807.          Graphics.update
  7808.          break if SceneManager.scene != self
  7809.       end
  7810.   end
  7811.  
  7812. end
  7813.  
  7814. #==============================================================================
  7815. # ■ Window_Status
  7816. #==============================================================================
  7817. class Window_Status < Window_Selectable
  7818.   include MOG_MENU_STATUS
  7819.  
  7820.   #--------------------------------------------------------------------------
  7821.   # ● Initialize
  7822.   #--------------------------------------------------------------------------
  7823.   def initialize(actor)
  7824.       super(-16, -16, Graphics.width + 32, Graphics.height + 32)
  7825.       @actor = actor
  7826.       self.z = 10
  7827.       refresh
  7828.       activate
  7829.   end
  7830.  
  7831.   #--------------------------------------------------------------------------
  7832.   # ● Actor
  7833.   #--------------------------------------------------------------------------
  7834.   def actor=(actor)
  7835.       return if @actor == actor
  7836.       @actor = actor
  7837.       refresh
  7838.   end
  7839.  
  7840.   #--------------------------------------------------------------------------
  7841.   # ● Refresh
  7842.   #--------------------------------------------------------------------------
  7843.   def refresh
  7844.       contents.clear
  7845.       draw_description
  7846.       self.contents.font.size = 18
  7847.       self.contents.font.bold = true
  7848.       draw_actor_name
  7849.       draw_equipments
  7850.       draw_exp_info
  7851.       draw_parameters      
  7852.       draw_actor_hp_mp_tp
  7853.   end
  7854.  
  7855.   #--------------------------------------------------------------------------
  7856.   # ● Draw Actor Name
  7857.   #--------------------------------------------------------------------------  
  7858.   def draw_actor_name
  7859.       self.contents.font.size = 16
  7860.       text = @actor.class.name
  7861.       draw_text(240,185,100,32, text.to_s,1)      
  7862.       self.contents.font.size = 20   
  7863.       text = @actor.name
  7864.       draw_text(125,50,120,32, text.to_s,1)
  7865.   end
  7866.  
  7867.   #--------------------------------------------------------------------------
  7868.   # ● Draw Parameters
  7869.   #--------------------------------------------------------------------------
  7870.   def draw_parameters
  7871.       par = @actor.atk
  7872.       draw_text(43,112,80,32, par.to_s,2)
  7873.       par = @actor.def
  7874.       draw_text(43,146,80,32, par.to_s,2)
  7875.       par = @actor.mat
  7876.       draw_text(162 ,112,80,32, par.to_s,2)      
  7877.       par = @actor.mdf
  7878.       draw_text(162,146,80,32, par.to_s,2)      
  7879.       par = @actor.agi
  7880.       draw_text(282,112,80,32, par.to_s,2)         
  7881.       par = @actor.luk
  7882.       draw_text(282,146,80,32, par.to_s,2)
  7883.   end   
  7884.  
  7885.   #--------------------------------------------------------------------------
  7886.   # ● Draw Actor HP MP TP
  7887.   #--------------------------------------------------------------------------  
  7888.   def draw_actor_hp_mp_tp
  7889.       self.contents.font.size = 16
  7890.       par = @actor.hp.truncate
  7891.       draw_text(5,80,80,32, par.to_s,2)      
  7892.       par = @actor.mhp.truncate
  7893.       draw_text(50,80,80,32, par.to_s,2)           
  7894.       par = @actor.mp.truncate
  7895.       draw_text(123,80,80,32, par.to_s,2)      
  7896.       par = @actor.mmp.truncate
  7897.       draw_text(168,80,80,32, par.to_s,2)        
  7898.       par = @actor.tp.truncate
  7899.       draw_text(244,80,80,32, par.to_s,2)      
  7900.       par = @actor.max_tp.truncate
  7901.       draw_text(282,80,80,32, par.to_s,2)      
  7902.   end
  7903.  
  7904.   #--------------------------------------------------------------------------
  7905.   # ● Draw Exp Info
  7906.   #--------------------------------------------------------------------------
  7907.   def draw_exp_info
  7908.       draw_text(200,10,64,32,@actor.level.to_s,1)
  7909.       s1 = @actor.max_level? ? "----------" : @actor.exp
  7910.       s2 = @actor.max_level? ? "----------" : @actor.next_level_exp - @actor.exp
  7911.       draw_text(300,10, 80, 32,s1.to_s, 1)
  7912.       draw_text(460,10, 80, 32,s2.to_s, 1)
  7913.   end
  7914.  
  7915.   #--------------------------------------------------------------------------
  7916.   # ● Draw Equipments
  7917.   #--------------------------------------------------------------------------
  7918.   def draw_equipments
  7919.       self.contents.font.size = 16
  7920.       item = @actor.equips[0]
  7921.       draw_item_name(item, 20, 220,true,140)
  7922.       item = @actor.equips[1]
  7923.       draw_item_name(item, 20, 220 + 43,true,140)
  7924.       item = @actor.equips[2]
  7925.       draw_item_name(item, 20, 220 + 86,true,140)      
  7926.       item = @actor.equips[3]
  7927.       draw_item_name(item, 196, 242,true,140)      
  7928.       item = @actor.equips[4]
  7929.       draw_item_name(item, 196, 242 + 43,true,140)
  7930.   end
  7931.  
  7932.   #--------------------------------------------------------------------------
  7933.   # ● Draw Description
  7934.   #--------------------------------------------------------------------------
  7935.   def draw_description
  7936.       draw_text_ex(20, height - 96,@actor.description)
  7937.   end
  7938.  
  7939.   #--------------------------------------------------------------------------
  7940.   # ● Next Actor
  7941.   #--------------------------------------------------------------------------
  7942.   def next_actor
  7943.       $game_temp.actor_menu_temp = $game_party.menu_actor_next
  7944.       on_actor_change
  7945.   end
  7946.   #--------------------------------------------------------------------------
  7947.   # ● Prev Actor
  7948.   #--------------------------------------------------------------------------
  7949.   def prev_actor
  7950.       $game_temp.actor_menu_temp = $game_party.menu_actor_prev
  7951.       on_actor_change
  7952.   end  
  7953.  
  7954.   #--------------------------------------------------------------------------
  7955.   # ● On Actor Change
  7956.   #--------------------------------------------------------------------------
  7957.   def on_actor_change
  7958.       Sound.play_cursor
  7959.       SceneManager.goto(Scene_Status)
  7960.   end  
  7961.  
  7962. end
  7963.  
  7964. module MOG_STATUS_PARAMETER
  7965.   PICTURE_POS = [-105,0]
  7966.   METER_POSITION = [53,101]
  7967.   STATES_POSITION = [21,46]
  7968.   STATES_SCROLLING_ANIMATION = false
  7969.   MAX_PARAMETER_VALUE = 999
  7970. end
  7971. #==============================================================================
  7972. # ■ Status Parameter
  7973. #==============================================================================
  7974. class Status_Parameter
  7975.  
  7976.   include MOG_STATUS_PARAMETER
  7977.  
  7978.   #--------------------------------------------------------------------------
  7979.   # ● Initialize
  7980.   #--------------------------------------------------------------------------
  7981.   def initialize(actor)
  7982.       @actor = actor
  7983.       create_picture
  7984.       create_states
  7985.       create_meter
  7986.   end
  7987.  
  7988.   #--------------------------------------------------------------------------
  7989.   # ● Create Picture
  7990.   #--------------------------------------------------------------------------   
  7991.   def create_picture
  7992.       @picture = Sprite.new
  7993.       pic_name = "Actor_S" + @actor.id.to_s
  7994.       @picture.bitmap = Cache.menu_status(pic_name.to_s)
  7995.       @picture.ox = @picture.bitmap.width / 2
  7996.       pos = [Graphics.width,Graphics.height - @picture.bitmap.height]
  7997.       @pos_org_pic = [PICTURE_POS[0] + pos[0] ,PICTURE_POS[1] + pos[1]]
  7998.       @picture.x = @pos_org_pic[0]
  7999.       @picture.y = @pos_org_pic[1] + 150
  8000.       @picture.opacity = 0
  8001.       @picture.z = 3
  8002.   end  
  8003.  
  8004.   #--------------------------------------------------------------------------
  8005.   # ● Create_States
  8006.   #--------------------------------------------------------------------------      
  8007.   def create_states
  8008.       @status_old = nil
  8009.       @status_flow = [-24,0]   
  8010.       @status = Sprite.new
  8011.       @status.bitmap = Bitmap.new(24,24)
  8012.       @org_pos_states = [STATES_POSITION[0],STATES_POSITION[1]]      
  8013.       @status.x = @org_pos_states[0] + 150
  8014.       @status.y = @org_pos_states[1]
  8015.       @status.z = 11
  8016.       @status.opacity = 0
  8017.   end      
  8018.  
  8019.   #--------------------------------------------------------------------------
  8020.   # * Refresh States
  8021.   #--------------------------------------------------------------------------        
  8022.   def refresh_states
  8023.       check_icon_image
  8024.       @status_old = @actor.states
  8025.       @status_flow = [0,0]
  8026.       @actor_status.dispose if @actor_status != nil
  8027.       @states_size = @actor.states.size > 0 ? (26 * @actor.states.size) : 24
  8028.       @actor_status = Bitmap.new(@states_size,24)
  8029.       index = 0
  8030.       for i in @actor.states
  8031.          rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
  8032.          @actor_status.blt(26 * index , 0, @icon_image, rect)
  8033.          index += 1
  8034.       end
  8035.   end   
  8036.  
  8037.   #--------------------------------------------------------------------------
  8038.   # * Flow_Status
  8039.   #--------------------------------------------------------------------------         
  8040.   def flow_states
  8041.       return if @actor_status == nil
  8042.       @status.bitmap.clear
  8043.       return if @actor.states.size == 0
  8044.       st_src_rect = Rect.new(@status_flow[0],0, 24,24)
  8045.       @status.bitmap.blt(0,0, @actor_status, st_src_rect)
  8046.       if STATES_SCROLLING_ANIMATION
  8047.          @status_flow[0] += 1
  8048.          @status_flow[0] = -24 if @status_flow[0] >= @states_size + 2
  8049.       else   
  8050.          @status_flow[1] += 1 unless @actor.states.size <= 1
  8051.          if @status_flow[1] > 30
  8052.             @status_flow[1] = 0
  8053.             @status_flow[0] += 26
  8054.             @status_flow[0] = 0 if @status_flow[0] >= (@states_size - 0)
  8055.          end   
  8056.      end   
  8057.   end        
  8058.  
  8059.   #--------------------------------------------------------------------------
  8060.   # * Check Icon Image
  8061.   #--------------------------------------------------------------------------         
  8062.   def check_icon_image
  8063.       if @icon_image == nil or @icon_image.disposed?
  8064.          @icon_image = Cache.system("Iconset")
  8065.       end   
  8066.   end   
  8067.  
  8068.   #--------------------------------------------------------------------------
  8069.   # * Create Meter
  8070.   #--------------------------------------------------------------------------            
  8071.   def create_meter
  8072.       @meter_image = Cache.menu_status("Par_Meter")
  8073.       @meter_cw = @meter_image.width / 3
  8074.       @meter_ch = @meter_image.height / 4
  8075.       @meter = Sprite.new
  8076.       @meter.bitmap = Bitmap.new(380,140)
  8077.       @org_pos_meter = [METER_POSITION[0],METER_POSITION[1]]      
  8078.       @meter.x = @org_pos_meter[0] + 150
  8079.       @meter.y = @org_pos_meter[1]
  8080.       @meter.z = 11  
  8081.       @meter.opacity = 0
  8082.       @meter_flow = [0,@meter_cw * 2]      
  8083.       refresh_meter
  8084.   end  
  8085.  
  8086.   #--------------------------------------------------------------------------
  8087.   # * Refresh Meter
  8088.   #--------------------------------------------------------------------------            
  8089.   def refresh_meter
  8090.       @meter.bitmap.clear
  8091.       max_par = MAX_PARAMETER_VALUE
  8092.       value = @actor.hp
  8093.       value_max = @actor.mhp
  8094.       pos = [0,0]
  8095.       draw_meter(value,value_max,0,pos[0],pos[1])
  8096.       value = @actor.mp
  8097.       value_max = @actor.mmp
  8098.       pos = [120,0]
  8099.       draw_meter(value,value_max,1,pos[0],pos[1])
  8100.       value = @actor.tp
  8101.       value_max = @actor.max_tp
  8102.       pos = [240,0]
  8103.       draw_meter(value,value_max,2,pos[0],pos[1])         
  8104.       value = @actor.atk
  8105.       value_max = max_par
  8106.       pos = [0,34]
  8107.       draw_meter(value,value_max,3,pos[0],pos[1])      
  8108.       value = @actor.mat
  8109.       value_max = max_par
  8110.       pos = [120,34]
  8111.       draw_meter(value,value_max,3,pos[0],pos[1])         
  8112.       value = @actor.agi
  8113.       value_max = max_par
  8114.       pos = [240,34]
  8115.       draw_meter(value,value_max,3,pos[0],pos[1])      
  8116.       value = @actor.def
  8117.       value_max = max_par
  8118.       pos = [0,68]
  8119.       draw_meter(value,value_max,3,pos[0],pos[1])      
  8120.       value = @actor.mdf
  8121.       value_max = max_par
  8122.       pos = [120,68]
  8123.       draw_meter(value,value_max,3,pos[0],pos[1])         
  8124.       value = @actor.luk
  8125.       value_max = max_par
  8126.       pos = [240,68]
  8127.       draw_meter(value,value_max,3,pos[0],pos[1])      
  8128.       @meter_flow[0] += 5
  8129.       @meter_flow[0] = 0 if @meter_flow[0] > @meter_flow[1]
  8130.   end
  8131.  
  8132.   #--------------------------------------------------------------------------
  8133.   # * Draw Meter
  8134.   #--------------------------------------------------------------------------              
  8135.   def draw_meter(value,value_max,type,x,y)
  8136.       value_max = 1 if value_max <= 0
  8137.       range = @meter_cw * value.truncate / value_max.truncate
  8138.       ch = @meter_ch * type
  8139.       meter_scr = Rect.new(@meter_flow[0],ch,range,@meter_ch)
  8140.       @meter.bitmap.blt(x,y,@meter_image,meter_scr)
  8141.   end
  8142.  
  8143.   #--------------------------------------------------------------------------
  8144.   # ● Dispose
  8145.   #--------------------------------------------------------------------------  
  8146.   def dispose
  8147.       dispose_picture
  8148.       dispose_states
  8149.       dispose_meter
  8150.   end
  8151.  
  8152.   #--------------------------------------------------------------------------
  8153.   # ● Dispose Picture
  8154.   #--------------------------------------------------------------------------   
  8155.   def dispose_picture
  8156.       @picture.bitmap.dispose
  8157.       @picture.dispose
  8158.   end
  8159.  
  8160.   #--------------------------------------------------------------------------
  8161.   # ● Dispose States
  8162.   #--------------------------------------------------------------------------            
  8163.    def dispose_states
  8164.        return if @status == nil
  8165.        @status.bitmap.dispose
  8166.        @status.dispose
  8167.        if @actor_status != nil
  8168.           @actor_status.dispose
  8169.           @actor_status = nil
  8170.        end   
  8171.    end     
  8172.  
  8173.   #--------------------------------------------------------------------------
  8174.   # ● Dispose Meter
  8175.   #--------------------------------------------------------------------------            
  8176.    def dispose_meter
  8177.        return if @meter == nil
  8178.        @meter.bitmap.dispose
  8179.        @meter.dispose
  8180.    end     
  8181.  
  8182.   #--------------------------------------------------------------------------
  8183.   # ● Update
  8184.   #--------------------------------------------------------------------------  
  8185.   def update
  8186.       update_slide(0,@picture,@pos_org_pic[0])
  8187.       update_slide(1,@picture,@pos_org_pic[1])
  8188.       update_slide(0,@status,@org_pos_states[0])
  8189.       update_slide(1,@status,@org_pos_states[1])   
  8190.       update_slide(0,@meter,@org_pos_meter[0])
  8191.       update_slide(1,@meter,@org_pos_meter[1])         
  8192.       refresh_states if @status_old != @actor.states
  8193.       refresh_meter
  8194.       flow_states      
  8195.   end
  8196.  
  8197.  
  8198. #--------------------------------------------------------------------------
  8199. # ● Update Slide
  8200. #--------------------------------------------------------------------------                       
  8201.   def update_slide(type,sprite,np)
  8202.       sprite.opacity += 5
  8203.       cp = type == 0 ? sprite.x : sprite.y
  8204.       sp = 3 + ((cp - np).abs / 10)
  8205.       if cp > np
  8206.          cp -= sp
  8207.          cp = np if cp < np
  8208.       elsif cp < np
  8209.          cp += sp
  8210.          cp = np if cp > np
  8211.       end     
  8212.       sprite.x = cp if type == 0
  8213.       sprite.y = cp if type == 1
  8214.   end   
  8215.  
  8216. end
  8217.  
  8218. #==============================================================================
  8219. # ■ Scene_Status
  8220. #==============================================================================
  8221. class Scene_Status
  8222.  
  8223.   #--------------------------------------------------------------------------
  8224.   # ● Create Sprites
  8225.   #--------------------------------------------------------------------------
  8226.   def create_sprites
  8227.       create_menu_background
  8228.       create_layout
  8229.       create_particles
  8230.       create_status_window
  8231.       create_parameter
  8232.   end
  8233.  
  8234.   #--------------------------------------------------------------------------
  8235.   # ● Create Menu Background
  8236.   #--------------------------------------------------------------------------            
  8237.   def create_menu_background
  8238.       @background = Plane.new
  8239.       @background.bitmap = $game_temp.pre_cache_status_menu[0]
  8240.       @background.z = 0
  8241.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  8242.   end   
  8243.  
  8244.   #--------------------------------------------------------------------------
  8245.   # ● Create Layout
  8246.   #--------------------------------------------------------------------------              
  8247.   def create_layout     
  8248.       @layout = Sprite.new
  8249.       @layout.bitmap = $game_temp.pre_cache_status_menu[1]
  8250.       @layout.z = 9
  8251.       @layout.x = -150
  8252.       @layout.opacity = 0
  8253.   end  
  8254.  
  8255.   #--------------------------------------------------------------------------
  8256.   # ● Create Particles
  8257.   #--------------------------------------------------------------------------  
  8258.   def create_particles
  8259.       @particles_sprite =[]
  8260.       for i in 0...NUMBER_OF_PARTICLES
  8261.           @particles_sprite.push(Particles_Menu.new(nil))
  8262.       end
  8263.   end   
  8264.  
  8265.   #--------------------------------------------------------------------------
  8266.   # ● Create Status Window
  8267.   #--------------------------------------------------------------------------  
  8268.   def create_status_window
  8269.       @status_window = Window_Status.new(@actor)
  8270.       @status_window.set_handler(:cancel,   method(:return_scene))
  8271.       @status_window.set_handler(:pagedown, method(:next_actor))
  8272.       @status_window.set_handler(:pageup,   method(:prev_actor))
  8273.       @org_pos_win = [@status_window.x,@status_window.y]
  8274.       @status_window.x += 150
  8275.       @status_window.opacity = 0
  8276.       @status_window.contents_opacity = 0
  8277.   end  
  8278.  
  8279.   #--------------------------------------------------------------------------
  8280.   # ● Create Parameter
  8281.   #--------------------------------------------------------------------------   
  8282.   def create_parameter
  8283.       @parameter = Status_Parameter.new(@actor)
  8284.   end
  8285.  
  8286. end
  8287.  
  8288. #==============================================================================
  8289. # ■ Scene_Status
  8290. #==============================================================================
  8291. class Scene_Status
  8292.  
  8293.   #--------------------------------------------------------------------------
  8294.   # ● Execute Dispose
  8295.   #--------------------------------------------------------------------------        
  8296.   def execute_dispose
  8297.       Graphics.freeze
  8298.       dispose_background
  8299.       dispose_layout
  8300.       dispose_particles
  8301.       dispose_status_window
  8302.       dispose_parameter
  8303.    end
  8304.  
  8305.   #--------------------------------------------------------------------------
  8306.   # ● Dispose Background
  8307.   #--------------------------------------------------------------------------  
  8308.   def dispose_background
  8309.       return if @background == nil
  8310.       @background.dispose
  8311.       @background = nil
  8312.   end
  8313.  
  8314.   #--------------------------------------------------------------------------
  8315.   # ● Dispose Layout
  8316.   #--------------------------------------------------------------------------               
  8317.   def dispose_layout
  8318.       return if @layout == nil
  8319.       @layout.dispose
  8320.       @layout = nil
  8321.   end  
  8322.  
  8323. #--------------------------------------------------------------------------
  8324. # ● Dispose Particles
  8325. #--------------------------------------------------------------------------   
  8326. def dispose_particles
  8327.      return if @particles_sprite == nil
  8328.      @particles_sprite.each {|sprite| sprite.dispose }
  8329. end     
  8330.  
  8331.   #--------------------------------------------------------------------------
  8332.   # ● Dispose Status Window
  8333.   #--------------------------------------------------------------------------  
  8334.   def dispose_status_window
  8335.       return if @status_window == nil
  8336.       @status_window.dispose
  8337.   end  
  8338.  
  8339.   #--------------------------------------------------------------------------
  8340.   # ● Dispose Parameter
  8341.   #--------------------------------------------------------------------------   
  8342.   def dispose_parameter
  8343.       return if @parameter == nil
  8344.       @parameter.dispose
  8345.   end  
  8346.  
  8347. end
  8348.  
  8349. #==============================================================================
  8350. # ■ Scene Status
  8351. #==============================================================================
  8352. class Scene_Status
  8353.  
  8354.   #--------------------------------------------------------------------------
  8355.   # ● Update Sprites
  8356.   #--------------------------------------------------------------------------         
  8357.   def update_sprites   
  8358.       update_background
  8359.       update_particles     
  8360.       update_status_window
  8361.       update_parameter
  8362.       update_move
  8363.   end
  8364.  
  8365.   #--------------------------------------------------------------------------
  8366.   # ● Update Background
  8367.   #--------------------------------------------------------------------------              
  8368.   def update_background
  8369.       return if @background == nil
  8370.       @background.ox += @background_scroll[0]
  8371.       @background.oy += @background_scroll[1]
  8372.   end   
  8373.  
  8374.   #--------------------------------------------------------------------------
  8375.   # ● Update Particles
  8376.   #--------------------------------------------------------------------------  
  8377.   def update_particles
  8378.       return if @particles_sprite == nil
  8379.       @particles_sprite.each {|sprite| sprite.update }
  8380.   end
  8381.  
  8382.   #--------------------------------------------------------------------------
  8383.   # ● Update Sprites
  8384.   #--------------------------------------------------------------------------  
  8385.   def update_status_window
  8386.       return if @status_window == nil
  8387.       @status_window.update
  8388.   end
  8389.  
  8390.   #--------------------------------------------------------------------------
  8391.   # ● Update Move
  8392.   #--------------------------------------------------------------------------      
  8393.   def update_move
  8394.       update_slide(0,@status_window,@org_pos_win[0],0)
  8395.       update_slide(1,@status_window,@org_pos_win[1],0)
  8396.       update_slide(0,@layout,0,1)
  8397.       update_slide(1,@layout,0,1)     
  8398.   end  
  8399.  
  8400. #--------------------------------------------------------------------------
  8401. # ● Update Slide
  8402. #--------------------------------------------------------------------------                       
  8403.   def update_slide(type,sprite,np,opa)
  8404.       if opa == 0
  8405.          sprite.contents_opacity += 5
  8406.       else   
  8407.          sprite.opacity += 5
  8408.       end  
  8409.       cp = type == 0 ? sprite.x : sprite.y
  8410.       sp = 3 + ((cp - np).abs / 10)
  8411.       if cp > np
  8412.          cp -= sp
  8413.          cp = np if cp < np
  8414.       elsif cp < np
  8415.          cp += sp
  8416.          cp = np if cp > np
  8417.       end     
  8418.       sprite.x = cp if type == 0
  8419.       sprite.y = cp if type == 1
  8420.   end   
  8421.  
  8422.   #--------------------------------------------------------------------------
  8423.   # ● Update Parameter
  8424.   #--------------------------------------------------------------------------   
  8425.   def update_parameter
  8426.       return if @parameter == nil
  8427.       @parameter.update
  8428.   end   
  8429.  
  8430. end
  8431.  
  8432. #==============================================================================
  8433. # ■ Scene_Status
  8434. #==============================================================================
  8435. class Scene_Status
  8436.  
  8437.   #--------------------------------------------------------------------------
  8438.   # ● Update
  8439.   #--------------------------------------------------------------------------      
  8440.   def update
  8441.       update_sprites
  8442.       update_command
  8443.   end
  8444.  
  8445.   #--------------------------------------------------------------------------
  8446.   # ● Return Scene
  8447.   #--------------------------------------------------------------------------         
  8448.   def return_scene
  8449.       Sound.play_cancel
  8450.       SceneManager.return
  8451.   end
  8452.  
  8453.   #--------------------------------------------------------------------------
  8454.   # ● ON Actor Charge
  8455.   #--------------------------------------------------------------------------
  8456.   def on_actor_change
  8457.       Sound.play_cursor
  8458.       $game_temp.actor_menu_temp = @actor
  8459.       SceneManager.goto(Scene_Status)
  8460.   end  
  8461.  
  8462. end
  8463.  
  8464. #==============================================================================
  8465. # ■ Scene_Status
  8466. #==============================================================================
  8467. class Scene_Status
  8468.  
  8469.   #--------------------------------------------------------------------------
  8470.   # ● Update Command
  8471.   #--------------------------------------------------------------------------      
  8472.   def update_command
  8473.       update_next_actor
  8474.   end
  8475.  
  8476.   #--------------------------------------------------------------------------
  8477.   # ● Update Next Actor
  8478.   #--------------------------------------------------------------------------        
  8479.   def update_next_actor
  8480.       if Input.trigger?(:RIGHT)
  8481.          @status_window.next_actor
  8482.        elsif Input.trigger?(:LEFT)
  8483.          @status_window.prev_actor
  8484.       end
  8485.   end
  8486.  
  8487. end
  8488.  
  8489.  
  8490.  
  8491. #==============================================================================
  8492. # ■ Game_Temp
  8493. #==============================================================================
  8494. class Game_Temp
  8495.  
  8496.   #--------------------------------------------------------------------------
  8497.   # ● Execute Pre Cache Party Menu
  8498.   #--------------------------------------------------------------------------   
  8499.   def execute_pre_cache_party_menu
  8500.       @pre_cache_party_menu = []
  8501.       @pre_cache_party_menu.push(Cache.menu_party("Background"))
  8502.       @pre_cache_party_menu.push(Cache.menu_party("Layout"))
  8503.   end   
  8504.  
  8505. end
  8506.  
  8507. #==============================================================================
  8508. # ■ Scene_Party
  8509. #==============================================================================
  8510. class Scene_Party
  8511.   include MOG_MENU_PARTY
  8512.   include MOG_MENU_BASE
  8513.  
  8514.   #--------------------------------------------------------------------------
  8515.   # ● Main
  8516.   #--------------------------------------------------------------------------        
  8517.   def main
  8518.       execute_setup
  8519.       execute_loop
  8520.       execute_dispose
  8521.   end  
  8522.  
  8523.   #--------------------------------------------------------------------------
  8524.   # ● Execute Setup
  8525.   #--------------------------------------------------------------------------        
  8526.   def execute_setup
  8527.       @phase = 0
  8528.       @actor = $game_party.members[0]
  8529.       @actor_old = @actor
  8530.       create_sprites
  8531.   end
  8532.  
  8533.   #--------------------------------------------------------------------------
  8534.   # ● Execute Lopp
  8535.   #--------------------------------------------------------------------------        
  8536.   def execute_loop
  8537.       Graphics.transition(10)
  8538.       loop do
  8539.          Input.update
  8540.          update
  8541.          Graphics.update
  8542.          break if SceneManager.scene != self
  8543.       end
  8544.   end
  8545.  
  8546. end
  8547.  
  8548. #==============================================================================
  8549. # ■ Actor Menu Status Party
  8550. #==============================================================================
  8551. class Actor_Menu_Status_Party
  8552.  
  8553.   include MOG_ACTOR_MENU_PARTY
  8554.  
  8555.   #--------------------------------------------------------------------------
  8556.   # ● Initialize
  8557.   #--------------------------------------------------------------------------
  8558.   def initialize
  8559.       @active = false
  8560.       @max_members = $game_party.max_battle_members
  8561.       @max_members = $game_party.members.size if @max_members > $game_party.members.size
  8562.       create_sprites
  8563.   end
  8564.  
  8565.   #--------------------------------------------------------------------------
  8566.   # ● Create Sprites
  8567.   #--------------------------------------------------------------------------  
  8568.   def create_sprites
  8569.       @face = []
  8570.       @face_org = []
  8571.       @name = []
  8572.       @name_org = []
  8573.       @actor_id = []
  8574.       space = 70
  8575.       index = 0
  8576.       for actor in $game_party.members  
  8577.          @face.push(Sprite.new)
  8578.          @face_org[index] = [FACE_POSITION[0],FACE_POSITION[1] + space * index]
  8579.          @face[index].x = @face_org[index][0] + 150 + (150 * index)
  8580.          @face[index].y = @face_org[index][1]
  8581.          @face[index].z = 10   
  8582.          @name.push(Sprite.new)
  8583.          @name[index].bitmap = Bitmap.new(200,120)
  8584.          @name[index].bitmap.font.size = FONT_SIZE
  8585.          @name[index].bitmap.font.bold = FONT_BOLD
  8586.          @name_org[index] = [NAME_POSITION[0],NAME_POSITION[1] + space * index]
  8587.          @name[index].x = @name_org[index][0] + 150 + (150 * index)
  8588.          @name[index].y = @name_org[index][1]
  8589.          @name[index].z = 11
  8590.          @actor_id[index] = actor.id
  8591.          index += 1
  8592.          break if index >= @max_members
  8593.       end
  8594.       refresh
  8595.   end
  8596.  
  8597.   #--------------------------------------------------------------------------
  8598.   # ● Refresh Position
  8599.   #--------------------------------------------------------------------------   
  8600.   def refresh_position(actor,index)
  8601.       @actor_id[index] = actor.id
  8602.       @face[index].x = @face_org[index][0] + 150 + (150 * index)
  8603.       @name[index].x = @name_org[index][0] + 150 + (150 * index)   
  8604.   end
  8605.  
  8606.   #--------------------------------------------------------------------------
  8607.   # ● Dispose
  8608.   #--------------------------------------------------------------------------      
  8609.   def dispose
  8610.       @face.each {|sprite| sprite.dispose }
  8611.       @name.each {|sprite| sprite.bitmap.dispose }
  8612.       @name.each {|sprite| sprite.dispose }
  8613.   end
  8614.  
  8615.   #--------------------------------------------------------------------------
  8616.   # ● Refresh
  8617.   #--------------------------------------------------------------------------      
  8618.   def refresh
  8619.       index = 0
  8620.       for actor in $game_party.members  
  8621.           face_name = "Face_B" + actor.id.to_s
  8622.           @face[index].bitmap = Cache.menu(face_name.to_s)
  8623.           @name[index].bitmap.clear
  8624.           @name[index].bitmap.draw_text(100,28,64,32,"LV " + actor.level.to_s,0)
  8625.           aname = actor.name
  8626.           @name[index].bitmap.draw_text(0,0,100,32,aname.to_s,0)
  8627.           refresh_position(actor,index) if @actor_id[index] != actor.id
  8628.           index += 1
  8629.           break if index >= @max_members
  8630.       end
  8631.   end
  8632.  
  8633. #--------------------------------------------------------------------------
  8634. # ● Update Slide
  8635. #--------------------------------------------------------------------------                       
  8636.   def update_slide(type,sprite,np)
  8637.       sprite.opacity += 5
  8638.       cp = type == 0 ? sprite.x : sprite.y
  8639.       sp = 3 + ((cp - np).abs / 10)
  8640.       if cp > np
  8641.          cp -= sp
  8642.          cp = np if cp < np
  8643.       elsif cp < np
  8644.          cp += sp
  8645.          cp = np if cp > np
  8646.       end     
  8647.       sprite.x = cp if type == 0
  8648.       sprite.y = cp if type == 1
  8649.   end      
  8650.  
  8651.   #--------------------------------------------------------------------------
  8652.   # ● Update
  8653.   #--------------------------------------------------------------------------
  8654.   def update(actor)
  8655.       for index in [email]0...@name.size[/email]
  8656.           update_slide(0,@face[index],@face_org[index][0])
  8657.           update_slide(1,@face[index],@face_org[index][1])
  8658.           update_slide(0,@name[index],@name_org[index][0])
  8659.           update_slide(1,@name[index],@name_org[index][1])
  8660.       end      
  8661.   end      
  8662.  
  8663. end
  8664.  
  8665. #==============================================================================
  8666. # ■ Window_MenuStatus Party
  8667. #==============================================================================
  8668. class Window_MenuStatus_Party < Window_Selectable
  8669.   attr_reader   :pending_index           
  8670.  
  8671.   #--------------------------------------------------------------------------
  8672.   # ● Initialize
  8673.   #--------------------------------------------------------------------------
  8674.   def initialize(x, y)
  8675.       super(x, y, window_width, window_height)
  8676.       @pending_index = -1
  8677.       self.opacity = 0
  8678.       self.contents.font.bold = true
  8679.       self.contents.font.size = 18
  8680.       refresh
  8681.   end
  8682.  
  8683.   #--------------------------------------------------------------------------
  8684.   # ● Window Width
  8685.   #--------------------------------------------------------------------------
  8686.   def window_width
  8687.       Graphics.width - 160
  8688.   end
  8689.  
  8690.   #--------------------------------------------------------------------------
  8691.   # ● Window Height
  8692.   #--------------------------------------------------------------------------
  8693.   def window_height
  8694.       Graphics.height
  8695.   end
  8696.  
  8697.   #--------------------------------------------------------------------------
  8698.   # ● Item Max
  8699.   #--------------------------------------------------------------------------
  8700.   def item_max
  8701.       $game_party.members.size
  8702.   end
  8703.  
  8704.   #--------------------------------------------------------------------------
  8705.   # ● Item Height
  8706.   #--------------------------------------------------------------------------
  8707.   def item_height
  8708.     (height - standard_padding * 2) / 4
  8709.   end
  8710.  
  8711.   #--------------------------------------------------------------------------
  8712.   # ● Draw Item
  8713.   #--------------------------------------------------------------------------
  8714.   def draw_item(index)
  8715.     actor = $game_party.members[index]
  8716.     enabled = $game_party.battle_members.include?(actor)
  8717.     rect = item_rect(index)
  8718.     draw_item_background(index)
  8719.     draw_actor_face(actor, rect.x + 1, rect.y + 1, enabled)
  8720.     self.contents.font.color = Color.new(255,155,55,255)
  8721.     draw_text(rect.x + 60,rect.y + 23,64,32,"LV",2)
  8722.     draw_text(rect.x + 60,rect.y + 43,64,32,"HP",2)
  8723.     draw_text(rect.x + 60,rect.y + 63,64,32,"MP",2)
  8724.  
  8725.     draw_text(rect.x + 140,rect.y + 23,64,32,"Atk",2)
  8726.     draw_text(rect.x + 140,rect.y + 43,64,32,"Def",2)
  8727.     draw_text(rect.x + 140,rect.y + 63,64,32,"Agi",2)   
  8728.  
  8729.     draw_text(rect.x + 220,rect.y + 23,64,32,"Mag",2)
  8730.     draw_text(rect.x + 220,rect.y + 43,64,32,"Mdf",2)
  8731.     draw_text(rect.x + 220,rect.y + 63,64,32,"Luk",2)      
  8732.  
  8733.     self.contents.font.color = Color.new(255,255,255,255)
  8734.     draw_text(rect.x + 105,rect.y,105,32,actor.name,0)
  8735.  
  8736.     draw_text(rect.x + 105,rect.y + 23,64,32,actor.level,2)
  8737.     draw_text(rect.x + 105,rect.y + 43,64,32,actor.mhp,2)
  8738.     draw_text(rect.x + 105,rect.y + 63,64,32,actor.mmp,2)   
  8739.  
  8740.  
  8741.     draw_text(rect.x + 185,rect.y + 23,64,32,actor.atk,2)
  8742.     draw_text(rect.x + 185,rect.y + 43,64,32,actor.def,2)
  8743.     draw_text(rect.x + 185,rect.y + 63,64,32,actor.agi,2)   
  8744.  
  8745.     draw_text(rect.x + 265,rect.y + 23,64,32,actor.mat,2)
  8746.     draw_text(rect.x + 265,rect.y + 43,64,32,actor.mdf,2)
  8747.     draw_text(rect.x + 265,rect.y + 63,64,32,actor.luk,2)      
  8748.  
  8749.   end
  8750.  
  8751.  
  8752.   #--------------------------------------------------------------------------
  8753.   # ● Draw Item Background
  8754.   #--------------------------------------------------------------------------
  8755.   def draw_item_background(index)
  8756.       if index == @pending_index
  8757.         contents.fill_rect(item_rect(index), pending_color)
  8758.       end
  8759.   end
  8760.  
  8761.   #--------------------------------------------------------------------------
  8762.   # ● Process OK
  8763.   #--------------------------------------------------------------------------
  8764.   def process_ok
  8765.       super
  8766.       $game_party.menu_actor = $game_party.members[index]
  8767.   end
  8768.  
  8769.   #--------------------------------------------------------------------------
  8770.   # ● Select Last
  8771.   #--------------------------------------------------------------------------
  8772.   def select_last
  8773.       select($game_party.menu_actor.index || 0)
  8774.   end
  8775.  
  8776.   #--------------------------------------------------------------------------
  8777.   # ● Pending Index
  8778.   #--------------------------------------------------------------------------
  8779.   def pending_index=(index)
  8780.       last_pending_index = @pending_index
  8781.       @pending_index = index
  8782.       redraw_item(@pending_index)
  8783.       redraw_item(last_pending_index)
  8784.   end
  8785. end
  8786.  
  8787. #==============================================================================
  8788. # ■ Scene_Party
  8789. #==============================================================================
  8790. class Scene_Party
  8791.  
  8792.   #--------------------------------------------------------------------------
  8793.   # ● Create Sprites
  8794.   #--------------------------------------------------------------------------
  8795.   def create_sprites
  8796.       create_menu_background
  8797.       create_layout
  8798.       create_particles
  8799.       create_status_window
  8800.       create_actor_menu
  8801.   end
  8802.  
  8803.   #--------------------------------------------------------------------------
  8804.   # ● Create Status Window
  8805.   #--------------------------------------------------------------------------
  8806.   def create_status_window
  8807.       @status_window = Window_MenuStatus_Party.new(0, 0)
  8808.       command_formation
  8809.   end  
  8810.  
  8811.   #--------------------------------------------------------------------------
  8812.   # ● Create Actor Menu
  8813.   #--------------------------------------------------------------------------  
  8814.   def create_actor_menu
  8815.       @actor_status = Actor_Menu_Status_Party.new   
  8816.   end
  8817.  
  8818.   #--------------------------------------------------------------------------
  8819.   # ● Command Personal
  8820.   #--------------------------------------------------------------------------
  8821.   def command_personal
  8822.     @status_window.select_last
  8823.     @status_window.activate
  8824.     @status_window.set_handler(:ok,     method(:on_personal_ok))
  8825.     @status_window.set_handler(:cancel, method(:on_personal_cancel))
  8826.   end
  8827.  
  8828.   #--------------------------------------------------------------------------
  8829.   # ● Command Formation
  8830.   #--------------------------------------------------------------------------
  8831.   def command_formation
  8832.     @status_window.index = 0
  8833.     @old_index = @status_window.index
  8834.     @status_window.activate
  8835.     @status_window.set_handler(:ok,     method(:on_formation_ok))
  8836.     @status_window.set_handler(:cancel, method(:on_formation_cancel))
  8837.   end
  8838.  
  8839.   #--------------------------------------------------------------------------
  8840.   # ● On Personal Cancel
  8841.   #--------------------------------------------------------------------------
  8842.   def on_personal_cancel
  8843.       @status_window.unselect
  8844.   end
  8845.  
  8846.   #--------------------------------------------------------------------------
  8847.   # ● On Formation OK
  8848.   #--------------------------------------------------------------------------
  8849.   def on_formation_ok   
  8850.       if @status_window.pending_index >= 0
  8851.         $game_party.swap_order(@status_window.index,
  8852.                                @status_window.pending_index)
  8853.         @status_window.pending_index = -1
  8854.         @status_window.redraw_item(@status_window.index)
  8855.         @actor_status.refresh
  8856.       else
  8857.         @status_window.pending_index = @status_window.index        
  8858.       end
  8859.       @status_window.activate
  8860.   end
  8861.  
  8862.   #--------------------------------------------------------------------------
  8863.   # ● On Formation Cancel
  8864.   #--------------------------------------------------------------------------
  8865.   def on_formation_cancel
  8866.       if @status_window.pending_index >= 0
  8867.          @status_window.pending_index = -1
  8868.          @status_window.activate         
  8869.       else
  8870.          return_scene
  8871.       end
  8872.   end  
  8873.  
  8874.   #--------------------------------------------------------------------------
  8875.   # ● Create Menu Background
  8876.   #--------------------------------------------------------------------------            
  8877.   def create_menu_background
  8878.       @background = Plane.new
  8879.       @background.bitmap = $game_temp.pre_cache_party_menu[0]
  8880.       @background.z = 0
  8881.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  8882.   end   
  8883.  
  8884.   #--------------------------------------------------------------------------
  8885.   # ● Create Layout
  8886.   #--------------------------------------------------------------------------              
  8887.   def create_layout     
  8888.       @layout = Sprite.new
  8889.       @layout.bitmap = $game_temp.pre_cache_party_menu[1]
  8890.       @layout.z = 3
  8891.   end  
  8892.  
  8893.   #--------------------------------------------------------------------------
  8894.   # ● Create Particles
  8895.   #--------------------------------------------------------------------------  
  8896.   def create_particles
  8897.       @particles_sprite =[]
  8898.       for i in 0...NUMBER_OF_PARTICLES
  8899.           @particles_sprite.push(Particles_Menu.new(nil))
  8900.       end
  8901.   end   
  8902.  
  8903. end
  8904.  
  8905. #==============================================================================
  8906. # ■ Scene_Party
  8907. #==============================================================================
  8908. class Scene_Party
  8909.  
  8910.   #--------------------------------------------------------------------------
  8911.   # ● Execute Dispose
  8912.   #--------------------------------------------------------------------------        
  8913.   def execute_dispose
  8914.       Graphics.freeze
  8915.       dispose_background
  8916.       dispose_layout
  8917.       dispose_particles
  8918.       dispose_status_window
  8919.       dispose_actor_menu
  8920.    end
  8921.  
  8922.   #--------------------------------------------------------------------------
  8923.   # ● Dispose Status Window
  8924.   #--------------------------------------------------------------------------           
  8925.    def dispose_status_window
  8926.        @status_window.dispose
  8927.    end
  8928.  
  8929.   #--------------------------------------------------------------------------
  8930.   # ● Dispose Background
  8931.   #--------------------------------------------------------------------------  
  8932.   def dispose_background
  8933.       return if @background == nil
  8934.       @background.dispose
  8935.       @background = nil
  8936.   end   
  8937.  
  8938.   #--------------------------------------------------------------------------
  8939.   # ● Dispose Layout
  8940.   #--------------------------------------------------------------------------               
  8941.   def dispose_layout
  8942.       return if @layout == nil
  8943.       @layout.dispose
  8944.       @layout = nil
  8945.   end  
  8946.  
  8947. #--------------------------------------------------------------------------
  8948. # ● Dispose Particles
  8949. #--------------------------------------------------------------------------   
  8950. def dispose_particles
  8951.      return if @particles_sprite == nil
  8952.      @particles_sprite.each {|sprite| sprite.dispose }
  8953. end     
  8954.  
  8955. #--------------------------------------------------------------------------
  8956. # ● Dispose Actor Menu
  8957. #--------------------------------------------------------------------------   
  8958. def dispose_actor_menu
  8959.      return if @actor_status == nil
  8960.      @actor_status.dispose
  8961. end   
  8962.  
  8963. end
  8964.  
  8965. #==============================================================================
  8966. # ■ Scene_Party
  8967. #==============================================================================
  8968. class Scene_Party
  8969.  
  8970.   #--------------------------------------------------------------------------
  8971.   # ● Update Sprites
  8972.   #--------------------------------------------------------------------------         
  8973.   def update_sprites   
  8974.       update_background
  8975.       update_particles
  8976.       update_status_window
  8977.   end
  8978.  
  8979.   #--------------------------------------------------------------------------
  8980.   # ● Update Background
  8981.   #--------------------------------------------------------------------------              
  8982.   def update_background
  8983.       return if @background == nil
  8984.       @background.ox += @background_scroll[0]
  8985.       @background.oy += @background_scroll[1]
  8986.   end   
  8987.  
  8988.   #--------------------------------------------------------------------------
  8989.   # ● Update Particles
  8990.   #--------------------------------------------------------------------------  
  8991.   def update_particles
  8992.       return if @particles_sprite == nil
  8993.       @particles_sprite.each {|sprite| sprite.update }
  8994.   end
  8995.  
  8996.   #--------------------------------------------------------------------------
  8997.   # ● Update Status Window
  8998.   #--------------------------------------------------------------------------   
  8999.   def update_status_window
  9000.       return if @status_window == nil
  9001.       @status_window.update
  9002.       update_slide(0,@status_window,0)
  9003.       update_slide(1,@status_window,0)
  9004.       @actor = $game_party.members[@status_window.index]
  9005.       @actor_status.update(@actor)
  9006.   end
  9007.  
  9008. #--------------------------------------------------------------------------
  9009. # ● Update Slide
  9010. #--------------------------------------------------------------------------                       
  9011.   def update_slide(type,sprite,np)
  9012.       sprite.contents_opacity += 5
  9013.       cp = type == 0 ? sprite.x : sprite.y
  9014.       sp = 3 + ((cp - np).abs / 10)
  9015.       if cp > np
  9016.          cp -= sp
  9017.          cp = np if cp < np
  9018.       elsif cp < np
  9019.          cp += sp
  9020.          cp = np if cp > np
  9021.       end     
  9022.       sprite.x = cp if type == 0
  9023.       sprite.y = cp if type == 1
  9024.   end   
  9025.  
  9026. end
  9027.  
  9028. #==============================================================================
  9029. # ■ Scene_Party
  9030. #==============================================================================
  9031. class Scene_Party
  9032.  
  9033.   #--------------------------------------------------------------------------
  9034.   # ● Update
  9035.   #--------------------------------------------------------------------------      
  9036.   def update
  9037.       update_sprites
  9038.       update_command
  9039.   end
  9040.  
  9041.   #--------------------------------------------------------------------------
  9042.   # ● Return Scene
  9043.   #--------------------------------------------------------------------------         
  9044.   def return_scene
  9045.       Sound.play_cancel
  9046.       SceneManager.return
  9047.   end
  9048.  
  9049.   #--------------------------------------------------------------------------
  9050.   # ● ON Actor Charge
  9051.   #--------------------------------------------------------------------------
  9052.   def on_actor_change
  9053.       $game_temp.actor_menu_temp = @actor
  9054.       SceneManager.goto(Scene_Status)
  9055.   end  
  9056.  
  9057. end
  9058.  
  9059. #==============================================================================
  9060. # ■ Scene_Party
  9061. #==============================================================================
  9062. class Scene_Party
  9063.  
  9064.   #--------------------------------------------------------------------------
  9065.   # ● Update Command
  9066.   #--------------------------------------------------------------------------      
  9067.   def update_command
  9068.  
  9069.   end
  9070.  
  9071. end
  9072.  
  9073. #==============================================================================
  9074. # ■ Game_Temp
  9075. #==============================================================================
  9076. class Game_Temp
  9077.  
  9078.   #--------------------------------------------------------------------------
  9079.   # ● Execute Pre Cache File Menu
  9080.   #--------------------------------------------------------------------------   
  9081.   def execute_pre_cache_file_menu
  9082.       @pre_cache_file_menu = []
  9083.       @pre_cache_file_menu.push(Cache.menu_save("Background"))
  9084.       @pre_cache_file_menu.push(Cache.menu_save("Layout"))
  9085.       @pre_cache_file_menu.push(Cache.menu_save("File_Mode"))
  9086.       @pre_cache_file_menu.push(Cache.menu_save("File_layout_1"))
  9087.       @pre_cache_file_menu.push(Cache.menu_save("File_layout_2"))
  9088.       @pre_cache_file_menu.push(Cache.menu_save("File_layout_3"))
  9089.       @pre_cache_file_menu.push(Cache.menu_save("Character_Floor"))
  9090.       @pre_cache_file_menu.push(Cache.menu_save("File_Number"))
  9091.   end   
  9092.  
  9093. end
  9094.  
  9095. #==============================================================================
  9096. # ■ Game Temp
  9097. #==============================================================================
  9098. class Game_Temp
  9099.  
  9100.   attr_accessor :scene_save
  9101.   #--------------------------------------------------------------------------
  9102.   # ● Initialize
  9103.   #--------------------------------------------------------------------------
  9104.   alias mog_scene_file_initialize initialize
  9105.   def initialize
  9106.       mog_scene_file_initialize
  9107.       @scene_save = false  
  9108.   end
  9109.  
  9110. end
  9111.  
  9112. #==============================================================================
  9113. # ■ Window_Base
  9114. #==============================================================================
  9115. class Window_Base < Window
  9116.  
  9117.   #--------------------------------------------------------------------------
  9118.   # ● draw_picture_number(x,y,value,file_name,align, space, frame_max ,frame_index)     
  9119.   #--------------------------------------------------------------------------
  9120.   # X - Posição na horizontal
  9121.   # Y - Posição na vertical
  9122.   # VALUE - Valor Numérico
  9123.   # FILE_NAME - Nome do arquivo
  9124.   # ALIGN - Centralizar 0 - Esquerda 1- Centro 2 - Direita  
  9125.   # SPACE - Espaço entre os números.
  9126.   # FRAME_MAX - Quantidade de quadros(Linhas) que a imagem vai ter.
  9127.   # FRAME_INDEX - Definição do quadro a ser utilizado.
  9128.   #--------------------------------------------------------------------------  
  9129.   def draw_picture_number_file(x,y,value, file_name,align = 0, space = 0, frame_max = 1,frame_index = 0)     
  9130.       number_image = $game_temp.pre_cache_file_menu[7]
  9131.       frame_max = 1 if frame_max < 1
  9132.       frame_index = frame_max -1 if frame_index > frame_max -1
  9133.       align = 2 if align > 2
  9134.       cw = number_image.width / 10
  9135.       ch = number_image.height / frame_max
  9136.       h = ch * frame_index
  9137.       number = value.abs.to_s.split(//)
  9138.       case align
  9139.          when 0
  9140.             plus_x = (-cw + space) * number.size
  9141.          when 1
  9142.             plus_x = (-cw + space) * number.size
  9143.             plus_x /= 2
  9144.          when 2  
  9145.             plus_x = 0
  9146.       end
  9147.       for r in 0..number.size - 1      
  9148.           number_abs = number[r].to_i
  9149.           number_rect = Rect.new(cw * number_abs, h, cw, ch)
  9150.           self.contents.blt(plus_x + x + ((cw - space) * r), y , number_image, number_rect)        
  9151.       end   
  9152.   end
  9153.  
  9154.   #--------------------------------------------------------------------------
  9155.   # ● Draw Help Layout
  9156.   #--------------------------------------------------------------------------
  9157.   def draw_face_save(name,x,y,type)
  9158.       if type == 0
  9159.          image_name = name + "_0"
  9160.       elsif type == 1
  9161.          image_name = name + "_1"         
  9162.       else  
  9163.          image_name = name + "_2"
  9164.       end
  9165.       image = Cache.face(image_name)   
  9166.       cw = image.width  
  9167.       ch = image.height
  9168.       src_rect = Rect.new(0, 0, cw, ch)   
  9169.       self.contents.blt(x , y , image, src_rect)  
  9170.       image.dispose
  9171.   end   
  9172.  
  9173.   #--------------------------------------------------------------------------
  9174.   # ● draw_parameter_layout
  9175.   #--------------------------------------------------------------------------  
  9176.   def draw_parameter_layout(x,y)
  9177.       image = $game_temp.pre_cache_file_menu[3]
  9178.       cw = image.width  
  9179.       ch = image.height
  9180.       src_rect = Rect.new(0, 0, cw, ch)   
  9181.       self.contents.blt(x , y , image, src_rect)     
  9182.   end   
  9183.  
  9184.   #--------------------------------------------------------------------------
  9185.   # ● draw_parameter_layout2
  9186.   #--------------------------------------------------------------------------  
  9187.   def draw_parameter_layout2(x,y,type)
  9188.       if type == 0
  9189.          image = $game_temp.pre_cache_file_menu[4]
  9190.       else   
  9191.          image = $game_temp.pre_cache_file_menu[5]
  9192.       end  
  9193.       cw = image.width  
  9194.       ch = image.height
  9195.       src_rect = Rect.new(0, 0, cw, ch)   
  9196.       self.contents.blt(x , y , image, src_rect)     
  9197.   end      
  9198.  
  9199.   #--------------------------------------------------------------------------
  9200.   # ● draw_character_floor
  9201.   #--------------------------------------------------------------------------  
  9202.   def draw_character_floor(x,y)
  9203.       image = $game_temp.pre_cache_file_menu[6]
  9204.       cw = image.width  
  9205.       ch = image.height
  9206.       src_rect = Rect.new(0, 0, cw, ch)   
  9207.       self.contents.blt(x , y , image, src_rect)   
  9208.   end
  9209.  
  9210. end  
  9211.  
  9212. #==============================================================================
  9213. # ■ DataManager
  9214. #==============================================================================
  9215. module DataManager
  9216.  
  9217.   #--------------------------------------------------------------------------
  9218.   # ● Make Save Header
  9219.   #--------------------------------------------------------------------------  
  9220.   def self.make_save_header
  9221.       header = {}
  9222.       header[:characters] = $game_party.characters_for_savefile
  9223.       header[:playtime_s] = $game_system.playtime_s
  9224.       header[:playtime] = $game_system.playtime
  9225.       header[:map_name] = $game_map.display_name
  9226.       header[:members] = $game_party.members
  9227.       header
  9228.   end  
  9229.  
  9230. end  
  9231.  
  9232. #==============================================================================
  9233. # ■ Scene Save
  9234. #==============================================================================
  9235. class Scene_Save < Scene_File
  9236.  
  9237.   #--------------------------------------------------------------------------
  9238.   # ● Initialize
  9239.   #--------------------------------------------------------------------------
  9240.   def initialize
  9241.       $game_temp.scene_save = true
  9242.       super
  9243.   end  
  9244.  
  9245. end  
  9246.  
  9247. #==============================================================================
  9248. # ■ Scene Load
  9249. #==============================================================================
  9250. class Scene_Load < Scene_File
  9251.  
  9252.   #--------------------------------------------------------------------------
  9253.   # ● Initialize
  9254.   #--------------------------------------------------------------------------
  9255.   def initialize
  9256.       $game_temp.scene_save = false
  9257.       super
  9258.   end  
  9259.  
  9260. end
  9261.  
  9262. #==============================================================================
  9263. # ■ Scene_File
  9264. #==============================================================================
  9265. class Scene_File
  9266.   include MOG_MENU_SAVE
  9267.  
  9268. #--------------------------------------------------------------------------
  9269. # ● Main
  9270. #--------------------------------------------------------------------------         
  9271. def main
  9272.      $game_temp.execute_pre_cache_file_menu
  9273.      create_sprites
  9274.      Graphics.transition(10)
  9275.      execute_loop
  9276.      execute_dispose
  9277. end   
  9278.  
  9279. #--------------------------------------------------------------------------
  9280. # ● Execute Loop
  9281. #--------------------------------------------------------------------------           
  9282. def execute_loop
  9283.      loop do
  9284.           Graphics.update
  9285.           Input.update
  9286.           update
  9287.           if SceneManager.scene != self
  9288.               break
  9289.           end
  9290.      end
  9291. end   
  9292.  
  9293. end
  9294.  
  9295. #==============================================================================
  9296. # ■ Window_SaveFile
  9297. #==============================================================================
  9298. class Window_SaveFile_A < Window_Base
  9299.   attr_reader   :filename               
  9300.   attr_reader   :file_exist               
  9301.   attr_reader   :time_stamp              
  9302.   attr_reader   :selected                 
  9303.   attr_reader   :file_index
  9304.  
  9305.   #--------------------------------------------------------------------------
  9306.   # ● Initialize
  9307.   #--------------------------------------------------------------------------
  9308.   def initialize(file_index, filename)
  9309.       super(0, 0,720, 140)
  9310.       self.opacity = 0
  9311.       @file_index = file_index
  9312.       @filename = filename
  9313.       load_gamedata
  9314.       refresh
  9315.       @selected = false
  9316.   end
  9317.  
  9318.   #--------------------------------------------------------------------------
  9319.   # ● load_gamedata
  9320.   #--------------------------------------------------------------------------
  9321.   def load_gamedata
  9322.     @time_stamp = Time.at(0)
  9323.     @file_exist = FileTest.exist?(@filename)
  9324.     if @file_exist
  9325.        header = DataManager.load_header(@file_index)
  9326.        if header == nil
  9327.           @file_exist = false
  9328.           return
  9329.        end  
  9330.        @characters = header[:characters]
  9331.        @total_sec = header[:playtime]
  9332.        @mapname = header[:map_name]
  9333.        @members = header[:members]
  9334.     end
  9335.   end
  9336.  
  9337.   #--------------------------------------------------------------------------
  9338.   # ● Refresh
  9339.   #--------------------------------------------------------------------------
  9340.   def refresh
  9341.       self.contents.clear
  9342.       self.contents.font.color = normal_color
  9343.       xp = 96
  9344.       ex = 60   
  9345.       if @file_exist
  9346.          if @total_sec == nil
  9347.             draw_parameter_layout2(0,50,0)
  9348.             draw_parameter_layout(-10 + xp,0)
  9349.             value = @file_index + 1
  9350.             draw_picture_number_file(13 + xp, 32,value, "File_Number_01",1,0,3,0)           
  9351.             self.contents.draw_text(140, 50, 450, 32, "Error! - Please, dont't use your old Save Files...", 0)
  9352.             return
  9353.         end  
  9354.         draw_parameter_layout2(0,50,0)
  9355.         draw_parameter_layout(-10 + xp,0)
  9356.         value = @file_index + 1
  9357.         draw_picture_number_file(13 + xp, 32,value, "File_Number_01",1,0,3,0)
  9358.         draw_party_characters(180 + xp, 75,ex)
  9359.         draw_playtime(495, 20, contents.width - 4, 2)
  9360.         draw_map_location( 400 + xp,64)
  9361.         draw_level(185 + xp,85,ex)
  9362.         draw_face_save(40 + xp,0)
  9363.       else  
  9364.         draw_parameter_layout2(0,50,1)
  9365.         draw_parameter_layout(-10 + xp,0)
  9366.         value = @file_index + 1
  9367.         draw_picture_number_file(13 + xp, 32,value, "File_Number_01",1,0,3,0)      
  9368.          self.contents.draw_text(260, 50, 120, 32, "No Data", 1)
  9369.       end
  9370.     end
  9371.  
  9372.   #--------------------------------------------------------------------------
  9373.   # ● draw_face
  9374.   #--------------------------------------------------------------------------
  9375.   def draw_face_save(x,y)
  9376.      draw_actor_face(@members[0], x, y)
  9377.   end
  9378.  
  9379.   #--------------------------------------------------------------------------
  9380.   # ● draw_level
  9381.   #--------------------------------------------------------------------------
  9382.   def draw_level(x,y,ex)
  9383.       self.contents.font.color = normal_color   
  9384.       for i in [email]0...@members.size[/email]
  9385.         break if i > 3
  9386.         level = @members[i].level
  9387.         draw_picture_number_file(x + (ex  * i) , y ,level, "File_Number_01",1,0,3,1)
  9388.       end        
  9389.   end
  9390.  
  9391.   #--------------------------------------------------------------------------
  9392.   # ● draw_map_location
  9393.   #--------------------------------------------------------------------------
  9394.   def draw_map_location(x,y)
  9395.       self.contents.font.bold = true
  9396.       self.contents.font.size = 20
  9397.       self.contents.font.italic = true
  9398.       self.contents.draw_text(x, y, 125, 32, @mapname.to_s, 0)
  9399.   end
  9400.   #--------------------------------------------------------------------------
  9401.   # ● draw_party_characters
  9402.   #--------------------------------------------------------------------------
  9403.   def draw_party_characters(x, y,ex)
  9404.       for i in [email]0...@characters.size[/email]
  9405.         break if i > 3
  9406.         name = @characters[i][0]
  9407.         index = @characters[i][1]
  9408.         draw_character_floor(- 35 + x + i * ex,y - 20)      
  9409.         draw_character(name, index, x + i * ex, y)
  9410.       end
  9411.   end
  9412.  
  9413.   #--------------------------------------------------------------------------
  9414.   # ● draw_playtime
  9415.   #--------------------------------------------------------------------------
  9416.   def draw_playtime(x, y, width, align)
  9417.       hour = @total_sec / 60 / 60
  9418.       min = @total_sec / 60 % 60
  9419.       sec = @total_sec % 60
  9420.       time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
  9421.       draw_picture_number_file(x + 18 * 0, y ,0, "File_Number_01",0,0,3,0) if hour < 10
  9422.       draw_picture_number_file(x + 18 * 1, y ,hour, "File_Number_01",0,0,3,0)
  9423.       draw_picture_number_file(x + 18 * 3, y ,0, "File_Number_01",0,0,3,0) if min < 10
  9424.       draw_picture_number_file(x + 18 * 4, y ,min, "File_Number_01",0,0,3,0)
  9425.       draw_picture_number_file(x + 18 * 6, y ,0, "File_Number_01",0,0,3,0) if sec < 10
  9426.       draw_picture_number_file(x + 18 * 7, y ,sec , "File_Number_01",0,0,3,0)     
  9427.   end
  9428.  
  9429.   #--------------------------------------------------------------------------
  9430.   # ● selected
  9431.   #--------------------------------------------------------------------------
  9432.   def selected=(selected)
  9433.       @selected = selected
  9434.   end
  9435. end
  9436.  
  9437. #==============================================================================
  9438. # ■ Scene_File
  9439. #==============================================================================
  9440. class Scene_File
  9441.  
  9442.   #--------------------------------------------------------------------------
  9443.   # ● Create Sprites
  9444.   #--------------------------------------------------------------------------
  9445.   def create_sprites
  9446.       @saving = $game_temp.scene_save
  9447.       @file_max = FILES_MAX
  9448.       @file_max = 1 if FILES_MAX < 1
  9449.       create_background
  9450.       create_layout
  9451.       create_savefile_windows
  9452.       create_particles
  9453.       @index = DataManager.last_savefile_index
  9454.       @check_prev_index = true
  9455.       @savefile_windows[@index].selected = true   
  9456.   end  
  9457.  
  9458.   #--------------------------------------------------------------------------
  9459.   # ● Create Background
  9460.   #--------------------------------------------------------------------------            
  9461.   def create_background
  9462.       @background = Plane.new
  9463.       @background.bitmap = $game_temp.pre_cache_file_menu[0]
  9464.       @background.z = 0
  9465.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  9466.   end   
  9467.  
  9468.   #--------------------------------------------------------------------------
  9469.   # ● Create_Layout
  9470.   #--------------------------------------------------------------------------  
  9471.   def create_layout
  9472.       @layout_01 = Sprite.new  
  9473.       @layout_01.bitmap = $game_temp.pre_cache_file_menu[1]
  9474.       @layout_01.z = 1      
  9475.       @layout_01.blend_type = 1      
  9476.       @save_image = $game_temp.pre_cache_file_menu[2]
  9477.       @layout_02 = Sprite.new  
  9478.       @layout_02.bitmap = Bitmap.new(@save_image.width,@save_image.height)
  9479.       cw = @save_image.width
  9480.       ch = @save_image.height / 2
  9481.       if @saving
  9482.          h = 0
  9483.       else  
  9484.          h = ch
  9485.       end  
  9486.       src_rect = Rect.new(0, h, cw, ch)
  9487.       @layout_02.bitmap.blt(0,0, @save_image, src_rect)      
  9488.       @layout_02.z = 3
  9489.       @layout_02.y = 370
  9490.    end
  9491.  
  9492.   #--------------------------------------------------------------------------
  9493.   # ● Create Save File Window
  9494.   #--------------------------------------------------------------------------
  9495.   def create_savefile_windows
  9496.       @pw_pos = [-160,32]
  9497.       @aw_pos = [-96,160]
  9498.       @nw_pos = [-32,288]
  9499.       @savefile_windows = []
  9500.       for i in 0...@file_max
  9501.           @savefile_windows[i] = Window_SaveFile_A.new(i, DataManager.make_filename(i))
  9502.           @savefile_windows[i].z = 2
  9503.           @savefile_windows[i].visible = false
  9504.           @savefile_windows[i].x = 400
  9505.       end
  9506.       check_active_window
  9507.       @item_max = @file_max
  9508.   end
  9509.  
  9510.   #--------------------------------------------------------------------------
  9511.   # ● Create Particles
  9512.   #--------------------------------------------------------------------------  
  9513.   def create_particles
  9514.       @particles_sprite =[]
  9515.       for i in 0...NUMBER_OF_PARTICLES
  9516.           @particles_sprite.push(Particles_Menu.new(nil))
  9517.       end
  9518.   end   
  9519.  
  9520. end
  9521.  
  9522. #==============================================================================
  9523. # ■ Scene_File
  9524. #==============================================================================
  9525. class Scene_File
  9526.  
  9527.   #--------------------------------------------------------------------------
  9528.   # ● Execute Dispose
  9529.   #--------------------------------------------------------------------------
  9530.   def execute_dispose
  9531.       return if @background == nil
  9532.       Graphics.freeze
  9533.       dispose_background
  9534.       dispose_particles
  9535.       dispose_layout
  9536.       dispose_item_windows
  9537.   end
  9538.  
  9539. #--------------------------------------------------------------------------
  9540. # ● Dispose Layout
  9541. #--------------------------------------------------------------------------  
  9542. def dispose_layout
  9543.      @layout_01.dispose
  9544.      @layout_02.bitmap.dispose
  9545.      @layout_02.dispose  
  9546. end
  9547.  
  9548. #--------------------------------------------------------------------------
  9549. # ● Dispose Background
  9550. #--------------------------------------------------------------------------
  9551. def dispose_background
  9552.      @background.dispose
  9553.      @background = nil   
  9554. end
  9555.  
  9556. #--------------------------------------------------------------------------
  9557. # ● Dispose Particles
  9558. #--------------------------------------------------------------------------   
  9559. def dispose_particles
  9560.      return if @particles_sprite == nil
  9561.      @particles_sprite.each {|sprite| sprite.dispose }
  9562. end   
  9563.  
  9564.   #--------------------------------------------------------------------------
  9565.   # ● Dispose of Save File Window
  9566.   #--------------------------------------------------------------------------
  9567.   def dispose_item_windows
  9568.       for window in @savefile_windows
  9569.           window.dispose
  9570.       end
  9571.   end  
  9572.  
  9573. end
  9574.  
  9575. #==============================================================================
  9576. # ■ Scene_File
  9577. #==============================================================================
  9578. class Scene_File  
  9579.  
  9580.   #--------------------------------------------------------------------------
  9581.   # ● Update Sprites
  9582.   #--------------------------------------------------------------------------
  9583.   def update_sprites
  9584.       check_start_index
  9585.       update_savefile_windows      
  9586.       update_background
  9587.       update_particles      
  9588.   end
  9589.  
  9590.   #--------------------------------------------------------------------------
  9591.   # ● Update Background
  9592.   #--------------------------------------------------------------------------              
  9593.   def update_background
  9594.       return if @background == nil
  9595.       @background.ox += @background_scroll[0]
  9596.       @background.oy += @background_scroll[1]
  9597.   end   
  9598.  
  9599.   #--------------------------------------------------------------------------
  9600.   # ● Update Particles
  9601.   #--------------------------------------------------------------------------  
  9602.   def update_particles
  9603.       return if @particles_sprite == nil
  9604.       @particles_sprite.each {|sprite| sprite.update }
  9605.   end
  9606.  
  9607.   #--------------------------------------------------------------------------
  9608.   # ● check_start_index
  9609.   #--------------------------------------------------------------------------
  9610.   def check_start_index
  9611.       return if @check_prev_index == false
  9612.       @check_prev_index = false
  9613.       check_active_window   
  9614.   end  
  9615.  
  9616.   #--------------------------------------------------------------------------
  9617.   # ● check_active_window   
  9618.   #--------------------------------------------------------------------------
  9619.   def check_active_window   
  9620.       @index = 0 if @index == nil
  9621.       for i in 0...@file_max  
  9622.         @pw = @index - 1
  9623.         @pw = 0 if @pw > @file_max - 1
  9624.         @pw = @file_max- 1 if @pw < 0        
  9625.         @aw = @index
  9626.         @nw = @index + 1
  9627.         @nw = 0 if @nw > @file_max - 1
  9628.         @nw = @file_max - 1  if @nw < 0
  9629.         case @savefile_windows[i].file_index
  9630.            when @pw,@nw
  9631.                 @savefile_windows[i].visible = true
  9632.                 @savefile_windows[i].contents_opacity = 80
  9633.            when @aw  
  9634.                 @savefile_windows[i].visible = true
  9635.                 @savefile_windows[i].contents_opacity = 255
  9636.            else
  9637.                 @savefile_windows[i].visible = false
  9638.         end
  9639.       end         
  9640.   end
  9641.  
  9642.   #--------------------------------------------------------------------------
  9643.   # ● Update Save File Window
  9644.   #--------------------------------------------------------------------------
  9645.   def update_savefile_windows
  9646.       update_slide_window
  9647.       for window in @savefile_windows
  9648.         window.update
  9649.       end
  9650.   end
  9651.  
  9652.   #--------------------------------------------------------------------------
  9653.   # ● update_slide_window
  9654.   #--------------------------------------------------------------------------  
  9655.   def update_slide_window
  9656.       slide_window_x(@pw,@pw_pos[0])
  9657.       slide_window_x(@aw,@aw_pos[0])
  9658.       slide_window_x(@nw,@nw_pos[0])
  9659.       slide_window_y(@pw,@pw_pos[1])
  9660.       slide_window_y(@aw,@aw_pos[1])
  9661.       slide_window_y(@nw,@nw_pos[1])
  9662.   end
  9663.  
  9664.   #--------------------------------------------------------------------------
  9665.   # ● slide_window_x
  9666.   #--------------------------------------------------------------------------   
  9667.   def slide_window_x(i,x_pos)
  9668.       if @savefile_windows[i].x < x_pos
  9669.          @savefile_windows[i].x += 15
  9670.          @savefile_windows[i].x = x_pos if @savefile_windows[i].x > x_pos
  9671.       end  
  9672.       if @savefile_windows[i].x > x_pos
  9673.          @savefile_windows[i].x -= 15
  9674.          @savefile_windows[i].x = x_pos if @savefile_windows[i].x < x_pos        
  9675.        end            
  9676.   end   
  9677.  
  9678.   #--------------------------------------------------------------------------
  9679.   # ● slide_window_y
  9680.   #--------------------------------------------------------------------------   
  9681.   def slide_window_y(i,y_pos)
  9682.       if @savefile_windows[i].y < y_pos
  9683.          @savefile_windows[i].y += 15
  9684.          @savefile_windows[i].y = y_pos if @savefile_windows[i].y > y_pos
  9685.       end  
  9686.       if @savefile_windows[i].y > y_pos
  9687.          @savefile_windows[i].y -= 15
  9688.          @savefile_windows[i].y = y_pos if @savefile_windows[i].y < y_pos        
  9689.        end            
  9690.   end   
  9691.  
  9692.   #--------------------------------------------------------------------------
  9693.   # ● reset_position
  9694.   #--------------------------------------------------------------------------     
  9695.   def reset_position(diretion)
  9696.       check_active_window      
  9697.       case diretion
  9698.          when 0
  9699.             @savefile_windows[@pw].y = -64
  9700.             @savefile_windows[@pw].x = 0
  9701.          when 1  
  9702.             @savefile_windows[@nw].y = 440
  9703.             @savefile_windows[@nw].x = 0
  9704.       end        
  9705.   end   
  9706.  
  9707. end  
  9708.  
  9709. #==============================================================================
  9710. # ■ Scene_File
  9711. #==============================================================================
  9712. class Scene_File  
  9713.  
  9714.   #--------------------------------------------------------------------------
  9715.   # ● Frame Update
  9716.   #--------------------------------------------------------------------------
  9717.   def update
  9718.       update_sprites
  9719.       update_command      
  9720.   end
  9721.  
  9722.   #--------------------------------------------------------------------------
  9723.   # ● Update Command
  9724.   #--------------------------------------------------------------------------
  9725.   def update_command
  9726.       if Input.trigger?(Input::C)
  9727.          on_savefile_ok
  9728.       elsif Input.trigger?(Input::B)
  9729.          Sound.play_cancel
  9730.          return_scene
  9731.       else
  9732.         last_index = @index
  9733.         if Input.trigger?(Input::DOWN)
  9734.            execute_index(1)
  9735.            if @file_max > 2
  9736.               reset_position(1)
  9737.            else
  9738.               reset_position(0)
  9739.            end  
  9740.         end
  9741.         if Input.trigger?(Input::UP)
  9742.            execute_index(-1)
  9743.            reset_position(0)
  9744.         end
  9745.         if @index != last_index
  9746.            Sound.play_cursor
  9747.            @savefile_windows[last_index].selected = false
  9748.            @savefile_windows[@index].selected = true
  9749.         end      
  9750.       end
  9751.   end
  9752.  
  9753.   #--------------------------------------------------------------------------
  9754.   # ● Execute Index
  9755.   #--------------------------------------------------------------------------  
  9756.   def execute_index(value)
  9757.       @index += value
  9758.       @index = @index >= @file_max ? 0 : @index < 0 ? (@file_max - 1) : @index
  9759.   end
  9760.  
  9761. end
  9762.  
  9763. #==============================================================================
  9764. # ■ Game_Temp
  9765. #==============================================================================
  9766. class Game_Temp
  9767.  
  9768.   #--------------------------------------------------------------------------
  9769.   # ● Execute Pre Cache End Menu
  9770.   #--------------------------------------------------------------------------   
  9771.   def execute_pre_cache_end_menu
  9772.       @pre_cache_end_menu = []
  9773.       @pre_cache_end_menu.push(Cache.menu_end("Background"))
  9774.       @pre_cache_end_menu.push(Cache.menu_end("Layout"))
  9775.   end   
  9776.  
  9777. end
  9778.  
  9779. #==============================================================================
  9780. # ■ Scene_End
  9781. #==============================================================================
  9782. class Scene_End
  9783.   include MOG_MENU_END
  9784.   include MOG_MENU_BASE
  9785.  
  9786.   #--------------------------------------------------------------------------
  9787.   # ● Main
  9788.   #--------------------------------------------------------------------------        
  9789.   def main
  9790.       execute_setup
  9791.       execute_loop
  9792.       execute_dispose
  9793.   end  
  9794.  
  9795.   #--------------------------------------------------------------------------
  9796.   # ● Execute Setup
  9797.   #--------------------------------------------------------------------------        
  9798.   def execute_setup
  9799.       @phase = 0
  9800.       create_sprites
  9801.   end
  9802.  
  9803.   #--------------------------------------------------------------------------
  9804.   # ● Execute Lopp
  9805.   #--------------------------------------------------------------------------        
  9806.   def execute_loop
  9807.       Graphics.transition(10)
  9808.       loop do
  9809.          Input.update
  9810.          update
  9811.          Graphics.update
  9812.          break if SceneManager.scene != self
  9813.       end
  9814.   end
  9815.  
  9816. end
  9817.  
  9818. #==============================================================================
  9819. # ■ Scene_End
  9820. #==============================================================================
  9821. class Scene_End
  9822.  
  9823.   #--------------------------------------------------------------------------
  9824.   # ● Create Sprites
  9825.   #--------------------------------------------------------------------------
  9826.   def create_sprites
  9827.       create_menu_background
  9828.       create_layout
  9829.       create_particles
  9830.       create_command_window
  9831.   end
  9832.  
  9833.   #--------------------------------------------------------------------------
  9834.   # ● Create Menu Background
  9835.   #--------------------------------------------------------------------------            
  9836.   def create_menu_background
  9837.       @background = Plane.new
  9838.       @background.bitmap = $game_temp.pre_cache_end_menu[0]
  9839.       @background.z = 0
  9840.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  9841.   end   
  9842.  
  9843.   #--------------------------------------------------------------------------
  9844.   # ● Create Layout
  9845.   #--------------------------------------------------------------------------              
  9846.   def create_layout     
  9847.       @layout = Sprite.new
  9848.       @layout.bitmap = $game_temp.pre_cache_end_menu[1]
  9849.       @layout.z = 3
  9850.   end  
  9851.  
  9852.   #--------------------------------------------------------------------------
  9853.   # ● Create Particles
  9854.   #--------------------------------------------------------------------------  
  9855.   def create_particles
  9856.       @particles_sprite =[]
  9857.       for i in 0...NUMBER_OF_PARTICLES
  9858.           @particles_sprite.push(Particles_Menu.new(nil))
  9859.       end
  9860.   end   
  9861.  
  9862.   #--------------------------------------------------------------------------
  9863.   # ● Create Command Window
  9864.   #--------------------------------------------------------------------------
  9865.   def create_command_window
  9866.       @command_window = Window_GameEnd.new
  9867.       @command_window.set_handler(:to_title, method(:command_to_title))
  9868.       @command_window.set_handler(:shutdown, method(:command_shutdown))
  9869.       @command_window.set_handler(:cancel,   method(:return_scene))
  9870.   end  
  9871.  
  9872. end
  9873.  
  9874. #==============================================================================
  9875. # ■ Scene_End
  9876. #==============================================================================
  9877. class Scene_End
  9878.  
  9879.   #--------------------------------------------------------------------------
  9880.   # ● Execute Dispose
  9881.   #--------------------------------------------------------------------------        
  9882.   def execute_dispose
  9883.       Graphics.freeze
  9884.       dispose_background
  9885.       dispose_layout
  9886.       dispose_particles
  9887.       dispose_command_window
  9888.    end
  9889.  
  9890.   #--------------------------------------------------------------------------
  9891.   # ● Dispose Background
  9892.   #--------------------------------------------------------------------------  
  9893.   def dispose_background
  9894.       return if @background == nil
  9895.       @background.dispose
  9896.       @background = nil
  9897.   end
  9898.  
  9899.  
  9900.   #--------------------------------------------------------------------------
  9901.   # ● Dispose Layout
  9902.   #--------------------------------------------------------------------------               
  9903.   def dispose_layout
  9904.       return if @layout == nil
  9905.       @layout.dispose
  9906.       @layout = nil
  9907.   end  
  9908.  
  9909. #--------------------------------------------------------------------------
  9910. # ● Dispose Particles
  9911. #--------------------------------------------------------------------------   
  9912. def dispose_particles
  9913.      return if @particles_sprite == nil
  9914.      @particles_sprite.each {|sprite| sprite.dispose }
  9915. end     
  9916.  
  9917.   #--------------------------------------------------------------------------
  9918.   # ● Dispose Command Window
  9919.   #--------------------------------------------------------------------------
  9920.   def dispose_command_window
  9921.       return if @command_window == nil
  9922.       @command_window.dispose
  9923.   end     
  9924.  
  9925. end
  9926.  
  9927. #==============================================================================
  9928. # ■ Scene_End
  9929. #==============================================================================
  9930. class Scene_End
  9931.  
  9932.   #--------------------------------------------------------------------------
  9933.   # ● Update Sprites
  9934.   #--------------------------------------------------------------------------         
  9935.   def update_sprites   
  9936.       update_background
  9937.       update_particles     
  9938.       update_command_window
  9939.   end
  9940.  
  9941.   #--------------------------------------------------------------------------
  9942.   # ● Update Background
  9943.   #--------------------------------------------------------------------------              
  9944.   def update_background
  9945.       return if @background == nil
  9946.       @background.ox += @background_scroll[0]
  9947.       @background.oy += @background_scroll[1]
  9948.   end   
  9949.  
  9950.   #--------------------------------------------------------------------------
  9951.   # ● Update Particles
  9952.   #--------------------------------------------------------------------------  
  9953.   def update_particles
  9954.       return if @particles_sprite == nil
  9955.       @particles_sprite.each {|sprite| sprite.update }
  9956.   end
  9957.  
  9958.   #--------------------------------------------------------------------------
  9959.   # ● Update Command Window
  9960.   #--------------------------------------------------------------------------
  9961.   def update_command_window
  9962.       return if @command_window == nil
  9963.       @command_window.update
  9964.   end      
  9965.  
  9966. end
  9967.  
  9968. #==============================================================================
  9969. # ■ Scene_End
  9970. #==============================================================================
  9971. class Scene_End
  9972.  
  9973.   #--------------------------------------------------------------------------
  9974.   # ● Update
  9975.   #--------------------------------------------------------------------------      
  9976.   def update
  9977.       update_sprites
  9978.       update_command
  9979.   end
  9980.  
  9981.   #--------------------------------------------------------------------------
  9982.   # ● Return Scene
  9983.   #--------------------------------------------------------------------------         
  9984.   def return_scene
  9985.       Sound.play_cancel
  9986.       SceneManager.return
  9987.   end
  9988.  
  9989.   #--------------------------------------------------------------------------
  9990.   # ● ON Actor Charge
  9991.   #--------------------------------------------------------------------------
  9992.   def on_actor_change
  9993.       $game_temp.actor_menu_temp = @actor
  9994.       SceneManager.goto(Scene_Status)
  9995.   end  
  9996.  
  9997.   #--------------------------------------------------------------------------
  9998.   # ● Update Command
  9999.   #--------------------------------------------------------------------------      
  10000.   def update_command   
  10001.   end  
  10002.  
  10003. end


Lv3.寻梦者

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

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
2
发表于 2014-12-4 16:10:19 | 只看该作者
9000行的脚本麻烦加个折叠……

你有试过把它们俩换个顺序吗(上下顺序)?

点评

指令那个不难,不过我现在没环境,没法讲具体的给你听。概括说的话就是参考其他指令的写法,在传送的指令中写“场景移动”的脚本写法就行。  发表于 2014-12-4 16:24
那肯定这个脚本重定义了很多界面的内容,要不然也不会这么长。  发表于 2014-12-4 16:17
试过了没用,其实是1w行。。。我已经不抱什么希望了,我有新的问题了你去看下呗  发表于 2014-12-4 16:15
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 05:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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