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

Project1

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

[已经过期] 脚本报错

[复制链接]

Lv1.梦旅人

梦石
0
星屑
199
在线时间
248 小时
注册时间
2012-4-29
帖子
386
跳转到指定楼层
1
发表于 2013-11-20 18:45:09 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 魔力的觉醒 于 2013-11-21 21:23 编辑

RUBY 代码复制
  1. #==============================================================================
  2. # +++ MOG - Monogatari (物語)  (v1.3) +++
  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.3 - Corrigido o bug do som da Scene Skill.
  15. # 1.2 - Compatibilidade com Third Party scripts.
  16. #     - Scene File incorporado ao sistema Monogatari, melhorando a performance.
  17. #==============================================================================
  18.  
  19. #==============================================================================
  20. # NOTA - Como este é um script para apresentar técnicas de RGSS, não foram
  21. # adicionados comentários explicativos no modulo de configuração
  22. #==============================================================================
  23.  
  24. #==============================================================================
  25. # ■ MAIN MENU
  26. #==============================================================================
  27. module MOG_MENU
  28.    NUMBER_OF_PARTICLES = 20  
  29.    BACKGROUND_SCROLL_SPEED = [1,0]
  30.    COMMAND_POSITION = [32, 84]
  31.    COMMAND_POSITION_2 = [10,100]
  32.    COMMAND_SPACE = 4
  33.    COMMAND_NAME_POSITION = [0,0]
  34.    COMMAND_NAME_POSITION_2 = [220,48]
  35.    ACTOR_SPACE = 100
  36.    ACTOR_POSITION = [240,0]
  37.  
  38.    ACTOR_LAYOUT_POSITON = [0,275]
  39.    ACTOR_HP1_POSITON = [28,315]
  40.    ACTOR_HP2_POSITON = [50,330]
  41.    ACTOR_MP1_POSITON = [28,346]
  42.    ACTOR_MP2_POSITON = [50,361]   
  43.    ACTOR_HP_METER_POSITON = [29,329]
  44.    ACTOR_MP_METER_POSITON = [29,360]
  45.    ACTOR_LEVEL_POSITON = [30,290]
  46.    ACTOR_STATES_POSITION = [63,283]
  47.  
  48.    MEMBERS_FACE_POSITION =[150,55]
  49.    MEMBERS_FACE_SPACE = 64
  50.    MEMBERS_ARROW_LAYOUT_POSITION = [217,40]
  51.    MEMBERS_ARROW_1_POSITION = [180,40]
  52.    MEMBERS_ARROW_2_POSITION = [300,40]
  53.    TIME_NUMBER_POS = [415,10]
  54.    GOLD_NUMBER_POS = [170,388]
  55.    LOCATION_POS = [330,380]
  56. end
  57.  
  58. #==============================================================================
  59. # ■ MOG_MENU ITEM
  60. #==============================================================================
  61. module MOG_MENU_ITEM
  62.    NUMBER_OF_PARTICLES = 20  
  63.    BACKGROUND_SCROLL_SPEED = [0,0]
  64.    COMMAND_POSITION = [0, 69]
  65.    BUTTON_POSITION = [210, 30]
  66.    BUTTON_SPACE = 90
  67. end
  68.  
  69. #==============================================================================
  70. # ■ MOG_MENU SKILL
  71. #==============================================================================
  72. module MOG_MENU_SKILL
  73.    NUMBER_OF_PARTICLES = 20  
  74.    BACKGROUND_SCROLL_SPEED = [0,0]
  75. end
  76.  
  77. #==============================================================================
  78. # ■ MOG_ACTOR SKILL STATUS
  79. #==============================================================================
  80. module MOG_ACTOR_SKILL_STATUS
  81.   MEMBERS_SPACE = 80  
  82.   LAYOUT_POSITION = [155,0]
  83.   PAR_POSITION = [0,0]
  84.   FACE_POSITION = [-13,-3]
  85.   HP_METER_POSITION = [158,15]
  86.   MP_METER_POSITION = [177,35]
  87.   STATES_POSITION = [71,36]
  88.   STATES_SCROLLING_ANIMATION = true  
  89.   NAME_POSITION = [105,34]
  90.   FONT_NAME = "楷体"
  91.   FONT_SIZE = 14
  92.   FONT_BOLD = true  
  93. end
  94.  
  95. #==============================================================================
  96. # ■ MOG_MENU EQUIP
  97. #==============================================================================
  98. module MOG_MENU_EQUIP
  99.    NUMBER_OF_PARTICLES = 30  
  100.    BACKGROUND_SCROLL_SPEED = [0,0]
  101.    FONT_NAME = "楷体"
  102.    FONT_SIZE = 15
  103.    FONT_BOLD = true
  104.    FONT_ITALIC = false   
  105. end
  106.  
  107. #==============================================================================
  108. # ■ MOG_MENU STATUS
  109. #==============================================================================
  110. module MOG_MENU_STATUS
  111.    NUMBER_OF_PARTICLES = 30  
  112.    BACKGROUND_SCROLL_SPEED = [1,0]
  113. end
  114.  
  115. #==============================================================================
  116. # ■ MOG MENU PARTY
  117. #==============================================================================
  118. module MOG_MENU_PARTY
  119.    NUMBER_OF_PARTICLES = 20  
  120.    BACKGROUND_SCROLL_SPEED = [0,0]   
  121. end
  122.  
  123. #==============================================================================
  124. # ■ MOG MENU SAVE
  125. #==============================================================================
  126. module MOG_MENU_SAVE
  127.    FILES_MAX = 9   
  128.    NUMBER_OF_PARTICLES = 20   
  129.    BACKGROUND_SCROLL_SPEED = [1,0]
  130. end
  131.  
  132. #==============================================================================
  133. # ■ MOG MENU END
  134. #==============================================================================
  135. module MOG_MENU_END
  136.    NUMBER_OF_PARTICLES = 20
  137.    BACKGROUND_SCROLL_SPEED = [0,0]
  138. end
  139.  
  140. #==============================================================================
  141. # ■ MOG ACTOR MENU STATUS
  142. #==============================================================================
  143. module MOG_ACTOR_MENU_STATUS  
  144.   LAYOUT_POSITION = [385,115]
  145.   FACE_POSITION = [48,-32]
  146.   PAR_POSITION = [5,64]
  147.   STATES_POSITION = [15,25]
  148.   STATES_SCROLLING_ANIMATION = false
  149.   NAME_POSITION = [10,60]
  150.   FONT_NAME = "方正粗圆简体"
  151.   FONT_SIZE = 16
  152.   FONT_BOLD = true
  153. end
  154.  
  155. #==============================================================================
  156. # ■ MOG MEMBERS LAYOUT
  157. #==============================================================================
  158. module MOG_MEMBERS_LAYOUT
  159.   MEMBERS_SPACE = 80  
  160.   LAYOUT_POSITION = [3,160]
  161.   PAR_POSITION = [0,0]
  162.   FACE_POSITION = [0,-2]
  163.   HP_METER_POSITION = [12,37]
  164.   MP_METER_POSITION = [86,37]
  165.   SCOPE_TEXT_POSITION = [0,170]
  166.   ARROW_1_POSITION = [50,55]
  167.   ARROW_2_POSITION = [50,4]
  168.   NAME_POSITION = [42,38]
  169.   FONT_NAME = "方正粗圆简体"
  170.   FONT_SIZE = 18
  171.   FONT_BOLD = true  
  172. end
  173.  
  174. #==============================================================================
  175. # ■ MOG MENU BASE
  176. #==============================================================================
  177. module MOG_MENU_BASE  
  178. end
  179.  
  180. #==============================================================================
  181. # ■ Game Temp
  182. #==============================================================================
  183. class Game_Temp
  184.  
  185.   attr_accessor :menu_index
  186.   attr_accessor :actor_menu_temp
  187.   attr_accessor :item_scope
  188.   attr_accessor :temp_actor_equip
  189.  
  190.   #--------------------------------------------------------------------------
  191.   # ● Initialize
  192.   #--------------------------------------------------------------------------  
  193.   alias mog_menu_index_initialize initialize
  194.   def initialize
  195.       @menu_index = 0
  196.       @actor_menu_temp = -1      
  197.       @item_scope = 0
  198.       @temp_actor_equip = nil
  199.       mog_menu_index_initialize
  200.   end
  201.  
  202. end
  203.  
  204. #==============================================================================
  205. # ■ Scene Map
  206. #==============================================================================
  207. class Scene_Map < Scene_Base
  208.  
  209. #--------------------------------------------------------------------------
  210. # ● Update Call Menu
  211. #--------------------------------------------------------------------------   
  212. alias mog_menu_monogatari_update_call_menu update_call_menu   
  213. def update_call_menu
  214.      if $game_party.members.size == 0
  215.         @call_menu = false
  216.         return
  217.      end
  218.      mog_menu_monogatari_update_call_menu
  219. end
  220.  
  221. #--------------------------------------------------------------------------
  222. # ● Call Menu
  223. #--------------------------------------------------------------------------   
  224. alias mog_menu_monogatari_call_menu call_menu
  225. def call_menu
  226.      $game_temp.menu_index = 0     
  227.      mog_menu_monogatari_call_menu
  228. end
  229.  
  230. end
  231.  
  232. #==============================================================================
  233. # ■ Window Command
  234. #==============================================================================
  235. class Window_Command < Window_Selectable
  236.   attr_reader :list
  237. end
  238.  
  239. #==============================================================================
  240. # ■ Game Party
  241. #==============================================================================
  242. class Game_Party < Game_Unit
  243.    attr_accessor :menu_actor_id   
  244. end
  245.  
  246. #==============================================================================
  247. # ■ Game Interpreter
  248. #==============================================================================
  249. class Game_Interpreter
  250.  
  251. #--------------------------------------------------------------------------
  252. # ● gain Tp
  253. #--------------------------------------------------------------------------      
  254. def gain_tp(actor_id,value)
  255.      return if $game_party.members[actor_id] == nil
  256.      $game_party.members[actor_id].tp += value.truncate
  257. end  
  258.  
  259. #--------------------------------------------------------------------------
  260. # ● Lose Tp
  261. #--------------------------------------------------------------------------      
  262. def lose_tp(actor_id,value)
  263.      return if $game_party.members[actor_id] == nil
  264.      $game_party.members[actor_id].tp -= value.truncate
  265. end   
  266.  
  267. end
  268.  
  269. #==============================================================================
  270. # ■ Cache
  271. #==============================================================================
  272. module Cache
  273.  
  274.   #--------------------------------------------------------------------------
  275.   # ● Menu
  276.   #--------------------------------------------------------------------------
  277.   def self.menu(filename)
  278.       load_bitmap("Graphics/Menus/", filename)
  279.   end  
  280.  
  281.   #--------------------------------------------------------------------------
  282.   # ● Menu Main
  283.   #--------------------------------------------------------------------------
  284.   def self.menu_main(filename)
  285.       load_bitmap("Graphics/Menus/Main/", filename)
  286.   end
  287.  
  288.   #--------------------------------------------------------------------------
  289.   # ● Menu Item
  290.   #--------------------------------------------------------------------------
  291.   def self.menu_item(filename)
  292.       load_bitmap("Graphics/Menus/Item/", filename)
  293.   end  
  294.  
  295.   #--------------------------------------------------------------------------
  296.   # ● Menu Skill
  297.   #--------------------------------------------------------------------------
  298.   def self.menu_skill(filename)
  299.       load_bitmap("Graphics/Menus/Skill/", filename)
  300.   end   
  301.  
  302.   #--------------------------------------------------------------------------
  303.   # ● Menu Equip
  304.   #--------------------------------------------------------------------------
  305.   def self.menu_equip(filename)
  306.       load_bitmap("Graphics/Menus/Equip/", filename)
  307.   end      
  308.  
  309.   #--------------------------------------------------------------------------
  310.   # ● Menu Status
  311.   #--------------------------------------------------------------------------
  312.   def self.menu_status(filename)
  313.       load_bitmap("Graphics/Menus/Status/", filename)
  314.   end   
  315.  
  316.   #--------------------------------------------------------------------------
  317.   # ● Menu Save
  318.   #--------------------------------------------------------------------------
  319.   def self.menu_save(filename)
  320.       load_bitmap("Graphics/Menus/Save/", filename)
  321.   end      
  322.  
  323.   #--------------------------------------------------------------------------
  324.   # ● Menu Party
  325.   #--------------------------------------------------------------------------
  326.   def self.menu_party(filename)
  327.       load_bitmap("Graphics/Menus/Party/", filename)
  328.   end     
  329.  
  330.   #--------------------------------------------------------------------------
  331.   # ● Menu End
  332.   #--------------------------------------------------------------------------
  333.   def self.menu_end(filename)
  334.       load_bitmap("Graphics/Menus/End/", filename)
  335.   end      
  336.  
  337. end
  338.  
  339. #==============================================================================
  340. # ■ Game_Temp
  341. #==============================================================================
  342. class Game_Temp
  343.  
  344.   attr_accessor :pre_cache_main_menu
  345.   attr_accessor :pre_cache_actor_menu
  346.   attr_accessor :pre_cache_item_menu
  347.   attr_accessor :pre_cache_skill_menu
  348.   attr_accessor :pre_cache_equip_menu
  349.   attr_accessor :pre_cache_status_menu
  350.   attr_accessor :pre_cache_party_menu
  351.   attr_accessor :pre_cache_file_menu
  352.   attr_accessor :pre_cache_end_menu
  353.   attr_accessor :pre_cache_icon
  354.   attr_accessor :pre_symbol
  355.  
  356.   #--------------------------------------------------------------------------
  357.   # ● Pre Cache Atelier Menu
  358.   #--------------------------------------------------------------------------  
  359.   def pre_cache_atelier_menu   
  360.       @pre_cache_main_menu = []
  361.       @pre_cache_item_menu = []
  362.       @pre_cache_skill_menu = []
  363.       @pre_cache_equip_menu = []
  364.       @pre_cache_status_menu = []
  365.       @pre_cache_party_menu = []
  366.       @pre_cache_file_menu = []
  367.       @pre_cache_end_menu = []
  368.       @pre_symbol = ""
  369.       execute_pre_cache_icon if can_pre_cache_icon?
  370.       execute_pre_cache_actor
  371.       execute_pre_cache_main_menu
  372.       execute_pre_cache_item_menu
  373.       execute_pre_cache_skill_menu
  374.       execute_pre_cache_equip_menu
  375.       execute_pre_cache_status_menu
  376.       execute_pre_cache_file_menu
  377.       execute_pre_cache_party_menu
  378.       execute_pre_cache_end_menu
  379.   end
  380.  
  381.   #--------------------------------------------------------------------------
  382.   # ● Pre Cache Icon
  383.   #--------------------------------------------------------------------------   
  384.   def execute_pre_cache_icon
  385.       @pre_cache_icon = Cache.system("Iconset")
  386.   end
  387.  
  388.   #--------------------------------------------------------------------------
  389.   # ● Can Pre Cache Menu?
  390.   #--------------------------------------------------------------------------  
  391.   def can_pre_cache_icon?
  392.       return true if @pre_cache_icon == nil
  393.       return true if @pre_cache_icon.disposed? rescue return false
  394.       return false
  395.   end
  396.  
  397. end
  398.  
  399. #==============================================================================
  400. # ■ Spriteset_Map
  401. #==============================================================================
  402. class Spriteset_Map  
  403.  
  404.   #--------------------------------------------------------------------------
  405.   # ● Initialize
  406.   #--------------------------------------------------------------------------
  407.   alias mog_atelier_menu_initialize initialize
  408.   def initialize
  409.       $game_temp.pre_cache_atelier_menu if $game_temp.can_pre_cache_icon?
  410.       mog_atelier_menu_initialize
  411.   end
  412.  
  413. end
  414.  
  415. #==============================================================================
  416. # ■ Particles_Menu
  417. #==============================================================================
  418. class Particles_Menu < Sprite
  419.  
  420. #--------------------------------------------------------------------------
  421. # ● Initialize
  422. #--------------------------------------------------------------------------            
  423.   def initialize(viewport = nil)
  424.       super(viewport)
  425.       @speed_x = 0
  426.       @speed_y = 0
  427.       @speed_a = 0
  428.       self.bitmap = Cache.menu("Particles")
  429.       self.blend_type = 0
  430.       self.z = 1
  431.       reset_setting(true)
  432.   end  
  433.  
  434. #--------------------------------------------------------------------------
  435. # ● Reset Setting
  436. #--------------------------------------------------------------------------               
  437.   def reset_setting(initial = false)
  438.       zoom = (50 + rand(100)) / 100.1
  439.       self.zoom_x = zoom
  440.       self.zoom_y = zoom
  441.       self.x = rand(576) - 160
  442.       self.y = initial == true ? rand(480) : 512
  443.       self.opacity = 0
  444.       @speed_y = -(1 + rand(3))
  445.       @speed_x = (1 + rand(2))
  446.       @speed_a = (1 + rand(2))     
  447.   end
  448.  
  449. #--------------------------------------------------------------------------
  450. # ● Dispose
  451. #--------------------------------------------------------------------------               
  452.   def dispose
  453.       super
  454.       self.bitmap.dispose if self.bitmap != nil
  455.   end  
  456.  
  457. #--------------------------------------------------------------------------
  458. # ● Update
  459. #--------------------------------------------------------------------------               
  460.   def update
  461.       super
  462.       self.x += @speed_x
  463.       self.y += @speed_y
  464.       self.opacity += 5
  465.       reset_setting if can_reset_setting?
  466.   end  
  467.  
  468. #--------------------------------------------------------------------------
  469. # ● Can Reset Setting
  470. #--------------------------------------------------------------------------                 
  471.   def can_reset_setting?
  472.       return true if self.y < -50
  473.       return true if self.x > 576
  474.       return false
  475.   end  
  476.  
  477. end
  478.  
  479.  
  480.  
  481.  
  482. #==============================================================================
  483. # ■ Window_Actor_Status_0
  484. #==============================================================================
  485. class Members_Windows_Status < Window_Selectable
  486.   attr_reader   :pending_index         
  487.  
  488.   #--------------------------------------------------------------------------
  489.   # ● Initialize
  490.   #--------------------------------------------------------------------------
  491.   def initialize(x = 0, y = 0)
  492.     super(x, y, window_width, window_height)
  493.     self.windowskin = Cache.menu("")
  494.     self.opacity = 0
  495.     self.contents_opacity = 0
  496.     self.visible = false
  497.     @input_lag = 0
  498.     @old_index = -1
  499.     @pending_index = -1
  500.     refresh
  501.   end
  502.  
  503.   #--------------------------------------------------------------------------
  504.   # ● Window Width
  505.   #--------------------------------------------------------------------------
  506.   def window_width
  507.       40
  508.   end
  509.  
  510.   #--------------------------------------------------------------------------
  511.   # ● Window Height
  512.   #--------------------------------------------------------------------------
  513.   def window_height
  514.       40
  515.   end
  516.  
  517.   #--------------------------------------------------------------------------
  518.   # ● Cursor Movable?
  519.   #--------------------------------------------------------------------------  
  520.   def cursor_movable?
  521.       active && open? && !@cursor_fix && !@cursor_all && item_max > 0 && @input_lag == 0
  522.   end  
  523.  
  524.   #--------------------------------------------------------------------------
  525.   # ● Item Max
  526.   #--------------------------------------------------------------------------
  527.   def item_max
  528.       $game_party.members.size
  529.   end
  530.  
  531.   #--------------------------------------------------------------------------
  532.   # ● Item Height
  533.   #--------------------------------------------------------------------------
  534.   def item_height
  535.     (height - standard_padding * 2) / 4
  536.   end
  537.  
  538.   #--------------------------------------------------------------------------
  539.   # ● Draw Item Background
  540.   #--------------------------------------------------------------------------
  541.   def draw_item_background(index)
  542.   end
  543.  
  544.   #--------------------------------------------------------------------------
  545.   # ● Pending Index
  546.   #--------------------------------------------------------------------------
  547.   def pending_index=(index)
  548.       last_pending_index = @pending_index
  549.       @pending_index = index
  550.   end
  551.  
  552.   #--------------------------------------------------------------------------
  553.   # ● Process OK
  554.   #--------------------------------------------------------------------------
  555.   def process_ok
  556.       $game_party.target_actor = $game_party.members[index] unless @cursor_all
  557.       call_ok_handler
  558.   end
  559.  
  560.   #--------------------------------------------------------------------------
  561.   # ● Select Last
  562.   #--------------------------------------------------------------------------
  563.   def select_last
  564.       select($game_party.target_actor.index || 0)
  565.   end
  566.  
  567.   #--------------------------------------------------------------------------
  568.   # ● Select For Item
  569.   #--------------------------------------------------------------------------
  570.   def select_for_item(item)
  571.       @cursor_fix = item.for_user?
  572.       @cursor_all = item.for_all?
  573.       if @cursor_fix
  574.          select($game_party.menu_actor.index)
  575.       elsif @cursor_all
  576.          select(0)
  577.       else
  578.           [url=home.php?mod=space&uid=370741]@Index[/url] = [url=home.php?mod=space&uid=370741]@Index[/url] < 0 ? 0 : @index
  579.       end
  580.   end
  581.  
  582.   #--------------------------------------------------------------------------
  583.   # ● Draw Item
  584.   #--------------------------------------------------------------------------  
  585.   def draw_item(index)
  586.   end
  587.  
  588.   #--------------------------------------------------------------------------
  589.   # ● Process Cursor Move 2
  590.   #--------------------------------------------------------------------------
  591.   def process_cursor_move2
  592.       return unless cursor_movable?
  593.       last_index = @index
  594.       cursor_down (Input.trigger?(:RIGHT))  if Input.repeat?(:RIGHT)
  595.       cursor_up   (Input.trigger?(:LEFT))    if Input.repeat?(:LEFT)
  596.       Sound.play_cursor if [url=home.php?mod=space&uid=370741]@Index[/url] != last_index
  597.   end   
  598.  
  599.   #--------------------------------------------------------------------------
  600.   # ● Update
  601.   #--------------------------------------------------------------------------  
  602.   def update
  603.       super
  604.       @input_lag -= 1 if @input_lag > 0
  605.       if @old_index != @index
  606.          @old_index = @index
  607.          @input_lag = 5
  608.       end   
  609.   end
  610.  
  611. end
  612.  
  613. #==============================================================================
  614. # ■ Members Menu
  615. #==============================================================================
  616. class Members_Menu
  617.   include MOG_MEMBERS_LAYOUT
  618.  
  619.   attr_accessor :actor
  620.  
  621.   #--------------------------------------------------------------------------
  622.   # ● Initialize
  623.   #--------------------------------------------------------------------------
  624.   def initialize(actor,index)
  625.       [url=home.php?mod=space&uid=95897]@actor[/url] = actor
  626.       @index = index
  627.       @index_old = -1
  628.       @com_index = 0
  629.       @max_index = $game_party.members.size - 1      
  630.       @active = false
  631.       @active_old = false
  632.       @opac = 0
  633.       @opac_active = [0,0]
  634.       @par = []
  635.       [url=home.php?mod=space&uid=14099]@Float[/url] = [0,0,0]
  636.       set_old_parameter
  637.       create_sprites
  638.       create_sprites_support if @index == 0
  639.   end
  640.  
  641.   #--------------------------------------------------------------------------
  642.   # ● Create Sprites
  643.   #--------------------------------------------------------------------------   
  644.   def create_sprites
  645.       @meter_image = $game_temp.pre_cache_actor_menu[6]
  646.       @meter_cw = @meter_image.width
  647.       @meter_ch = @meter_image.height / 2   
  648.       @parameter_number = $game_temp.pre_cache_actor_menu[2]
  649.       @parameter_cw = @parameter_number.width / 10
  650.       @parameter_ch = @parameter_number.height
  651.       @visible = false
  652.       create_layout
  653.       create_parameter
  654.       create_face
  655.       create_name
  656.       create_hp_meter
  657.       create_mp_meter
  658.       @next_pos = [[email]-@layout.width[/email] - 64,0]
  659.       @now_index = [[email]-@layout.width[/email] - 64,0,0]
  660.       @before_index = [[email]-@layout.width[/email] - 64,0,0]
  661.       @next_index = [[email]-@layout.width[/email] - 64,0,0]
  662.       set_position([email]-@layout.width[/email] - 64,0)
  663.       set_opacity(0)
  664.   end
  665.  
  666.   #--------------------------------------------------------------------------
  667.   # ● Create Sprites
  668.   #--------------------------------------------------------------------------     
  669.   def create_sprites_support
  670.       create_scope_all
  671.       create_arrow
  672.   end
  673.  
  674.   #--------------------------------------------------------------------------
  675.   # ● Create Scope All
  676.   #--------------------------------------------------------------------------      
  677.   def create_scope_all
  678.       @scope = Sprite.new
  679.       @scope.bitmap = $game_temp.pre_cache_actor_menu[4]
  680.       @scope_cw = @scope.bitmap.width
  681.       @org_pos_scope = [SCOPE_TEXT_POSITION[0],SCOPE_TEXT_POSITION[1],SCOPE_TEXT_POSITION[0] - @scope_cw]
  682.       @scope.x = @org_pos_scope[2]
  683.       @scope.y = @org_pos_scope[1]
  684.       @scope.z = 15
  685.   end
  686.  
  687.   #--------------------------------------------------------------------------
  688.   # ● Update Scope
  689.   #--------------------------------------------------------------------------         
  690.   def update_scope
  691.       if @active and all_targets
  692.          if @scope.x < @org_pos_scope[0]
  693.             @scope.x += 15
  694.             if @scope.x >= @org_pos_scope[0]
  695.                @scope.x = @org_pos_scope[0]
  696.             end   
  697.          end
  698.       else
  699.          if @scope.x > @org_pos_scope[2]         
  700.             @scope.x -= 15
  701.             if @scope.x <= @org_pos_scope[2]
  702.                @scope.x = @org_pos_scope[2]
  703.             end         
  704.           end
  705.       end
  706.   end
  707.  
  708.   #--------------------------------------------------------------------------
  709.   # ● Create Arrow
  710.   #--------------------------------------------------------------------------           
  711.   def create_arrow
  712.       @arrow_float = [0,0,0]
  713.       @arrow_np_1 = [0,0]
  714.       @arrow_np_2 = [0,0]
  715.       @arrow_image = $game_temp.pre_cache_actor_menu[5]
  716.       @arrow_image_cw = @arrow_image.width
  717.       @arrow_image_ch = @arrow_image.height# / 2
  718.       @arrow_1 = Sprite.new
  719.       @arrow_1.bitmap = Bitmap.new(@arrow_image_cw,@arrow_image_ch)
  720.       @arrow_cw = @arrow_1.bitmap.width
  721.       @org_pos_arrow_1 = [ARROW_1_POSITION[0],ARROW_1_POSITION[1]]
  722.       @arrow_1.x = @org_pos_arrow_1[0]
  723.       @arrow_1.y = @org_pos_arrow_1[1]
  724.       @arrow_1.z = 15
  725.       @arrow_1.opacity = 0
  726.       @arrow_2 = Sprite.new
  727.       @arrow_2.bitmap = Bitmap.new(@arrow_image_cw,@arrow_image_ch)
  728.       @arrow_2.ox = @arrow_2.bitmap.width / 2
  729.       @arrow_2.oy = @arrow_2.bitmap.height / 2
  730.       @arrow_2.angle = 180
  731.       ar_y = (MEMBERS_SPACE * 4) + ARROW_2_POSITION[1]
  732.       @org_pos_arrow_2 = [ARROW_2_POSITION[0] + @arrow_2.ox,ar_y]
  733.       @arrow_2.x = @org_pos_arrow_2[0]
  734.       @arrow_2.y = @org_pos_arrow_2[1]
  735.       @arrow_2.z = 15  
  736.       @arrow_2.opacity = 0
  737.       @arrow_time_1 = 0
  738.       @arrow_time_2 = 0
  739.       refresh_arrow(0,@arrow_1,0)
  740.       refresh_arrow(1,@arrow_2,0)
  741.   end
  742.  
  743.   #--------------------------------------------------------------------------
  744.   # ● Refresh_arrow 1
  745.   #--------------------------------------------------------------------------            
  746.   def refresh_arrow(arrow,sprite,type)
  747.       sprite.bitmap.clear
  748.       h = @arrow_image_ch * type
  749.       a_rect = Rect.new(0,h,@arrow_image_cw,@arrow_image_ch)
  750.       sprite.bitmap.blt(0,0,@arrow_image,a_rect)
  751.       @arrow_time_1 = 20 if arrow == 0
  752.       @arrow_time_2 = 20 if arrow ==1
  753.   end
  754.  
  755.   #--------------------------------------------------------------------------
  756.   # ● Update Arrow
  757.   #--------------------------------------------------------------------------            
  758.   def update_arrow
  759.     #  update_arrow_type
  760.       update_arrow_visible
  761.       update_arrow_float_animation
  762.   end
  763.  
  764.   #--------------------------------------------------------------------------
  765.   # ● Update Arrow Type
  766.   #--------------------------------------------------------------------------               
  767.   def update_arrow_type
  768.       if @arrow_time_1 > 0
  769.          @arrow_time_1 -= 1
  770.          refresh_arrow(0,@arrow_1,0) if @arrow_time_1 == 0
  771.       end   
  772.       if @arrow_time_2 > 0
  773.          @arrow_time_2 -= 1
  774.          refresh_arrow(1,@arrow_2,0) if @arrow_time_2 == 0
  775.       end         
  776.   end
  777.  
  778.   #--------------------------------------------------------------------------
  779.   # ● Refresh Arrow Type
  780.   #--------------------------------------------------------------------------                 
  781.   def refresh_arrow_type
  782.       return
  783.       if @index_old > @com_index
  784.          refresh_arrow(0,@arrow_1,1)
  785.       else  
  786.          refresh_arrow(1,@arrow_2,1)
  787.       end  
  788.   end  
  789.  
  790.   #--------------------------------------------------------------------------
  791.   # ● Update Arrow Visible
  792.   #--------------------------------------------------------------------------              
  793.   def update_arrow_visible
  794.       if can_arrow_visible?
  795.         @arrow_1.opacity += 15
  796.         @arrow_2.opacity += 15
  797.         @arrow_np_1 = [@org_pos_arrow_1[0],@org_pos_arrow_1[1]]
  798.         @arrow_np_2 = [@org_pos_arrow_2[0],@org_pos_arrow_2[1]]
  799.       else  
  800.         @arrow_1.opacity -= 10
  801.         @arrow_2.opacity -= 10
  802.         @arrow_np_1 = [-@arrow_cw,@org_pos[1]]
  803.         @arrow_np_2 = [-@arrow_cw + @arrow_2.ox,@org_pos[1] + @arrow_2.oy]        
  804.       end  
  805.  
  806.   end
  807.  
  808. #--------------------------------------------------------------------------
  809. # ● Update Slide Arrow
  810. #--------------------------------------------------------------------------                       
  811.   def update_slide_arrow(type,sprite,cp,np)
  812.       cp -= @arrow_float[1] if type == 1
  813.       sp = 2 + ((cp - np).abs / 20)
  814.       if cp > np
  815.          cp -= sp
  816.          cp = np if cp < np
  817.       elsif cp < np
  818.          cp += sp
  819.          cp = np if cp > np
  820.       end     
  821.       sprite.x = cp if type == 0
  822.       sprite.y = cp + @arrow_float[1] if type == 1
  823.   end      
  824.  
  825.   #--------------------------------------------------------------------------
  826.   # ● Can Arrow Visiblle?
  827.   #--------------------------------------------------------------------------               
  828.   def can_arrow_visible?
  829.       return false if !@active
  830.       return false if all_targets
  831.       return false if $game_party.members.size < 2
  832.       return  true
  833.   end
  834.  
  835.   #--------------------------------------------------------------------------
  836.   # ● Update Arrow Float Animation
  837.   #--------------------------------------------------------------------------               
  838.   def update_arrow_float_animation
  839.       @arrow_float[2] += 1
  840.       if @arrow_float[2] > 2
  841.          @arrow_float[2] = 0
  842.          @arrow_float[0] += 1
  843.          case @arrow_float[0]
  844.             when 1..11
  845.               @arrow_float[1] += 1
  846.             when 12..22
  847.               @arrow_float[1] -= 1
  848.             else  
  849.               @arrow_float[0] = 0
  850.               @arrow_float[1] = 0
  851.          end  
  852.       end
  853.     update_slide_arrow(0,@arrow_1,@arrow_1.x,@arrow_np_1[0])
  854.     update_slide_arrow(1,@arrow_1,@arrow_1.y,@arrow_np_1[1])
  855.     update_slide_arrow(0,@arrow_2,@arrow_2.x,@arrow_np_2[0])
  856.     update_slide_arrow(1,@arrow_2,@arrow_2.y,@arrow_np_2[1])   
  857.   end
  858.  
  859.   #--------------------------------------------------------------------------
  860.   # ● Create Scope All
  861.   #--------------------------------------------------------------------------      
  862.   def update_support
  863.       update_scope
  864.       update_arrow
  865.   end
  866.  
  867.   #--------------------------------------------------------------------------
  868.   # ● Set Old Parameter
  869.   #--------------------------------------------------------------------------  
  870.   def set_old_parameter
  871.       @par.clear
  872.       @par = [@actor.hp,@actor.mhp,@actor.mp,@actor.mmp,@actor.level]
  873.   end   
  874.  
  875.   #--------------------------------------------------------------------------
  876.   # ● Members Spate
  877.   #--------------------------------------------------------------------------   
  878.   def members_space
  879.       LAYOUT_POSITION[1] + (@index * MEMBERS_SPACE)
  880.   end  
  881.  
  882.   #--------------------------------------------------------------------------
  883.   # ● Dispose
  884.   #--------------------------------------------------------------------------  
  885.   def dispose
  886.       dispose_layout
  887.       dispose_parameter
  888.       dispose_face
  889.       dispose_name
  890.       dispose_hp_meter
  891.       dispose_mp_meter
  892.       dispose_support if @index == 0
  893.   end
  894.  
  895.   #--------------------------------------------------------------------------
  896.   # ● Dispose Support
  897.   #--------------------------------------------------------------------------   
  898.   def dispose_support
  899.       dispose_scope
  900.       dispose_arrow
  901.   end
  902.  
  903.   #--------------------------------------------------------------------------
  904.   # ● Dispose Layout
  905.   #--------------------------------------------------------------------------   
  906.   def dispose_layout
  907.       @layout.dispose
  908.   end
  909.  
  910.   #--------------------------------------------------------------------------
  911.   # ● Dispose Scope
  912.   #--------------------------------------------------------------------------         
  913.   def dispose_scope
  914.       @scope.dispose
  915.   end  
  916.  
  917.   #--------------------------------------------------------------------------
  918.   # ● Dispose_Arrow
  919.   #--------------------------------------------------------------------------            
  920.   def dispose_arrow
  921.       @arrow_1.bitmap.dispose
  922.       @arrow_1.dispose
  923.       @arrow_2.bitmap.dispose
  924.       @arrow_2.dispose
  925.   end
  926.  
  927.   #--------------------------------------------------------------------------
  928.   # ● Dispose Parameter
  929.   #--------------------------------------------------------------------------      
  930.   def dispose_parameter
  931.       @parameter.bitmap.dispose
  932.       @parameter.dispose
  933.   end  
  934.  
  935.   #--------------------------------------------------------------------------
  936.   # ● Dispose Face
  937.   #--------------------------------------------------------------------------   
  938.   def dispose_face
  939.       @face.dispose
  940.   end   
  941.  
  942.   #--------------------------------------------------------------------------
  943.   # ● Dispose HP Meter
  944.   #--------------------------------------------------------------------------      
  945.   def dispose_hp_meter
  946.       @hp_meter.bitmap.dispose
  947.       @hp_meter.dispose
  948.   end
  949.  
  950.   #--------------------------------------------------------------------------
  951.   # ● Dispose MP Meter
  952.   #--------------------------------------------------------------------------      
  953.   def dispose_mp_meter
  954.       @mp_meter.bitmap.dispose
  955.       @mp_meter.dispose
  956.   end  
  957.  
  958.   #--------------------------------------------------------------------------
  959.   # ● Dispose Name
  960.   #--------------------------------------------------------------------------        
  961.   def dispose_name
  962.       @name.bitmap.dispose
  963.       @name.dispose
  964.   end  
  965.  
  966.   #--------------------------------------------------------------------------
  967.   # ● Create Layout
  968.   #--------------------------------------------------------------------------
  969.   def create_layout
  970.       @layout = Sprite.new
  971.       @layout.bitmap = Cache.menu("Actor_Layout_1")
  972.       @org_pos = [LAYOUT_POSITION[0],LAYOUT_POSITION[1]]
  973.       @layout.x = @org_pos[0]
  974.       @layout.y = @org_pos[1]
  975.       @layout.z = 10
  976.       #@layout.opacity = 0
  977.   end
  978.  
  979.   #--------------------------------------------------------------------------
  980.   # ● Create Parameter
  981.   #--------------------------------------------------------------------------
  982.   def create_parameter
  983.       @parameter = Sprite.new
  984.       @parameter.bitmap = Bitmap.new(@layout.bitmap.width,@layout.bitmap.height)
  985.       @org_pos_par = [@org_pos[0] + PAR_POSITION[0],
  986.                       @org_pos[1] + PAR_POSITION[1]]
  987.       @parameter.x = @org_pos_par[0]
  988.       @parameter.y = @org_pos_par[1]
  989.       @parameter.z = 12
  990. #      @parameter.opacity = 0
  991.       refresh_parameter
  992.   end  
  993.  
  994.   #--------------------------------------------------------------------------
  995.   # ● Create HP Meter
  996.   #--------------------------------------------------------------------------  
  997.   def create_hp_meter
  998.       @hp_meter_old = [-1,-1]
  999.       @hp_meter = Sprite.new
  1000.       @hp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  1001.       @org_pos_hp = [@org_pos[0] + HP_METER_POSITION[0],
  1002.                      @org_pos[1] + HP_METER_POSITION[1]]      
  1003.       @hp_meter.x = @org_pos_hp[0]
  1004.       @hp_meter.y = @org_pos_hp[1]
  1005.       @hp_meter.z = 11
  1006.   end  
  1007.  
  1008.   #--------------------------------------------------------------------------
  1009.   # ● Refresh HP Meter
  1010.   #--------------------------------------------------------------------------   
  1011.   def refresh_hp_meter
  1012.       @hp_meter_old[0] = @actor.hp
  1013.       @hp_meter_old[1] = @actor.mhp
  1014.       @hp_meter.bitmap.clear
  1015.       width_range = @meter_cw * @actor.hp / @actor.mhp
  1016.       m_rect = Rect.new(0,0,width_range,@meter_ch)
  1017.       @hp_meter.bitmap.blt(0,0,@meter_image,m_rect)
  1018.   end
  1019.  
  1020.   #--------------------------------------------------------------------------
  1021.   # ● Create MP Meter
  1022.   #--------------------------------------------------------------------------  
  1023.   def create_mp_meter
  1024.       @mp_meter_old = [-1,-1]
  1025.       @mp_meter = Sprite.new
  1026.       @mp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  1027.       @org_pos_mp = [@org_pos[0] + MP_METER_POSITION[0],
  1028.                      @org_pos[1] + MP_METER_POSITION[1]]      
  1029.       @mp_meter.x = @org_pos_mp[0]
  1030.       @mp_meter.y = @org_pos_mp[1]
  1031.       @mp_meter.z = 11
  1032.   end  
  1033.  
  1034.   #--------------------------------------------------------------------------
  1035.   # ● Refresh MP Meter
  1036.   #--------------------------------------------------------------------------   
  1037.   def refresh_mp_meter
  1038.       @mp_meter_old[0] = @actor.mp
  1039.       @mp_meter_old[1] = @actor.mmp
  1040.       @mp_meter.bitmap.clear
  1041.       width_range = @meter_cw * @actor.mp / @actor.mmp rescue nil
  1042.       width_range = 0 if width_range == nil
  1043.       m_rect = Rect.new(0,@meter_ch,width_range,@meter_ch)
  1044.       @mp_meter.bitmap.blt(0,0,@meter_image,m_rect)
  1045.   end  
  1046.  
  1047.   #--------------------------------------------------------------------------
  1048.   # ● Create Face
  1049.   #--------------------------------------------------------------------------   
  1050.   def refresh_parameter
  1051.       set_old_parameter   
  1052.       @parameter.bitmap.clear
  1053.  
  1054.       value = @actor.level
  1055.       x = 146
  1056.       y = 8
  1057.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1058.  
  1059.       value = @actor.hp
  1060.       x = 72
  1061.       y = 24
  1062.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1063.  
  1064.       value = @actor.mp
  1065.       x = 146
  1066.       y = 24
  1067.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1068.  
  1069.   end  
  1070.  
  1071.   #--------------------------------------------------------------------------
  1072.   # ● Refresh Number
  1073.   #--------------------------------------------------------------------------     
  1074.   def refresh_number(sprite,image,value,number_cw,number_ch,x,y)
  1075.       number = value.abs.to_s.split(//)
  1076.       x2 = -number_cw * number.size
  1077.       for i in 0..number.size - 1
  1078.           number_abs = number[i].to_i
  1079.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  1080.           sprite.bitmap.blt(x + x2 + (number_cw  *  i), y, image, nsrc_rect)        
  1081.       end      
  1082.  
  1083.   end
  1084.  
  1085.   #--------------------------------------------------------------------------
  1086.   # ● Create Face
  1087.   #--------------------------------------------------------------------------  
  1088.   def create_face
  1089.       @face = Sprite.new
  1090.       @org_pos_face = [@org_pos[0] + FACE_POSITION[0],
  1091.                        @org_pos[1] + FACE_POSITION[1]]
  1092.       @face.x = @org_pos_face[0]
  1093.       @face.y = @org_pos_face[1]
  1094.       @face.z = 11
  1095.    #   @face.opacity = 0
  1096.       refresh_face
  1097.   end  
  1098.  
  1099.   #--------------------------------------------------------------------------
  1100.   # ● Refresh Face
  1101.   #--------------------------------------------------------------------------   
  1102.   def refresh_face
  1103.       face_name = "Face_B" + @actor.id.to_s
  1104.       @face.bitmap = Cache.menu(face_name.to_s)
  1105.   end
  1106.  
  1107.   #--------------------------------------------------------------------------
  1108.   # ● Create Name
  1109.   #--------------------------------------------------------------------------   
  1110.   def create_name
  1111.       @name = Sprite.new
  1112.       @name.bitmap = Bitmap.new(140,32)
  1113.       @name.bitmap.font.name = FONT_NAME
  1114.       @name.bitmap.font.size = FONT_SIZE
  1115.       @name.bitmap.font.bold = FONT_BOLD
  1116.       @org_pos_name = [@org_pos[0] + NAME_POSITION[0],
  1117.                        @org_pos[1] + NAME_POSITION[1]]
  1118.       @name.x = @org_pos_name[0]
  1119.       @name.y = @org_pos_name[1]
  1120.       @name.z = 11
  1121.      #@name.opacity = 0
  1122.       refresh_name     
  1123.   end  
  1124.  
  1125.   #--------------------------------------------------------------------------
  1126.   # ● Refresh Name
  1127.   #--------------------------------------------------------------------------      
  1128.   def refresh_name
  1129.       @name.bitmap.clear
  1130.       @name.bitmap.draw_text(0,0,140,32,@actor.name.to_s,0)
  1131.   end  
  1132.  
  1133.   #--------------------------------------------------------------------------
  1134.   # ● Set Actor
  1135.   #--------------------------------------------------------------------------        
  1136.   def set_actor(actor)
  1137.       @actor = actor
  1138.   end
  1139.  
  1140.   #--------------------------------------------------------------------------
  1141.   # ● Can Refresh HP Meter
  1142.   #--------------------------------------------------------------------------         
  1143.   def can_refresh_hp_meter?
  1144.       return true if @hp_meter_old[0] != @actor.hp
  1145.       return true if @hp_meter_old[1] != @actor.mhp
  1146.       return false
  1147.   end
  1148.  
  1149.   #--------------------------------------------------------------------------
  1150.   # ● Can Refresh MP Meter
  1151.   #--------------------------------------------------------------------------         
  1152.   def can_refresh_mp_meter?
  1153.       return true if @mp_meter_old[0] != @actor.mp
  1154.       return true if @mp_meter_old[1] != @actor.mmp
  1155.       return false
  1156.   end  
  1157.  
  1158.   #--------------------------------------------------------------------------
  1159.   # ● Can Refresh Parameter
  1160.   #--------------------------------------------------------------------------
  1161.   def can_refresh_parameter?
  1162.       return true if @par[0] != @actor.hp
  1163.       return true if @par[1] != @actor.mhp
  1164.       return true if @par[2] != @actor.mp
  1165.       return true if @par[3] != @actor.mmp
  1166.       return true if @par[4] != @actor.level
  1167.       return false
  1168.   end   
  1169.  
  1170.   #--------------------------------------------------------------------------
  1171.   # ● Refresh_Visible
  1172.   #--------------------------------------------------------------------------   
  1173.   def refresh_visible
  1174.       if can_visible?
  1175.          set_visible(true)
  1176.       else  
  1177.          set_visible(false)
  1178.       end  
  1179.   end  
  1180.  
  1181.   #--------------------------------------------------------------------------
  1182.   # ● Set Index
  1183.   #--------------------------------------------------------------------------     
  1184.   def set_index
  1185.       @now_index[0] = @com_index
  1186.       @before_index[0] = @com_index - 1
  1187.       @next_index[0] = @com_index + 1
  1188.       @before_index[0] = @max_index if @before_index[0] < 0
  1189.       @next_index[0] = 0 if @next_index[0] > @max_index   
  1190.   end
  1191.  
  1192.   #--------------------------------------------------------------------------
  1193.   # ● Can Visible?
  1194.   #--------------------------------------------------------------------------     
  1195.   def can_visible?
  1196.       return true if @index == @now_index[0]
  1197.       return true if @index == @next_index[0]
  1198.       return true if @index == @before_index[0]
  1199.       return false
  1200.   end
  1201.  
  1202.   #--------------------------------------------------------------------------
  1203.   # ● Set Visible
  1204.   #--------------------------------------------------------------------------     
  1205.   def set_visible(value)
  1206.       @visible = value
  1207.       return
  1208.       @layout.visible = @visible
  1209.       @parameter.visible = @visible
  1210.       @hp_meter.visible = @visible
  1211.       @mp_meter.visible = @visible
  1212.       @face.visible = @visible
  1213.       @name.visible = @visible
  1214.   end
  1215.  
  1216.   #--------------------------------------------------------------------------
  1217.   # ● Update Position
  1218.   #--------------------------------------------------------------------------      
  1219.   def update_position
  1220.       update_slide(0,@layout,@layout.x,@next_pos[0] + @org_pos[0])
  1221.       update_slide(1,@layout,@layout.y,@next_pos[1] + @org_pos[1])
  1222.       update_slide(0,@parameter,@parameter.x,@next_pos[0] + @org_pos_par[0])
  1223.       update_slide(1,@parameter,@parameter.y,@next_pos[1] + @org_pos_par[1])
  1224.       update_slide(0,@hp_meter,@hp_meter.x,@next_pos[0] + @org_pos_hp[0])
  1225.       update_slide(1,@hp_meter,@hp_meter.y,@next_pos[1] + @org_pos_hp[1])  
  1226.       update_slide(0,@mp_meter,@mp_meter.x,@next_pos[0] + @org_pos_mp[0])
  1227.       update_slide(1,@mp_meter,@mp_meter.y,@next_pos[1] + @org_pos_mp[1])        
  1228.       update_slide(0,@face,@face.x,@next_pos[0] + @org_pos_face[0])
  1229.       update_slide(1,@face,@face.y,@next_pos[1] + @org_pos_face[1])        
  1230.       update_slide(0,@name,@name.x,@next_pos[0] + @org_pos_name[0])
  1231.       update_slide(1,@name,@name.y,@next_pos[1] + @org_pos_name[1])      
  1232.   end
  1233.  
  1234.   #--------------------------------------------------------------------------
  1235.   # ● Update Float
  1236.   #--------------------------------------------------------------------------         
  1237.   def update_float
  1238.       @float[2] += 1
  1239.       if @float[2] > 5
  1240.          @float[2] = 0
  1241.          @float[0] += 1
  1242.          case @float[0]         
  1243.               when 1..5
  1244.                   @float[1] -= 1  
  1245.               when 6..15
  1246.                   @float[1] += 1
  1247.               when 16..20
  1248.                   @float[1] -= 1
  1249.               else
  1250.                  @float = [0,0,0]
  1251.           end
  1252.        end
  1253.   end
  1254.  
  1255. #--------------------------------------------------------------------------
  1256. # ● Update Slide
  1257. #--------------------------------------------------------------------------                       
  1258.   def update_slide(type,sprite,cp,np)
  1259.       cp -= @float[1] if type == 1
  1260.       sp = 3 + ((cp - np).abs / 10)
  1261.       if cp > np
  1262.          cp -= sp
  1263.          cp = np if cp < np
  1264.       elsif cp < np
  1265.          cp += sp
  1266.          cp = np if cp > np
  1267.       end     
  1268.       sprite.x = cp if type == 0
  1269.       sprite.y = cp + @float[1] if type == 1
  1270.   end   
  1271.  
  1272.   #--------------------------------------------------------------------------
  1273.   # ● All Targets
  1274.   #--------------------------------------------------------------------------                        
  1275.   def all_targets
  1276.       return true if $game_temp.item_scope == 8
  1277.       return true if $game_temp.item_scope == 10
  1278.       return false
  1279.   end  
  1280.  
  1281.   #--------------------------------------------------------------------------
  1282.   # ● Update Opacity
  1283.   #--------------------------------------------------------------------------  
  1284.   def update_opacity
  1285.       if @visible
  1286.          if all_targets
  1287.             if @max_index == 0
  1288.                @next_pos = [0,0]
  1289.             else   
  1290.                if @index == @before_index[0]
  1291.                   @next_pos = [0,-MEMBERS_SPACE]
  1292.                elsif @index == @next_index[0]
  1293.                   @next_pos = [0,MEMBERS_SPACE]
  1294.                else  
  1295.                   @next_pos = [0,0]
  1296.                end      
  1297.             end            
  1298.             update_opacity_active
  1299.             update_float
  1300.          else  
  1301.              if ((@index == @before_index[0]) or (@index == @next_index[0])) and
  1302.                   @max_index != 0
  1303.                   opac_limit = 170
  1304.                   if @opac > opac_limit
  1305.                      @opac -= 10
  1306.                      @opac = opac_limit if @opac < opac_limit
  1307.                   elsif @opac < opac_limit
  1308.                      @opac += 10
  1309.                      @opac = opac_limit if @opac > opac_limit
  1310.                   end   
  1311.                   @float = [0,0,0]
  1312.              else  
  1313.                  update_opacity_active
  1314.                  update_float
  1315.              end  
  1316.          end   
  1317.       else
  1318.           @opac -= 10 if @opac > 0
  1319.           @opac = 0 if @opac < 0
  1320.           @float = [0,0,0]
  1321.       end
  1322.       set_opacity(@opac)
  1323.   end
  1324.  
  1325.   #--------------------------------------------------------------------------
  1326.   # ● Update Opacity Active
  1327.   #--------------------------------------------------------------------------   
  1328.   def update_opacity_active
  1329.       @opac_active[0] += 1
  1330.       case @opac_active[0]
  1331.          when 1..30
  1332.             @opac_active[1] +=  4
  1333.          when 31..60           
  1334.             @opac_active[1] -=  4
  1335.          else
  1336.            @opac_active[1] = 0
  1337.            @opac_active[0] = 0
  1338.       end
  1339.       @opac = 160 + @opac_active[1]
  1340.   end         
  1341.  
  1342.   #--------------------------------------------------------------------------
  1343.   # ● Set Opacity
  1344.   #--------------------------------------------------------------------------   
  1345.   def set_opacity(opac)
  1346.       @layout.opacity = opac
  1347.       @layout.opacity = opac
  1348.       @parameter.opacity = opac
  1349.       @parameter.opacity = opac
  1350.       @hp_meter.opacity = opac
  1351.       @hp_meter.opacity = opac
  1352.       @mp_meter.opacity = opac
  1353.       @mp_meter.opacity = opac
  1354.       @face.opacity = opac
  1355.       @face.opacity = opac
  1356.       @name.opacity = opac
  1357.       @name.opacity = opac
  1358.   end   
  1359.  
  1360.   #--------------------------------------------------------------------------
  1361.   # ● Refresh Index
  1362.   #--------------------------------------------------------------------------   
  1363.   def refresh_index
  1364.       refresh_arrow_type if @index == 0
  1365.       @index_old = @com_index
  1366.       set_index
  1367.       refresh_visible
  1368.       set_next_position
  1369.   end
  1370.  
  1371.   #--------------------------------------------------------------------------
  1372.   # ● Set Next Position
  1373.   #--------------------------------------------------------------------------      
  1374.   def set_next_position
  1375.       if @max_index == 0
  1376.          @next_pos = [0,0]
  1377.          return
  1378.       end  
  1379.       if @visible
  1380.       if @index == @before_index[0]
  1381.          @next_pos = [-32,-MEMBERS_SPACE]
  1382.          if @layout.opacity < 150
  1383.             set_position(@next_pos[0],-MEMBERS_SPACE * 2)
  1384.             set_opacity(0)
  1385.          end   
  1386.       elsif @index == @next_index[0]
  1387.          @next_pos = [-32,MEMBERS_SPACE]
  1388.          if @layout.opacity < 150  
  1389.             set_position(@next_pos[0],MEMBERS_SPACE * 2)
  1390.             set_opacity(0)
  1391.          end   
  1392.       else  
  1393.          @next_pos = [0,0]
  1394.       end   
  1395.       else
  1396.          @next_pos = [-64,0]
  1397.       end  
  1398.   end
  1399.  
  1400.   #--------------------------------------------------------------------------
  1401.   # ● Update Position
  1402.   #--------------------------------------------------------------------------      
  1403.   def set_position(pos_x,pos_y)
  1404.       @layout.x = @org_pos[0] + pos_x
  1405.       @layout.y = @org_pos[1] + pos_y
  1406.       @parameter.x = @org_pos_par[0] + pos_x
  1407.       @parameter.y = @org_pos_par[1] + pos_y
  1408.       @hp_meter.x = @org_pos_hp[0] + pos_x
  1409.       @hp_meter.y = @org_pos_hp[1] + pos_y
  1410.       @mp_meter.x = @org_pos_mp[0] + pos_x
  1411.       @mp_meter.y = @org_pos_mp[1] + pos_y
  1412.       @face.x = @org_pos_face[0] + pos_x
  1413.       @face.y = @org_pos_face[1] + pos_y
  1414.       @name.x = @org_pos_name[0] + pos_x
  1415.       @name.y = @org_pos_name[1] + pos_y
  1416.   end  
  1417.  
  1418.   #--------------------------------------------------------------------------
  1419.   # ● Refresh Active
  1420.   #--------------------------------------------------------------------------         
  1421.   def refresh_active
  1422.       @active_old = @active
  1423.       @visible = @active
  1424.       refresh_index
  1425.       if !@active
  1426.          @visible = @active
  1427.          @next_pos = [[email]-@layout.width[/email] - 64,0]
  1428.       else   
  1429.          set_position([email]-@layout.width[/email] - 64,0)
  1430.       end   
  1431.   end
  1432.  
  1433.   #--------------------------------------------------------------------------
  1434.   # ● Update
  1435.   #--------------------------------------------------------------------------  
  1436.   def update(active,com_index)
  1437.       @active = active
  1438.       @com_index = com_index
  1439.       refresh_active if @active != @active_old
  1440.       update_opacity
  1441.       update_position
  1442.       update_support if @index == 0
  1443.       return if !@active
  1444.       refresh_index if @index_old != @com_index
  1445.       return if !@active or !@visible
  1446.       refresh_hp_meter if can_refresh_hp_meter?
  1447.       refresh_mp_meter if can_refresh_mp_meter?
  1448.       refresh_parameter if can_refresh_parameter?
  1449.   end
  1450.  
  1451.   #--------------------------------------------------------------------------
  1452.   # ● Current Actor
  1453.   #--------------------------------------------------------------------------   
  1454.   def current_actor
  1455.       return true if @com_index == @index
  1456.       return false
  1457.   end
  1458.  
  1459. end
  1460.  
  1461. #==============================================================================
  1462. # ■ Game_Temp
  1463. #==============================================================================
  1464. class Game_Temp
  1465.  
  1466.   #--------------------------------------------------------------------------
  1467.   # ● Execute Pre Cache Actor
  1468.   #--------------------------------------------------------------------------  
  1469.   def execute_pre_cache_actor
  1470.       @pre_cache_actor_menu = []
  1471.       @pre_cache_actor_menu.push(Cache.menu("Actor_Layout_1"))
  1472.       @pre_cache_actor_menu.push(Cache.menu("Actor_Layout_2"))      
  1473.       @pre_cache_actor_menu.push(Cache.menu("Actor_Number_1"))
  1474.       @pre_cache_actor_menu.push(Cache.menu("Actor_Number_2"))
  1475.       @pre_cache_actor_menu.push(Cache.menu("Actor_Scope_All"))
  1476.       @pre_cache_actor_menu.push(Cache.menu("Actor_Members_Arrow"))
  1477.       @pre_cache_actor_menu.push(Cache.menu("Actor_Meter"))
  1478.   end
  1479.  
  1480. end
  1481.  
  1482. #==============================================================================
  1483. # ■ Actor Menu Status
  1484. #==============================================================================
  1485. class Actor_Menu_Status
  1486.  
  1487.   include MOG_ACTOR_MENU_STATUS
  1488.  
  1489.   #--------------------------------------------------------------------------
  1490.   # ● Initialize
  1491.   #--------------------------------------------------------------------------
  1492.   def initialize(actor)
  1493.       @actor = actor
  1494.       @active = false
  1495.       set_old_parameter
  1496.       create_sprites
  1497.   end
  1498.  
  1499.   #--------------------------------------------------------------------------
  1500.   # ● Create Sprites
  1501.   #--------------------------------------------------------------------------  
  1502.   def create_sprites
  1503.       @parameter_number = $game_temp.pre_cache_actor_menu[3]
  1504.       @parameter_cw = @parameter_number.width / 10
  1505.       @parameter_ch = @parameter_number.height   
  1506.       create_layout
  1507.       create_face
  1508.       create_parameter
  1509.       create_name
  1510.       create_states  
  1511.   #    update(true,@actor)
  1512.   end
  1513.  
  1514.   #--------------------------------------------------------------------------
  1515.   # ● Dispose
  1516.   #--------------------------------------------------------------------------  
  1517.   def dispose
  1518.       dispose_layout
  1519.       dispose_face
  1520.       dispose_parameter
  1521.       dispose_name
  1522.       dispose_states
  1523.   end
  1524.  
  1525.   #--------------------------------------------------------------------------
  1526.   # ● Dispose Layout
  1527.   #--------------------------------------------------------------------------   
  1528.   def dispose_layout
  1529.       @layout.dispose
  1530.   end
  1531.  
  1532.   #--------------------------------------------------------------------------
  1533.   # ● Dispose Face
  1534.   #--------------------------------------------------------------------------   
  1535.   def dispose_face
  1536.       @face.bitmap.dispose if @face.bitmap != nil
  1537.       @face.dispose
  1538.   end  
  1539.  
  1540.   #--------------------------------------------------------------------------
  1541.   # ● Dispose Parameter
  1542.   #--------------------------------------------------------------------------      
  1543.   def dispose_parameter
  1544.       @parameter.bitmap.dispose
  1545.       @parameter.dispose
  1546.   end
  1547.  
  1548.   #--------------------------------------------------------------------------
  1549.   # ● Dispose Name
  1550.   #--------------------------------------------------------------------------        
  1551.   def dispose_name
  1552.       @name.bitmap.dispose
  1553.       @name.dispose
  1554.   end
  1555.  
  1556.   #--------------------------------------------------------------------------
  1557.   # ● Dispose States
  1558.   #--------------------------------------------------------------------------            
  1559.    def dispose_states
  1560.        return if @status == nil
  1561.        @status.bitmap.dispose
  1562.        @status.dispose
  1563.        if @actor_status != nil
  1564.           @actor_status.dispose
  1565.           @actor_status = nil
  1566.        end   
  1567.    end   
  1568.  
  1569.   #--------------------------------------------------------------------------
  1570.   # ● Set Old Parameter
  1571.   #--------------------------------------------------------------------------  
  1572.   def set_old_parameter
  1573.       @par = [] if @par == nil
  1574.       @par.clear
  1575.       @par = [@actor.hp,@actor.mhp,@actor.mp,@actor.mmp,@actor.atk,@actor.def,
  1576.               @actor.mat,@actor.mdf,@actor.agi,@actor.luk,@actor.level,@actor.tp]
  1577.   end   
  1578.  
  1579.   #--------------------------------------------------------------------------
  1580.   # ● Create Layout
  1581.   #--------------------------------------------------------------------------
  1582.   def create_layout
  1583.       @layout = Sprite.new
  1584.       @layout.bitmap = $game_temp.pre_cache_actor_menu[1]
  1585.       @org_pos = [LAYOUT_POSITION[0],LAYOUT_POSITION[1]]
  1586.       @layout.x = @org_pos[0] + 150
  1587.       @layout.y = @org_pos[1]
  1588.       @layout.z = 10
  1589.       @layout.opacity = 0
  1590.   end
  1591.  
  1592.   #--------------------------------------------------------------------------
  1593.   # ● Create Parameter
  1594.   #--------------------------------------------------------------------------
  1595.   def create_parameter
  1596.       @parameter = Sprite.new
  1597.       @parameter.bitmap = Bitmap.new(@layout.bitmap.width,@layout.bitmap.height)
  1598.       @org_pos_par = [@org_pos[0] + PAR_POSITION[0],
  1599.                       @org_pos[1] + PAR_POSITION[1]]
  1600.       @parameter.x = @org_pos_par[0] + 150
  1601.       @parameter.y = @org_pos_par[1]
  1602.       @parameter.z = 11
  1603.       @parameter.opacity = 0
  1604.       refresh_parameter
  1605.   end
  1606.  
  1607.   #--------------------------------------------------------------------------
  1608.   # ● Create Face
  1609.   #--------------------------------------------------------------------------  
  1610.   def create_face
  1611.       @face = Sprite.new
  1612.       @face.bitmap = Bitmap.new(96,96)
  1613.       @org_pos_face = [@org_pos[0] + FACE_POSITION[0],
  1614.                        @org_pos[1] + FACE_POSITION[1]]
  1615.       @face.x = @org_pos_face[0] + 150
  1616.       @face.y = @org_pos_face[1]
  1617.       @face.z = 11
  1618.       @face.opacity = 0
  1619.       refresh_face
  1620.   end
  1621.  
  1622.   #--------------------------------------------------------------------------
  1623.   # ● Create Name
  1624.   #--------------------------------------------------------------------------   
  1625.   def create_name
  1626.       @name = Sprite.new
  1627.       @name.bitmap = Bitmap.new(140,32)
  1628.       @name.bitmap.font.name = FONT_NAME
  1629.       @name.bitmap.font.size = FONT_SIZE
  1630.       @name.bitmap.font.bold = FONT_BOLD
  1631.       @org_pos_name = [@org_pos[0] + NAME_POSITION[0],
  1632.                        @org_pos[1] + NAME_POSITION[1]]
  1633.       @name.x = @org_pos_name[0] + 150
  1634.       @name.y = @org_pos_name[1]
  1635.       @name.z = 11
  1636.       @name.opacity = 0
  1637.       refresh_name     
  1638.   end  
  1639.  
  1640.   #--------------------------------------------------------------------------
  1641.   # ● Create_States
  1642.   #--------------------------------------------------------------------------      
  1643.   def create_states
  1644.       @status_old = nil
  1645.       @status_flow = [-24,0]   
  1646.       @status = Sprite.new
  1647.       @status.bitmap = Bitmap.new(24,24)
  1648.       @org_pos_states = [@org_pos[0] + STATES_POSITION[0],
  1649.                          @org_pos[1] + STATES_POSITION[1]]      
  1650.       @status.x = @org_pos_states[0] + 150
  1651.       @status.y = @org_pos_states[1]
  1652.       @status.z = 11
  1653.   end      
  1654.  
  1655.   #--------------------------------------------------------------------------
  1656.   # * Refresh States
  1657.   #--------------------------------------------------------------------------        
  1658.   def refresh_states
  1659.       check_icon_image
  1660.       @status_old = @actor.states
  1661.       @status_flow = [0,0]
  1662.       @actor_status.dispose if @actor_status != nil
  1663.       @states_size = @actor.states.size > 0 ? (26 * @actor.states.size) : 24
  1664.       @actor_status = Bitmap.new(@states_size,24)
  1665.       index = 0
  1666.       for i in @actor.states
  1667.          rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
  1668.          @actor_status.blt(26 * index , 0, @icon_image, rect)
  1669.          index += 1
  1670.       end
  1671.   end   
  1672.  
  1673.   #--------------------------------------------------------------------------
  1674.   # * Flow_Status
  1675.   #--------------------------------------------------------------------------         
  1676.   def flow_states
  1677.       return if @actor_status == nil
  1678.       @status.bitmap.clear
  1679.       return if @actor.states.size == 0
  1680.       st_src_rect = Rect.new(@status_flow[0],0, 24,24)
  1681.       @status.bitmap.blt(0,0, @actor_status, st_src_rect)
  1682.       if STATES_SCROLLING_ANIMATION
  1683.          @status_flow[0] += 1
  1684.          @status_flow[0] = -24 if @status_flow[0] >= @states_size + 2
  1685.       else   
  1686.          @status_flow[1] += 1 unless @actor.states.size <= 1
  1687.          if @status_flow[1] > 30
  1688.             @status_flow[1] = 0
  1689.             @status_flow[0] += 26
  1690.             @status_flow[0] = 0 if @status_flow[0] >= (@states_size - 0)
  1691.          end   
  1692.      end   
  1693.   end        
  1694.  
  1695.   #--------------------------------------------------------------------------
  1696.   # * Check Icon Image
  1697.   #--------------------------------------------------------------------------         
  1698.   def check_icon_image
  1699.       if @icon_image == nil or @icon_image.disposed?
  1700.          @icon_image = Cache.system("Iconset")
  1701.       end   
  1702.   end   
  1703.  
  1704.   #--------------------------------------------------------------------------
  1705.   # ● Can Refresh Parameter
  1706.   #--------------------------------------------------------------------------
  1707.   def can_refresh_parameter?
  1708.       return false if !@active
  1709.       return true if @par[0] != @actor.hp
  1710.       return true if @par[1] != @actor.mhp
  1711.       return true if @par[2] != @actor.mp
  1712.       return true if @par[3] != @actor.mmp
  1713.       return true if @par[4] != @actor.atk
  1714.       return true if @par[5] != @actor.def
  1715.       return true if @par[6] != @actor.mat
  1716.       return true if @par[7] != @actor.mdf
  1717.       return true if @par[8] != @actor.agi
  1718.       return true if @par[9] != @actor.luk
  1719.       return true if @par[10] != @actor.level
  1720.       return true if @par[11] != @actor.tp
  1721.       return false
  1722.   end  
  1723.  
  1724.   #--------------------------------------------------------------------------
  1725.   # ● Refresh All
  1726.   #--------------------------------------------------------------------------  
  1727.   def refresh_all(actor)      
  1728.       @actor = actor
  1729.       refresh_parameter
  1730.       refresh_face
  1731.       refresh_name
  1732.   end  
  1733.  
  1734.   #--------------------------------------------------------------------------
  1735.   # ● Refresh Name
  1736.   #--------------------------------------------------------------------------      
  1737.   def refresh_name   
  1738.       @name.bitmap.clear
  1739.       @name.bitmap.draw_text(0,0,140,32,@actor.name.to_s,0)
  1740.   end
  1741.  
  1742.   #--------------------------------------------------------------------------
  1743.   # ● Create Face
  1744.   #--------------------------------------------------------------------------   
  1745.   def refresh_parameter
  1746.       set_old_parameter
  1747.       @parameter.bitmap.clear      
  1748.       value = @actor.level
  1749.       x = 67
  1750.       y = 24
  1751.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1752.  
  1753.       value = @actor.tp
  1754.       x = 140
  1755.       y = 24
  1756.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1757.  
  1758.       value = @actor.hp
  1759.       x = 70
  1760.       y = 46
  1761.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1762.  
  1763.       value = @actor.mhp
  1764.       x = 140
  1765.       y = 46
  1766.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1767.  
  1768.       value = @actor.mp
  1769.       x = 70
  1770.       y = 46 + 22 * 1
  1771.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1772.  
  1773.       value = @actor.mmp
  1774.       x = 140
  1775.       y = 46 + 22 * 1
  1776.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1777.  
  1778.       value = @actor.atk
  1779.       x = 70
  1780.       y = 46 + 22 * 2
  1781.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1782.  
  1783.       value = @actor.def
  1784.       x = 70
  1785.       y = 46 + 22 * 3
  1786.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1787.  
  1788.       value = @actor.agi
  1789.       x = 70
  1790.       y = 46 + 22 * 4
  1791.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1792.  
  1793.       value = @actor.mat
  1794.       x = 140
  1795.       y = 46 + 22 * 2
  1796.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1797.  
  1798.       value = @actor.mdf
  1799.       x = 140
  1800.       y = 46 + 22 * 3
  1801.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1802.  
  1803.       value = @actor.luk
  1804.       x = 140
  1805.       y = 46 + 22 * 4
  1806.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  1807.   end
  1808.  
  1809.   #--------------------------------------------------------------------------
  1810.   # ● Refresh Number
  1811.   #--------------------------------------------------------------------------     
  1812.   def refresh_number(sprite,image,value,number_cw,number_ch,x,y)
  1813.       number = value.truncate.abs.to_s.split(//)
  1814.       x2 = -number_cw * number.size
  1815.       for i in 0..number.size - 1
  1816.           number_abs = number[i].to_i
  1817.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  1818.           sprite.bitmap.blt(x + x2 + (number_cw  *  i), y, image, nsrc_rect)        
  1819.       end      
  1820.   end
  1821.  
  1822.   #--------------------------------------------------------------------------
  1823.   # ● Refresh Face
  1824.   #--------------------------------------------------------------------------  
  1825.   def refresh_face
  1826.       #return
  1827.       @face.bitmap.clear
  1828.       face_image = Cache.face(@actor.face_name)
  1829.       arect = Rect.new(@actor.face_index  % 4 * 96, @actor.face_index / 4 * 96, 96, 96)
  1830.       @face.bitmap.blt(0,0, face_image, arect)
  1831.      # face_image.dispose
  1832.   end
  1833.  
  1834.   #--------------------------------------------------------------------------
  1835.   # ● Update Slide
  1836.   #--------------------------------------------------------------------------  
  1837.   def update_slide
  1838.       slide_speed = 10
  1839.       opac_speed = 23
  1840.       @slide_range = (@org_pos[0] + 150)
  1841.       if @active
  1842.          if @layout.x > @org_pos[0]
  1843.             @layout.x -= slide_speed
  1844.             @parameter.x -= slide_speed
  1845.             @face.x -= slide_speed
  1846.             @name.x -= slide_speed
  1847.             @status.x -= slide_speed
  1848.             @layout.opacity += opac_speed
  1849.             @parameter.opacity += opac_speed
  1850.             @face.opacity += opac_speed
  1851.             @name.opacity += opac_speed
  1852.             @status.opacity += opac_speed
  1853.             if @layout.x <= @org_pos[0]
  1854.                @layout.x = @org_pos[0]
  1855.                @parameter.x = @org_pos_par[0]
  1856.                @face.x = @org_pos_face[0]
  1857.                @name.x = @org_pos_name[0]
  1858.                @status.x = @org_pos_states[0]
  1859.                @layout.opacity = 255
  1860.                @parameter.opacity = 255
  1861.                @face.opacity = 255
  1862.                @name.opacity = 255  
  1863.                @status.opacity = 255
  1864.             end  
  1865.          end   
  1866.       else
  1867.          if @layout.x <  @slide_range
  1868.             @layout.x += slide_speed
  1869.             @parameter.x += slide_speed
  1870.             @face.x += slide_speed
  1871.             @name.x += slide_speed
  1872.             @status.x += slide_speed
  1873.             @layout.opacity -= opac_speed
  1874.             @parameter.opacity -= opac_speed
  1875.             @face.opacity -= opac_speed
  1876.             @name.opacity -= opac_speed
  1877.             @status.opacity -= opac_speed
  1878.             if @layout.x >=  @slide_range
  1879.                @layout.x =  @slide_range
  1880.                @parameter.x = @org_pos_par[0] + 150
  1881.                @face.x = @org_pos_face[0] + 150
  1882.                @name.x = @org_pos_name[0] + 150
  1883.                @status.x = @org_pos_states[0] + 150
  1884.                @layout.opacity = 0
  1885.                @parameter.opacity = 0
  1886.                @face.opacity = 0
  1887.                @name.opacity = 0   
  1888.                @status.opacity = 0   
  1889.             end  
  1890.          end   
  1891.  
  1892.       end  
  1893.   end
  1894.  
  1895.   #--------------------------------------------------------------------------
  1896.   # ● Update
  1897.   #--------------------------------------------------------------------------
  1898.   def update(active,actor)
  1899.       @active = active
  1900.       update_slide
  1901.       return if !@active
  1902.       refresh_all(actor) if actor != @actor
  1903.       refresh_parameter if can_refresh_parameter?
  1904.       refresh_states if @status_old != @actor.states      
  1905.       flow_states
  1906.   end      
  1907.  
  1908. end
  1909.  
  1910.  
  1911.  
  1912. #==============================================================================
  1913. # ■ Game_Temp
  1914. #==============================================================================
  1915. class Game_Temp
  1916.  
  1917.   #--------------------------------------------------------------------------
  1918.   # ● Execute Pre Cache Main Menu
  1919.   #--------------------------------------------------------------------------   
  1920.   def execute_pre_cache_main_menu
  1921.       @pre_cache_main_menu = []
  1922.       @pre_cache_main_menu.push(Cache.menu_main("Background"))
  1923.       @pre_cache_main_menu.push(Cache.menu_main("Layout"))
  1924.       @pre_cache_main_menu.push(Cache.menu_main("Time_Number"))
  1925.       @pre_cache_main_menu.push(Cache.menu_main("Gold_Number"))
  1926.       @pre_cache_main_menu.push(Cache.menu_main("Members_Layout"))
  1927.       @pre_cache_main_menu.push(Cache.menu_main("Members_Arrow"))
  1928.       @pre_cache_main_menu.push(Cache.menu_main("Par_Number_1"))
  1929.       @pre_cache_main_menu.push(Cache.menu_main("Par_Number_2"))
  1930.       @pre_cache_main_menu.push(Cache.menu_main("Par_Meter"))
  1931.       @pre_cache_main_menu.push(Cache.menu_main("Par_Layout"))
  1932.   end   
  1933.  
  1934. end
  1935.  
  1936. class Window_MenuCommand < Window_Command
  1937. # attr_accessor :handler
  1938. end
  1939.  
  1940. #==============================================================================
  1941. # ■ Scene_Menu
  1942. #==============================================================================
  1943. class Scene_Menu
  1944.   include MOG_MENU
  1945.   include MOG_MENU_BASE
  1946.  
  1947.   #--------------------------------------------------------------------------
  1948.   # ● Main
  1949.   #--------------------------------------------------------------------------        
  1950.   def main
  1951.       execute_setup
  1952.       execute_loop
  1953.       execute_dispose
  1954.   end  
  1955.  
  1956.   #--------------------------------------------------------------------------
  1957.   # ● Execute Setup
  1958.   #--------------------------------------------------------------------------        
  1959.   def execute_setup
  1960.       $game_temp.execute_pre_cache_icon if $game_temp.can_pre_cache_icon?
  1961.       @phase = 0
  1962.       @members_windows_active = false
  1963.       @members_index = 0
  1964.       create_sprites
  1965.   end
  1966.  
  1967.   #--------------------------------------------------------------------------
  1968.   # ● Execute Lopp
  1969.   #--------------------------------------------------------------------------        
  1970.   def execute_loop
  1971.       Graphics.transition(10)
  1972.       loop do
  1973.          Input.update
  1974.          update
  1975.          Graphics.update
  1976.          break if SceneManager.scene != self
  1977.       end
  1978.   end  
  1979.  
  1980. end
  1981.  
  1982. #==============================================================================
  1983. # ■ Face Members
  1984. #==============================================================================
  1985. class Face_Members_Sprite < Sprite
  1986.   include MOG_MENU
  1987.   attr_accessor :index
  1988.   attr_accessor :active
  1989.   attr_accessor :actor_id
  1990.  
  1991. #--------------------------------------------------------------------------
  1992. # ● Initialize
  1993. #--------------------------------------------------------------------------                  
  1994.   def initialize(viewport = nil, index, actor_id)
  1995.       super(viewport)
  1996.       @active = false
  1997.       @index = index
  1998.       @actor_id = actor_id
  1999.       @active = false
  2000.       self.bitmap = Cache.menu("Face" + @actor_id.to_s)
  2001.       self.z = 12
  2002.       self.ox = self.bitmap.width / 2
  2003.       self.oy = self.bitmap.height / 2
  2004.       members_size = $game_party.members.size - 1
  2005.       members_size = 3 if members_size > 3
  2006.       space_base = (MEMBERS_FACE_SPACE * @index)
  2007.       space = space_base - ((ACTOR_SPACE * members_size ) / 2) +  MEMBERS_FACE_POSITION[0]
  2008.       @org_pos =  [space + self.ox , self.oy   ]
  2009.       @ny = 0
  2010.       @zoom_duration = [0,0,false]
  2011.       self.x = @org_pos[0]
  2012.       self.y = @org_pos[1]
  2013.   end  
  2014.  
  2015. #--------------------------------------------------------------------------
  2016. # ● Dispose
  2017. #--------------------------------------------------------------------------                     
  2018.   def dispose
  2019.       super
  2020.       self.bitmap.dispose
  2021.   end  
  2022.  
  2023. #--------------------------------------------------------------------------
  2024. # ● Update
  2025. #--------------------------------------------------------------------------                     
  2026.   def update_command(index, ny)
  2027.       @active = index == @index ? true : false
  2028.       @ny = ny
  2029.       update_slide(index)
  2030.       update_opacity
  2031.       update_zoom   
  2032.   end  
  2033.  
  2034. #--------------------------------------------------------------------------
  2035. # ● Update Opacity
  2036. #--------------------------------------------------------------------------                       
  2037.   def update_opacity
  2038.       if @active
  2039.          self.opacity += 12
  2040.       else  
  2041.          self.opacity -= 6 if self.opacity > 120
  2042.       end  
  2043.   end  
  2044.  
  2045. #--------------------------------------------------------------------------
  2046. # ● Update Zoom
  2047. #--------------------------------------------------------------------------                       
  2048.   def update_zoom
  2049.       if @active
  2050.          if !@zoom_duration[2]
  2051.             update_zoom_out
  2052.             @zoom_duration = [0,0,true] if self.zoom_x == 1.00  
  2053.          else  
  2054.             update_zoom_effect
  2055.          end
  2056.       else
  2057.          @zoom_duration[2] = false   
  2058.          update_zoom_in
  2059.       end  
  2060.   end   
  2061.  
  2062. #--------------------------------------------------------------------------
  2063. # ● Update Zoom Out
  2064. #--------------------------------------------------------------------------                        
  2065.   def update_zoom_out
  2066.       return if self.zoom_x == 1.00
  2067.       self.zoom_x += 0.03
  2068.       self.zoom_y += 0.03
  2069.       if self.zoom_x >= 1.00
  2070.             self.zoom_x = 1.00
  2071.             self.zoom_y = 1.00
  2072.       end   
  2073.    end   
  2074.  
  2075. #--------------------------------------------------------------------------
  2076. # ● Update Zoom In
  2077. #--------------------------------------------------------------------------                           
  2078.   def update_zoom_in
  2079.       return if self.zoom_x == 0.80
  2080.       self.zoom_x -= 0.03
  2081.       self.zoom_y -= 0.03
  2082.       if self.zoom_x <= 0.80
  2083.          self.zoom_x = 0.80
  2084.          self.zoom_y = 0.80
  2085.       end   
  2086.   end      
  2087.  
  2088. #--------------------------------------------------------------------------
  2089. # ● Update Zoom_effect
  2090. #--------------------------------------------------------------------------                        
  2091. def update_zoom_effect
  2092.      @zoom_duration[0] += 1
  2093.      return if @zoom_duration[0] < 1
  2094.      @zoom_duration[0] = 0
  2095.      @zoom_duration[1] += 1
  2096.      case @zoom_duration[1]
  2097.           when 1..30
  2098.              self.zoom_x -= 0.005
  2099.              self.zoom_y -= 0.005                 
  2100.           when 31..60
  2101.              self.zoom_x += 0.005
  2102.              self.zoom_y += 0.005           
  2103.           when 61..999  
  2104.           @zoom_duration[1] = 0
  2105.           self.zoom_x = 1.00
  2106.           self.zoom_y = 1.00
  2107.      end
  2108. end  
  2109.  
  2110. #--------------------------------------------------------------------------
  2111. # ● Update Slide
  2112. #--------------------------------------------------------------------------                       
  2113.   def update_slide(index)
  2114.       np = @org_pos[0] - (index * MEMBERS_FACE_SPACE) + @ny
  2115.       cp = self.x
  2116.       sp = 5 + ((cp - np).abs / 5)
  2117.       if cp > np
  2118.          cp -= sp
  2119.          cp = np if cp < np
  2120.       elsif cp < np
  2121.          cp += sp
  2122.          cp = np if cp > np
  2123.       end     
  2124.       self.x = cp      
  2125.   end  
  2126.  
  2127. #--------------------------------------------------------------------------
  2128. # ● Active
  2129. #--------------------------------------------------------------------------                        
  2130.   def active(value)
  2131.       @active = value
  2132.   end   
  2133.  
  2134. end
  2135.  
  2136. #==============================================================================
  2137. # ■ Members Arrow Sprite
  2138. #==============================================================================
  2139. class Members_Arrow_Sprite
  2140.    include MOG_MENU
  2141.    attr_accessor :active
  2142.  
  2143. #--------------------------------------------------------------------------
  2144. # ● Initialize
  2145. #--------------------------------------------------------------------------
  2146.   def initialize
  2147.       @active = false
  2148.       create_members_layout
  2149.       create_arrows
  2150.   end
  2151.  
  2152. #--------------------------------------------------------------------------
  2153. # ● Create Members Layout
  2154. #--------------------------------------------------------------------------  
  2155.   def create_members_layout
  2156.       @layout_members = Sprite.new
  2157.       @layout_members.bitmap = $game_temp.pre_cache_main_menu[4]
  2158.       @layout_members.z = 13
  2159.       @layout_members_pos = [MEMBERS_ARROW_LAYOUT_POSITION[0], MEMBERS_ARROW_LAYOUT_POSITION[1]]
  2160.       @layout_members.x = @layout_members_pos[0]
  2161.       @layout_members.y = @layout_members_pos[1]
  2162.       @layout_members.opacity = 0
  2163.   end
  2164.  
  2165. #--------------------------------------------------------------------------
  2166. # ● Create Arrows
  2167. #--------------------------------------------------------------------------  
  2168.   def create_arrows
  2169.       @arrow_animation_duration = [0,0]
  2170.       @arrow_1 = Sprite.new
  2171.       @arrow_1.bitmap = $game_temp.pre_cache_main_menu[5]
  2172.       @arrow_1.z = 13
  2173.       @arrow1_pos = [MEMBERS_ARROW_1_POSITION[0], MEMBERS_ARROW_1_POSITION[1]]
  2174.       @arrow_1.x = @arrow1_pos[0]
  2175.       @arrow_1.y = @arrow1_pos[1]
  2176.       @arrow_1.opacity = 0
  2177.       @arrow_2 = Sprite.new
  2178.       @arrow_2.bitmap = $game_temp.pre_cache_main_menu[5]
  2179.       @arrow_2.z = 13
  2180.       @arrow_2.mirror = true
  2181.       @arrow2_pos = [MEMBERS_ARROW_2_POSITION[0], MEMBERS_ARROW_2_POSITION[1]]
  2182.       @arrow_2.x = @arrow2_pos[0]
  2183.       @arrow_2.y = @arrow2_pos[1]
  2184.       @arrow_2.opacity = 0
  2185.       @nx = 0
  2186.       @nx2 = 0
  2187.   end  
  2188.  
  2189. #--------------------------------------------------------------------------
  2190. # ● Dispose
  2191. #--------------------------------------------------------------------------                              
  2192.   def dispose
  2193.       dispose_members_layout
  2194.       dispose_arrows
  2195.   end
  2196.  
  2197. #--------------------------------------------------------------------------
  2198. # ● Dispose Arrows
  2199. #--------------------------------------------------------------------------                                
  2200. def dispose_arrows
  2201.      return if @arrow_1 == nil
  2202.      @arrow_1.dispose
  2203.      @arrow_2.dispose
  2204.      @arrow_1 = nil
  2205. end  
  2206.  
  2207. #--------------------------------------------------------------------------
  2208. # ● Dispose Members Layout
  2209. #--------------------------------------------------------------------------   
  2210.   def dispose_members_layout
  2211.       return if @layout_members == nil
  2212.       @layout_members.dispose
  2213.       @layout_members = nil
  2214.   end
  2215.  
  2216. #--------------------------------------------------------------------------
  2217. # ● Update
  2218. #--------------------------------------------------------------------------                              
  2219.   def update
  2220.       update_arrow_animation
  2221.       update_position
  2222.       @layout_members.opacity += 15
  2223.       @arrow_1.opacity += 15
  2224.       @arrow_2.opacity += 15
  2225.   end  
  2226.  
  2227. #--------------------------------------------------------------------------
  2228. # ● Update Position
  2229. #--------------------------------------------------------------------------                                
  2230.   def update_position
  2231.       @arrow_1.x = @arrow1_pos[0] + @nx + @nx2
  2232.       @arrow_2.x = @arrow2_pos[0] + @nx - @nx2   
  2233.       @layout_members.x = @layout_members_pos[0] + @nx
  2234.   end
  2235.  
  2236. #--------------------------------------------------------------------------
  2237. # ● Update Arrow Animation
  2238. #--------------------------------------------------------------------------                                
  2239.   def update_arrow_animation
  2240.       @arrow_animation_duration[0] += 1
  2241.       return if @arrow_animation_duration[0] < 2
  2242.       @arrow_animation_duration[0] = 0
  2243.       @arrow_animation_duration[1] += 1
  2244.       case @arrow_animation_duration[1]
  2245.          when 1..20
  2246.            @nx2 -= 1
  2247.          when 21..40
  2248.            @nx2 += 1
  2249.          when 41..999  
  2250.            @nx2 = 0
  2251.            @arrow_animation_duration[1] = 0            
  2252.       end
  2253.   end
  2254.  
  2255. #--------------------------------------------------------------------------
  2256. # ● Active
  2257. #--------------------------------------------------------------------------                        
  2258.   def nx(value)
  2259.       @nx = value
  2260.   end   
  2261.  
  2262. end
  2263.  
  2264. #==============================================================================
  2265. # ■ Command Menu Sprite
  2266. #==============================================================================
  2267. class Command_Menu_Sprite < Sprite
  2268.   include MOG_MENU
  2269.   attr_accessor :index
  2270.  
  2271. #--------------------------------------------------------------------------
  2272. # ● Initialize
  2273. #--------------------------------------------------------------------------                  
  2274.   def initialize(viewport = nil,index,command_name)
  2275.       super(viewport)
  2276.       @index = index
  2277.       @command_name = command_name
  2278.       self.bitmap = Cache.menu_main("CM_" + @command_name.to_s)
  2279.       @cw = self.bitmap.width
  2280.       @ch = self.bitmap.height      
  2281.       cw1 = self.bitmap.height / 2
  2282.       cw2 = (self.bitmap.width + COMMAND_SPACE) * index
  2283.       self.ox = self.bitmap.width / 2
  2284.       self.oy = self.bitmap.height / 2
  2285.       @org_pos = [COMMAND_POSITION[0] + cw2 + self.ox, COMMAND_POSITION[1] + self.oy]
  2286.       @slide_max = @org_pos[1] + cw1
  2287.       @zoom_duration = [0,0,false]
  2288.       @zoom_limit = [1.00, 1.20]
  2289.       self.x = -@cw
  2290.       self.y = -@ch
  2291.       self.z = 10
  2292.       @active = false
  2293.       @visible_old = true
  2294.       @np = [-@cw,-@ch]
  2295.       @sprite_name = Sprite.new
  2296.       @sprite_name.bitmap = Bitmap.new(100,32)
  2297.       @sprite_name.bitmap.font.name = "Georgia"
  2298.       @sprite_name.bitmap.draw_text(0,0,100,32,@command_name.to_s,0)
  2299.       @sprite_name.z = 11
  2300.       @np_name = [-@cw,-@ch]
  2301.       @cw_name_pos = [@cw - self.ox + 4, -self.oy + 4]
  2302.   end  
  2303.  
  2304. #--------------------------------------------------------------------------
  2305. # ● Dispose
  2306. #--------------------------------------------------------------------------                     
  2307.   def dispose_command
  2308.       self.bitmap.dispose
  2309.       @sprite_name.bitmap.dispose
  2310.       @sprite_name.dispose
  2311.   end  
  2312.  
  2313. #--------------------------------------------------------------------------
  2314. # ● Update
  2315. #--------------------------------------------------------------------------                     
  2316.   def update_command(index, visible)
  2317.       @active = index == @index ? true : false
  2318.       refresh_active(visible) if @visible_old != visible
  2319.       update_position
  2320.       if !visible
  2321.           if @active
  2322.              self.opacity += 15
  2323.           else
  2324.              self.opacity -= 15
  2325.           end   
  2326.           return
  2327.       end  
  2328.       update_zoom
  2329.       update_opacity
  2330.   end   
  2331.  
  2332. #--------------------------------------------------------------------------
  2333. # ● Update Slide
  2334. #--------------------------------------------------------------------------                       
  2335.   def update_slide(type,cp,np)
  2336.       sp = 2 + ((cp - np).abs / 15)
  2337.       if cp > np
  2338.          cp -= sp
  2339.          cp = np if cp < np
  2340.       elsif cp < np
  2341.          cp += sp
  2342.          cp = np if cp > np
  2343.       end     
  2344.       self.x = cp if type == 0
  2345.       self.y = cp if type == 1
  2346.       @sprite_name.x = cp if type == 2
  2347.       @sprite_name.y = cp if type == 3
  2348.   end
  2349.  
  2350. #--------------------------------------------------------------------------
  2351. # ● Update Position
  2352. #--------------------------------------------------------------------------  
  2353.   def update_position
  2354.       unless !@visible_old
  2355.       if @active
  2356.          @np[0] = @org_pos[0]
  2357.          @np[1] = @slide_max
  2358.       else
  2359.          @np[0] = @org_pos[0]
  2360.          @np[1] = @org_pos[1]
  2361.       end  
  2362.       end
  2363.       update_slide(0,self.x,@np[0])
  2364.       update_slide(1,self.y,@np[1])
  2365.       update_sprite_name_position
  2366.   end      
  2367.  
  2368. #--------------------------------------------------------------------------
  2369. # ● Update Sprite Name Position
  2370. #--------------------------------------------------------------------------  
  2371. def update_sprite_name_position
  2372.       if (@active and !@visible_old) or !@active
  2373.          @np_name[0] = self.x + @cw_name_pos[0] + COMMAND_NAME_POSITION[0]
  2374.          @np_name[1] = self.y + @cw_name_pos[1] + COMMAND_NAME_POSITION[1]
  2375.       else
  2376.          @np_name[0] = COMMAND_NAME_POSITION_2[0]
  2377.          @np_name[1] = COMMAND_NAME_POSITION_2[1]
  2378.       end
  2379.       update_slide(2,@sprite_name.x,@np_name[0])
  2380.       update_slide(3,@sprite_name.y,@np_name[1])      
  2381.       @sprite_name.visible = @active ? true : false
  2382.   end     
  2383.  
  2384.  
  2385. #--------------------------------------------------------------------------
  2386. # ● Refresh Active
  2387. #--------------------------------------------------------------------------                       
  2388.   def refresh_active(visible)
  2389.       if @active and !visible
  2390.          @np[0] = COMMAND_POSITION_2[0] + (@cw / 2)
  2391.          @np[1] = COMMAND_POSITION_2[1]  
  2392.          self.zoom_x = @zoom_limit[0]
  2393.          self.zoom_y = @zoom_limit[0]
  2394.       else
  2395.          @np[0] = @org_pos[0]
  2396.          @np[1] = @org_pos[1]     
  2397.       end
  2398.       @visible_old = visible
  2399.   end
  2400.  
  2401. #--------------------------------------------------------------------------
  2402. # ● Update Opacity
  2403. #--------------------------------------------------------------------------  
  2404.   def update_opacity
  2405.       if @active
  2406.          self.opacity += 15
  2407.       else
  2408.          self.opacity -= 15 if self.opacity > 160
  2409.          if self.opacity < 160
  2410.             self.opacity += 15
  2411.             self.opacity = 160 if self.opacity > 160
  2412.          end   
  2413.       end   
  2414.   end  
  2415.  
  2416. #--------------------------------------------------------------------------
  2417. # ● Update Zoom
  2418. #--------------------------------------------------------------------------                       
  2419.   def update_zoom
  2420.       if @active
  2421.          if !@zoom_duration[2]
  2422.             update_zoom_out
  2423.             @zoom_duration = [0,0,true] if self.zoom_x == @zoom_limit[1]
  2424.          else  
  2425.             update_zoom_effect
  2426.          end
  2427.       else
  2428.          @zoom_duration[2] = false   
  2429.          update_zoom_in
  2430.       end  
  2431.   end   
  2432.  
  2433. #--------------------------------------------------------------------------
  2434. # ● Update Zoom Out
  2435. #--------------------------------------------------------------------------                        
  2436.   def update_zoom_out
  2437.       return if self.zoom_x == @zoom_limit[1]
  2438.       self.zoom_x += 0.03
  2439.       self.zoom_y += 0.03
  2440.       if self.zoom_x >= @zoom_limit[1]
  2441.             self.zoom_x = @zoom_limit[1]
  2442.             self.zoom_y = @zoom_limit[1]
  2443.       end   
  2444.    end   
  2445.  
  2446. #--------------------------------------------------------------------------
  2447. # ● Update Zoom In
  2448. #--------------------------------------------------------------------------                           
  2449.   def update_zoom_in
  2450.       return if self.zoom_x == @zoom_limit[0]
  2451.       self.zoom_x -= 0.03
  2452.       self.zoom_y -= 0.03
  2453.       if self.zoom_x <= @zoom_limit[0]
  2454.          self.zoom_x = @zoom_limit[0]
  2455.          self.zoom_y = @zoom_limit[0]
  2456.       end   
  2457.   end      
  2458.  
  2459. #--------------------------------------------------------------------------
  2460. # ● Update Zoom_effect
  2461. #--------------------------------------------------------------------------                        
  2462. def update_zoom_effect
  2463.      @zoom_duration[0] += 1
  2464.      return if @zoom_duration[0] < 1
  2465.      @zoom_duration[0] = 0
  2466.      @zoom_duration[1] += 1
  2467.      case @zoom_duration[1]
  2468.           when 1..30
  2469.              self.zoom_x -= 0.005
  2470.              self.zoom_y -= 0.005                 
  2471.           when 31..60
  2472.              self.zoom_x += 0.005
  2473.              self.zoom_y += 0.005           
  2474.           when 61..999  
  2475.           @zoom_duration[1] = 0
  2476.           self.zoom_x = @zoom_limit[1]
  2477.           self.zoom_y = @zoom_limit[1]
  2478.      end
  2479. end   
  2480.  
  2481. end
  2482.  
  2483. #==============================================================================
  2484. # ■ Actor Menu Pictures
  2485. #==============================================================================
  2486. class Actor_Menu_Pictures < Sprite
  2487.   include MOG_MENU
  2488.   attr_accessor :index
  2489.  
  2490. #--------------------------------------------------------------------------
  2491. # ● Initialize
  2492. #--------------------------------------------------------------------------                  
  2493.   def initialize(viewport = nil,index,actor_id)
  2494.       super(viewport)
  2495.       @index = index
  2496.       @actor_id = actor_id
  2497.       self.bitmap = Cache.menu("Actor" + @actor_id.to_s)
  2498.       self.z = 2
  2499.       set_position
  2500.       @slide_max = @org_pos[0] + 24
  2501.       auto_y = Graphics.height - self.bitmap.height
  2502.       self.ox = self.bitmap.width / 2
  2503.       self.x = @org_pos[0] - 15
  2504.       self.y = auto_y
  2505.       self.opacity = 0
  2506.       @op_time = 10 * @index
  2507.   end  
  2508.  
  2509. #--------------------------------------------------------------------------
  2510. # ● Set Position
  2511. #--------------------------------------------------------------------------  
  2512.   def set_position
  2513.       members_size = $game_party.members.size
  2514.       members_size = $game_party.max_battle_members if members_size > $game_party.max_battle_members
  2515.       space_members = ((Graphics.width ) / members_size)
  2516.       space_members_2 = (space_members * @index)
  2517.       space_members_3 = ((space_members / 2) * (members_size - 1))
  2518.       center = Graphics.width / 2
  2519.       space = center + space_members_2 - space_members_3
  2520.       @org_pos =  [space, ACTOR_POSITION[1]]   
  2521.   end
  2522.  
  2523. #--------------------------------------------------------------------------
  2524. # ● Dispose
  2525. #--------------------------------------------------------------------------                     
  2526.   def dispose_picture
  2527.       self.bitmap.dispose
  2528.   end  
  2529.  
  2530. #--------------------------------------------------------------------------
  2531. # ● Update Picture
  2532. #--------------------------------------------------------------------------  
  2533.   def update_picture
  2534.       @op_time -= 1 if @op_time > 0
  2535.       return if @op_time > 0
  2536.       self.opacity += 15
  2537.       self.x += 1 if self.x < @org_pos[0]
  2538.   end
  2539.  
  2540. end
  2541.  
  2542. #==============================================================================
  2543. # ■ Actor Menu Parameter
  2544. #==============================================================================
  2545. class Actor_Menu_Parameter
  2546.  
  2547.   include MOG_MENU
  2548.   attr_accessor :index
  2549.  
  2550.   #--------------------------------------------------------------------------
  2551.   # ● Initialize
  2552.   #--------------------------------------------------------------------------                     
  2553.   def initialize(index, actor)
  2554.       setup(index, actor)
  2555.       create_layout_par
  2556.       create_hp_number
  2557.       create_hp2_number
  2558.       create_mp_number
  2559.       create_mp2_number
  2560.       create_hp_meter
  2561.       create_mp_meter
  2562.       create_level
  2563.       create_states
  2564.       create_name
  2565.   end
  2566.  
  2567.   #--------------------------------------------------------------------------
  2568.   # ● Setup
  2569.   #--------------------------------------------------------------------------                       
  2570.   def setup(index, actor)
  2571.       @actor = actor
  2572.       @index = index
  2573.       set_position
  2574.       @number_image_1 = $game_temp.pre_cache_main_menu[6]
  2575.       @number_image_1_cw = @number_image_1.width / 10
  2576.       @number_image_1_ch = @number_image_1.height / 3
  2577.       @number_image_2 = $game_temp.pre_cache_main_menu[7]
  2578.       @number_image_2_cw = @number_image_2.width / 10
  2579.       @number_image_2_ch = @number_image_2.height
  2580.       @par_meter_image = $game_temp.pre_cache_main_menu[8]
  2581.       @par_meter_cw = @par_meter_image.width / 3
  2582.       @par_meter_ch = @par_meter_image.height / 2
  2583.       @par_meter_flow = 0
  2584.       @par_meter_flow_max = @par_meter_image.width - @par_meter_cw
  2585.       @icon_image = $game_temp.pre_cache_icon
  2586.   end
  2587.  
  2588.   #--------------------------------------------------------------------------
  2589.   # ● Set Position
  2590.   #--------------------------------------------------------------------------                       
  2591.   def set_position
  2592.       members_size = $game_party.members.size
  2593.       members_size = $game_party.max_battle_members if members_size >= $game_party.max_battle_members
  2594.       space_members = ((Graphics.width ) / members_size)
  2595.       space_members_2 = (space_members * @index)
  2596.       space_members_3 = ((space_members / 2) * (members_size - 1))
  2597.       center = Graphics.width / 2
  2598.       layout_ox = $game_temp.pre_cache_main_menu[9].width / 2
  2599.       @base_x = center - layout_ox + space_members_2 - space_members_3  
  2600.   end
  2601.  
  2602.   #--------------------------------------------------------------------------
  2603.   # ● Create Layout Par
  2604.   #--------------------------------------------------------------------------                       
  2605.   def create_layout_par
  2606.       @layout_par = Sprite.new
  2607.       @layout_par.bitmap = $game_temp.pre_cache_main_menu[9]
  2608.       @layout_par.z = 10
  2609.       @layout_par.x = @base_x + ACTOR_LAYOUT_POSITON[0]      
  2610.       @layout_par.y = ACTOR_LAYOUT_POSITON[1]
  2611.   end
  2612.  
  2613.   #--------------------------------------------------------------------------
  2614.   # ● Create Name
  2615.   #--------------------------------------------------------------------------  
  2616.   def create_name
  2617.       @actor_name = Sprite.new
  2618.       @actor_name.bitmap = Bitmap.new(160,32)
  2619.       @actor_name.bitmap.font.name = "Georgia"
  2620.       @actor_name.bitmap.font.size = 18
  2621.       @actor_name.bitmap.font.bold = true
  2622.       @actor_name.bitmap.font.italic = true
  2623.       actor_name = @actor.name
  2624.       @actor_name.bitmap.font.color = Color.new(0,0,0)
  2625.       @actor_name.bitmap.draw_text(1,1,140,32,actor_name,1)
  2626.       @actor_name.bitmap.font.color = Color.new(255 ,255,255)
  2627.       @actor_name.bitmap.draw_text(0,0,140,32,actor_name,1)
  2628.       @actor_name.z = 12
  2629.       @actor_name.x = @base_x - 20
  2630.       @actor_name.y = 250
  2631.   end
  2632.  
  2633.   #--------------------------------------------------------------------------
  2634.   # ● Create HP Number
  2635.   #--------------------------------------------------------------------------  
  2636.   def create_hp_number
  2637.       @hp_number = Sprite.new
  2638.       @hp_number.bitmap = Bitmap.new(@number_image_1_cw * 4,@number_image_1_ch)
  2639.       @hp_number.z = 12
  2640.       @hp_number.x = @base_x + ACTOR_HP1_POSITON[0]
  2641.       @hp_number.y =  ACTOR_HP1_POSITON[1]
  2642.       refresh_hp
  2643.   end
  2644.  
  2645.   #--------------------------------------------------------------------------
  2646.   # ● Refresh HP
  2647.   #--------------------------------------------------------------------------   
  2648.   def refresh_hp
  2649.       @hp_number.bitmap.clear
  2650.       number = @actor.hp.abs.to_s.split(//)
  2651.       number_cw = @number_image_1_cw
  2652.       number_ch = @number_image_1_ch
  2653.       for i in 0..number.size - 1
  2654.           number_abs = number[i].to_i
  2655.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  2656.           @hp_number.bitmap.blt(number_cw  *  i, 0, @number_image_1, nsrc_rect)        
  2657.       end
  2658.   end
  2659.  
  2660.   #--------------------------------------------------------------------------
  2661.   # ● Create HP2 Number
  2662.   #--------------------------------------------------------------------------  
  2663.   def create_hp2_number
  2664.       @hp2_number = Sprite.new
  2665.       @hp2_number.bitmap = Bitmap.new(@number_image_2_cw * 4,@number_image_2_ch)
  2666.       @hp2_number.z = 12
  2667.       @hp2_number.x = @base_x + ACTOR_HP2_POSITON[0]
  2668.       @hp2_number.y =  ACTOR_HP2_POSITON[1]
  2669.       refresh_hp2
  2670.   end
  2671.  
  2672.   #--------------------------------------------------------------------------
  2673.   # ● Refresh HP2
  2674.   #--------------------------------------------------------------------------   
  2675.   def refresh_hp2
  2676.       @hp2_number.bitmap.clear
  2677.       number = @actor.mhp.abs.to_s.split(//)
  2678.       number_cw = @number_image_2_cw
  2679.       number_ch = @number_image_2_ch
  2680.       for i in 0..number.size - 1
  2681.           number_abs = number[i].to_i
  2682.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  2683.           @hp2_number.bitmap.blt(number_cw  *  i, 0, @number_image_2, nsrc_rect)        
  2684.       end
  2685.   end  
  2686.  
  2687.   #--------------------------------------------------------------------------
  2688.   # ● Create MP Number
  2689.   #--------------------------------------------------------------------------  
  2690.   def create_mp_number
  2691.       @mp_number = Sprite.new
  2692.       @mp_number.bitmap = Bitmap.new(@number_image_1_cw * 4,@number_image_1_ch)
  2693.       @mp_number.z = 12
  2694.       @mp_number.x = @base_x + ACTOR_MP1_POSITON[0]
  2695.       @mp_number.y =  ACTOR_MP1_POSITON[1]
  2696.       refresh_mp
  2697.   end
  2698.  
  2699.   #--------------------------------------------------------------------------
  2700.   # ● Refresh MP
  2701.   #--------------------------------------------------------------------------   
  2702.   def refresh_mp
  2703.       @mp_number.bitmap.clear
  2704.       number = @actor.mp.abs.to_s.split(//)
  2705.       number_cw = @number_image_1_cw
  2706.       number_ch = @number_image_1_ch
  2707.       for i in 0..number.size - 1
  2708.           number_abs = number[i].to_i
  2709.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  2710.           @mp_number.bitmap.blt(number_cw  *  i, 0, @number_image_1, nsrc_rect)        
  2711.       end
  2712.     end
  2713.  
  2714.   #--------------------------------------------------------------------------
  2715.   # ● Create MP2 Number
  2716.   #--------------------------------------------------------------------------  
  2717.   def create_mp2_number
  2718.       @mp2_number = Sprite.new
  2719.       @mp2_number.bitmap = Bitmap.new(@number_image_2_cw * 4,@number_image_2_ch)
  2720.       @mp2_number.z = 12
  2721.       @mp2_number.x = @base_x + ACTOR_MP2_POSITON[0]
  2722.       @mp2_number.y =  ACTOR_MP2_POSITON[1]
  2723.       refresh_mp2
  2724.   end
  2725.  
  2726.   #--------------------------------------------------------------------------
  2727.   # ● Refresh MP2
  2728.   #--------------------------------------------------------------------------   
  2729.   def refresh_mp2
  2730.       @mp2_number.bitmap.clear
  2731.       number = @actor.mmp.abs.to_s.split(//)
  2732.       number_cw = @number_image_2_cw
  2733.       number_ch = @number_image_2_ch
  2734.       for i in 0..number.size - 1
  2735.           number_abs = number[i].to_i
  2736.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  2737.           @mp2_number.bitmap.blt(number_cw  *  i, 0, @number_image_2, nsrc_rect)        
  2738.       end
  2739.   end      
  2740.  
  2741.   #--------------------------------------------------------------------------
  2742.   # ● Create Level
  2743.   #--------------------------------------------------------------------------      
  2744.   def create_level
  2745.       @level = Sprite.new
  2746.       @level.bitmap = Bitmap.new(@number_image_1_cw * 2, @number_image_1_ch)
  2747.       @level.z = 12
  2748.       @level.x = @base_x + ACTOR_LEVEL_POSITON[0]
  2749.       @level.y = ACTOR_LEVEL_POSITON[1]
  2750.       refresh_level
  2751.   end
  2752.  
  2753.   #--------------------------------------------------------------------------
  2754.   # ● Refresh Level
  2755.   #--------------------------------------------------------------------------        
  2756.   def refresh_level
  2757.       @level.bitmap.clear
  2758.       number = @actor.level.abs.to_s.split(//)
  2759.       number_cw = @number_image_1_cw
  2760.       number_ch = @number_image_1_ch
  2761.       for i in 0..number.size - 1
  2762.           number_abs = number[i].to_i
  2763.           nsrc_rect = Rect.new(number_cw * number_abs, number_ch * 2, number_cw , number_ch)
  2764.           @level.bitmap.blt(number_cw  *  i, 0, @number_image_1, nsrc_rect)        
  2765.       end      
  2766.   end  
  2767.  
  2768.   #--------------------------------------------------------------------------
  2769.   # ● Create HP Meter
  2770.   #--------------------------------------------------------------------------      
  2771.   def create_hp_meter
  2772.       @hp_meter = Sprite.new
  2773.       @hp_meter.bitmap = Bitmap.new(@par_meter_cw,@par_meter_ch)
  2774.       @hp_meter.z = 11
  2775.       @hp_meter.x = @base_x + ACTOR_HP_METER_POSITON[0]
  2776.       @hp_meter.y = ACTOR_HP_METER_POSITON[1]
  2777.       update_flow_hp
  2778.   end
  2779.  
  2780.   #--------------------------------------------------------------------------
  2781.   # ● Update Flow HP
  2782.   #--------------------------------------------------------------------------        
  2783.   def update_flow_hp
  2784.       @hp_meter.bitmap.clear
  2785.       par_width = @par_meter_cw * @actor.hp / @actor.mhp
  2786.       m_scr = Rect.new(@par_meter_flow,0, par_width, @par_meter_ch)
  2787.       @hp_meter.bitmap.blt(0,0,@par_meter_image, m_scr)
  2788.   end  
  2789.  
  2790.   #--------------------------------------------------------------------------
  2791.   # ● Create MP Meter
  2792.   #--------------------------------------------------------------------------      
  2793.   def create_mp_meter
  2794.       @mp_meter = Sprite.new
  2795.       @mp_meter.bitmap = Bitmap.new(@par_meter_cw,@par_meter_ch)
  2796.       @mp_meter.z = 11
  2797.       @mp_meter.x = @base_x + ACTOR_MP_METER_POSITON[0]
  2798.       @mp_meter.y = ACTOR_MP_METER_POSITON[1]
  2799.       update_flow_mp
  2800.   end
  2801.  
  2802.   #--------------------------------------------------------------------------
  2803.   # ● Update Flow MP
  2804.   #--------------------------------------------------------------------------        
  2805.   def update_flow_mp
  2806.       @mp_meter.bitmap.clear
  2807.       par_width = @par_meter_cw * @actor.mp / @actor.mmp rescue nil
  2808.       par_width = 0 if par_width == nil
  2809.       m_scr = Rect.new(@par_meter_flow,@par_meter_ch, par_width, @par_meter_ch)
  2810.       @mp_meter.bitmap.blt(0,0,@par_meter_image, m_scr)
  2811.       @par_meter_flow += 3
  2812.       @par_meter_flow = 0 if @par_meter_flow > @par_meter_flow_max
  2813.   end   
  2814.  
  2815.   #--------------------------------------------------------------------------
  2816.   # ● Create_States
  2817.   #--------------------------------------------------------------------------      
  2818.   def create_states
  2819.       refresh_states
  2820.       @status = Sprite.new
  2821.       @status.bitmap = Bitmap.new(24,24)
  2822.       @status.x = @base_x +  ACTOR_STATES_POSITION[0]
  2823.       @status.y = ACTOR_STATES_POSITION[1]
  2824.       @status_flow = -24
  2825.       @states_speed = 50
  2826.       @status.z = 503
  2827.       @old_states = @actor.states
  2828.       refresh_states
  2829.       update_flow_states
  2830.   end      
  2831.  
  2832.   #--------------------------------------------------------------------------
  2833.   # ● Upate Flow_Status
  2834.   #--------------------------------------------------------------------------         
  2835.   def update_flow_states
  2836.       return if @actor.states.size == 0 and !@status.visible
  2837.       @states_speed = 0
  2838.       @status.bitmap.clear
  2839.       src_rect = Rect.new(@status_flow,0, 24,24)
  2840.       @status.bitmap.blt(0,0, @actor_status, src_rect)
  2841.       @status.visible = @actor.states.size == 0 ? false : true
  2842.       @status_flow += 1
  2843.       @status_flow = -24 if @status_flow >= @states_size - 24
  2844.   end   
  2845.  
  2846.   #--------------------------------------------------------------------------
  2847.   # ● Refresh States
  2848.   #--------------------------------------------------------------------------        
  2849.   def refresh_states
  2850.       @old_states = @actor.states
  2851.       if @actor_status != nil
  2852.          @actor_status.dispose
  2853.          @actor_status = nil
  2854.       end
  2855.       @states_size = @actor.states.size > 0 ? (48 * @actor.states.size) : 24
  2856.       @actor_status = Bitmap.new(@states_size,24)
  2857.       index = 0
  2858.       for i in  @actor.states
  2859.          rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
  2860.          @actor_status.blt(48 * index , 0, @icon_image, rect)
  2861.          index += 1
  2862.       end
  2863.   end   
  2864.  
  2865.   #--------------------------------------------------------------------------
  2866.   # ● Update
  2867.   #--------------------------------------------------------------------------         
  2868.   def update
  2869.       update_flow_hp
  2870.       update_flow_mp
  2871.       update_flow_states
  2872.   end  
  2873.  
  2874. end
  2875.  
  2876.  
  2877. #==============================================================================
  2878. # ■ Actor Menu Parameter
  2879. #==============================================================================
  2880. class Actor_Menu_Parameter
  2881.  
  2882.   #--------------------------------------------------------------------------
  2883.   # ● Dispose
  2884.   #--------------------------------------------------------------------------                     
  2885.   def dispose
  2886.       dispose_actor_layout_par
  2887.       dispose_name
  2888.       dispose_hp_number
  2889.       dispose_mp_number
  2890.       dispose_hp_meter
  2891.       dispose_mp_meter
  2892.       dispose_states
  2893.       dispose_level
  2894.   end  
  2895.  
  2896.   #--------------------------------------------------------------------------
  2897.   # ● Dispose Actor Layout Par
  2898.   #--------------------------------------------------------------------------                        
  2899.   def dispose_actor_layout_par
  2900.       return if @layout_par == nil
  2901.       @layout_par.dispose
  2902.       @layout_par = nil
  2903.   end   
  2904.  
  2905.   #--------------------------------------------------------------------------
  2906.   # ● Dispose Name
  2907.   #--------------------------------------------------------------------------  
  2908.   def dispose_name
  2909.       return if @actor_name == nil
  2910.       @actor_name.bitmap.dispose
  2911.       @actor_name.dispose
  2912.       @actor_name = nil
  2913.   end
  2914.  
  2915.   #--------------------------------------------------------------------------
  2916.   # ● Dispose HP Number
  2917.   #--------------------------------------------------------------------------      
  2918.   def dispose_hp_number
  2919.       return if @hp_number == nil
  2920.       @hp_number.bitmap.dispose
  2921.       @hp_number.dispose
  2922.       @hp_number = nil
  2923.       @hp2_number.bitmap.dispose
  2924.       @hp2_number.dispose
  2925.       @hp2_number = nil      
  2926.  
  2927.   end   
  2928.  
  2929.   #--------------------------------------------------------------------------
  2930.   # ● Dispose MP Number
  2931.   #--------------------------------------------------------------------------      
  2932.   def dispose_mp_number
  2933.       return if @mp_number == nil
  2934.       @mp_number.bitmap.dispose
  2935.       @mp_number.dispose
  2936.       @mp_number = nil
  2937.       @mp2_number.bitmap.dispose
  2938.       @mp2_number.dispose
  2939.       @mp2_number = nil      
  2940.   end   
  2941.  
  2942.   #--------------------------------------------------------------------------
  2943.   # ● Dispose States
  2944.   #--------------------------------------------------------------------------            
  2945.    def dispose_states
  2946.        return if @status == nil
  2947.        @status.bitmap.dispose
  2948.        @status.dispose
  2949.        if @actor_status != nil
  2950.           @actor_status.dispose
  2951.           @actor_status = nil
  2952.        end   
  2953.    end  
  2954.  
  2955.   #--------------------------------------------------------------------------
  2956.   # ● Dispose MP Meter
  2957.   #--------------------------------------------------------------------------        
  2958.   def dispose_mp_meter
  2959.       return if @mp_meter == nil
  2960.       @mp_meter.bitmap.dispose
  2961.       @mp_meter.dispose
  2962.       @mp_meter = nil
  2963.   end     
  2964.  
  2965.   #--------------------------------------------------------------------------
  2966.   # ● Dispose HP Meter
  2967.   #--------------------------------------------------------------------------        
  2968.   def dispose_hp_meter
  2969.       return if @hp_meter == nil
  2970.       @hp_meter.bitmap.dispose
  2971.       @hp_meter.dispose
  2972.       @hp_meter = nil
  2973.   end
  2974.  
  2975.   #--------------------------------------------------------------------------
  2976.   # ● Dispose Level
  2977.   #--------------------------------------------------------------------------        
  2978.   def dispose_level
  2979.       return if @level == nil
  2980.       @level.bitmap.dispose
  2981.       @level.dispose
  2982.       @level = nil
  2983.   end
  2984.  
  2985. end  
  2986.  
  2987. #==============================================================================
  2988. # ■ Scene_Menu
  2989. #==============================================================================
  2990. class Scene_Menu
  2991.  
  2992.   #--------------------------------------------------------------------------
  2993.   # ● Create Sprites
  2994.   #--------------------------------------------------------------------------         
  2995.   def create_sprites
  2996.       create_menu_background
  2997.       create_layout
  2998.       create_particles
  2999.       create_command
  3000.       create_actor_pictures
  3001.       create_timer_sprite
  3002.       create_gold_number
  3003.       create_location
  3004.       create_actor_parameter
  3005.       create_members
  3006.       create_members_layout
  3007.       update_members_face
  3008.   end
  3009.  
  3010.   #--------------------------------------------------------------------------
  3011.   # ● Create Menu Background
  3012.   #--------------------------------------------------------------------------            
  3013.   def create_menu_background
  3014.       @background = Plane.new
  3015.       @background.bitmap = $game_temp.pre_cache_main_menu[0]
  3016.       @background.z = 0
  3017.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  3018.   end  
  3019.  
  3020.   #--------------------------------------------------------------------------
  3021.   # ● Create Menu Background
  3022.   #--------------------------------------------------------------------------              
  3023.   def create_layout
  3024.       @layout = Sprite.new
  3025.       @layout.bitmap = $game_temp.pre_cache_main_menu[1]
  3026.       @layout.z = 3
  3027.   end
  3028.  
  3029.   #--------------------------------------------------------------------------
  3030.   # ● Create Particles
  3031.   #--------------------------------------------------------------------------  
  3032.   def create_particles
  3033.       @particles_sprite =[]
  3034.       for i in 0...NUMBER_OF_PARTICLES
  3035.           @particles_sprite.push(Particles_Menu.new(nil))
  3036.       end
  3037.   end
  3038.  
  3039.   #--------------------------------------------------------------------------
  3040.   # ● Create Command
  3041.   #--------------------------------------------------------------------------   
  3042.   def create_command
  3043.       create_command_window
  3044.       @command_window.visible = false
  3045.       @command_window.x -=544      
  3046.       @command_max = @command_window.list.size
  3047.       @commnad_name = []
  3048.       index = 0
  3049.       for i in @command_window.list
  3050.          @commnad_name.push(i[:name])
  3051.          index += 1
  3052.       end   
  3053.       @command_scroll_max = @command_max > 6 ? 6 : @command_max
  3054.       @command_ny = 0
  3055.       @command_sprites = []
  3056.       index = 0
  3057.       for i in 0...@command_max
  3058.           @command_sprites.push(Command_Menu_Sprite.new(nil, index,@commnad_name[index]) )
  3059.           index += 1
  3060.       end
  3061.   end  
  3062.  
  3063.   #--------------------------------------------------------------------------
  3064.   # ● Create Command Window
  3065.   #--------------------------------------------------------------------------     
  3066.   def create_command_window
  3067.       @command_window = Window_MenuCommand.new
  3068.       @command_window.set_handler(:item,      method(:command_item))
  3069.       @command_window.set_handler(:skill,     method(:command_personal))
  3070.       @command_window.set_handler(:equip,     method(:command_personal))
  3071.       @command_window.set_handler(:status,    method(:command_personal))
  3072.       @command_window.set_handler(:formation, method(:command_formation))
  3073.       @command_window.set_handler(:save,      method(:command_save))
  3074.       @command_window.set_handler(:game_end,  method(:command_game_end))
  3075.       @command_window.set_handler(:cancel,    method(:return_scene))  
  3076.       @command_window.index = $game_temp.menu_index
  3077.    end   
  3078.  
  3079.   #--------------------------------------------------------------------------
  3080.   # ● Create Actor Pictures
  3081.   #--------------------------------------------------------------------------     
  3082.   def create_actor_pictures
  3083.       @actor_pictures = []
  3084.       members_size = $game_party.members.size
  3085.       members_size = $game_party.max_battle_members if members_size >= $game_party.max_battle_members
  3086.       for i in 0...members_size
  3087.          @actor_pictures.push(Actor_Menu_Pictures.new(nil,i,$game_party.members[i].id))
  3088.       end   
  3089.   end
  3090.  
  3091.   #--------------------------------------------------------------------------
  3092.   # ● Create Timer Number
  3093.   #--------------------------------------------------------------------------      
  3094.   def create_timer_sprite
  3095.       update_timer
  3096.       @min_old = @min
  3097.       @timer_image = $game_temp.pre_cache_main_menu[2]
  3098.       @timer_cw = @timer_image.width / 10
  3099.       @timer_ch = @timer_image.height
  3100.       @timer_sprite = Sprite.new
  3101.       @timer_sprite.bitmap = Bitmap.new(@timer_image.width ,@timer_image.height)
  3102.       @timer_sprite.z = 11
  3103.       @timer_sprite.x = TIME_NUMBER_POS[0]
  3104.       @timer_sprite.y = TIME_NUMBER_POS[1]
  3105.       refresh_timer
  3106.   end
  3107.  
  3108.   #--------------------------------------------------------------------------
  3109.   # ● Create Gold Number
  3110.   #--------------------------------------------------------------------------         
  3111.   def create_gold_number
  3112.       @gold = $game_party.gold
  3113.       @gold_image = $game_temp.pre_cache_main_menu[3]
  3114.       @gold_cw = @gold_image.width / 10
  3115.       @gold_ch = @gold_image.height
  3116.       @gold_sprite = Sprite.new
  3117.       @gold_sprite.bitmap = Bitmap.new(@gold_image.width ,@gold_image.height)
  3118.       @gold_sprite.z = 11
  3119.       @gold_sprite.x = GOLD_NUMBER_POS[0]
  3120.       @gold_sprite.y = GOLD_NUMBER_POS[1]
  3121.       refresh_gold
  3122.   end  
  3123.  
  3124.   #--------------------------------------------------------------------------
  3125.   # ● Create Location
  3126.   #--------------------------------------------------------------------------         
  3127.   def create_location
  3128.       @location = Sprite.new
  3129.       @location.bitmap = Bitmap.new(200,40)
  3130.       @location.bitmap.font.name = "Georgia"
  3131.       @location.bitmap.font.size = 20
  3132.       @location.bitmap.font.bold = true
  3133.       @location.bitmap.font.italic = true
  3134.       @location.z = 12
  3135.       @location.x = LOCATION_POS[0]
  3136.       @location.y = LOCATION_POS[1]
  3137.       refresh_location
  3138.   end
  3139.  
  3140.   #--------------------------------------------------------------------------
  3141.   # ● Refresh Location
  3142.   #--------------------------------------------------------------------------            
  3143.   def refresh_location
  3144.       location_name = $game_map.display_name
  3145.       @location.bitmap.clear
  3146.       @location.bitmap.font.color = Color.new(120,120,120,120)
  3147.       @location.bitmap.draw_text(6,4,190,32, location_name.to_s,2)
  3148.       @location.bitmap.font.color = Color.new(255,255,255)
  3149.       @location.bitmap.draw_text(0,0,190,32, location_name.to_s,2)
  3150.   end
  3151.  
  3152.   #--------------------------------------------------------------------------
  3153.   # ● Create Actor Parameter
  3154.   #--------------------------------------------------------------------------              
  3155.   def create_actor_parameter
  3156.       @actor_par = []
  3157.       members_size = $game_party.members.size
  3158.       members_size = $game_party.max_battle_members if members_size >= $game_party.max_battle_members
  3159.       for i in 0...members_size
  3160.           @actor_par.push(Actor_Menu_Parameter.new(i,$game_party.members[i]))
  3161.       end   
  3162.   end
  3163.  
  3164.   #--------------------------------------------------------------------------
  3165.   # ● Create Members
  3166.   #--------------------------------------------------------------------------               
  3167.   def create_members
  3168.       @members_viewport = Viewport.new(MEMBERS_FACE_POSITION[0],MEMBERS_FACE_POSITION[1],400,96)
  3169.       @members_viewport.z = 12
  3170.       @members_viewport.ox = -544
  3171.       @members_slide_max = (MEMBERS_FACE_POSITION[0] - 544)
  3172.       @members = []
  3173.       for i in 0...$game_party.members.size        
  3174.           @members.push(Face_Members_Sprite.new(@members_viewport,i, $game_party.members[i].id))
  3175.       end
  3176.   end
  3177.  
  3178.   #--------------------------------------------------------------------------
  3179.   # ● Create Members Layout
  3180.   #--------------------------------------------------------------------------                  
  3181.   def create_members_layout
  3182.       @members_layout = Members_Arrow_Sprite.new
  3183.   end  
  3184.  
  3185. end
  3186.  
  3187. #==============================================================================
  3188. # ■ Scene_Menu
  3189. #==============================================================================
  3190. class Scene_Menu
  3191.  
  3192.   #--------------------------------------------------------------------------
  3193.   # ● Execute Dispose
  3194.   #--------------------------------------------------------------------------        
  3195.   def execute_dispose
  3196.       Graphics.freeze
  3197.       dispose_background
  3198.       dispose_layout
  3199.       dispose_particles
  3200.       dispose_command_sprites
  3201.       dispose_actor_sprites
  3202.       dispose_actor_parameter
  3203.       dispose_timer_sprite
  3204.       dispose_gold_number
  3205.       dispose_location
  3206.       dispose_members
  3207.   end
  3208.  
  3209.   #--------------------------------------------------------------------------
  3210.   # ● Dispose Background
  3211.   #--------------------------------------------------------------------------  
  3212.   def dispose_background
  3213.       return if @background == nil
  3214.      # @background.bitmap.dispose
  3215.       @background.dispose
  3216.       @background = nil
  3217.   end
  3218.  
  3219.   #--------------------------------------------------------------------------
  3220.   # ● Dispose Layout
  3221.   #--------------------------------------------------------------------------               
  3222.   def dispose_layout
  3223.       return if @layout == nil
  3224.      # @layout.bitmap.dispose
  3225.       @layout.dispose
  3226.       @layout = nil
  3227.   end  
  3228.  
  3229. #--------------------------------------------------------------------------
  3230. # ● Dispose Particles
  3231. #--------------------------------------------------------------------------   
  3232. def dispose_particles
  3233.      return if @particles_sprite == nil
  3234.      @particles_sprite.each {|sprite| sprite.dispose }
  3235. end
  3236.  
  3237.   #--------------------------------------------------------------------------
  3238.   # ● Dispose Command Sprites
  3239.   #--------------------------------------------------------------------------     
  3240.   def dispose_command_sprites
  3241.       return if @command_sprites == nil
  3242.       @command_sprites.each {|sprite| sprite.dispose_command }
  3243.       @command_sprites = nil
  3244.       @command_window.dispose
  3245.   end   
  3246.  
  3247.   #--------------------------------------------------------------------------
  3248.   # ● Dispose Actor Sprites
  3249.   #--------------------------------------------------------------------------     
  3250.   def dispose_actor_sprites
  3251.       return if @actor_pictures == nil
  3252.       @actor_pictures.each {|sprite| sprite.dispose_picture }
  3253.       @actor_pictures = nil
  3254.   end     
  3255.  
  3256.   #--------------------------------------------------------------------------
  3257.   # ● Dispose timer Sprite
  3258.   #--------------------------------------------------------------------------         
  3259.   def dispose_timer_sprite
  3260.       return if @timer_sprite == nil
  3261.       @timer_sprite.dispose
  3262.   end
  3263.  
  3264.   #--------------------------------------------------------------------------
  3265.   # ● Dispose Gold Number
  3266.   #--------------------------------------------------------------------------           
  3267.   def dispose_gold_number
  3268.       return if @gold_image == nil
  3269.       @gold_sprite.dispose
  3270.       @gold_sprite = nil
  3271.   end
  3272.  
  3273.   #--------------------------------------------------------------------------
  3274.   # ● Dispose Location
  3275.   #--------------------------------------------------------------------------            
  3276.   def dispose_location
  3277.       return if @location == nil
  3278.       @location.bitmap.dispose
  3279.       @location.dispose
  3280.       @location = nil
  3281.   end   
  3282.  
  3283.   #--------------------------------------------------------------------------
  3284.   # ● Dispose Actor Parameter
  3285.   #--------------------------------------------------------------------------               
  3286.   def dispose_actor_parameter
  3287.       return if @actor_par == nil
  3288.       @actor_par.each {|sprite| sprite.dispose }
  3289.       @actor_par = nil
  3290.   end
  3291.  
  3292.   #--------------------------------------------------------------------------
  3293.   # ● Dispose Members
  3294.   #--------------------------------------------------------------------------                  
  3295.   def dispose_members
  3296.       return if @members == nil
  3297.       @members.each {|sprite| sprite.dispose }
  3298.       @members = nil
  3299.       @members_layout.dispose
  3300.       @members_viewport.dispose
  3301.   end  
  3302.  
  3303. end
  3304.  
  3305. #==============================================================================
  3306. # ■ Scene_Menu
  3307. #==============================================================================
  3308. class Scene_Menu
  3309.  
  3310.   #--------------------------------------------------------------------------
  3311.   # ● Update Sprites
  3312.   #--------------------------------------------------------------------------         
  3313.   def update_sprites   
  3314.       update_background
  3315.       update_particles
  3316.       update_command_sprites
  3317.       update_actor_parameter
  3318.       update_actor_sprites
  3319.       update_members_face
  3320.       refresh_timer if @min_old != @min
  3321.       refresh_gold if @gold != $game_party.gold      
  3322.   end
  3323.  
  3324.   #--------------------------------------------------------------------------
  3325.   # ● Update Background
  3326.   #--------------------------------------------------------------------------              
  3327.   def update_background
  3328.       return if @background == nil
  3329.       @background.ox += @background_scroll[0]
  3330.       @background.oy += @background_scroll[1]
  3331.   end   
  3332.  
  3333.   #--------------------------------------------------------------------------
  3334.   # ● Update Particles
  3335.   #--------------------------------------------------------------------------  
  3336.   def update_particles
  3337.       return if @particles_sprite == nil
  3338.       @particles_sprite.each {|sprite| sprite.update }
  3339.   end
  3340.  
  3341.   #--------------------------------------------------------------------------
  3342.   # ● Update Command Sprites
  3343.   #--------------------------------------------------------------------------     
  3344.   def update_command_sprites
  3345.       return if @command_window == nil
  3346.       visible = @phase == 0 ? true : false
  3347.       @command_sprites.each {|sprite| sprite.update_command(@command_window.index,visible) }
  3348.   end     
  3349.  
  3350.   #--------------------------------------------------------------------------
  3351.   # ● Refresh Number
  3352.   #--------------------------------------------------------------------------  
  3353.   def refresh_timer
  3354.       @min_old = @min
  3355.       @timer_sprite.bitmap.clear
  3356.       draw_number(@timer_cw * 1,0,0) if @hour < 10              
  3357.       draw_number(@timer_cw * 2,0,@hour)
  3358.       draw_number(@timer_cw * 4,0,0) if @min < 10            
  3359.       draw_number(@timer_cw * 5,0,@min)
  3360.   end  
  3361.  
  3362.   #--------------------------------------------------------------------------
  3363.   # ● Draw Number
  3364.   #--------------------------------------------------------------------------  
  3365.   def draw_number(x,y,value)
  3366.       @number_text = value.abs.to_s.split(//)
  3367.       plus_x = -@timer_cw * @number_text.size
  3368.       for r in [email]0..@number_text.size[/email] - 1
  3369.          @number_abs = @number_text[r].to_i
  3370.          nsrc_rect = Rect.new(@timer_cw * @number_abs, 0, @timer_cw, @timer_ch)
  3371.          @timer_sprite.bitmap.blt(plus_x + x + (@timer_cw  *  r), y, @timer_image, nsrc_rect)        
  3372.       end     
  3373.   end     
  3374.  
  3375.   #--------------------------------------------------------------------------
  3376.   # ● update
  3377.   #--------------------------------------------------------------------------  
  3378.   def update_timer
  3379.       time = $game_system.playtime
  3380.       @hour = time / 60 / 60
  3381.       @min = time / 60 % 60
  3382.       @sec = time % 60
  3383.   end      
  3384.  
  3385.   #--------------------------------------------------------------------------
  3386.   # ● Refresh Gold
  3387.   #--------------------------------------------------------------------------           
  3388.   def refresh_gold
  3389.       @gold = $game_party.gold
  3390.       @gold_sprite.bitmap.clear
  3391.       value_text = @gold.abs.to_s.split(//)
  3392.       index = 0
  3393.       for i in 0..value_text.size - 1
  3394.           value_abs = value_text[i].to_i
  3395.           nsrc_rect = Rect.new(@gold_cw * value_abs, 0, @gold_cw, @gold_ch)
  3396.           @gold_sprite.bitmap.blt(@gold_cw *  i, 0, @gold_image, nsrc_rect)
  3397.           index += 1
  3398.       end
  3399.       ey = (index * @gold_cw)  
  3400.       @gold_sprite.x = GOLD_NUMBER_POS[0] -  ey
  3401.   end
  3402.  
  3403.   #--------------------------------------------------------------------------
  3404.   # ● Update Actor Parameter
  3405.   #--------------------------------------------------------------------------               
  3406.   def update_actor_parameter
  3407.       return if @actor_par == nil
  3408.       @actor_par.each {|sprite| sprite.update }
  3409.   end
  3410.  
  3411.   #--------------------------------------------------------------------------
  3412.   # ● Update Actor Sprites
  3413.   #--------------------------------------------------------------------------     
  3414.   def update_actor_sprites
  3415.       return if @actor_pictures == nil
  3416.       @actor_pictures.each {|sprite| sprite.update_picture }
  3417.   end     
  3418.  
  3419.   #--------------------------------------------------------------------------
  3420.   # ● Update Members Face
  3421.   #--------------------------------------------------------------------------                  
  3422.   def update_members_face
  3423.       return if @members == nil or @members == 0
  3424.       if @members_index > 4
  3425.          ny = (5 * 64)
  3426.          else
  3427.          ny = 64 * @members_index
  3428.       end
  3429.       @members.each {|sprite| sprite.update_command(@members_index, ny) }
  3430.       @members_layout.update
  3431.       if @members_windows_active
  3432.          if @members_viewport.ox < 0
  3433.             @members_viewport.ox += 25
  3434.          end
  3435.        else   
  3436.          if @members_viewport.ox > -544
  3437.             @members_viewport.ox -= 25
  3438.           end         
  3439.       end
  3440.       @members_layout.nx(@members_viewport.ox)
  3441.   end  
  3442.  
  3443. end
  3444.  
  3445. #==============================================================================
  3446. # ■ Scene_Menu
  3447. #==============================================================================
  3448. class Scene_Menu
  3449.  
  3450.   #--------------------------------------------------------------------------
  3451.   # ● Update
  3452.   #--------------------------------------------------------------------------      
  3453.   def update
  3454.       update_timer
  3455.       update_sprites
  3456.       update_command
  3457.       @members_windows_active = @phase == 100 ? true : false
  3458.   end
  3459.  
  3460. end
  3461.  
  3462. #==============================================================================
  3463. # ■ Scene_Menu
  3464. #==============================================================================
  3465. class Scene_Menu
  3466.  
  3467.   #--------------------------------------------------------------------------
  3468.   # ● Update Command
  3469.   #--------------------------------------------------------------------------      
  3470.   def update_command
  3471.       case @phase
  3472.         when 0;       update_main_command
  3473.         when 100;      update_select_members            
  3474.      end   
  3475.   end
  3476.  
  3477.   #--------------------------------------------------------------------------
  3478.   # ● Update Main Command
  3479.   #--------------------------------------------------------------------------        
  3480.   def update_main_command
  3481.       if Input.trigger?(:UP) or Input.trigger?(:LEFT)
  3482.          move_command_index(-1)
  3483.       elsif Input.trigger?(:DOWN) or Input.trigger?(:RIGHT)
  3484.          move_command_index(1)
  3485.       elsif Input.trigger?(:C)
  3486.          execute_select
  3487.       elsif Input.trigger?(:B)
  3488.          return_to_map
  3489.       end  
  3490.   end
  3491.  
  3492.   #--------------------------------------------------------------------------
  3493.   # ● Update Main Command
  3494.   #--------------------------------------------------------------------------   
  3495.   def move_command_index(value)
  3496.       Sound.play_cursor
  3497.       @command_window.index += value
  3498.       @command_window.index = 0 if @command_window.index >= @command_max
  3499.       @command_window.index = (@command_max - 1) if @command_window.index < 0
  3500.   end   
  3501.  
  3502.   #--------------------------------------------------------------------------
  3503.   # ● Execute Select
  3504.   #--------------------------------------------------------------------------     
  3505.   def execute_select
  3506.       @phase = @command_window.index
  3507.       $game_temp.menu_index = @phase
  3508.       Sound.play_ok
  3509.       $game_temp.pre_symbol = @command_window.current_symbol
  3510.       @command_window.call_handler(@command_window.current_symbol)
  3511.   end
  3512.  
  3513.   #--------------------------------------------------------------------------
  3514.   # ● Update Select Members
  3515.   #--------------------------------------------------------------------------        
  3516.   def update_select_members  
  3517.       if $game_party.members.size == 0
  3518.          execute_cancel
  3519.          return
  3520.       end  
  3521.       if Input.trigger?(:LEFT)
  3522.          move_members_index(-1)
  3523.       elsif Input.trigger?(:RIGHT)
  3524.          move_members_index(1)
  3525.       elsif Input.trigger?(:C)
  3526.          execute_select_members
  3527.       elsif Input.trigger?(:B)
  3528.          execute_cancel
  3529.       end   
  3530.   end  
  3531.  
  3532.   #--------------------------------------------------------------------------
  3533.   # ● Execute Cancel
  3534.   #--------------------------------------------------------------------------         
  3535.   def execute_cancel
  3536.       Sound.play_cancel
  3537.       @phase = 0
  3538.       @members_index = 0
  3539.   end
  3540.  
  3541.   #--------------------------------------------------------------------------
  3542.   # ● Move Members Index
  3543.   #--------------------------------------------------------------------------         
  3544.   def move_members_index(value)
  3545.       Sound.play_cursor
  3546.       @members_index += value
  3547.       @members_index = 0 if @members_index >= $game_party.members.size
  3548.       @members_index = ($game_party.members.size - 1) if @members_index < 0
  3549.   end
  3550.  
  3551.   #--------------------------------------------------------------------------
  3552.   # ● Command Formation
  3553.   #--------------------------------------------------------------------------
  3554.   def command_formation
  3555.       SceneManager.call(Scene_Party)
  3556.   end  
  3557.  
  3558.   #--------------------------------------------------------------------------
  3559.   # ● Can Access Scene
  3560.   #--------------------------------------------------------------------------              
  3561.   def can_access_scene?
  3562.       if $game_party.members.size == 0
  3563.          #Sound.play_buzzer   
  3564.          execute_cancel
  3565.          return false
  3566.       end   
  3567.       return true
  3568.   end
  3569.  
  3570.   #--------------------------------------------------------------------------
  3571.   # ● Execute Select Members
  3572.   #--------------------------------------------------------------------------     
  3573.   def execute_select_members
  3574.       @phase = @command_window.index
  3575.       $game_temp.menu_index = @phase
  3576.       Sound.play_ok
  3577.       on_personal_ok
  3578.   end  
  3579.  
  3580.   #--------------------------------------------------------------------------
  3581.   # ● ON Personal OK
  3582.   #--------------------------------------------------------------------------            
  3583.   alias mog_monogatari_on_personal_ok on_personal_ok
  3584.   def on_personal_ok
  3585.       $game_temp.actor_menu_temp =  $game_party.members[@members_index]
  3586.       $game_party.menu_actor = $game_party.members[@members_index]
  3587.       mog_monogatari_on_personal_ok
  3588.   end   
  3589.  
  3590.   #--------------------------------------------------------------------------
  3591.   # ● Return To Map
  3592.   #--------------------------------------------------------------------------              
  3593.   def return_to_map
  3594.       $game_temp.menu_index = 0
  3595.       Sound.play_cancel
  3596.       SceneManager.return
  3597.   end  
  3598.  
  3599.   #--------------------------------------------------------------------------
  3600.   # ● Command Personal
  3601.   #--------------------------------------------------------------------------
  3602.   def command_personal
  3603.       @phase = 100
  3604.   end
  3605.  
  3606. end
  3607.  
  3608. #==============================================================================
  3609. # ■ Game_Temp
  3610. #==============================================================================
  3611. class Game_Temp
  3612.  
  3613.   #--------------------------------------------------------------------------
  3614.   # ● Execute Pre Cache Item Menu
  3615.   #--------------------------------------------------------------------------   
  3616.   def execute_pre_cache_item_menu
  3617.       @pre_cache_item_menu = []
  3618.       @pre_cache_item_menu.push(Cache.menu_item("Background"))
  3619.       @pre_cache_item_menu.push(Cache.menu_item("Layout"))
  3620.   end   
  3621.  
  3622. end
  3623.  
  3624. #==============================================================================
  3625. # ■ Scene_Menu
  3626. #==============================================================================
  3627. class Scene_Item
  3628.   include MOG_MENU_ITEM
  3629.   include MOG_MENU_BASE
  3630.  
  3631.   #--------------------------------------------------------------------------
  3632.   # ● Main
  3633.   #--------------------------------------------------------------------------        
  3634.   def main
  3635.       execute_setup
  3636.       execute_loop
  3637.       execute_dispose
  3638.   end  
  3639.  
  3640.   #--------------------------------------------------------------------------
  3641.   # ● Execute Setup
  3642.   #--------------------------------------------------------------------------        
  3643.   def execute_setup
  3644.       @phase = 0
  3645.       @command_index = 0
  3646.       @actor = $game_party.members[0]
  3647.       @wait_time = 0
  3648.       create_sprites
  3649.   end
  3650.  
  3651.   #--------------------------------------------------------------------------
  3652.   # ● Execute Lopp
  3653.   #--------------------------------------------------------------------------        
  3654.   def execute_loop
  3655.       Graphics.transition(10)
  3656.       loop do
  3657.          Input.update
  3658.          update
  3659.          Graphics.update
  3660.          break if SceneManager.scene != self
  3661.       end
  3662.   end  
  3663.  
  3664. end
  3665.  
  3666. #==============================================================================
  3667. # ■ Window_ItemList Z
  3668. #==============================================================================
  3669. class Window_ItemList_Z < Window_Selectable
  3670.  
  3671.   #--------------------------------------------------------------------------
  3672.   # ● Initialize
  3673.   #--------------------------------------------------------------------------
  3674.   def initialize(x, y, width, height)
  3675.       super
  3676.       @category = :none
  3677.       @data = []
  3678.   end
  3679.  
  3680.   #--------------------------------------------------------------------------
  3681.   # ● Category
  3682.   #--------------------------------------------------------------------------
  3683.   def category=(category)
  3684.       return if @category == category
  3685.       @category = category
  3686.       self.oy = 0
  3687.   end
  3688.  
  3689.   #--------------------------------------------------------------------------
  3690.   # ● Col Max
  3691.   #--------------------------------------------------------------------------
  3692.   def col_max
  3693.       return 1
  3694.   end
  3695.   #--------------------------------------------------------------------------
  3696.   # ● Item Max
  3697.   #--------------------------------------------------------------------------
  3698.   def item_max
  3699.       @data ? @data.size : 1
  3700.   end
  3701.   #--------------------------------------------------------------------------
  3702.   # ● Item
  3703.   #--------------------------------------------------------------------------
  3704.   def item
  3705.       @data && index >= 0 ? @data[index] : nil
  3706.   end
  3707.  
  3708.   #--------------------------------------------------------------------------
  3709.   # ● Current Item Enabled?
  3710.   #--------------------------------------------------------------------------
  3711.   def current_item_enabled?
  3712.       enable?(@data[index])
  3713.   end
  3714.  
  3715.   #--------------------------------------------------------------------------
  3716.   # ● Include?
  3717.   #--------------------------------------------------------------------------
  3718.   def include?(item)
  3719.       case @category
  3720.       when :item
  3721.            item.is_a?(RPG::Item) && !item.key_item?
  3722.       when :weapon
  3723.            item.is_a?(RPG::Weapon)
  3724.       when :armor
  3725.            item.is_a?(RPG::Armor)
  3726.       when :key_item
  3727.            item.is_a?(RPG::Item) && item.key_item?
  3728.       else
  3729.            false
  3730.       end
  3731.   end
  3732.  
  3733.   #--------------------------------------------------------------------------
  3734.   # ● Enable?
  3735.   #--------------------------------------------------------------------------
  3736.   def enable?(item)
  3737.       $game_party.usable?(item)
  3738.   end
  3739.  
  3740.   #--------------------------------------------------------------------------
  3741.   # ● Make Item List
  3742.   #--------------------------------------------------------------------------
  3743.   def make_item_list
  3744.       @data = $game_party.all_items.select {|item| include?(item) }
  3745.       @data.push(nil) if include?(nil)
  3746.   end
  3747.  
  3748.   #--------------------------------------------------------------------------
  3749.   # ● Select Last
  3750.   #--------------------------------------------------------------------------
  3751.   def select_last
  3752.       select(@data.index($game_party.last_item.object) || 0)
  3753.   end
  3754.  
  3755.   #--------------------------------------------------------------------------
  3756.   # ● Draw Item
  3757.   #--------------------------------------------------------------------------
  3758.   def draw_item(index)
  3759.       item = @data[index]
  3760.       if item
  3761.          rect = item_rect(index)
  3762.          rect.width -= 4
  3763.          draw_item_name(item, rect.x, rect.y, enable?(item))
  3764.          draw_item_number(rect, item)
  3765.       end
  3766.   end
  3767.  
  3768.   #--------------------------------------------------------------------------
  3769.   # ● Draw Item Number
  3770.   #--------------------------------------------------------------------------
  3771.   def draw_item_number(rect, item)
  3772.       draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  3773.   end
  3774.  
  3775.   #--------------------------------------------------------------------------
  3776.   # ● Update Help
  3777.   #--------------------------------------------------------------------------
  3778.   def update_help
  3779.       @help_window.set_item(item)
  3780.   end
  3781.  
  3782.   #--------------------------------------------------------------------------
  3783.   # ● Refresh
  3784.   #--------------------------------------------------------------------------
  3785.   def refresh
  3786.       make_item_list
  3787.       create_contents
  3788.       draw_all_items
  3789.   end
  3790.  
  3791. end
  3792.  
  3793. #==============================================================================
  3794. # ■ Window_ItemList Z
  3795. #==============================================================================
  3796. class Window_ItemList_Item_1 < Window_Selectable
  3797.  
  3798.   #--------------------------------------------------------------------------
  3799.   # ● Initialize
  3800.   #--------------------------------------------------------------------------
  3801.   def initialize(x, y, width, height)
  3802.       super
  3803.       @category = :none
  3804.       @data = []
  3805.   end
  3806.  
  3807.   #--------------------------------------------------------------------------
  3808.   # ● Category
  3809.   #--------------------------------------------------------------------------
  3810.   def category=(category)
  3811.       return if @category == category
  3812.       @category = category
  3813.       self.oy = 0
  3814.   end
  3815.  
  3816.   #--------------------------------------------------------------------------
  3817.   # ● Col Max
  3818.   #--------------------------------------------------------------------------
  3819.   def col_max
  3820.       return 1
  3821.   end
  3822.   #--------------------------------------------------------------------------
  3823.   # ● Item Max
  3824.   #--------------------------------------------------------------------------
  3825.   def item_max
  3826.       @data ? @data.size : 1
  3827.   end
  3828.   #--------------------------------------------------------------------------
  3829.   # ● Item
  3830.   #--------------------------------------------------------------------------
  3831.   def item
  3832.       @data && index >= 0 ? @data[index] : nil
  3833.   end
  3834.  
  3835.   #--------------------------------------------------------------------------
  3836.   # ● Current Item Enabled?
  3837.   #--------------------------------------------------------------------------
  3838.   def current_item_enabled?
  3839.       enable?(@data[index])
  3840.   end
  3841.  
  3842.   #--------------------------------------------------------------------------
  3843.   # ● Include?
  3844.   #--------------------------------------------------------------------------
  3845.   def include?(item)
  3846.       case @category
  3847.       when :item   ;   item.is_a?(RPG::Item) && !item.key_item?
  3848.       else
  3849.            false
  3850.       end
  3851.   end
  3852.  
  3853.   #--------------------------------------------------------------------------
  3854.   # ● Enable?
  3855.   #--------------------------------------------------------------------------
  3856.   def enable?(item)
  3857.       $game_party.usable?(item)
  3858.   end
  3859.  
  3860.   #--------------------------------------------------------------------------
  3861.   # ● Make Item List
  3862.   #--------------------------------------------------------------------------
  3863.   def make_item_list
  3864.       @data = $game_party.all_items.select {|item| include?(item) }
  3865.       @data.push(nil) if include?(nil)
  3866.   end
  3867.  
  3868.   #--------------------------------------------------------------------------
  3869.   # ● Select Last
  3870.   #--------------------------------------------------------------------------
  3871.   def select_last
  3872.       select(@data.index($game_party.last_item.object) || 0)
  3873.   end
  3874.  
  3875.   #--------------------------------------------------------------------------
  3876.   # ● Draw Item
  3877.   #--------------------------------------------------------------------------
  3878.   def draw_item(index)
  3879.       item = @data[index]
  3880.       if item
  3881.          rect = item_rect(index)
  3882.          rect.width -= 4
  3883.          draw_item_number(rect, item)
  3884.       end
  3885.   end
  3886.  
  3887.   #--------------------------------------------------------------------------
  3888.   # ● Draw Item Number
  3889.   #--------------------------------------------------------------------------
  3890.   def draw_item_number(rect, item)
  3891.       draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  3892.   end  
  3893.  
  3894.   #--------------------------------------------------------------------------
  3895.   # ● Update Help
  3896.   #--------------------------------------------------------------------------
  3897.   def update_help
  3898.       @help_window.set_item(item)
  3899.   end
  3900.  
  3901.   #--------------------------------------------------------------------------
  3902.   # ● Refresh
  3903.   #--------------------------------------------------------------------------
  3904.   def refresh
  3905.       make_item_list
  3906.       create_contents
  3907.       draw_all_items
  3908.    end
  3909.  
  3910. end
  3911.  
  3912. #==============================================================================
  3913. # ■ Window_ItemList Z
  3914. #==============================================================================
  3915. class Window_ItemList_Item_2 < Window_Selectable
  3916.  
  3917.   #--------------------------------------------------------------------------
  3918.   # ● Initialize
  3919.   #--------------------------------------------------------------------------
  3920.   def initialize(x, y, width, height)
  3921.       super
  3922.       @category = :none
  3923.       @data = []
  3924.   end
  3925.  
  3926.   #--------------------------------------------------------------------------
  3927.   # ● Category
  3928.   #--------------------------------------------------------------------------
  3929.   def category=(category)
  3930.       return if @category == category
  3931.       @category = category
  3932.       self.oy = 0
  3933.   end
  3934.  
  3935.   #--------------------------------------------------------------------------
  3936.   # ● Col Max
  3937.   #--------------------------------------------------------------------------
  3938.   def col_max
  3939.       return 1
  3940.   end
  3941.   #--------------------------------------------------------------------------
  3942.   # ● Item Max
  3943.   #--------------------------------------------------------------------------
  3944.   def item_max
  3945.       @data ? @data.size : 1
  3946.   end
  3947.   #--------------------------------------------------------------------------
  3948.   # ● Item
  3949.   #--------------------------------------------------------------------------
  3950.   def item
  3951.       @data && index >= 0 ? @data[index] : nil
  3952.   end
  3953.  
  3954.   #--------------------------------------------------------------------------
  3955.   # ● Current Item Enabled?
  3956.   #--------------------------------------------------------------------------
  3957.   def current_item_enabled?
  3958.       enable?(@data[index])
  3959.   end
  3960.  
  3961.   #--------------------------------------------------------------------------
  3962.   # ● Include?
  3963.   #--------------------------------------------------------------------------
  3964.   def include?(item)
  3965.       case @category
  3966.       when :item   ;   item.is_a?(RPG::Item) && !item.key_item?
  3967.       else
  3968.            false
  3969.       end
  3970.   end
  3971.  
  3972.   #--------------------------------------------------------------------------
  3973.   # ● Enable?
  3974.   #--------------------------------------------------------------------------
  3975.   def enable?(item)
  3976.       $game_party.usable?(item)
  3977.   end
  3978.  
  3979.   #--------------------------------------------------------------------------
  3980.   # ● Make Item List
  3981.   #--------------------------------------------------------------------------
  3982.   def make_item_list
  3983.       @data = $game_party.all_items.select {|item| include?(item) }
  3984.       @data.push(nil) if include?(nil)
  3985.   end
  3986.  
  3987.   #--------------------------------------------------------------------------
  3988.   # ● Select Last
  3989.   #--------------------------------------------------------------------------
  3990.   def select_last
  3991.       select(@data.index($game_party.last_item.object) || 0)
  3992.   end
  3993.  
  3994.   #--------------------------------------------------------------------------
  3995.   # ● Draw Item
  3996.   #--------------------------------------------------------------------------
  3997.   def draw_item(index)
  3998.       item = @data[index]
  3999.       if item
  4000.          rect = item_rect(index)
  4001.          rect.width -= 4
  4002.          draw_item_name(item, rect.x, rect.y, enable?(item))
  4003.         # draw_item_number(rect, item)
  4004.       end
  4005.   end
  4006.  
  4007.   #--------------------------------------------------------------------------
  4008.   # ● Draw Item Number
  4009.   #--------------------------------------------------------------------------
  4010.   def draw_item_number(rect, item)
  4011.       draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  4012.   end
  4013.  
  4014.   #--------------------------------------------------------------------------
  4015.   # ● Update Help
  4016.   #--------------------------------------------------------------------------
  4017.   def update_help      
  4018.   end
  4019.  
  4020.   #--------------------------------------------------------------------------
  4021.   # ● Refresh
  4022.   #--------------------------------------------------------------------------
  4023.   def refresh
  4024.       make_item_list
  4025.       create_contents
  4026.       draw_all_items
  4027.   end
  4028.  
  4029. end
  4030.  
  4031. #==============================================================================
  4032. # ■ Scene_Item
  4033. #==============================================================================
  4034. class Scene_Item
  4035.  
  4036.   #--------------------------------------------------------------------------
  4037.   # ● Create Sprites
  4038.   #--------------------------------------------------------------------------         
  4039.   def create_sprites
  4040.       create_menu_background
  4041.       create_layout
  4042.       create_particles
  4043.       create_command
  4044.       create_button
  4045.       create_help_window
  4046.       create_item_window
  4047.       create_weapon_window
  4048.       create_armor_window
  4049.       create_key_window
  4050.       create_actor_window
  4051.       set_initial_visible
  4052.   end
  4053.  
  4054.   #--------------------------------------------------------------------------
  4055.   # ● Create Actor Window
  4056.   #--------------------------------------------------------------------------
  4057.   def create_actor_window
  4058.       @actor_window = Members_Windows_Status.new
  4059.       @actor_window.set_handler(:ok,     method(:on_actor_ok))
  4060.       @actor_window.set_handler(:cancel, method(:on_actor_cancel))
  4061.       @actor_window.opacity = 0      
  4062.       @actor_window.x = -10
  4063.       @actor_window.y = 36
  4064.       @actor_window_slide_range = [@actor_window.x, [email]-@actor_window.width[/email]]
  4065.       @actor_window.x = @actor_window_slide_range[1]
  4066.       @actor_window.visible = true
  4067.       @actor_window_index_old = @actor_window.index
  4068.       create_members_window
  4069.       create_actor_status
  4070.       update_active_window
  4071.       update_command_sprites
  4072.   end
  4073.  
  4074.   #--------------------------------------------------------------------------
  4075.   # ● Create Members Window
  4076.   #--------------------------------------------------------------------------  
  4077.   def create_members_window
  4078.       index = 0
  4079.       @members_status = []      
  4080.       for actor in $game_party.members
  4081.           @members_status.push(Members_Menu.new(actor,index))
  4082.           index += 1
  4083.       end   
  4084.   end
  4085.  
  4086.   #--------------------------------------------------------------------------
  4087.   # ● Create Actor Status
  4088.   #--------------------------------------------------------------------------  
  4089.   def create_actor_status
  4090.       @actor_status = Actor_Menu_Status.new(@actor)
  4091.   end  
  4092.  
  4093.   #--------------------------------------------------------------------------
  4094.   # ● Create Item Window
  4095.   #--------------------------------------------------------------------------
  4096.   def create_item_window
  4097.       @item_window = Window_ItemList_Item_1.new(162,92,225,270)  
  4098.       @item_window.help_window = @help_window
  4099.       @item_window.set_handler(:ok,     method(:on_item_ok))
  4100.       @item_window.set_handler(:cancel, method(:on_item_cancel))
  4101.       @item_window.category = :item
  4102.       @item_window.active = true
  4103.       @item_window.refresh
  4104.       @item_window.index = 0
  4105.       @item_window.opacity = 0      
  4106.       @item_window_2 = Window_ItemList_Item_2.new(162,92,225,270)  
  4107.       @item_window_2.help_window = @help_window
  4108.       @item_window_2.set_handler(:ok,     method(:on_item_ok))
  4109.       @item_window_2.set_handler(:cancel, method(:on_item_cancel))
  4110.       @item_window_2.category = :item
  4111.       @item_window_2.active = true
  4112.       @item_window_2.refresh
  4113.       @item_window_2.index = 0
  4114.       @item_window_2.opacity = 0      
  4115.   end  
  4116.  
  4117.   #--------------------------------------------------------------------------
  4118.   # ● Create Weapon Window
  4119.   #--------------------------------------------------------------------------
  4120.   def create_weapon_window
  4121.       @weapon_window = Window_ItemList_Z.new(162,92,225,270)  
  4122.       @weapon_window.help_window = @help_window
  4123.       @weapon_window.set_handler(:ok,     method(:on_item_ok))
  4124.       @weapon_window.set_handler(:cancel, method(:on_item_cancel))
  4125.       @weapon_window.category = :weapon
  4126.       @weapon_window.active = true
  4127.       @weapon_window.refresh
  4128.       @weapon_window.index = 0
  4129.       @weapon_window.opacity = 0
  4130.   end  
  4131.  
  4132.   #--------------------------------------------------------------------------
  4133.   # ● Create Armor Window
  4134.   #--------------------------------------------------------------------------
  4135.   def create_armor_window
  4136.       @armor_window = Window_ItemList_Z.new(162,92,225,270)  
  4137.       @armor_window.help_window = @help_window
  4138.       @armor_window.set_handler(:ok,     method(:on_item_ok))
  4139.       @armor_window.set_handler(:cancel, method(:on_item_cancel))
  4140.       @armor_window.category = :armor
  4141.       @armor_window.active = true
  4142.       @armor_window.refresh
  4143.       @armor_window.index = 0
  4144.       @armor_window.opacity = 0
  4145.   end   
  4146.  
  4147.   #--------------------------------------------------------------------------
  4148.   # ● Create Key Window
  4149.   #--------------------------------------------------------------------------
  4150.   def create_key_window
  4151.       @key_window = Window_ItemList_Z.new(162,92,225,270)  
  4152.       @key_window.help_window = @help_window
  4153.       @key_window.set_handler(:ok,     method(:on_item_ok))
  4154.       @key_window.set_handler(:cancel, method(:on_item_cancel))
  4155.       @key_window.category = :key_item
  4156.       @key_window.active = true
  4157.       @key_window.refresh
  4158.       @key_window.index = 0
  4159.       @key_window.opacity = 0
  4160.   end   
  4161.  
  4162.   #--------------------------------------------------------------------------
  4163.   # ● Create Help Window
  4164.   #--------------------------------------------------------------------------              
  4165.   def create_help_window
  4166.       @help_window = Window_Help.new
  4167.       @help_window.x = 0
  4168.       @help_window.y = Graphics.height - @help_window.height
  4169.       @help_window.opacity = 0
  4170.   end  
  4171.  
  4172.   #--------------------------------------------------------------------------
  4173.   # ● Create Menu Background
  4174.   #--------------------------------------------------------------------------            
  4175.   def create_menu_background
  4176.       @background = Plane.new
  4177.       @background.bitmap = $game_temp.pre_cache_item_menu[0]
  4178.       @background.z = 0
  4179.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  4180.   end  
  4181.  
  4182.   #--------------------------------------------------------------------------
  4183.   # ● Create Layout
  4184.   #--------------------------------------------------------------------------              
  4185.   def create_layout
  4186.       @layout = Sprite.new
  4187.       @layout.bitmap = $game_temp.pre_cache_item_menu[1]
  4188.       @layout.z = 3
  4189.   end
  4190.  
  4191.   #--------------------------------------------------------------------------
  4192.   # ● Create Particles
  4193.   #--------------------------------------------------------------------------  
  4194.   def create_particles
  4195.       @particles_sprite =[]
  4196.       for i in 0...NUMBER_OF_PARTICLES
  4197.           @particles_sprite.push(Particles_Menu.new(nil))
  4198.       end
  4199.   end
  4200.  
  4201.   #--------------------------------------------------------------------------
  4202.   # ● Create Command
  4203.   #--------------------------------------------------------------------------   
  4204.   def create_command
  4205.       @command_sprites = []
  4206.       index = 0      
  4207.       for i in 0...4
  4208.           @command_sprites.push(Layout_Window_Sprite.new(nil, index) )
  4209.           index += 1
  4210.       end
  4211.   end   
  4212.  
  4213.   #--------------------------------------------------------------------------
  4214.   # ● Create Button
  4215.   #--------------------------------------------------------------------------   
  4216.   def create_button
  4217.       @button_sprites = []
  4218.       index = 0      
  4219.       for i in 0...4
  4220.           @button_sprites.push(Item_Button_Sprite.new(nil, index) )
  4221.           index += 1
  4222.       end
  4223.   end      
  4224.  
  4225.   #--------------------------------------------------------------------------
  4226.   # ● Set Initial Visible
  4227.   #--------------------------------------------------------------------------            
  4228.   def set_initial_visible
  4229.       @item_window.visible = false
  4230.       @item_window_2.visible = false
  4231.       @weapon_window.visible = false
  4232.       @armor_window.visible = false
  4233.       @key_window.visible = false  
  4234.   end  
  4235.  
  4236. end
  4237.  
  4238. #==============================================================================
  4239. # ■ Layout Window Sprite
  4240. #==============================================================================
  4241. class Layout_Window_Sprite < Sprite
  4242.   include MOG_MENU_ITEM
  4243.   attr_accessor :index
  4244.   attr_accessor :position
  4245.  
  4246. #--------------------------------------------------------------------------
  4247. # ● Initialize
  4248. #--------------------------------------------------------------------------                  
  4249.   def initialize(viewport = nil,index)
  4250.       super(viewport)
  4251.       @index = index
  4252.       self.bitmap = Cache.menu_item("Item_Window" + @index.to_s)
  4253.       self.z = 10
  4254.       @org_pos = [COMMAND_POSITION[0],COMMAND_POSITION[1]]
  4255.       @slide_max = @org_pos[0] + 24
  4256.       @center = (544 - self.bitmap.width) - (544 / 2) + (self.bitmap.width / 2)
  4257.       @left = -self.bitmap.width
  4258.       @right = 544
  4259.       @position = 0
  4260.       @direction = 0
  4261.       @org_pos = [@left ,COMMAND_POSITION[1]]
  4262.       self.x = @org_pos[0]
  4263.       self.y = @org_pos[1]
  4264.       self.visible = false if @index > 0
  4265.   end  
  4266.  
  4267. #--------------------------------------------------------------------------
  4268. # ● Dispose
  4269. #--------------------------------------------------------------------------                     
  4270.   def dispose_sprite
  4271.       self.bitmap.dispose
  4272.   end  
  4273.  
  4274. #--------------------------------------------------------------------------
  4275. # ● Update
  4276. #--------------------------------------------------------------------------                     
  4277.   def update_command(index)
  4278.       slide_speed = 30
  4279.       if @index == index
  4280.          if self.x < @center
  4281.             self.x += slide_speed
  4282.             self.x = @center if self.x >= @center
  4283.          elsif self.x > @center
  4284.             self.x -= slide_speed
  4285.             self.x = @center if self.x <= @center
  4286.          end
  4287.        else   
  4288.           if @direction == -1
  4289.              self.x -= slide_speed if self.x > @left
  4290.           else
  4291.              self.x += slide_speed if self.x < @right
  4292.           end   
  4293.       end  
  4294.   end   
  4295.  
  4296. #--------------------------------------------------------------------------
  4297. # ● New P
  4298. #--------------------------------------------------------------------------  
  4299.   def newp(index,direction)
  4300.       now_command = index
  4301.       if direction == -1
  4302.          pre_command = index + 1
  4303.          pre_command = 0 if pre_command > 3
  4304.       else   
  4305.          pre_command = index - 1
  4306.          pre_command = 3 if pre_command < 0
  4307.         end
  4308.       if index == @index
  4309.          self.visible = true
  4310.          self.x = @right if direction == -1
  4311.          self.x = @left if direction == 1
  4312.       elsif pre_command ==  @index
  4313.          self.visible = true
  4314.       else   
  4315.          self.visible = false
  4316.       end   
  4317.       @direction = direction
  4318.   end
  4319.  
  4320. end
  4321.  
  4322. #==============================================================================
  4323. # ■ Item Button Sprite
  4324. #==============================================================================
  4325. class Item_Button_Sprite < Sprite
  4326.   include MOG_MENU_ITEM
  4327.   attr_accessor :index
  4328.  
  4329. #--------------------------------------------------------------------------
  4330. # ● Initialize
  4331. #--------------------------------------------------------------------------                  
  4332.   def initialize(viewport = nil,index)
  4333.       super(viewport)
  4334.       @index = index
  4335.       self.bitmap = Cache.menu_item("Button" + @index.to_s)
  4336.       self.z = 12
  4337.       self.ox = self.bitmap.width / 2
  4338.       self.oy = self.bitmap.height / 2
  4339.       @org_pos = [(BUTTON_SPACE * @index) + BUTTON_POSITION[0],BUTTON_POSITION[1]]
  4340.       @slide_max = @org_pos[1] + 24
  4341.       @next_pos = [@org_pos[0],@org_pos[1]]
  4342.       self.x = @org_pos[0]
  4343.       self.y = @org_pos[1] - 128 - (128 * @index)
  4344.       @zoom_duration = [0,0,false]
  4345.       @active = false
  4346.   end  
  4347.  
  4348. #--------------------------------------------------------------------------
  4349. # ● Dispose
  4350. #--------------------------------------------------------------------------                     
  4351.   def dispose_sprite
  4352.       self.bitmap.dispose
  4353.   end  
  4354.  
  4355. #--------------------------------------------------------------------------
  4356. # ● Update
  4357. #--------------------------------------------------------------------------                     
  4358.   def update_command(index)
  4359.       if @index == index
  4360.         # self.y += 2
  4361.         # self.y = @slide_max if self.y > @slide_max
  4362.          @next_pos[1] =@slide_max
  4363.          self.opacity += 15
  4364.          @active = true
  4365.       else
  4366.         # self.y -= 2
  4367.         # self.y = @org_pos[1] if self.y < @org_pos[1]
  4368.          @next_pos[1] = @org_pos[1]
  4369.         self.opacity -= 15 if self.opacity > 160
  4370.          @active = false
  4371.       end
  4372.       update_slide(1,self.y,@next_pos[1])
  4373.       update_zoom
  4374.   end   
  4375.  
  4376.  
  4377. #--------------------------------------------------------------------------
  4378. # ● Update Slide
  4379. #--------------------------------------------------------------------------                       
  4380.   def update_slide(type,cp,np)
  4381.       sp = 3 + ((cp - np).abs / 10)
  4382.       if cp > np
  4383.          cp -= sp
  4384.          cp = np if cp < np
  4385.       elsif cp < np
  4386.          cp += sp
  4387.          cp = np if cp > np
  4388.       end     
  4389.       self.x = cp if type == 0
  4390.       self.y = cp if type == 1
  4391.   end  
  4392.  
  4393. #--------------------------------------------------------------------------
  4394. # ● Update Zoom
  4395. #--------------------------------------------------------------------------                       
  4396.   def update_zoom
  4397.       if @active
  4398.          if !@zoom_duration[2]
  4399.             update_zoom_in
  4400.             @zoom_duration = [0,0,true] if self.zoom_x == 1.00  
  4401.          else  
  4402.             update_zoom_effect
  4403.          end
  4404.       else
  4405.          @zoom_duration[2] = false   
  4406.          update_zoom_in
  4407.       end  
  4408.   end   
  4409.  
  4410. #--------------------------------------------------------------------------
  4411. # ● Update Zoom Out
  4412. #--------------------------------------------------------------------------                        
  4413.   def update_zoom_out
  4414.       return if self.zoom_x == 1.00
  4415.       self.zoom_x += 0.03
  4416.       self.zoom_y += 0.03
  4417.       if self.zoom_x >= 1.00
  4418.             self.zoom_x = 1.00
  4419.             self.zoom_y = 1.00
  4420.       end   
  4421.    end   
  4422.  
  4423. #--------------------------------------------------------------------------
  4424. # ● Update Zoom In
  4425. #--------------------------------------------------------------------------                           
  4426.   def update_zoom_in
  4427.       return if self.zoom_x == 1.00
  4428.       self.zoom_x -= 0.03
  4429.       self.zoom_y -= 0.03
  4430.       if self.zoom_x <= 1.00
  4431.          self.zoom_x = 1.00
  4432.          self.zoom_y = 1.00
  4433.       end   
  4434.   end      
  4435.  
  4436. #--------------------------------------------------------------------------
  4437. # ● Update Zoom_effect
  4438. #--------------------------------------------------------------------------                        
  4439. def update_zoom_effect
  4440.      @zoom_duration[0] += 1
  4441.      return if @zoom_duration[0] < 1
  4442.      @zoom_duration[0] = 0
  4443.      @zoom_duration[1] += 1
  4444.      case @zoom_duration[1]
  4445.           when 1..30
  4446.              self.zoom_x += 0.005
  4447.              self.zoom_y += 0.005                 
  4448.           when 31..60
  4449.              self.zoom_x -= 0.005
  4450.              self.zoom_y -= 0.005           
  4451.           when 61..999  
  4452.           @zoom_duration[1] = 0
  4453.           self.zoom_x = 1.00
  4454.           self.zoom_y = 1.00
  4455.      end
  4456. end      
  4457.  
  4458. end
  4459.  
  4460. #==============================================================================
  4461. # ■ Scene_Item
  4462. #==============================================================================
  4463. class Scene_Item
  4464.  
  4465.   #--------------------------------------------------------------------------
  4466.   # ● Execute Dispose
  4467.   #--------------------------------------------------------------------------        
  4468.   def execute_dispose
  4469.       Graphics.freeze
  4470.       dispose_background
  4471.       dispose_layout
  4472.       dispose_particles
  4473.       dispose_command_sprites
  4474.       dispose_button_sprites
  4475.       dispose_windows
  4476.       dispose_members_status
  4477.   end
  4478.  
  4479.   #--------------------------------------------------------------------------
  4480.   # ● Dispose Background
  4481.   #--------------------------------------------------------------------------  
  4482.   def dispose_background
  4483.       return if @background == nil
  4484.       @background.dispose
  4485.       @background = nil
  4486.   end
  4487.  
  4488.   #--------------------------------------------------------------------------
  4489.   # ● Dispose Layout
  4490.   #--------------------------------------------------------------------------               
  4491.   def dispose_layout
  4492.       return if @layout == nil
  4493.       @layout.dispose
  4494.       @layout = nil
  4495.   end  
  4496.  
  4497. #--------------------------------------------------------------------------
  4498. # ● Dispose Particles
  4499. #--------------------------------------------------------------------------   
  4500. def dispose_particles
  4501.      return if @particles_sprite == nil
  4502.      @particles_sprite.each {|sprite| sprite.dispose }
  4503. end
  4504.  
  4505.   #--------------------------------------------------------------------------
  4506.   # ● Dispose Command Sprites
  4507.   #--------------------------------------------------------------------------     
  4508.   def dispose_command_sprites
  4509.       return if @command_sprites == nil
  4510.       @command_sprites.each {|sprite| sprite.dispose_sprite }
  4511.       @command_sprites = nil
  4512.   end   
  4513.  
  4514.   #--------------------------------------------------------------------------
  4515.   # ● Dispose Button Sprites
  4516.   #--------------------------------------------------------------------------     
  4517.   def dispose_button_sprites
  4518.       return if @button_sprites == nil
  4519.       @button_sprites.each {|sprite| sprite.dispose_sprite }
  4520.       @button_sprites = nil
  4521.   end   
  4522.  
  4523.   #--------------------------------------------------------------------------
  4524.   # ● Dispose Members Status
  4525.   #--------------------------------------------------------------------------            
  4526.   def dispose_members_status
  4527.       return if @members_status == nil
  4528.       @members_status.each {|sprite| sprite.dispose }
  4529.   end  
  4530.  
  4531.   #--------------------------------------------------------------------------
  4532.   # ● Dispose Winndows
  4533.   #--------------------------------------------------------------------------         
  4534.   def dispose_windows
  4535.       return if @item_window == nil
  4536.       @item_window.dispose
  4537.       @item_window_2.dispose
  4538.       @weapon_window.dispose
  4539.       @armor_window.dispose
  4540.       @key_window.dispose
  4541.       @actor_window.dispose
  4542.       @actor_status.dispose
  4543.       @help_window.dispose
  4544.   end  
  4545.  
  4546. end
  4547.  
  4548. #==============================================================================
  4549. # ■ Scene_Item
  4550. #==============================================================================
  4551. class Scene_Item
  4552.  
  4553.   #--------------------------------------------------------------------------
  4554.   # ● Update Sprites
  4555.   #--------------------------------------------------------------------------         
  4556.   def update_sprites   
  4557.       update_background
  4558.       update_particles
  4559.       update_command_sprites
  4560.       update_button_sprites
  4561.       update_windows
  4562.       update_members_status
  4563.   end
  4564.  
  4565.   #--------------------------------------------------------------------------
  4566.   # ● Update Members Status
  4567.   #--------------------------------------------------------------------------            
  4568.   def update_members_status
  4569.       @members_status.each {|sprite| sprite.update(@actor_window.active,@actor_window.index) }
  4570.   end
  4571.  
  4572.   #--------------------------------------------------------------------------
  4573.   # ● Update Background
  4574.   #--------------------------------------------------------------------------              
  4575.   def update_background
  4576.       return if @background == nil
  4577.       @background.ox += @background_scroll[0]
  4578.       @background.oy += @background_scroll[1]
  4579.   end   
  4580.  
  4581.   #--------------------------------------------------------------------------
  4582.   # ● Update Particles
  4583.   #--------------------------------------------------------------------------  
  4584.   def update_particles
  4585.       return if @particles_sprite == nil
  4586.       @particles_sprite.each {|sprite| sprite.update }
  4587.   end
  4588.  
  4589.   #--------------------------------------------------------------------------
  4590.   # ● Update Command Sprites
  4591.   #--------------------------------------------------------------------------     
  4592.   def update_command_sprites
  4593.       return if @command_sprites == nil
  4594.       for i in @command_sprites
  4595.           i.update_command(@command_index)
  4596.           if i.index == 0
  4597.              @item_window.x = i.x
  4598.              @item_window.visible = i.visible
  4599.              @item_window_2.x = i.x
  4600.              @item_window_2.visible = i.visible            
  4601.            elsif i.index == 1
  4602.              @weapon_window.x = i.x
  4603.              @weapon_window.visible = i.visible            
  4604.            elsif i.index == 2
  4605.              @armor_window.x = i.x
  4606.              @armor_window.visible = i.visible
  4607.            elsif i.index == 3
  4608.              @key_window.x = i.x
  4609.              @key_window.visible = i.visible               
  4610.          end
  4611.       end      
  4612.   end   
  4613.  
  4614.   #--------------------------------------------------------------------------
  4615.   # ● Update Button Sprites
  4616.   #--------------------------------------------------------------------------     
  4617.   def update_button_sprites
  4618.       return if @button_sprites == nil
  4619.       @button_sprites.each {|sprite| sprite.update_command(@command_index) }
  4620.   end     
  4621.  
  4622.   #--------------------------------------------------------------------------
  4623.   # ● Update Winndow
  4624.   #--------------------------------------------------------------------------      
  4625.   def update_windows
  4626.       return if @item_window == nil
  4627.       if @command_index == 0
  4628.          @item_window.update
  4629.          @item_window_2.index = @item_window.index
  4630.       elsif @command_index == 1   
  4631.          @weapon_window.update   
  4632.       elsif @command_index == 2   
  4633.          @armor_window.update
  4634.       elsif @command_index == 3   
  4635.          @key_window.update         
  4636.       end   
  4637.       @actor_window.update
  4638.       update_actor_window_slide
  4639.       update_actor_window2_slide
  4640.   end
  4641.  
  4642.   #--------------------------------------------------------------------------
  4643.   # ● Update Actor Window Slide
  4644.   #--------------------------------------------------------------------------  
  4645.   def update_actor_window_slide
  4646.       if @actor_window.active
  4647.          if @actor_window.x < @actor_window_slide_range[0]
  4648.             @actor_window.x += 15
  4649.             @actor_window.contents_opacity += 23
  4650.             if @actor_window.x >= @actor_window_slide_range[0]
  4651.                @actor_window.x = @actor_window_slide_range[0]
  4652.                @actor_window.contents_opacity = 255
  4653.             end  
  4654.          end  
  4655.       else         
  4656.          if @actor_window.x >= @actor_window_slide_range[1]
  4657.             @actor_window.x -= 15
  4658.             @actor_window.contents_opacity -= 3
  4659.             if @actor_window.x <= @actor_window_slide_range[1]
  4660.                @actor_window.x = @actor_window_slide_range[1]
  4661.                @actor_window.contents_opacity = 0
  4662.             end         
  4663.          end
  4664.       end
  4665.   end   
  4666.  
  4667.   #--------------------------------------------------------------------------
  4668.   # ● Update Actor Window Slide
  4669.   #--------------------------------------------------------------------------  
  4670.   def update_actor_window2_slide
  4671.       @actor_status.update(@actor_window.active,@actor)
  4672.   end   
  4673.  
  4674. end
  4675.  
  4676. #==============================================================================
  4677. # ■ Scene_Item
  4678. #==============================================================================
  4679. class Scene_Item
  4680.  
  4681.   #--------------------------------------------------------------------------
  4682.   # ● Update
  4683.   #--------------------------------------------------------------------------      
  4684.   def update
  4685.       update_command   
  4686.       update_sprites
  4687.   end
  4688.  
  4689. end
  4690.  
  4691. #==============================================================================
  4692. # ■ Scene_Item
  4693. #==============================================================================
  4694. class Scene_Item
  4695.  
  4696.   #--------------------------------------------------------------------------
  4697.   # ● Update Command
  4698.   #--------------------------------------------------------------------------      
  4699.   def update_command
  4700.       if @actor_window.active
  4701.          update_target_select         
  4702.       else
  4703.          update_main_command
  4704.          update_active_window
  4705.       end  
  4706.   end
  4707.  
  4708.   #--------------------------------------------------------------------------
  4709.   # ● Update Active Window
  4710.   #--------------------------------------------------------------------------        
  4711.   def update_active_window
  4712.       @item_window_2.active = false
  4713.       if @command_index == 0
  4714.          @item_window.active = true
  4715.          @weapon_window.active = false
  4716.          @armor_window.active = false
  4717.          @key_window.active = false
  4718.       elsif @command_index == 1           
  4719.          @item_window.active = false
  4720.          @weapon_window.active = true
  4721.          @armor_window.active = false
  4722.          @key_window.active = false
  4723.       elsif @command_index == 2   
  4724.          @item_window.active = false
  4725.          @weapon_window.active = false
  4726.          @armor_window.active = true
  4727.          @key_window.active = false
  4728.       elsif @command_index == 3
  4729.          @item_window.active = false
  4730.          @weapon_window.active = false
  4731.          @armor_window.active = false
  4732.          @key_window.active = true
  4733.       end         
  4734.   end
  4735.  
  4736.   #--------------------------------------------------------------------------
  4737.   # ● Update Main Command
  4738.   #--------------------------------------------------------------------------        
  4739.   def update_main_command
  4740.       @wait_time -= 1 if @wait_time > 0
  4741.       if Input.trigger?(:LEFT)
  4742.          move_command_index(-1)
  4743.       elsif Input.trigger?(:RIGHT)
  4744.          move_command_index(1)
  4745.       elsif Input.trigger?(:B)
  4746.          return_scene
  4747.       end  
  4748.   end
  4749.  
  4750.   #--------------------------------------------------------------------------
  4751.   # ● Return Scene
  4752.   #--------------------------------------------------------------------------         
  4753.   def return_scene
  4754.       Sound.play_cancel
  4755.       SceneManager.return
  4756.   end
  4757.  
  4758.   #--------------------------------------------------------------------------
  4759.   # ● Cancel_Selection
  4760.   #--------------------------------------------------------------------------         
  4761.   def cancel_selection
  4762.       Sound.play_cancel
  4763.       @phase = 0
  4764.   end
  4765.  
  4766.   #--------------------------------------------------------------------------
  4767.   # ● Update Main Command
  4768.   #--------------------------------------------------------------------------   
  4769.   def move_command_index(value)
  4770.       return if @wait_time > 0
  4771.       @wait_time = 7
  4772.       pre_index = @command_index
  4773.       @command_index += value
  4774.       @command_index = 0 if @command_index > 3
  4775.       @command_index = 3 if @command_index < 0
  4776.       for i in @command_sprites
  4777.           i.newp(@command_index,value)
  4778.       end         
  4779.       Sound.play_cursor
  4780.   end      
  4781.  
  4782.   #--------------------------------------------------------------------------
  4783.   # ● ON Category OK
  4784.   #--------------------------------------------------------------------------
  4785.   def on_category_ok
  4786.       if @command_index == 0
  4787.          @item_window.activate
  4788.          @item_window.select_last
  4789.       elsif @command_index == 1   
  4790.          @weapon_window.activate
  4791.          @weapon_window.select_last         
  4792.       elsif @command_index == 2   
  4793.          @armor_window.activate
  4794.          @armor_window.select_last
  4795.       elsif @command_index == 3   
  4796.          @key_window.activate
  4797.          @key_window.select_last
  4798.       end
  4799.       refresh_actor_status  
  4800.   end
  4801.  
  4802.   #--------------------------------------------------------------------------
  4803.   # ● ON Item OK
  4804.   #--------------------------------------------------------------------------
  4805.   def on_item_ok
  4806.       $game_party.last_item.object = item
  4807.       determine_item
  4808.   end
  4809.  
  4810.   #--------------------------------------------------------------------------
  4811.   # ● ON Item Cancel
  4812.   #--------------------------------------------------------------------------
  4813.   def on_item_cancel
  4814.      @item_window.unselect
  4815.   end
  4816.  
  4817.   #--------------------------------------------------------------------------
  4818.   # ● Play SE For Item
  4819.   #--------------------------------------------------------------------------
  4820.   def play_se_for_item
  4821.       Sound.play_use_item
  4822.   end  
  4823.  
  4824.   #--------------------------------------------------------------------------
  4825.   # ● Item
  4826.   #--------------------------------------------------------------------------
  4827.   def item
  4828.       if @command_index == 0
  4829.          @item_window.item
  4830.       elsif @command_index == 1   
  4831.          @weapon_window.item   
  4832.       elsif @command_index == 2   
  4833.          @armor_window.item
  4834.       elsif @command_index == 3   
  4835.          @key_window.item         
  4836.       end        
  4837.   end
  4838.  
  4839.   #--------------------------------------------------------------------------
  4840.   # ● User
  4841.   #--------------------------------------------------------------------------
  4842.   def user
  4843.       $game_party.movable_members.max_by {|member| member.pha }
  4844.   end
  4845.  
  4846.   #--------------------------------------------------------------------------
  4847.   # ● Cursor Left
  4848.   #--------------------------------------------------------------------------
  4849.   def cursor_left?
  4850.       @item_window.index % 2 == 0
  4851.   end
  4852.  
  4853.   #--------------------------------------------------------------------------
  4854.   # ● Show Sub Window
  4855.   #--------------------------------------------------------------------------
  4856.   def show_sub_window(window)
  4857.     window.show.activate
  4858.   end
  4859.  
  4860.   #--------------------------------------------------------------------------
  4861.   # ● Hide Sub Window
  4862.   #--------------------------------------------------------------------------
  4863.   def hide_sub_window(window)
  4864.       window.deactivate
  4865.       activate_item_window
  4866.   end
  4867.  
  4868.   #--------------------------------------------------------------------------
  4869.   # ● ON Actor OK
  4870.   #--------------------------------------------------------------------------
  4871.   def on_actor_ok
  4872.       if item_usable?
  4873.          use_item
  4874.          refresh_window
  4875.       else
  4876.         Sound.play_buzzer
  4877.       end
  4878.   end
  4879.  
  4880.   #--------------------------------------------------------------------------
  4881.   # ● Refresh Window
  4882.   #--------------------------------------------------------------------------  
  4883.   def refresh_window
  4884.       if @command_index == 0
  4885.          old_item = @item_window.item
  4886.          @item_window.refresh
  4887. #         set_actor_for_members_menu
  4888.          if @item_window.item  == nil
  4889.             @item_window.index -= 1
  4890.             @item_window.index = 0 if @item_window.index < 0
  4891.             @item_window.update
  4892.          end
  4893.          if old_item != @item_window.item
  4894.             on_actor_cancel
  4895.             cancel_selection
  4896.             @item_window_2.refresh
  4897.             @item_window.update_help
  4898.          end
  4899.       elsif @command_index == 1   
  4900.          @weapon_window.refresh
  4901.       elsif @command_index == 2   
  4902.          @armor_window.refresh
  4903.       elsif @command_index == 3   
  4904.          @key_window.refresh      
  4905.       end
  4906.   end
  4907.  
  4908.   #--------------------------------------------------------------------------
  4909.   # ● Set Actor for Members Menu
  4910.   #--------------------------------------------------------------------------   
  4911.   def set_actor_for_members_menu
  4912.       index = 0
  4913.       for actor in $game_party.members
  4914.           @members_status[index].set_actor(actor)
  4915.           index += 1
  4916.       end  
  4917.   end
  4918.  
  4919.   #--------------------------------------------------------------------------
  4920.   # ● ON Actor Cancel
  4921.   #--------------------------------------------------------------------------
  4922.   def on_actor_cancel
  4923.       hide_sub_window(@actor_window)
  4924.   end
  4925.  
  4926.   #--------------------------------------------------------------------------
  4927.   # ● Determine Item
  4928.   #--------------------------------------------------------------------------
  4929.   def determine_item
  4930.       if item.for_friend?
  4931.          show_sub_window(@actor_window)
  4932.          @actor_window.select_for_item(item)
  4933.          $game_temp.item_scope = @item_window.item.scope rescue nil
  4934.       else
  4935.          use_item
  4936.          activate_item_window
  4937.       end
  4938.   end
  4939.  
  4940.   #--------------------------------------------------------------------------
  4941.   # ● Activate Item Window
  4942.   #--------------------------------------------------------------------------
  4943.   def activate_item_window
  4944.       if @command_index == 0
  4945.          @item_window.refresh
  4946.          @item_window.activate
  4947.       elsif @command_index == 1   
  4948.          @weapon_window.refresh
  4949.          @weapon_window.activate
  4950.       elsif @command_index == 2   
  4951.          @armor_window.refresh
  4952.          @armor_window.activate
  4953.       elsif @command_index == 3   
  4954.          @key_window.refresh     
  4955.          @key_window.activate
  4956.       end   
  4957.   end
  4958.  
  4959.   #--------------------------------------------------------------------------
  4960.   # ● Item Target Actors
  4961.   #--------------------------------------------------------------------------
  4962.   def item_target_actors
  4963.       if !item.for_friend?
  4964.         []
  4965.       elsif item.for_all?
  4966.         $game_party.members
  4967.       else
  4968.         [$game_party.members[@actor_window.index]]
  4969.       end
  4970.   end
  4971.  
  4972.   #--------------------------------------------------------------------------
  4973.   # ● Item Usable?
  4974.   #--------------------------------------------------------------------------
  4975.   def item_usable?
  4976.       user.usable?(item) && item_effects_valid?
  4977.   end
  4978.  
  4979.   #--------------------------------------------------------------------------
  4980.   # ● Item Effects Valid?
  4981.   #--------------------------------------------------------------------------
  4982.   def item_effects_valid?
  4983.       item_target_actors.any? do |target|
  4984.            target.item_test(user, item)
  4985.       end
  4986.   end
  4987.  
  4988.   #--------------------------------------------------------------------------
  4989.   # ● Use Item to Actors
  4990.   #--------------------------------------------------------------------------
  4991.   def use_item_to_actors
  4992.       item_target_actors.each do |target|
  4993.         item.repeats.times { target.item_apply(user, item) }
  4994.       end
  4995.   end
  4996.  
  4997.   #--------------------------------------------------------------------------
  4998.   # ● Use Item
  4999.   #--------------------------------------------------------------------------
  5000.   def use_item
  5001.       play_se_for_item
  5002.       user.use_item(item)
  5003.       use_item_to_actors
  5004.       check_common_event
  5005.       check_gameover
  5006.       @actor_window.refresh
  5007.   end
  5008.  
  5009.   #--------------------------------------------------------------------------
  5010.   # ● Check Common Event
  5011.   #--------------------------------------------------------------------------
  5012.   def check_common_event
  5013.       SceneManager.goto(Scene_Map) if $game_temp.common_event_reserved?
  5014.   end
  5015.  
  5016.   #--------------------------------------------------------------------------
  5017.   # ● Update Target Select
  5018.   #--------------------------------------------------------------------------  
  5019.   def update_target_select
  5020.       @actor = $game_party.members[@actor_window.index]
  5021.       if Input.trigger?(:B)         
  5022.          cancel_selection
  5023.       end      
  5024.   end  
  5025.  
  5026. end
  5027.  
  5028.  
  5029. #==============================================================================
  5030. # ■ Game_Temp
  5031. #==============================================================================
  5032. class Game_Temp
  5033.  
  5034.   #--------------------------------------------------------------------------
  5035.   # ● Execute Pre Cache Skill Menu
  5036.   #--------------------------------------------------------------------------   
  5037.   def execute_pre_cache_skill_menu
  5038.       @pre_cache_skill_menu = []
  5039.       @pre_cache_skill_menu.push(Cache.menu_skill("Background"))
  5040.       @pre_cache_skill_menu.push(Cache.menu_skill("Layout"))
  5041.       @pre_cache_skill_menu.push(Cache.menu_skill("Type_Layout"))
  5042.       @pre_cache_skill_menu.push(Cache.menu_skill("List_Layout"))
  5043.       @pre_cache_skill_menu.push(Cache.menu_skill("Actor_Layout"))
  5044.  
  5045.   end   
  5046.  
  5047. end
  5048.  
  5049. #==============================================================================
  5050. # ■ Scene_Skill
  5051. #==============================================================================
  5052. class Scene_Skill
  5053.   include MOG_MENU_SKILL
  5054.   include MOG_MENU_BASE
  5055.  
  5056.   #--------------------------------------------------------------------------
  5057.   # ● Main
  5058.   #--------------------------------------------------------------------------        
  5059.   def main
  5060.       execute_setup
  5061.       execute_loop
  5062.       execute_dispose
  5063.   end  
  5064.  
  5065.   #--------------------------------------------------------------------------
  5066.   # ● Execute Setup
  5067.   #--------------------------------------------------------------------------        
  5068.   def execute_setup
  5069.       @actor = $game_temp.actor_menu_temp
  5070.       @index_max = (@actor.added_skill_types.size - 1)
  5071.       @index_max = 0 if @index_max < 0      
  5072.       @phase = 0
  5073.       @press_time = 0
  5074.       @press_lag = 0
  5075.       @scene_active = @actor.added_skill_types.size > 0 ? true : false
  5076.       create_sprites
  5077.   end
  5078.  
  5079.   #--------------------------------------------------------------------------
  5080.   # ● Execute Lopp
  5081.   #--------------------------------------------------------------------------        
  5082.   def execute_loop
  5083.       Graphics.transition(10)
  5084.       loop do
  5085.          Input.update
  5086.          update
  5087.          Graphics.update
  5088.          break if SceneManager.scene != self
  5089.       end
  5090.   end
  5091.  
  5092. end
  5093.  
  5094. #==============================================================================
  5095. # ■ Actor Skill Status
  5096. #==============================================================================
  5097. class Actor_Skill_Status
  5098.   include MOG_ACTOR_SKILL_STATUS
  5099.  
  5100.   #--------------------------------------------------------------------------
  5101.   # ● Initialize
  5102.   #--------------------------------------------------------------------------
  5103.   def initialize(actor)
  5104.       @actor = actor
  5105.       set_old_parameter
  5106.       create_sprites
  5107.   end
  5108.  
  5109.   #--------------------------------------------------------------------------
  5110.   # ● Create Sprites
  5111.   #--------------------------------------------------------------------------   
  5112.   def create_sprites
  5113.       @meter_image = $game_temp.pre_cache_actor_menu[6]
  5114.       @meter_cw = @meter_image.width
  5115.       @meter_ch = @meter_image.height / 2   
  5116.       @parameter_number = $game_temp.pre_cache_actor_menu[2]
  5117.       @parameter_cw = @parameter_number.width / 10
  5118.       @parameter_ch = @parameter_number.height
  5119.       @opac = 0
  5120.       create_layout
  5121.       create_parameter
  5122.       create_face
  5123.       create_name
  5124.       create_hp_meter
  5125.       create_mp_meter
  5126.       create_states
  5127.       set_position(0,[email]-@layout.bitmap.height[/email] - 48)
  5128.   end
  5129.  
  5130.   #--------------------------------------------------------------------------
  5131.   # ● Set Old Parameter
  5132.   #--------------------------------------------------------------------------  
  5133.   def set_old_parameter
  5134.       @par = [] if @par == nil
  5135.       @par.clear
  5136.       @par = [@actor.hp,@actor.mhp,@actor.mp,@actor.mmp,@actor.level]
  5137.   end   
  5138.  
  5139.   #--------------------------------------------------------------------------
  5140.   # ● Dispose
  5141.   #--------------------------------------------------------------------------  
  5142.   def dispose
  5143.       dispose_layout
  5144.       dispose_parameter
  5145.       dispose_face
  5146.       dispose_name
  5147.       dispose_hp_meter
  5148.       dispose_mp_meter
  5149.       dispose_states
  5150.   end
  5151.  
  5152.   #--------------------------------------------------------------------------
  5153.   # ● Dispose Layout
  5154.   #--------------------------------------------------------------------------   
  5155.   def dispose_layout
  5156.       @layout.dispose
  5157.   end
  5158.  
  5159.   #--------------------------------------------------------------------------
  5160.   # ● Dispose Parameter
  5161.   #--------------------------------------------------------------------------      
  5162.   def dispose_parameter
  5163.       @parameter.bitmap.dispose
  5164.       @parameter.dispose
  5165.   end  
  5166.  
  5167.   #--------------------------------------------------------------------------
  5168.   # ● Dispose Face
  5169.   #--------------------------------------------------------------------------   
  5170.   def dispose_face
  5171.       @face.bitmap.dispose if @face.bitmap != nil
  5172.       @face.dispose
  5173.   end   
  5174.  
  5175.   #--------------------------------------------------------------------------
  5176.   # ● Dispose HP Meter
  5177.   #--------------------------------------------------------------------------      
  5178.   def dispose_hp_meter
  5179.       @hp_meter.bitmap.dispose
  5180.       @hp_meter.dispose
  5181.   end
  5182.  
  5183.   #--------------------------------------------------------------------------
  5184.   # ● Dispose MP Meter
  5185.   #--------------------------------------------------------------------------      
  5186.   def dispose_mp_meter
  5187.       @mp_meter.bitmap.dispose
  5188.       @mp_meter.dispose
  5189.   end  
  5190.  
  5191.   #--------------------------------------------------------------------------
  5192.   # ● Dispose Name
  5193.   #--------------------------------------------------------------------------        
  5194.   def dispose_name
  5195.       @name.bitmap.dispose
  5196.       @name.dispose
  5197.   end  
  5198.  
  5199.   #--------------------------------------------------------------------------
  5200.   # ● Dispose States
  5201.   #--------------------------------------------------------------------------            
  5202.    def dispose_states
  5203.        return if @status == nil
  5204.        @status.bitmap.dispose
  5205.        @status.dispose
  5206.        if @actor_status != nil
  5207.           @actor_status.dispose
  5208.           @actor_status = nil
  5209.        end   
  5210.     end   
  5211.  
  5212.   #--------------------------------------------------------------------------
  5213.   # ● Create Layout
  5214.   #--------------------------------------------------------------------------
  5215.   def create_layout
  5216.       @layout = Sprite.new
  5217.       @layout.bitmap = $game_temp.pre_cache_skill_menu[4]
  5218.       @org_pos = [LAYOUT_POSITION[0],LAYOUT_POSITION[1]]
  5219.       @layout.x = @org_pos[0]
  5220.       @layout.y = @org_pos[1]
  5221.       @layout.z = 10
  5222.       #@layout.opacity = 0
  5223.   end
  5224.  
  5225.   #--------------------------------------------------------------------------
  5226.   # ● Create Parameter
  5227.   #--------------------------------------------------------------------------
  5228.   def create_parameter
  5229.       @parameter = Sprite.new
  5230.       @parameter.bitmap = Bitmap.new(@layout.bitmap.width,@layout.bitmap.height)
  5231.       @org_pos_par = [@org_pos[0] + PAR_POSITION[0],
  5232.                       @org_pos[1] + PAR_POSITION[1]]
  5233.       @parameter.x = @org_pos_par[0]
  5234.       @parameter.y = @org_pos_par[1]
  5235.       @parameter.z = 12
  5236. #      @parameter.opacity = 0
  5237.       refresh_parameter
  5238.   end  
  5239.  
  5240.   #--------------------------------------------------------------------------
  5241.   # ● Create HP Meter
  5242.   #--------------------------------------------------------------------------  
  5243.   def create_hp_meter
  5244.       @hp_meter_old = [-1,-1]
  5245.       @hp_meter = Sprite.new
  5246.       @hp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  5247.       @org_pos_hp = [@org_pos[0] + HP_METER_POSITION[0],
  5248.                      @org_pos[1] + HP_METER_POSITION[1]]      
  5249.       @hp_meter.x = @org_pos_hp[0]
  5250.       @hp_meter.y = @org_pos_hp[1]
  5251.       @hp_meter.z = 11
  5252.   end  
  5253.  
  5254.   #--------------------------------------------------------------------------
  5255.   # ● Refresh HP Meter
  5256.   #--------------------------------------------------------------------------   
  5257.   def refresh_hp_meter
  5258.       @hp_meter_old[0] = @actor.hp
  5259.       @hp_meter_old[1] = @actor.mhp
  5260.       @hp_meter.bitmap.clear
  5261.       width_range = @meter_cw * @actor.hp / @actor.mhp
  5262.       m_rect = Rect.new(0,0,width_range,@meter_ch)
  5263.       @hp_meter.bitmap.blt(0,0,@meter_image,m_rect)
  5264.   end
  5265.  
  5266.   #--------------------------------------------------------------------------
  5267.   # ● Create MP Meter
  5268.   #--------------------------------------------------------------------------  
  5269.   def create_mp_meter
  5270.       @mp_meter_old = [-1,-1]
  5271.       @mp_meter = Sprite.new
  5272.       @mp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
  5273.       @org_pos_mp = [@org_pos[0] + MP_METER_POSITION[0],
  5274.                      @org_pos[1] + MP_METER_POSITION[1]]      
  5275.       @mp_meter.x = @org_pos_mp[0]
  5276.       @mp_meter.y = @org_pos_mp[1]
  5277.       @mp_meter.z = 11
  5278.   end  
  5279.  
  5280.   #--------------------------------------------------------------------------
  5281.   # ● Create_States
  5282.   #--------------------------------------------------------------------------      
  5283.   def create_states
  5284.       @status_old = nil
  5285.       @status_flow = [-24,0]   
  5286.       @status = Sprite.new
  5287.       @status.bitmap = Bitmap.new(24,24)
  5288.       @org_pos_states = [@org_pos[0] + STATES_POSITION[0],
  5289.                          @org_pos[1] + STATES_POSITION[1]]      
  5290.       @status.x = @org_pos_states[0] + 1
  5291.       @status.y = @org_pos_states[1]
  5292.       @status.z = 11
  5293.   end      
  5294.  
  5295.   #--------------------------------------------------------------------------
  5296.   # * Refresh States
  5297.   #--------------------------------------------------------------------------        
  5298.   def refresh_states
  5299.       check_icon_image
  5300.       @status_old = @actor.states
  5301.       @status_flow = [0,0]
  5302.       @actor_status.dispose if @actor_status != nil
  5303.       @states_size = @actor.states.size > 0 ? (26 * @actor.states.size) : 24
  5304.       @actor_status = Bitmap.new(@states_size,24)
  5305.       index = 0
  5306.       for i in @actor.states
  5307.          rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
  5308.          @actor_status.blt(26 * index , 0, @icon_image, rect)
  5309.          index += 1
  5310.       end
  5311.   end   
  5312.  
  5313.   #--------------------------------------------------------------------------
  5314.   # * Flow_Status
  5315.   #--------------------------------------------------------------------------         
  5316.   def flow_states
  5317.       return if @actor_status == nil
  5318.       @status.bitmap.clear
  5319.       return if @actor.states.size == 0
  5320.       st_src_rect = Rect.new(@status_flow[0],0, 24,24)
  5321.       @status.bitmap.blt(0,0, @actor_status, st_src_rect)
  5322.       if STATES_SCROLLING_ANIMATION
  5323.          @status_flow[0] += 1
  5324.          @status_flow[0] = -24 if @status_flow[0] >= @states_size + 2
  5325.       else   
  5326.          @status_flow[1] += 1 unless @actor.states.size <= 1
  5327.          if @status_flow[1] > 30
  5328.             @status_flow[1] = 0
  5329.             @status_flow[0] += 26
  5330.             @status_flow[0] = 0 if @status_flow[0] >= (@states_size - 0)
  5331.          end   
  5332.      end   
  5333.   end        
  5334.  
  5335.   #--------------------------------------------------------------------------
  5336.   # * Check Icon Image
  5337.   #--------------------------------------------------------------------------         
  5338.   def check_icon_image
  5339.       if @icon_image == nil or @icon_image.disposed?
  5340.          @icon_image = Cache.system("Iconset")
  5341.       end   
  5342.   end   
  5343.  
  5344.  
  5345.   #--------------------------------------------------------------------------
  5346.   # ● Refresh MP Meter
  5347.   #--------------------------------------------------------------------------   
  5348.   def refresh_mp_meter
  5349.       @mp_meter_old[0] = @actor.mp
  5350.       @mp_meter_old[1] = @actor.mmp
  5351.       @mp_meter.bitmap.clear
  5352.       width_range = @meter_cw * @actor.mp / @actor.mmp rescue nil
  5353.       width_range = 0 if width_range == nil
  5354.       m_rect = Rect.new(0,@meter_ch,width_range,@meter_ch)
  5355.       @mp_meter.bitmap.blt(0,0,@meter_image,m_rect)
  5356.   end  
  5357.  
  5358.   #--------------------------------------------------------------------------
  5359.   # ● Create Face
  5360.   #--------------------------------------------------------------------------   
  5361.   def refresh_parameter
  5362.       set_old_parameter   
  5363.       @parameter.bitmap.clear
  5364.  
  5365.       value = @actor.level
  5366.       x = 112
  5367.       y = 8
  5368.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  5369.  
  5370.       value = @actor.hp
  5371.       x = 218
  5372.       y = 2
  5373.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  5374.  
  5375.       value = @actor.mp
  5376.       x = 238
  5377.       y = 22
  5378.       refresh_number(@parameter,@parameter_number,value,@parameter_cw,@parameter_ch,x,y)
  5379.  
  5380.   end  
  5381.  
  5382.   #--------------------------------------------------------------------------
  5383.   # ● Refresh Number
  5384.   #--------------------------------------------------------------------------     
  5385.   def refresh_number(sprite,image,value,number_cw,number_ch,x,y)
  5386.       number = value.abs.to_s.split(//)
  5387.       x2 = -number_cw * number.size
  5388.       for i in 0..number.size - 1
  5389.           number_abs = number[i].to_i
  5390.           nsrc_rect = Rect.new(number_cw * number_abs, 0, number_cw , number_ch)
  5391.           sprite.bitmap.blt(x + x2 + (number_cw  *  i), y, image, nsrc_rect)        
  5392.       end      
  5393.  
  5394.   end
  5395.  
  5396.   #--------------------------------------------------------------------------
  5397.   # ● Create Face
  5398.   #--------------------------------------------------------------------------  
  5399.   def create_face
  5400.       @face = Sprite.new
  5401.       @org_pos_face = [@org_pos[0] + FACE_POSITION[0],
  5402.                        @org_pos[1] + FACE_POSITION[1]]
  5403.       @face.x = @org_pos_face[0]
  5404.       @face.y = @org_pos_face[1]
  5405.       @face.z = 11
  5406.    #   @face.opacity = 0
  5407.       refresh_face
  5408.   end  
  5409.  
  5410.   #--------------------------------------------------------------------------
  5411.   # ● Refresh Face
  5412.   #--------------------------------------------------------------------------   
  5413.   def refresh_face
  5414.       face_name = "Face" + @actor.id.to_s
  5415.       @face.bitmap = Cache.menu(face_name.to_s)
  5416.   end
  5417.  
  5418.   #--------------------------------------------------------------------------
  5419.   # ● Create Name
  5420.   #--------------------------------------------------------------------------   
  5421.   def create_name
  5422.       @name = Sprite.new
  5423.       @name.bitmap = Bitmap.new(140,32)
  5424.       @name.bitmap.font.name = FONT_NAME
  5425.       @name.bitmap.font.size = FONT_SIZE
  5426.       @name.bitmap.font.bold = FONT_BOLD
  5427.       @org_pos_name = [@org_pos[0] + NAME_POSITION[0],
  5428.                        @org_pos[1] + NAME_POSITION[1]]
  5429.       @name.x = @org_pos_name[0]
  5430.       @name.y = @org_pos_name[1]
  5431.       @name.z = 11
  5432.      #@name.opacity = 0
  5433.       refresh_name     
  5434.   end  
  5435.  
  5436.   #--------------------------------------------------------------------------
  5437.   # ● Refresh Name
  5438.   #--------------------------------------------------------------------------      
  5439.   def refresh_name
  5440.       @name.bitmap.clear
  5441.       @name.bitmap.draw_text(0,0,140,32,@actor.name.to_s,0)
  5442.   end  
  5443.  
  5444.   #--------------------------------------------------------------------------
  5445.   # ● Set Actor
  5446.   #--------------------------------------------------------------------------        
  5447.   def set_actor(actor)
  5448.       @actor = actor
  5449.   end
  5450.  
  5451.   #--------------------------------------------------------------------------
  5452.   # ● Can Refresh HP Meter
  5453.   #--------------------------------------------------------------------------         
  5454.   def can_refresh_hp_meter?
  5455.       return true if @hp_meter_old[0] != @actor.hp
  5456.       return true if @hp_meter_old[1] != @actor.mhp
  5457.       return false
  5458.   end
  5459.  
  5460.   #--------------------------------------------------------------------------
  5461.   # ● Can Refresh MP Meter
  5462.   #--------------------------------------------------------------------------         
  5463.   def can_refresh_mp_meter?
  5464.       return true if @mp_meter_old[0] != @actor.mp
  5465.       return true if @mp_meter_old[1] != @actor.mmp
  5466.       return false
  5467.   end  
  5468.  
  5469.   #--------------------------------------------------------------------------
  5470.   # ● Can Refresh Parameter
  5471.   #--------------------------------------------------------------------------
  5472.   def can_refresh_parameter?
  5473.       return true if @par[0] != @actor.hp
  5474.       return true if @par[1] != @actor.mhp
  5475.       return true if @par[2] != @actor.mp
  5476.       return true if @par[3] != @actor.mmp
  5477.       return false
  5478.   end
  5479.  
  5480.   #--------------------------------------------------------------------------
  5481.   # ● Update Position
  5482.   #--------------------------------------------------------------------------      
  5483.   def update_position
  5484.       update_slide(0,@layout,@layout.x,@org_pos[0])
  5485.       update_slide(1,@layout,@layout.y,@org_pos[1])
  5486.       update_slide(0,@parameter,@parameter.x,@org_pos_par[0])
  5487.       update_slide(1,@parameter,@parameter.y,@org_pos_par[1])
  5488.       update_slide(0,@hp_meter,@hp_meter.x,@org_pos_hp[0])
  5489.       update_slide(1,@hp_meter,@hp_meter.y,@org_pos_hp[1])  
  5490.       update_slide(0,@mp_meter,@mp_meter.x,@org_pos_mp[0])
  5491.       update_slide(1,@mp_meter,@mp_meter.y,@org_pos_mp[1])        
  5492.       update_slide(0,@face,@face.x,@org_pos_face[0])
  5493.       update_slide(1,@face,@face.y,@org_pos_face[1])        
  5494.       update_slide(0,@name,@name.x,@org_pos_name[0])
  5495.       update_slide(1,@name,@name.y,@org_pos_name[1])      
  5496.       update_slide(0,@status,@status.x,@org_pos_states[0])
  5497.       update_slide(1,@status,@status.y,@org_pos_states[1])         
  5498.   end
  5499.  
  5500. #--------------------------------------------------------------------------
  5501. # ● Update Slide
  5502. #--------------------------------------------------------------------------                       
  5503.   def update_slide(type,sprite,cp,np)
  5504.       sp = 3 + ((cp - np).abs / 10)
  5505.       if cp > np
  5506.          cp -= sp
  5507.          cp = np if cp < np
  5508.       elsif cp < np
  5509.          cp += sp
  5510.          cp = np if cp > np
  5511.       end     
  5512.       sprite.x = cp if type == 0
  5513.       sprite.y = cp if type == 1
  5514.   end   
  5515.  
  5516.   #--------------------------------------------------------------------------
  5517.   # ● Update Opacity
  5518.   #--------------------------------------------------------------------------  
  5519.   def update_opacity
  5520.       @opac += 10
  5521.       @opac = 255 if @opac > 255
  5522.       set_opacity(@opac)
  5523.   end
  5524.  
  5525.   #--------------------------------------------------------------------------
  5526.   # ● Set Opacity
  5527.   #--------------------------------------------------------------------------   
  5528.   def set_opacity(opac)
  5529.       @layout.opacity = opac
  5530.       @layout.opacity = opac
  5531.       @parameter.opacity = opac
  5532.       @parameter.opacity = opac
  5533.       @hp_meter.opacity = opac
  5534.       @hp_meter.opacity = opac
  5535.       @mp_meter.opacity = opac
  5536.       @mp_meter.opacity = opac
  5537.       @face.opacity = opac
  5538.       @face.opacity = opac
  5539.       @name.opacity = opac
  5540.       @name.opacity = opac
  5541.       @status.opacity = opac
  5542.   end   
  5543.  
  5544.   #--------------------------------------------------------------------------
  5545.   # ● Update Position
  5546.   #--------------------------------------------------------------------------      
  5547.   def set_position(pos_x,pos_y)
  5548.       @layout.x = @org_pos[0] + pos_x
  5549.       @layout.y = @org_pos[1] + pos_y
  5550.       @parameter.x = @org_pos_par[0] + pos_x
  5551.       @parameter.y = @org_pos_par[1] + pos_y
  5552.       @hp_meter.x = @org_pos_hp[0] + pos_x
  5553.       @hp_meter.y = @org_pos_hp[1] + pos_y
  5554.       @mp_meter.x = @org_pos_mp[0] + pos_x
  5555.       @mp_meter.y = @org_pos_mp[1] + pos_y
  5556.       @face.x = @org_pos_face[0] + pos_x
  5557.       @face.y = @org_pos_face[1] + pos_y
  5558.       @name.x = @org_pos_name[0] + pos_x
  5559.       @name.y = @org_pos_name[1] + pos_y
  5560.       @status.x = @org_pos_states[0] + pos_x
  5561.       @status.y = @org_pos_states[1] + pos_y
  5562.   end   
  5563.  
  5564.   #--------------------------------------------------------------------------
  5565.   # ● Update
  5566.   #--------------------------------------------------------------------------  
  5567.   def update
  5568.       refresh_hp_meter if can_refresh_hp_meter?
  5569.       refresh_mp_meter if can_refresh_mp_meter?
  5570.       refresh_parameter if can_refresh_parameter?
  5571.       refresh_states if @status_old != @actor.states
  5572.       update_opacity
  5573.       update_position
  5574.       flow_states      
  5575.   end
  5576.  
  5577. end
  5578.  
  5579. #==============================================================================
  5580. # ■ Window_SkillCommand
  5581. #==============================================================================
  5582. class Window_SkillCommand_2 < Window_Command
  5583.  
  5584.   attr_reader   :skill_window
  5585.  
  5586.   #--------------------------------------------------------------------------
  5587.   # ● Initialize
  5588.   #--------------------------------------------------------------------------
  5589.   def initialize(x, y)
  5590.     super(x, y)
  5591.     @actor = nil
  5592.     @index_max = 0
  5593.   end
  5594.  
  5595.   #--------------------------------------------------------------------------
  5596.   # ● Window Width
  5597.   #--------------------------------------------------------------------------
  5598.   def window_width
  5599.     return 140
  5600.   end
  5601.  
  5602.   #--------------------------------------------------------------------------
  5603.   # ● Actor
  5604.   #--------------------------------------------------------------------------
  5605.   def actor=(actor)
  5606.       return if @actor == actor
  5607.       @actor = actor
  5608.       @index_max = (@actor.added_skill_types.size - 1)
  5609.       @index_max = 0 if @index_max < 0
  5610.       refresh
  5611.       select_last
  5612.   end
  5613.  
  5614.   #--------------------------------------------------------------------------
  5615.   # ● Visible Line Number
  5616.   #--------------------------------------------------------------------------
  5617.   def visible_line_number
  5618.       return 4
  5619.   end
  5620.  
  5621.   #--------------------------------------------------------------------------
  5622.   # ● Make Command List
  5623.   #--------------------------------------------------------------------------
  5624.   def make_command_list
  5625.       return unless @actor
  5626.          @actor.added_skill_types.sort.each do |stype_id|
  5627.          name = $data_system.skill_types[stype_id]
  5628.          add_command(name, :skill, true, stype_id)
  5629.       end
  5630.   end
  5631.  
  5632.   #--------------------------------------------------------------------------
  5633.   # ● Update
  5634.   #--------------------------------------------------------------------------
  5635.   def update
  5636.       super
  5637.       @skill_window.stype_id = current_ext if @skill_window
  5638.      # update_index
  5639.   end
  5640.  
  5641.   #--------------------------------------------------------------------------
  5642.   # ● Update
  5643.   #--------------------------------------------------------------------------  
  5644.   def update_index
  5645.       return if @index_max <= 0
  5646.       if Input.trigger?(:RIGHT)
  5647.          add_index(1)
  5648.       elsif Input.trigger?(:LEFT)   
  5649.          add_index(-1)
  5650.       end  
  5651.   end
  5652.  
  5653.   #--------------------------------------------------------------------------
  5654.   # ● Add Index
  5655.   #--------------------------------------------------------------------------   
  5656.   def add_index(value)
  5657.       Sound.play_cursor
  5658.       @index += value
  5659.       @index = 0 if @index > @index_max
  5660.       @index = @index_max if @index < 0
  5661.   end
  5662.  
  5663.   #--------------------------------------------------------------------------
  5664.   # ● Skill Window
  5665.   #--------------------------------------------------------------------------
  5666.   def skill_window=(skill_window)
  5667.       @skill_window = skill_window
  5668.       update
  5669.   end  
  5670.  
  5671.   #--------------------------------------------------------------------------
  5672.   # ● Select Last
  5673.   #--------------------------------------------------------------------------
  5674.   def select_last
  5675.       skill = @actor.last_skill.object
  5676.       if skill
  5677.          select_ext(skill.stype_id)
  5678.       else
  5679.          select(0)
  5680.       end
  5681.   end
  5682.  
  5683. end
  5684.  
  5685. #==============================================================================
  5686. # ■ Window_SkillList
  5687. #==============================================================================
  5688. class Window_SkillList_Menu < Window_Selectable
  5689.  
  5690.   attr_accessor :windows_index
  5691.  
  5692.   #--------------------------------------------------------------------------
  5693.   # ● Initialize
  5694.   #--------------------------------------------------------------------------
  5695.   def initialize(x, y, width, height)
  5696.       super
  5697.       @stype_id = 0
  5698.       @data = []
  5699.       @windows_index = 0
  5700.       self.opacity = 0
  5701.       @actor = nil
  5702.   end
  5703.  
  5704.   #--------------------------------------------------------------------------
  5705.   # ● Actor
  5706.   #--------------------------------------------------------------------------
  5707.   def actor=(actor)
  5708.       return if @actor == actor
  5709.       @actor = actor
  5710.       self.oy = 0
  5711.   end
  5712.  
  5713.   #--------------------------------------------------------------------------
  5714.   # ● Setup
  5715.   #--------------------------------------------------------------------------  
  5716.   def setup(actor,skill_type,index)
  5717.       @actor = actor
  5718.       @stype_id = skill_type
  5719.       @windows_index = index
  5720.       refresh
  5721.   end
  5722.  
  5723.   #--------------------------------------------------------------------------
  5724.   # ● Stype ID
  5725.   #--------------------------------------------------------------------------
  5726.   def stype_id=(stype_id)
  5727.   end
  5728.  
  5729.   #--------------------------------------------------------------------------
  5730.   # ● Col Max
  5731.   #--------------------------------------------------------------------------
  5732.   def col_max
  5733.       return 1
  5734.   end
  5735.  
  5736.   #--------------------------------------------------------------------------
  5737.   # ● Item Max
  5738.   #--------------------------------------------------------------------------
  5739.   def item_max
  5740.       @data ? @data.size : 1
  5741.   end
  5742.  
  5743.   #--------------------------------------------------------------------------
  5744.   # ● Item
  5745.   #--------------------------------------------------------------------------
  5746.   def item
  5747.       @data && index >= 0 ? @data[index] : nil
  5748.   end
  5749.  
  5750.   #--------------------------------------------------------------------------
  5751.   # ● Current Item Enabled
  5752.   #--------------------------------------------------------------------------
  5753.   def current_item_enabled?
  5754.       enable?(@data[index])
  5755.   end
  5756.  
  5757.   #--------------------------------------------------------------------------
  5758.   # ● Include
  5759.   #--------------------------------------------------------------------------
  5760.   def include?(item)
  5761.       item && item.stype_id == @stype_id
  5762.   end
  5763.  
  5764.   #--------------------------------------------------------------------------
  5765.   # ● Enable
  5766.   #--------------------------------------------------------------------------
  5767.   def enable?(item)
  5768.       @actor && @actor.usable?(item)
  5769.   end
  5770.  
  5771.   #--------------------------------------------------------------------------
  5772.   # ● Male Item List
  5773.   #--------------------------------------------------------------------------
  5774.   def make_item_list
  5775.       @data = @actor ? @actor.skills.select {|skill| include?(skill) } : []
  5776.   end
  5777.  
  5778.   #--------------------------------------------------------------------------
  5779.   # ● Select Last
  5780.   #--------------------------------------------------------------------------
  5781.   def select_last
  5782.       select(@data.index(@actor.last_skill.object) || 0)
  5783.   end
  5784.  
  5785.   #--------------------------------------------------------------------------
  5786.   # ● Draw Item
  5787.   #--------------------------------------------------------------------------
  5788.   def draw_item(index)
  5789.       self.contents.font.size = 18
  5790.       self.contents.font.bold = true
  5791.       skill = @data[index]
  5792.       if skill
  5793.          rect = item_rect(index)
  5794.          rect.width -= 4
  5795.          draw_item_name(skill, rect.x, rect.y, enable?(skill),110)
  5796.          draw_skill_cost(rect, skill)
  5797.       end
  5798.   end
  5799.  
  5800.   #--------------------------------------------------------------------------
  5801.   # ● Draw Skill Cost
  5802.   #--------------------------------------------------------------------------
  5803.   def draw_skill_cost(rect, skill)
  5804.       if @actor.skill_tp_cost(skill) > 0
  5805.          change_color(tp_cost_color, enable?(skill))
  5806.          draw_text(rect, @actor.skill_tp_cost(skill), 2)
  5807.       elsif @actor.skill_mp_cost(skill) > 0
  5808.          change_color(mp_cost_color, enable?(skill))
  5809.          draw_text(rect, @actor.skill_mp_cost(skill), 2)
  5810.       end
  5811.   end
  5812.  
  5813.   #--------------------------------------------------------------------------
  5814.   # ● Update Help
  5815.   #--------------------------------------------------------------------------
  5816.   def update_help
  5817.       @help_window.set_item(item)
  5818.   end
  5819.  
  5820.   #--------------------------------------------------------------------------
  5821.   # ● Refresh
  5822.   #--------------------------------------------------------------------------
  5823.   def refresh
  5824.       make_item_list
  5825.       create_contents
  5826.       draw_all_items
  5827.   end
  5828.  
  5829. end
  5830.  
  5831. #==============================================================================
  5832. # ■ Scene Skill
  5833. #==============================================================================
  5834. class Scene_Skill
  5835.  
  5836.   #--------------------------------------------------------------------------
  5837.   # ● Create Sprites
  5838.   #--------------------------------------------------------------------------         
  5839.   def create_sprites
  5840.       create_menu_background
  5841.       create_layout
  5842.       create_particles
  5843.       create_actor_status
  5844.       create_help_window
  5845.       create_command_window
  5846.       create_type_layout
  5847.       create_item_window
  5848.       create_list_layout
  5849.       create_actor_window
  5850.       create_type_name
  5851.       @command_window.active = true        
  5852.   end
  5853.  
  5854.   #--------------------------------------------------------------------------
  5855.   # ● Create Menu Background
  5856.   #--------------------------------------------------------------------------            
  5857.   def create_menu_background
  5858.       @background = Plane.new
  5859.       @background.bitmap = $game_temp.pre_cache_skill_menu[0]
  5860.       @background.z = 0
  5861.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  5862.   end  
  5863.  
  5864.   #--------------------------------------------------------------------------
  5865.   # ● Create Layout
  5866.   #--------------------------------------------------------------------------              
  5867.   def create_layout
  5868.       @layout = Sprite.new
  5869.       @layout.bitmap = $game_temp.pre_cache_skill_menu[1]
  5870.       @layout.z = 3
  5871.   end
  5872.  
  5873.   #--------------------------------------------------------------------------
  5874.   # ● Create Particles
  5875.   #--------------------------------------------------------------------------  
  5876.   def create_particles
  5877.       @particles_sprite =[]
  5878.       for i in 0...NUMBER_OF_PARTICLES
  5879.           @particles_sprite.push(Particles_Menu.new(nil))
  5880.       end
  5881.   end
  5882.  
  5883.   #--------------------------------------------------------------------------
  5884.   # ● Create Actor Status
  5885.   #--------------------------------------------------------------------------   
  5886.   def create_actor_status
  5887.       @actor_skill_status = Actor_Skill_Status.new(@actor)
  5888.   end  
  5889.  
  5890.   #--------------------------------------------------------------------------
  5891.   # ● Create Help Window
  5892.   #--------------------------------------------------------------------------              
  5893.   def create_help_window
  5894.       @help_window = Window_Help.new
  5895.       @help_window.x = 0
  5896.       @help_window.y = Graphics.height - @help_window.height
  5897.       @help_window.opacity = 0
  5898.   end   
  5899.  
  5900.   #--------------------------------------------------------------------------
  5901.   # ● Create Command Window
  5902.   #--------------------------------------------------------------------------
  5903.   def create_command_window
  5904.       @command_window = Window_SkillCommand_2.new(0, 84)
  5905.       @command_window.help_window = @help_window
  5906.       @command_window.actor = @actor
  5907.       @command_window.set_handler(:skill,    method(:command_skill))
  5908.       @command_window.set_handler(:pagedown, method(:next_actor))
  5909.       @command_window.set_handler(:pageup,   method(:prev_actor))
  5910.       @command_window.active = false
  5911.       @command_window.opacity = 0
  5912.       @command_window.index = 0
  5913.       @command_window.visible = @scene_active
  5914.       @skill_list_slide_range = [@command_window.x, -(@command_window.x + @command_window.width)]
  5915.       @command_window.x = @skill_list_slide_range[1] - 80
  5916.       @command_window.opacity = 0
  5917.   end  
  5918.  
  5919.   #--------------------------------------------------------------------------
  5920.   # ● Create Type Layout
  5921.   #--------------------------------------------------------------------------
  5922.   def create_type_layout
  5923.       @type_layout = Sprite.new
  5924.       @type_layout.bitmap = $game_temp.pre_cache_skill_menu[2]
  5925.       @type_layout.z = @command_window.z - 1
  5926.       @type_layout.x = @command_window.x
  5927.       @type_layout.y = @command_window.y - 30
  5928.       @type_layout.opacity = 0      
  5929.   end  
  5930.  
  5931.   #--------------------------------------------------------------------------
  5932.   # ● Create Item Window
  5933.   #--------------------------------------------------------------------------
  5934.   def create_item_window
  5935.       @skill_window = []
  5936.       index = 0
  5937.       window_max = @actor.added_skill_types.size
  5938.       window_max = 1 if window_max == 0
  5939.       for item in 0...window_max
  5940.           @skill_window.push(Window_SkillList_Menu.new(170,75,200,270))
  5941.           @skill_window[index].setup(@actor,@actor.added_skill_types[index],index)
  5942.           @skill_window[index].help_window = @help_window
  5943.           @skill_window[index].set_handler(:ok,     method(:on_item_ok))
  5944.           @skill_window[index].set_handler(:cancel, method(:on_item_cancel))
  5945.           @skill_window[index].active = false
  5946.           @skill_window[index].index = -1
  5947.           @skill_window[index].opacity = 0
  5948.           @skill_window[index].contents_opacity = 0
  5949.           @item_slide_range = [@skill_window[index].x, @skill_window[index].x + 50]
  5950.           @skill_window[index].x = @item_slide_range[1]
  5951.           index += 1
  5952.       end  
  5953.       @item_pre_index = @skill_window[@command_window.index].index
  5954.       @old_command_index = @skill_window[@command_window.index].index
  5955.   end  
  5956.  
  5957.   #--------------------------------------------------------------------------
  5958.   # ● Create List Layout
  5959.   #--------------------------------------------------------------------------  
  5960.   def create_list_layout
  5961.       @list_layout = Sprite.new
  5962.       @list_layout.bitmap = $game_temp.pre_cache_skill_menu[3]
  5963.       @list_layout.z = @skill_window[@command_window.index].z - 1
  5964.       @list_layout.x = @item_slide_range[0] - 4
  5965.       @list_layout.y = @skill_window[@command_window.index].y
  5966.       @list_layout.opacity = 0
  5967.       @list_layout_slide_range = [@list_layout.x,@list_layout.x + 50]
  5968.       @list_layout.x = @list_layout_slide_range[1]
  5969.   end
  5970.  
  5971.   #--------------------------------------------------------------------------
  5972.   # ● Create Actor Window
  5973.   #--------------------------------------------------------------------------
  5974.   def create_actor_window
  5975.       @actor_window = Members_Windows_Status.new
  5976.       @actor_window.set_handler(:ok,     method(:on_actor_ok))
  5977.       @actor_window.set_handler(:cancel, method(:on_actor_cancel))
  5978.       @actor_window.opacity = 0
  5979.       @actor_window.x = -10
  5980.       @actor_window.y = 36
  5981.       @actor_window_slide_range = [@actor_window.x, [email]-@actor_window.width[/email]]
  5982.       @actor_window.x = @actor_window_slide_range[1]
  5983.       @actor_window.visible = true
  5984.       @actor_window_index_old = @actor_window.index
  5985.       create_members_window
  5986.       update_active
  5987.   end
  5988.  
  5989.   #--------------------------------------------------------------------------
  5990.   # ● Create Members Window
  5991.   #--------------------------------------------------------------------------  
  5992.   def create_members_window
  5993.       @actor_status = Actor_Menu_Status.new(@actor)
  5994.       index = 0
  5995.       @members_status = []      
  5996.       for actor in $game_party.members
  5997.           @members_status.push(Members_Menu.new(actor,index))
  5998.           index += 1
  5999.       end   
  6000.   end  
  6001.  
  6002.   #--------------------------------------------------------------------------
  6003.   # ● Create Type Name
  6004.   #--------------------------------------------------------------------------  
  6005.   def create_type_name
  6006.       @type_name = Sprite.new
  6007.       @type_name.x = 260
  6008.       @type_name.y = 60
  6009.       @type_name.z = @list_layout.z + 2
  6010.       @type_name.bitmap = Bitmap.new(100,32)
  6011.       @type_name.bitmap.font.name = "Georgia"
  6012.       @type_name.bitmap.font.size = 18
  6013.       @type_name.bitmap.font.bold = true
  6014.       @type_name.opacity = 0
  6015.       refresh_type_name
  6016.   end
  6017.  
  6018.   #--------------------------------------------------------------------------
  6019.   # ● Refresh Type Name
  6020.   #--------------------------------------------------------------------------   
  6021.   def refresh_type_name
  6022.      @type_name.bitmap.clear
  6023.      return if !@scene_active
  6024.      stype_id = @actor.added_skill_types[@command_window.index]
  6025.      type_name = $data_system.skill_types[stype_id]
  6026.      @type_name.bitmap.draw_text(0,0,100,32,type_name,2)
  6027.   end
  6028.  
  6029. end
  6030.  
  6031. #==============================================================================
  6032. # ■ Scene_Skill
  6033. #==============================================================================
  6034. class Scene_Skill
  6035.  
  6036.   #--------------------------------------------------------------------------
  6037.   # ● Execute Dispose
  6038.   #--------------------------------------------------------------------------        
  6039.   def execute_dispose
  6040.       Graphics.freeze
  6041.       dispose_background
  6042.       dispose_layout
  6043.       dispose_list_layout
  6044.       dispose_particles
  6045.       dispose_windows
  6046.       dispose_members_status
  6047.       dispose_type_name
  6048.   end
  6049.  
  6050.   #--------------------------------------------------------------------------
  6051.   # ● Dispose Background
  6052.   #--------------------------------------------------------------------------  
  6053.   def dispose_background
  6054.       return if @background == nil
  6055.       @background.dispose
  6056.       @background = nil
  6057.   end
  6058.  
  6059.  
  6060.   #--------------------------------------------------------------------------
  6061.   # ● Dispose Layout
  6062.   #--------------------------------------------------------------------------               
  6063.   def dispose_layout
  6064.       return if @layout == nil
  6065.       @layout.dispose
  6066.       @layout = nil
  6067.   end  
  6068.  
  6069. #--------------------------------------------------------------------------
  6070. # ● Dispose Particles
  6071. #--------------------------------------------------------------------------   
  6072. def dispose_particles
  6073.      return if @particles_sprite == nil
  6074.      @particles_sprite.each {|sprite| sprite.dispose }
  6075. end   
  6076.  
  6077. #--------------------------------------------------------------------------
  6078. # ● Dispose Window
  6079. #--------------------------------------------------------------------------     
  6080. def dispose_windows
  6081.      return if @command_window == nil
  6082.      @skill_window.each {|sprite| sprite.dispose }
  6083.      @command_window.dispose
  6084.      @actor_window.dispose
  6085.      @help_window.dispose
  6086. end
  6087.  
  6088. #--------------------------------------------------------------------------
  6089. # ● Dispose List Layout
  6090. #--------------------------------------------------------------------------      
  6091. def dispose_list_layout
  6092.      return if @list_layout == nil
  6093.      @list_layout.dispose
  6094.      @type_layout.dispose
  6095.      @list_layout = nil
  6096. end
  6097.  
  6098.   #--------------------------------------------------------------------------
  6099.   # ● Dispose Members Status
  6100.   #--------------------------------------------------------------------------            
  6101.   def dispose_members_status
  6102.       return if @members_status == nil
  6103.       @actor_status.dispose
  6104.       @actor_skill_status.dispose
  6105.       @members_status.each {|sprite| sprite.dispose }
  6106.   end   
  6107.  
  6108.   #--------------------------------------------------------------------------
  6109.   # ● Dispose Type Name
  6110.   #--------------------------------------------------------------------------   
  6111.   def dispose_type_name
  6112.       @type_name.bitmap.dispose
  6113.       @type_name.dispose
  6114.   end  
  6115.  
  6116. end
  6117.  
  6118. #==============================================================================
  6119. # ■ Scene Skill
  6120. #==============================================================================
  6121. class Scene_Skill
  6122.  
  6123.   #--------------------------------------------------------------------------
  6124.   # ● Update Sprites
  6125.   #--------------------------------------------------------------------------         
  6126.   def update_sprites   
  6127.       update_background
  6128.       update_particles     
  6129.       update_actor_status
  6130.       update_slide_item
  6131.       update_members_status
  6132.       update_windows
  6133.   end
  6134.  
  6135.   #--------------------------------------------------------------------------
  6136.   # ● Update Background
  6137.   #--------------------------------------------------------------------------              
  6138.   def update_background
  6139.       return if @background == nil
  6140.       @background.ox += @background_scroll[0]
  6141.       @background.oy += @background_scroll[1]
  6142.   end   
  6143.  
  6144.   #--------------------------------------------------------------------------
  6145.   # ● Update Particles
  6146.   #--------------------------------------------------------------------------  
  6147.   def update_particles
  6148.       return if @particles_sprite == nil
  6149.       @particles_sprite.each {|sprite| sprite.update }
  6150.   end
  6151.  
  6152.   #--------------------------------------------------------------------------
  6153.   # ● Update Windows
  6154.   #--------------------------------------------------------------------------   
  6155.   def update_windows
  6156.       @press_lag -= 1 if @press_lag > 0
  6157.       return if @command_window == nil
  6158.       for skw in @skill_window
  6159.           if skw.windows_index == @command_window.index
  6160.              skw.update unless @press_lag > 0
  6161.              if @phase == 0
  6162.                 skw.index = 0 if skw.index < 0 or skw.index >= skw.item_max
  6163.              end   
  6164.              skw.visible = true
  6165.           else   
  6166.              skw.visible = false
  6167.           end  
  6168.       end
  6169.       #@skill_window[@command_window.index].update
  6170.       @command_window.update   
  6171.       @actor_window.update
  6172.       update_actor_window_slide
  6173.       update_skill_list_slide
  6174.   end
  6175.  
  6176.   #--------------------------------------------------------------------------
  6177.   # ● Update Skill List Slide
  6178.   #--------------------------------------------------------------------------      
  6179.   def update_skill_list_slide
  6180.       return if @phase == 999
  6181.       if @actor_window.active or !@command_window.active
  6182.          if @command_window.x > @skill_list_slide_range[1]
  6183.             @command_window.x -= 15
  6184.             @command_window.x = @skill_list_slide_range[1] if @command_window.x < @skill_list_slide_range[1]
  6185.          end  
  6186.       else
  6187.          if @command_window.x < @skill_list_slide_range[0]
  6188.             @command_window.x += 15
  6189.             @command_window.x = @skill_list_slide_range[0] if @command_window.x > @skill_list_slide_range[0]
  6190.          end         
  6191.       end  
  6192.       @type_layout.x = @command_window.x
  6193.   end
  6194.  
  6195.   #--------------------------------------------------------------------------
  6196.   # ● Update Actor Window Slide
  6197.   #--------------------------------------------------------------------------  
  6198.   def update_actor_window_slide
  6199.       if @actor_window.active
  6200.          if @actor_window.x < @actor_window_slide_range[0]
  6201.             @actor_window.x += 15
  6202.             @actor_window.contents_opacity += 23
  6203.             if @actor_window.x >= @actor_window_slide_range[0]
  6204.                @actor_window.x = @actor_window_slide_range[0]
  6205.                @actor_window.contents_opacity = 255
  6206.             end  
  6207.          end  
  6208.       else         
  6209.          if @actor_window.x >= @actor_window_slide_range[1]
  6210.             @actor_window.x -= 15
  6211.             @actor_window.contents_opacity -= 3
  6212.             if @actor_window.x <= @actor_window_slide_range[1]
  6213.                @actor_window.x = @actor_window_slide_range[1]
  6214.                @actor_window.contents_opacity = 0
  6215.             end         
  6216.          end
  6217.       end
  6218.   end   
  6219.  
  6220.   #--------------------------------------------------------------------------
  6221.   # ● Update Actor Status
  6222.   #--------------------------------------------------------------------------               
  6223.   def update_actor_status
  6224.       refresh_actor_status(true) if @actor_window_index_old != @actor_window.index
  6225.   end  
  6226.  
  6227.   #--------------------------------------------------------------------------
  6228.   # ● Refresh Actor Status
  6229.   #--------------------------------------------------------------------------               
  6230.   def refresh_actor_status(reset = false)
  6231. #      @actor = $game_party.members[@actor_window.index]
  6232. #      @actor_window_index_old = @actor_window.index
  6233.   end  
  6234.  
  6235.   #--------------------------------------------------------------------------
  6236.   # ● Update Slide Item
  6237.   #--------------------------------------------------------------------------  
  6238.   def update_slide_item
  6239.       if @phase == 0
  6240.          @command_window.contents_opacity += 10
  6241.       else   
  6242.          @command_window.contents_opacity -= 10 if @command_window.contents_opacity > 160
  6243.       end  
  6244.       @type_layout.opacity = @command_window.contents_opacity
  6245.       @type_name.opacity = @skill_window[@command_window.index].contents_opacity
  6246.       if @phase == 1
  6247.          @skill_window[@command_window.index].contents_opacity += 5
  6248.          @list_layout.opacity += 5
  6249.       else   
  6250.          @skill_window[@command_window.index].contents_opacity -= 10 if @skill_window[@command_window.index].contents_opacity > 165
  6251.          @list_layout.opacity -= 10 if @list_layout.opacity > 160
  6252.       end  
  6253.       if @skill_window[@command_window.index].x > @item_slide_range[0]
  6254.          @skill_window[@command_window.index].x -= 3
  6255.          @list_layout.x -= 3
  6256.          if @skill_window[@command_window.index].x <= @item_slide_range[0]
  6257.             @skill_window[@command_window.index].x = @item_slide_range[0]
  6258.             @list_layout.x = @list_layout_slide_range[0]
  6259.          end  
  6260.       end  
  6261.   end   
  6262.  
  6263.   #--------------------------------------------------------------------------
  6264.   # ● Update Members Status
  6265.   #--------------------------------------------------------------------------            
  6266.   def update_members_status
  6267.       for members in @members_status
  6268.           members.update(@actor_window.active,@actor_window.index)
  6269.           @actor_2 = members.actor if members.current_actor
  6270.       end  
  6271.       @actor_2 = @actor if @actor_2 == nil
  6272.       @actor_skill_status.update
  6273.       @actor_status.update(@actor_window.active,@actor_2)
  6274.       #@members_status.each {|sprite| sprite.update(@actor_window.active,@actor_window.index) }
  6275.   end  
  6276.  
  6277. end
  6278.  
  6279. #==============================================================================
  6280. # ■ Scene_Skill
  6281. #==============================================================================
  6282. class Scene_Skill
  6283.  
  6284.   #--------------------------------------------------------------------------
  6285.   # ● Update
  6286.   #--------------------------------------------------------------------------      
  6287.   def update
  6288.       unless @skill_window[@command_window.index].index < 0
  6289.           @item_pre_index = @skill_window[@command_window.index].index
  6290.       end   
  6291.       update_command
  6292.       update_sprites
  6293.   end
  6294.  
  6295.   #--------------------------------------------------------------------------
  6296.   # ● Show Sub Window
  6297.   #--------------------------------------------------------------------------
  6298.   def show_sub_window(window)
  6299.       window.show.activate
  6300.   end
  6301.   #--------------------------------------------------------------------------
  6302.   # ● Hide Sub Window
  6303.   #--------------------------------------------------------------------------
  6304.   def hide_sub_window(window)
  6305.       window.hide.deactivate
  6306.       activate_item_window     
  6307.   end
  6308.  
  6309.   #--------------------------------------------------------------------------
  6310.   # ● Determine Item
  6311.   #--------------------------------------------------------------------------
  6312.   def determine_item
  6313.       if item.for_friend?         
  6314.          @phase = 2
  6315.          show_sub_window(@actor_window)
  6316.          @actor_window.select_for_item(item)   
  6317.          $game_temp.item_scope = @skill_window[@command_window.index].item.scope rescue nil
  6318.       else
  6319.          use_item
  6320.          activate_item_window
  6321.       end
  6322.   end  
  6323.  
  6324.   #--------------------------------------------------------------------------
  6325.   # ● ON Item OK
  6326.   #--------------------------------------------------------------------------
  6327.   def on_item_ok
  6328.       return if @press_time > 1
  6329.       @actor.last_skill.object = item
  6330.       determine_item
  6331.   end
  6332.  
  6333.   #--------------------------------------------------------------------------
  6334.   # ● Item
  6335.   #--------------------------------------------------------------------------
  6336.   def item
  6337.     @skill_window[@command_window.index].item
  6338.   end  
  6339.  
  6340.   #--------------------------------------------------------------------------
  6341.   # ● Use Item
  6342.   #--------------------------------------------------------------------------
  6343.   def use_item
  6344.       super
  6345.       @skill_window[@command_window.index].refresh if can_refresh_item_window?
  6346.   end  
  6347.  
  6348.   #--------------------------------------------------------------------------
  6349.   # ● Activate Item Window
  6350.   #--------------------------------------------------------------------------
  6351.   def activate_item_window   
  6352.     @skill_window[@command_window.index].refresh if can_refresh_item_window?
  6353.     @skill_window[@command_window.index].activate
  6354.   end  
  6355.  
  6356.   #--------------------------------------------------------------------------
  6357.   # ● On Item Cancel
  6358.   #--------------------------------------------------------------------------
  6359.   def on_item_cancel
  6360.       @skill_window[@command_window.index].unselect
  6361.       @command_window.activate
  6362.   end  
  6363.  
  6364.   #--------------------------------------------------------------------------
  6365.   # ● Can Refresh Item Window
  6366.   #--------------------------------------------------------------------------  
  6367.   def can_refresh_item_window?
  6368.       return true if @actor.mp < @skill_window[@command_window.index].item.mp_cost
  6369.       return true if @actor.tp < @skill_window[@command_window.index].item.tp_cost
  6370.       return false
  6371.   end
  6372.  
  6373. end
  6374.  
  6375. #==============================================================================
  6376. # ■ Scene_Item
  6377. #==============================================================================
  6378. class Scene_Skill
  6379.  
  6380.   #--------------------------------------------------------------------------
  6381.   # ● Update Command
  6382.   #--------------------------------------------------------------------------      
  6383.   def update_command
  6384.       @skill_window[@command_window.index].index = @item_pre_index        
  6385.       if @phase == 0
  6386.          update_main_command
  6387.       elsif @phase == 1
  6388.          update_item_window
  6389.       elsif @phase == 2        
  6390.          update_target_window
  6391.       end        
  6392.       update_active
  6393.   end
  6394.  
  6395.   #--------------------------------------------------------------------------
  6396.   # ● Command Skill
  6397.   #--------------------------------------------------------------------------
  6398.   def command_skill
  6399.       @skill_window[@command_window.index].activate
  6400.       @skill_window[@command_window.index].select_last
  6401.    # @item_window.activate
  6402.    # @item_window.select_last
  6403.   end  
  6404.  
  6405.   #--------------------------------------------------------------------------
  6406.   # ● Update Active
  6407.   #--------------------------------------------------------------------------      
  6408.   def update_active
  6409.       if @phase == 0
  6410.          @skill_window[@command_window.index].active = false
  6411.          @command_window.active = true
  6412.          @actor_window.active = false
  6413.       elsif @phase == 1
  6414.          @skill_window[@command_window.index].active = true
  6415.          @command_window.active = false
  6416.          @actor_window.active = false
  6417.       elsif @phase == 2
  6418.          @skill_window[@command_window.index].active = false
  6419.          @command_window.active = false
  6420.          @actor_window.active = true
  6421.       end
  6422.   end
  6423.  
  6424.   #--------------------------------------------------------------------------
  6425.   # ● Update Main Command
  6426.   #--------------------------------------------------------------------------        
  6427.   def update_main_command
  6428.       reset_item_index
  6429.       if Input.trigger?(:C) and @scene_active
  6430.          Sound.play_ok
  6431.          @phase = 1
  6432.          @press_time = 2
  6433.          @press_lag = 2
  6434.          @skill_window[@command_window.index].index = 0 if @skill_window[@command_window.index].index == -1
  6435.       elsif Input.trigger?(:B)
  6436.          return_scene
  6437.       end  
  6438.   end
  6439.  
  6440.   #--------------------------------------------------------------------------
  6441.   # ● Return Scene
  6442.   #--------------------------------------------------------------------------         
  6443.   def return_scene
  6444.       Sound.play_cancel
  6445.       SceneManager.return
  6446.     end
  6447.  
  6448.   #--------------------------------------------------------------------------
  6449.   # ● ON Actor Charge
  6450.   #--------------------------------------------------------------------------
  6451.   def on_actor_change
  6452.       @phase = 999
  6453.       $game_temp.actor_menu_temp = @actor
  6454.       SceneManager.goto(Scene_Skill)
  6455.   end
  6456.  
  6457.   #--------------------------------------------------------------------------
  6458.   # ● Reset Item Index
  6459.   #--------------------------------------------------------------------------            
  6460.   def reset_item_index
  6461.        return if @old_command_index == @command_window.index
  6462.        return if @command_window.index == -1
  6463.        @old_command_index = @command_window.index
  6464.        refresh_type_name
  6465.        reset_item_position
  6466.   end  
  6467.  
  6468.   #--------------------------------------------------------------------------
  6469.   # ● Reset Item Position
  6470.   #--------------------------------------------------------------------------              
  6471.   def reset_item_position
  6472.       @skill_window[@command_window.index].x = @item_slide_range[1]
  6473.       @skill_window[@command_window.index].contents_opacity = 160
  6474.       @list_layout.x = @list_layout_slide_range[1]
  6475.       @list_layout.opacity = 160
  6476.   end  
  6477.  
  6478. end
  6479.  
  6480. #==============================================================================
  6481. # ■ Scene_Skill
  6482. #==============================================================================
  6483. class Scene_Skill
  6484.  
  6485.   #--------------------------------------------------------------------------
  6486.   # ● Update Item Window
  6487.   #--------------------------------------------------------------------------               
  6488.   def update_item_window
  6489.       @press_time -= 1 if @press_time > 0
  6490.       update_item_command
  6491.       update_index_type
  6492.   end
  6493.  
  6494.   #--------------------------------------------------------------------------
  6495.   # ● Update Main Command
  6496.   #--------------------------------------------------------------------------        
  6497.   def update_item_command
  6498.       if Input.trigger?(:B)
  6499.          @phase = 0
  6500.          Sound.play_cancel
  6501.       end  
  6502.   end  
  6503.  
  6504.   #--------------------------------------------------------------------------
  6505.   # ● Update
  6506.   #--------------------------------------------------------------------------  
  6507.   def update_index_type
  6508.       return if @index_max <= 0
  6509.       return if @command_window == nil
  6510.       if Input.trigger?(:RIGHT)
  6511.          add_index(1)
  6512.       elsif Input.trigger?(:LEFT)   
  6513.          add_index(-1)
  6514.       end  
  6515.   end
  6516.  
  6517.   #--------------------------------------------------------------------------
  6518.   # ● Add Index
  6519.   #--------------------------------------------------------------------------   
  6520.   def add_index(value)
  6521.       Sound.play_cursor      
  6522.       @command_window.index += value
  6523.       @command_window.index = 0 if @command_window.index > @index_max
  6524.       @command_window.index = @index_max if @command_window.index < 0
  6525.       reset_item_index
  6526.   end   
  6527.  
  6528. end
  6529.  
  6530. #==============================================================================
  6531. # ■ Scene_Skill
  6532. #==============================================================================
  6533. class Scene_Skill
  6534.  
  6535.   #--------------------------------------------------------------------------
  6536.   # ● Update Item Window
  6537.   #--------------------------------------------------------------------------               
  6538.   def update_target_window
  6539.       update_target_command
  6540.   end
  6541.  
  6542.   #--------------------------------------------------------------------------
  6543.   # ● Update Main Command
  6544.   #--------------------------------------------------------------------------        
  6545.   def update_target_command
  6546.       if Input.trigger?(:B)
  6547.          @phase = 1
  6548.          @skill_window[@command_window.index].index = @item_pre_index
  6549.        end  
  6550.   end  
  6551.  
  6552. end
  6553.  
  6554. #==============================================================================
  6555. # ■ Window Base
  6556. #==============================================================================
  6557. class Window_Base < Window
  6558.  
  6559.   include MOG_MENU_EQUIP
  6560.  
  6561.   #--------------------------------------------------------------------------
  6562.   # ● Set Equip Font
  6563.   #--------------------------------------------------------------------------         
  6564.   def set_font_equip
  6565.       return if self.disposed?
  6566.       return if self.contents == nil
  6567.       self.contents.font.name = FONT_NAME
  6568.       self.contents.font.size = FONT_SIZE
  6569.       self.contents.font.bold = FONT_BOLD
  6570.       self.contents.font.italic = FONT_ITALIC
  6571.   end
  6572.  
  6573. end
  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.   #--------------------------------------------------------------------------
  6750.   # ● Initialize
  6751.   #--------------------------------------------------------------------------
  6752.   def initialize(x, y, width)
  6753.       super(x, y, width, window_height)
  6754.       @actor = nil   
  6755.       refresh
  6756.   end
  6757.  
  6758.   #--------------------------------------------------------------------------
  6759.   # ● Window Height
  6760.   #--------------------------------------------------------------------------
  6761.   def window_height
  6762.       fitting_height(visible_line_number)
  6763.   end
  6764.  
  6765.   #--------------------------------------------------------------------------
  6766.   # ● Visible Line Number
  6767.   #--------------------------------------------------------------------------
  6768.   def visible_line_number
  6769.       return 5
  6770.   end
  6771.  
  6772.   #--------------------------------------------------------------------------
  6773.   # ● Actor
  6774.   #--------------------------------------------------------------------------
  6775.   def actor=(actor)
  6776.       return if @actor == actor
  6777.       @actor = actor
  6778.       refresh
  6779.   end
  6780.  
  6781.   #--------------------------------------------------------------------------
  6782.   # ● Update
  6783.   #--------------------------------------------------------------------------
  6784.   def update
  6785.       super
  6786.       @item_window.slot_id = index if @item_window
  6787.   end
  6788.  
  6789.   #--------------------------------------------------------------------------
  6790.   # ● Item Max
  6791.   #--------------------------------------------------------------------------
  6792.   def item_max
  6793.       @actor ? @actor.equip_slots.size : 0
  6794.   end
  6795.  
  6796.   #--------------------------------------------------------------------------
  6797.   # ● Item
  6798.   #--------------------------------------------------------------------------
  6799.   def item
  6800.       @actor ? @actor.equips[index] : nil
  6801.   end
  6802.  
  6803.   #--------------------------------------------------------------------------
  6804.   # ● Draw Item
  6805.   #--------------------------------------------------------------------------
  6806.   def draw_item(index)
  6807.       return unless @actor
  6808.       rect = item_rect_for_text(index)
  6809.       change_color(system_color, enable?(index))
  6810.       set_font_equip
  6811.       draw_item_name(@actor.equips[index], rect.x + 92, rect.y, enable?(index))
  6812.   end
  6813.  
  6814.   #--------------------------------------------------------------------------
  6815.   # ● Slot Name
  6816.   #--------------------------------------------------------------------------
  6817.   def slot_name(index)
  6818.       @actor ? Vocab::etype(@actor.equip_slots[index]) : ""
  6819.   end
  6820.  
  6821.   #--------------------------------------------------------------------------
  6822.   # ● Enable
  6823.   #--------------------------------------------------------------------------
  6824.   def enable?(index)
  6825.       @actor ? @actor.equip_change_ok?(index) : false
  6826.   end
  6827.  
  6828.   #--------------------------------------------------------------------------
  6829.   # ● Current Item Enabled
  6830.   #--------------------------------------------------------------------------
  6831.   def current_item_enabled?
  6832.     enable?(index)
  6833.   end
  6834.  
  6835.   #--------------------------------------------------------------------------
  6836.   # ● Status  Window
  6837.   #--------------------------------------------------------------------------
  6838.   def status_window=(status_window)
  6839.       @status_window = status_window
  6840.       call_update_help
  6841.   end
  6842.  
  6843.   #--------------------------------------------------------------------------
  6844.   # ● Item Window
  6845.   #--------------------------------------------------------------------------
  6846.   def item_window=(item_window)
  6847.       @item_window = item_window
  6848.       update
  6849.   end
  6850.  
  6851.   #--------------------------------------------------------------------------
  6852.   # ● Update Help
  6853.   #--------------------------------------------------------------------------
  6854.   def update_help
  6855.       super
  6856.       @help_window.set_item(item) if @help_window
  6857.       $game_temp.temp_actor_equip = nil if @status_window
  6858.   end
  6859.  
  6860. end
  6861.  
  6862. #==============================================================================
  6863. # ■ Window_EquipItem
  6864. #==============================================================================
  6865. class Window_EquipItem_Menu < Window_ItemList
  6866.  
  6867.   attr_reader   :status_window   
  6868.   attr_accessor :windows_index
  6869.  
  6870.   #--------------------------------------------------------------------------
  6871.   # ● Initialize
  6872.   #--------------------------------------------------------------------------
  6873.   def initialize(x, y, width, height)
  6874.       super
  6875.       @actor = nil
  6876.       @slot_id = 0
  6877.       @windows_index = 0
  6878.       self.visible = false
  6879.       self.opacity = 0
  6880.   end
  6881.  
  6882.   #--------------------------------------------------------------------------
  6883.   # ● Col Max
  6884.   #--------------------------------------------------------------------------
  6885.   def col_max
  6886.       return 1
  6887.   end  
  6888.  
  6889.   #--------------------------------------------------------------------------
  6890.   # ● Actor
  6891.   #--------------------------------------------------------------------------
  6892.   def actor=(actor)
  6893.       return if @actor == actor
  6894.       @actor = actor
  6895.       self.oy = 0
  6896.   end
  6897.  
  6898.   #--------------------------------------------------------------------------
  6899.   # ● Setup
  6900.   #--------------------------------------------------------------------------  
  6901.   def setup(actor,equip_type,index)
  6902.       @actor = actor
  6903.       @slot_id = equip_type
  6904.       @windows_index = index      
  6905.       refresh
  6906.   end  
  6907.  
  6908.   #--------------------------------------------------------------------------
  6909.   # ● Slot ID
  6910.   #--------------------------------------------------------------------------
  6911.   def slot_id=(slot_id)
  6912.   end
  6913.  
  6914.   #--------------------------------------------------------------------------
  6915.   # ● Include?
  6916.   #--------------------------------------------------------------------------
  6917.   def include?(item)
  6918.       return true if item == nil
  6919.       return false unless item.is_a?(RPG::EquipItem)
  6920.       return false if @slot_id < 0
  6921.       return false if item.etype_id != @actor.equip_slots[@slot_id]
  6922.       return @actor.equippable?(item)
  6923.   end
  6924.  
  6925.   #--------------------------------------------------------------------------
  6926.   # ● Enable?
  6927.   #--------------------------------------------------------------------------
  6928.   def enable?(item)
  6929.       return true
  6930.   end
  6931.  
  6932.   #--------------------------------------------------------------------------
  6933.   # ● Select Last
  6934.   #--------------------------------------------------------------------------
  6935.   def select_last
  6936.   end
  6937.  
  6938.   #--------------------------------------------------------------------------
  6939.   # ● Status Window
  6940.   #--------------------------------------------------------------------------
  6941.   def status_window=(status_window)
  6942.       @status_window = status_window
  6943.       call_update_help
  6944.   end
  6945.  
  6946.   #--------------------------------------------------------------------------
  6947.   # ● Update Help
  6948.   #--------------------------------------------------------------------------
  6949.   def update_help
  6950.       super
  6951.       if @actor && @status_window
  6952.          temp_actor = Marshal.load(Marshal.dump(@actor))
  6953.          temp_actor.force_change_equip(@slot_id, item)
  6954.          $game_temp.temp_actor_equip = temp_actor
  6955.       end
  6956.   end
  6957.  
  6958.   #--------------------------------------------------------------------------
  6959.   # ● Draw Item
  6960.   #--------------------------------------------------------------------------
  6961.   def draw_item(index)
  6962.       item = @data[index]
  6963.       if item
  6964.           set_font_equip
  6965.           rect = item_rect(index)
  6966.           rect.width -= 4
  6967.           draw_item_name(item, rect.x, rect.y, enable?(item))
  6968.           draw_item_number(rect, item)
  6969.       end
  6970.   end      
  6971.  
  6972.   #--------------------------------------------------------------------------
  6973.   # ● Draw Item Number
  6974.   #--------------------------------------------------------------------------
  6975.   def draw_item_number(rect, item)
  6976.       draw_text(rect, sprintf(": %2d", $game_party.item_number(item)), 2)
  6977.   end  
  6978.  
  6979. end
  6980.  
  6981. module MOG_EQUIP_STATUS  
  6982.   LAYOUT_POSITION = [0,80]
  6983.   FACE_POSITION = [120,-45]
  6984.   PAR_POSITION = [5,32]
  6985.   NAME_POSITION = [15,-5]
  6986.   FONT_NAME = "Georgia"
  6987.   FONT_SIZE = 18
  6988.   FONT_BOLD = true
  6989. end
  6990.  
  6991.  
  6992. #==============================================================================
  6993. # ■ Actor Menu Status
  6994. #==============================================================================
  6995. class Actor_Equip_Status
  6996.  
  6997.   include MOG_EQUIP_STATUS  
  6998.  
  6999.   #--------------------------------------------------------------------------
  7000.   # ● Initialize
  7001.   #--------------------------------------------------------------------------
  7002.   def initialize(actor)
  7003.       @actor = actor
  7004.       @actor_old = @actor
  7005.       $game_temp.temp_actor_equip = nil
  7006.       @old_temp_actor = $game_temp.temp_actor_equip
  7007.       set_old_parameter
  7008.       create_sprites
  7009.   end
  7010.  
  7011.   #--------------------------------------------------------------------------
  7012.   # ● Create Sprites
  7013.   #--------------------------------------------------------------------------  
  7014.   def create_sprites
  7015.       @parameter_number = $game_temp.pre_cache_equip_menu[5]
  7016.       @parameter_cw = @parameter_number.width / 11
  7017.       @parameter_ch = @parameter_number.height / 3
  7018.       create_layout
  7019.       create_face
  7020.       create_parameter
  7021.       create_name
  7022.   end
  7023.  
  7024.   #--------------------------------------------------------------------------
  7025.   # ● Dispose
  7026.   #--------------------------------------------------------------------------  
  7027.   def dispose
  7028.       dispose_layout
  7029.       dispose_face
  7030.       dispose_parameter
  7031.       dispose_name
  7032.   end
  7033.  
  7034.   #--------------------------------------------------------------------------
  7035.   # ● Dispose Layout
  7036.   #--------------------------------------------------------------------------   
  7037.   def dispose_layout
  7038.       @layout.dispose
  7039.   end
  7040.  
  7041.   #--------------------------------------------------------------------------
  7042.   # ● Dispose Face
  7043.   #--------------------------------------------------------------------------   
  7044.   def dispose_face
  7045.       @face.dispose
  7046.   end  
  7047.  
  7048.   #--------------------------------------------------------------------------
  7049.   # ● Dispose Parameter
  7050.   #--------------------------------------------------------------------------      
  7051.   def dispose_parameter
  7052.       @parameter.bitmap.dispose
  7053.       @parameter.dispose
  7054.   end
  7055.  
  7056.   #--------------------------------------------------------------------------
  7057.   # ● Dispose Name
  7058.   #--------------------------------------------------------------------------        
  7059.   def dispose_name
  7060.       @name.bitmap.dispose
  7061.       @name.dispose
  7062.   end
  7063.  
  7064.   #--------------------------------------------------------------------------
  7065.   # ● Create Layout
  7066.   #--------------------------------------------------------------------------
  7067.   def create_layout
  7068.       @layout = Sprite.new
  7069.       @layout.bitmap = $game_temp.pre_cache_equip_menu[4]
  7070.       @org_pos = [LAYOUT_POSITION[0],LAYOUT_POSITION[1]]
  7071.       @layout.x = @org_pos[0] - 150
  7072.       @layout.y = @org_pos[1]
  7073.       @layout.z = 10
  7074.       @layout.opacity = 0
  7075.       @slide_range = (@org_pos[0] - 150)
  7076.   end
  7077.  
  7078.   #--------------------------------------------------------------------------
  7079.   # ● Create Parameter
  7080.   #--------------------------------------------------------------------------
  7081.   def create_parameter
  7082.       @parameter = Sprite.new
  7083.       @parameter.bitmap = Bitmap.new(@layout.bitmap.width,@layout.bitmap.height)
  7084.       @org_pos_par = [@org_pos[0] + PAR_POSITION[0],
  7085.                       @org_pos[1] + PAR_POSITION[1]]
  7086.       @parameter.x = @org_pos_par[0] - 150
  7087.       @parameter.y = @org_pos_par[1]
  7088.       @parameter.z = 11
  7089.       @parameter.opacity = 0
  7090.       refresh_parameter
  7091.   end
  7092.  
  7093.   #--------------------------------------------------------------------------
  7094.   # ● Create Face
  7095.   #--------------------------------------------------------------------------  
  7096.   def create_face
  7097.       @face = Sprite.new
  7098.       @org_pos_face = [@org_pos[0] + FACE_POSITION[0],
  7099.                        @org_pos[1] + FACE_POSITION[1]]
  7100.       @face.x = @org_pos_face[0] - 150
  7101.       @face.y = @org_pos_face[1]
  7102.       @face.z = 11
  7103.       @face.opacity = 0
  7104.       refresh_face
  7105.   end
  7106.  
  7107.   #--------------------------------------------------------------------------
  7108.   # ● Create Name
  7109.   #--------------------------------------------------------------------------   
  7110.   def create_name
  7111.       @name = Sprite.new
  7112.       @name.bitmap = Bitmap.new(140,32)
  7113.       @name.bitmap.font.name = FONT_NAME
  7114.       @name.bitmap.font.size = FONT_SIZE
  7115.       @name.bitmap.font.bold = FONT_BOLD
  7116.       @org_pos_name = [@org_pos[0] + NAME_POSITION[0],
  7117.                        @org_pos[1] + NAME_POSITION[1]]
  7118.       @name.x = @org_pos_name[0] - 150
  7119.       @name.y = @org_pos_name[1]
  7120.       @name.z = 11
  7121.       @name.opacity = 0
  7122.       refresh_name     
  7123.   end  
  7124.  
  7125.   #--------------------------------------------------------------------------
  7126.   # ● Set Old Parameter
  7127.   #--------------------------------------------------------------------------  
  7128.   def set_old_parameter
  7129.       @par = [] if @par == nil
  7130.       @par.clear
  7131.       @par = [
  7132.       @actor.param(0),@actor.param(1),@actor.param(2),@actor.param(3),
  7133.       @actor.param(4),@actor.param(5),@actor.param(6),@actor.param(7),
  7134.       @old_temp_actor
  7135.       ]
  7136.   end   
  7137.  
  7138.   #--------------------------------------------------------------------------
  7139.   # ● Can Refresh Parameter
  7140.   #--------------------------------------------------------------------------
  7141.   def can_refresh_parameter?
  7142.       return true if @par[0] != @actor.param(0)
  7143.       return true if @par[1] != @actor.param(1)
  7144.       return true if @par[2] != @actor.param(2)
  7145.       return true if @par[3] != @actor.param(3)
  7146.       return true if @par[4] != @actor.param(4)
  7147.       return true if @par[5] != @actor.param(5)
  7148.       return true if @par[6] != @actor.param(6)
  7149.       return true if @par[7] != @actor.param(7)
  7150.       return true if @old_temp_actor != $game_temp.temp_actor_equip
  7151.       return false
  7152.   end  
  7153.  
  7154.   #--------------------------------------------------------------------------
  7155.   # ● Refresh Name
  7156.   #--------------------------------------------------------------------------      
  7157.   def refresh_name   
  7158.       @name.bitmap.clear
  7159.       @name.bitmap.draw_text(0,0,140,32,@actor.name.to_s,0)
  7160.   end
  7161.  
  7162.   #--------------------------------------------------------------------------
  7163.   # ● Create Face
  7164.   #--------------------------------------------------------------------------   
  7165.   def refresh_parameter
  7166.       set_old_parameter
  7167.       @parameter.bitmap.clear
  7168.       @old_temp_actor = $game_temp.temp_actor_equip
  7169.       x = 180      
  7170.       for p in 0...8
  7171.           y = 24 * p
  7172.           refresh_number(@parameter,@parameter_number,p,@parameter_cw,@parameter_ch,x,y,0)
  7173.       end      
  7174.       if $game_temp.temp_actor_equip != nil
  7175.          x = 180 - (@parameter_cw * 7)
  7176.          for p in 0...8
  7177.              y = 24 * p
  7178.              refresh_number(@parameter,@parameter_number,p,@parameter_cw,@parameter_ch,x,y,1)
  7179.          end     
  7180.      end
  7181.   end
  7182.  
  7183.   #--------------------------------------------------------------------------
  7184.   # ● Refresh Number
  7185.   #--------------------------------------------------------------------------     
  7186.   def refresh_number(sprite,image,p,number_cw,number_ch,x,y,type)
  7187.       value = @actor.param(p)
  7188.       new_value = 0
  7189.       ch = 0
  7190.       if type == 1         
  7191.          if $game_temp.temp_actor_equip != nil
  7192.             new_value = $game_temp.temp_actor_equip.param(p)
  7193.          end         
  7194.          d_value = new_value - value
  7195.          if d_value < 0
  7196.             ch = 2
  7197.          elsif d_value > 0
  7198.             ch = 1
  7199.          else
  7200.             ch = 0
  7201.          end   
  7202.          value = new_value
  7203.       end
  7204.       draw_arrow(sprite,image,number_cw,number_ch,x,y,ch)
  7205.       draw_number(sprite,image,value,number_cw,number_ch,x,y,ch)
  7206.   end
  7207.  
  7208.   #--------------------------------------------------------------------------
  7209.   # ● Draw Arrow
  7210.   #--------------------------------------------------------------------------        
  7211.   def draw_arrow(sprite,image,number_cw,number_ch,x,y,ch)
  7212.       nsrc_rect = Rect.new(number_cw * 10, number_ch * ch , number_cw , number_ch)
  7213.       sprite.bitmap.blt(x + number_cw, y, image, nsrc_rect)     
  7214.   end
  7215.  
  7216.   #--------------------------------------------------------------------------
  7217.   # ● Draw Number
  7218.   #--------------------------------------------------------------------------      
  7219.   def draw_number(sprite,image,value,number_cw,number_ch,x,y,ch)
  7220.       number = value.truncate.abs.to_s.split(//)
  7221.       x2 = -number_cw * number.size
  7222.       for i in 0..number.size  - 1
  7223.           number_abs = number[i].to_i
  7224.           nsrc_rect = Rect.new(number_cw * number_abs, number_ch * ch , number_cw , number_ch)
  7225.           sprite.bitmap.blt(x + x2 + (number_cw  *  i), y, image, nsrc_rect)        
  7226.       end      
  7227.   end
  7228.  
  7229.   #--------------------------------------------------------------------------
  7230.   # ● Refresh Face
  7231.   #--------------------------------------------------------------------------  
  7232.   def refresh_face
  7233.       face_name = "Face" + @actor.id.to_s
  7234.       @face.bitmap = Cache.menu(face_name.to_s)
  7235.   end
  7236.  
  7237.   #--------------------------------------------------------------------------
  7238.   # ● Update Move
  7239.   #--------------------------------------------------------------------------  
  7240.   def update_move
  7241.       update_slide(0,@layout,@layout.x,@org_pos[0])
  7242.       update_slide(1,@layout,@layout.y,@org_pos[1])      
  7243.       update_slide(0,@parameter,@parameter.x,@org_pos_par[0])
  7244.       update_slide(1,@parameter,@parameter.y,@org_pos_par[1])
  7245.       update_slide(0,@face,@face.x,@org_pos_face[0])
  7246.       update_slide(1,@face,@face.y,@org_pos_face[1])
  7247.       update_slide(0,@name,@name.x,@org_pos_name[0])
  7248.       update_slide(1,@name,@name.y,@org_pos_name[1])
  7249.   end
  7250.  
  7251. #--------------------------------------------------------------------------
  7252. # ● Update Slide
  7253. #--------------------------------------------------------------------------                       
  7254.   def update_slide(type,sprite,cp,np)
  7255.       sprite.opacity += 5
  7256.       sp = 3 + ((cp - np).abs / 10)
  7257.       if cp > np
  7258.          cp -= sp
  7259.          cp = np if cp < np
  7260.       elsif cp < np
  7261.          cp += sp
  7262.          cp = np if cp > np
  7263.       end     
  7264.       sprite.x = cp if type == 0
  7265.       sprite.y = cp if type == 1
  7266.   end      
  7267.  
  7268.   #--------------------------------------------------------------------------
  7269.   # ● Refresh All
  7270.   #--------------------------------------------------------------------------  
  7271.   def refresh_all(actor)      
  7272.       @actor = actor
  7273.       refresh_parameter
  7274.       refresh_face
  7275.       refresh_name
  7276.   end   
  7277.  
  7278.   #--------------------------------------------------------------------------
  7279.   # ● Update
  7280.   #--------------------------------------------------------------------------
  7281.   def update(actor)
  7282.       update_move
  7283.       refresh_all(actor) if actor != @actor
  7284.       refresh_parameter if can_refresh_parameter?
  7285.   end      
  7286.  
  7287. end
  7288.  
  7289. #==============================================================================
  7290. # ■ Scene_Equip
  7291. #==============================================================================
  7292. class Scene_Equip
  7293.  
  7294.   #--------------------------------------------------------------------------
  7295.   # ● Create Sprites
  7296.   #--------------------------------------------------------------------------
  7297.   def create_sprites
  7298.       create_menu_background
  7299.       create_layout
  7300.       create_particles
  7301.       create_help_window
  7302.       create_status_window
  7303.       create_command_window
  7304.       create_slot_window
  7305.       create_item_window
  7306.       create_actor_status
  7307.       set_sprite_position
  7308.   end
  7309.  
  7310.   #--------------------------------------------------------------------------
  7311.   # ● Set Sprite Position
  7312.   #--------------------------------------------------------------------------  
  7313.   def set_sprite_position
  7314.       @status_window.opacity = 0
  7315.       @command_window.opacity = 0
  7316.       @slot_window.opacity = 0
  7317.       @help_window.opacity = 0
  7318.       @status_window.contents_opacity = 0
  7319.       @command_window.contents_opacity = 0
  7320.       @slot_window.contents_opacity = 0
  7321.       @help_window.contents_opacity = 0      
  7322.       @layout2.opacity = 0
  7323.       @layout3.opacity = 0
  7324.       @layout4.opacity = 0
  7325.       @org_pos_help = [@help_window.x,@help_window.y]
  7326.       @help_window.x = @org_pos_help[0]
  7327.       @help_window.y = @org_pos_help[1] + 150     
  7328.       @org_pos_com = [@command_window.x,@command_window.y]
  7329.       @command_window.x = @org_pos_com[0]
  7330.       @command_window.y = @org_pos_com[1] - 150
  7331.       @org_pos_slot = [@slot_window.x,@slot_window.y]
  7332.       @slot_window.x = @org_pos_slot[0] + 150
  7333.       @slot_window.y = @org_pos_slot[1]      
  7334.       @layout2.y = -150
  7335.       @layout3.x = 150
  7336.       @layout4.y = 150      
  7337.   end
  7338.  
  7339.   #--------------------------------------------------------------------------
  7340.   # ● Create Actor Status
  7341.   #--------------------------------------------------------------------------  
  7342.   def create_actor_status
  7343.       @actor_status = Actor_Equip_Status.new(@actor)
  7344.   end  
  7345.  
  7346.   #--------------------------------------------------------------------------
  7347.   # ● Create Menu Background
  7348.   #--------------------------------------------------------------------------            
  7349.   def create_menu_background
  7350.       @background = Plane.new
  7351.       @background.bitmap = $game_temp.pre_cache_equip_menu[0]
  7352.       @background.z = 0
  7353.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  7354.   end   
  7355.  
  7356.   #--------------------------------------------------------------------------
  7357.   # ● Create Layout
  7358.   #--------------------------------------------------------------------------              
  7359.   def create_layout     
  7360.       @layout2 = Sprite.new
  7361.       @layout2.bitmap = $game_temp.pre_cache_equip_menu[1]
  7362.       @layout2.z = 3
  7363.       @layout3 = Sprite.new
  7364.       @layout3.bitmap = $game_temp.pre_cache_equip_menu[2]
  7365.       @layout3.z = 3
  7366.       @layout4 = Sprite.new
  7367.       @layout4.bitmap = $game_temp.pre_cache_equip_menu[3]
  7368.       @layout4.z = 3
  7369.   end  
  7370.  
  7371.   #--------------------------------------------------------------------------
  7372.   # ● Create Particles
  7373.   #--------------------------------------------------------------------------  
  7374.   def create_particles
  7375.       @particles_sprite =[]
  7376.       for i in 0...NUMBER_OF_PARTICLES
  7377.           @particles_sprite.push(Particles_Menu.new(nil))
  7378.       end
  7379.   end   
  7380.  
  7381.   #--------------------------------------------------------------------------
  7382.   # ● Create Help Window
  7383.   #--------------------------------------------------------------------------              
  7384.   def create_help_window
  7385.       @help_window = Window_Help.new
  7386.       @help_window.x = 0
  7387.       @help_window.y = Graphics.height - @help_window.height
  7388.       @help_window.set_font_equip
  7389.   end     
  7390.  
  7391.   #--------------------------------------------------------------------------
  7392.   # ● Create Status Window
  7393.   #--------------------------------------------------------------------------
  7394.   def create_status_window
  7395.       @status_window = Window_EquipStatus.new(0, @help_window.height)
  7396.       @status_window.viewport = @viewport
  7397.       @status_window.actor = @actor
  7398.       @status_window.y = 48
  7399.   end
  7400.  
  7401.   #--------------------------------------------------------------------------
  7402.   # ● Create Command Window
  7403.   #--------------------------------------------------------------------------
  7404.   def create_command_window
  7405.       @command_window = Window_EquipCommand.new(208, 0, 336)
  7406.       @command_window.help_window = @help_window
  7407.       @command_window.set_handler(:equip,    method(:command_equip))
  7408.       @command_window.set_handler(:optimize, method(:command_optimize))
  7409.       @command_window.set_handler(:clear,    method(:command_clear))
  7410.       @command_window.set_handler(:cancel,   method(:return_scene))
  7411.       @command_window.set_handler(:pagedown, method(:next_actor))
  7412.       @command_window.set_handler(:pageup,   method(:prev_actor))
  7413.   end
  7414.  
  7415.   #--------------------------------------------------------------------------
  7416.   # ● Create Slot Window
  7417.   #--------------------------------------------------------------------------
  7418.   def create_slot_window
  7419.       wx = @status_window.width
  7420.       wy = @command_window.y + @command_window.height + 5
  7421.       ww = Graphics.width - @status_window.width
  7422.       @slot_window = Window_EquipSlot.new(wx, wy, ww)
  7423.       @slot_window.help_window = @help_window
  7424.       @slot_window.status_window = @status_window
  7425.       @slot_window.actor = @actor
  7426.       @slot_window.set_handler(:ok,       method(:on_slot_ok))
  7427.       @slot_window.set_handler(:cancel,   method(:on_slot_cancel))
  7428.       @slot_window.set_handler(:pagedown, method(:next_actor))
  7429.       @slot_window.set_handler(:pageup,   method(:prev_actor))  
  7430.   end
  7431.  
  7432.   #--------------------------------------------------------------------------
  7433.   # ● Create Item Window
  7434.   #--------------------------------------------------------------------------
  7435.   def create_item_window
  7436.       @equip_window = []
  7437.       index = 0
  7438.       window_max = 5
  7439.       for item in 0...window_max     
  7440.           wx = @slot_window.x
  7441.           wy = @slot_window.y + @slot_window.height + 5
  7442.           ww = @slot_window.width
  7443.           wh = @slot_window.height
  7444.           @equip_window.push(Window_EquipItem_Menu.new(wx, wy, ww, wh))
  7445.           @equip_window[item].setup(@actor,item, index)
  7446.           @equip_window[item].visible = false
  7447.           @equip_window[item].help_window = @help_window
  7448.           @equip_window[item].status_window = @status_window
  7449.           @equip_window[item].actor = @actor
  7450.           @equip_window[item].set_handler(:ok,     method(:on_item_ok))
  7451.           @equip_window[item].set_handler(:cancel, method(:on_item_cancel))
  7452.           @equip_window[item].opacity = 0
  7453.           @org_pos_equip = [@equip_window[item].x,@equip_window[item].y]
  7454.           index += 1
  7455.        end     
  7456.  
  7457.    end
  7458.  
  7459. end
  7460.  
  7461. #==============================================================================
  7462. # ■ Scene_Equip
  7463. #==============================================================================
  7464. class Scene_Equip
  7465.  
  7466.   #--------------------------------------------------------------------------
  7467.   # ● Execute Dispose
  7468.   #--------------------------------------------------------------------------        
  7469.   def execute_dispose
  7470.       Graphics.freeze
  7471.       dispose_background
  7472.       dispose_layout
  7473.       dispose_particles
  7474.       dispose_window
  7475.       dispose_actor_status
  7476.   end
  7477.  
  7478.   #--------------------------------------------------------------------------
  7479.   # ● Dispose Background
  7480.   #--------------------------------------------------------------------------  
  7481.   def dispose_background
  7482.       return if @background == nil
  7483.       @background.dispose
  7484.       @background = nil
  7485.   end
  7486.  
  7487.   #--------------------------------------------------------------------------
  7488.   # ● Dispose Layout
  7489.   #--------------------------------------------------------------------------               
  7490.   def dispose_layout
  7491.       return if @layout2 == nil
  7492.       @layout2.dispose
  7493.       @layout3.dispose
  7494.       @layout4.dispose
  7495.       @layout2 = nil
  7496.   end  
  7497.  
  7498. #--------------------------------------------------------------------------
  7499. # ● Dispose Particles
  7500. #--------------------------------------------------------------------------   
  7501. def dispose_particles
  7502.      return if @particles_sprite == nil
  7503.      @particles_sprite.each {|sprite| sprite.dispose }
  7504. end     
  7505.  
  7506.   #--------------------------------------------------------------------------
  7507.   # ● Dispose Window
  7508.   #--------------------------------------------------------------------------         
  7509.   def dispose_window
  7510.       @status_window.dispose
  7511.       @command_window.dispose
  7512.       @slot_window.dispose
  7513.       @equip_window.each {|sprite| sprite.dispose }
  7514.       @help_window.dispose
  7515.   end  
  7516.  
  7517.   #--------------------------------------------------------------------------
  7518.   # ● Dispose Actor Status
  7519.   #--------------------------------------------------------------------------  
  7520.   def dispose_actor_status
  7521.       return if @actor_status == nil
  7522.       @actor_status.dispose
  7523.   end   
  7524.  
  7525. end
  7526.  
  7527. #==============================================================================
  7528. # ■ Scene_Equip
  7529. #==============================================================================
  7530. class Scene_Equip   
  7531.  
  7532.   #--------------------------------------------------------------------------
  7533.   # ● Update Sprites
  7534.   #--------------------------------------------------------------------------         
  7535.   def update_sprites
  7536.       update_actor_status
  7537.       update_background
  7538.       update_particles
  7539.       update_window
  7540.       update_move
  7541.   end
  7542.  
  7543.   #--------------------------------------------------------------------------
  7544.   # ● Update Move
  7545.   #--------------------------------------------------------------------------
  7546.   def update_move
  7547.  
  7548.       update_slide(0,@command_window,@org_pos_com[0],0)
  7549.       update_slide(1,@command_window,@org_pos_com[1],0)
  7550.  
  7551.       update_slide(0,@help_window,@org_pos_help[0],0)
  7552.       update_slide(1,@help_window,@org_pos_help[1],0)      
  7553.  
  7554.       update_slide(0,@slot_window,@org_pos_slot[0],0)
  7555.       update_slide(1,@slot_window,@org_pos_slot[1],0)        
  7556.  
  7557.       update_slide(0,@layout2,0,1)
  7558.       update_slide(1,@layout2,0,1)
  7559.  
  7560.       update_slide(0,@layout3,0,1)
  7561.       update_slide(1,@layout3,0,1)      
  7562.  
  7563.       update_slide(0,@layout4,0,1)
  7564.       update_slide(1,@layout4,0,1)      
  7565.  
  7566.   end
  7567.  
  7568. #--------------------------------------------------------------------------
  7569. # ● Update Slide
  7570. #--------------------------------------------------------------------------                       
  7571.   def update_slide(type,sprite,np,op_type)
  7572.       if op_type == 0
  7573.          sprite.contents_opacity += 5
  7574.       else
  7575.          sprite.opacity += 5
  7576.       end
  7577.       cp = type == 0 ? sprite.x : sprite.y
  7578.       sp = 3 + ((cp - np).abs / 10)
  7579.       if cp > np
  7580.          cp -= sp
  7581.          cp = np if cp < np
  7582.       elsif cp < np
  7583.          cp += sp
  7584.          cp = np if cp > np
  7585.       end     
  7586.       sprite.x = cp if type == 0
  7587.       sprite.y = cp if type == 1
  7588.   end   
  7589.  
  7590.   #--------------------------------------------------------------------------
  7591.   # ● Update Actor Status
  7592.   #--------------------------------------------------------------------------            
  7593.   def update_actor_status
  7594.       return if @actor_status == nil
  7595.       @actor_status.update(@actor)
  7596.   end
  7597.  
  7598.   #--------------------------------------------------------------------------
  7599.   # ● Update Background
  7600.   #--------------------------------------------------------------------------              
  7601.   def update_background
  7602.       return if @background == nil
  7603.       @background.ox += @background_scroll[0]
  7604.       @background.oy += @background_scroll[1]
  7605.   end   
  7606.  
  7607.   #--------------------------------------------------------------------------
  7608.   # ● Update Particles
  7609.   #--------------------------------------------------------------------------  
  7610.   def update_particles
  7611.       return if @particles_sprite == nil
  7612.       @particles_sprite.each {|sprite| sprite.update }
  7613.   end  
  7614.  
  7615.   #--------------------------------------------------------------------------
  7616.   # ● Update Window
  7617.   #--------------------------------------------------------------------------            
  7618.   def update_window
  7619.       @status_window.update
  7620.       @command_window.update
  7621.       @slot_window.update
  7622.       for equip in @equip_window
  7623.           update_slide(0,equip,@org_pos_equip[0],0)
  7624.           update_slide(1,equip,@org_pos_equip[1],0)           
  7625.           if equip.windows_index == @slot_window.index
  7626.              equip.visible = true
  7627.              equip.update  
  7628.           else
  7629.              equip.visible = false
  7630.           end
  7631.       end  
  7632.   end
  7633.  
  7634. end
  7635.  
  7636. #==============================================================================
  7637. # ■ Scene_Equip
  7638. #==============================================================================
  7639. class Scene_Equip
  7640.  
  7641.   #--------------------------------------------------------------------------
  7642.   # ● Update
  7643.   #--------------------------------------------------------------------------      
  7644.   def update
  7645.       update_sprites
  7646.       update_command
  7647.   end
  7648.  
  7649.   #--------------------------------------------------------------------------
  7650.   # ● Command Equip
  7651.   #--------------------------------------------------------------------------
  7652.   def command_equip
  7653.       @slot_window.activate
  7654.       @slot_window.select(0)
  7655.   end
  7656.  
  7657.   #--------------------------------------------------------------------------
  7658.   # ● Command Optimize
  7659.   #--------------------------------------------------------------------------
  7660.   def command_optimize
  7661.       Sound.play_equip
  7662.       @actor.optimize_equipments
  7663.       @status_window.refresh
  7664.       @slot_window.refresh
  7665.       @command_window.activate
  7666.   end
  7667.  
  7668.   #--------------------------------------------------------------------------
  7669.   # ● Command Clear
  7670.   #--------------------------------------------------------------------------
  7671.   def command_clear
  7672.       Sound.play_equip
  7673.       @actor.clear_equipments
  7674.       @status_window.refresh
  7675.       @slot_window.refresh
  7676.       @command_window.activate
  7677.   end
  7678.  
  7679.   #--------------------------------------------------------------------------
  7680.   # ● On Slot OK
  7681.   #--------------------------------------------------------------------------
  7682.   def on_slot_ok
  7683.       @equip_window[@slot_window.index].activate
  7684.       @equip_window[@slot_window.index].select(0)
  7685.   end
  7686.  
  7687.   #--------------------------------------------------------------------------
  7688.   # ● On Slot Cancel
  7689.   #--------------------------------------------------------------------------
  7690.   def on_slot_cancel
  7691.       @slot_window.unselect
  7692.       @command_window.activate
  7693.   end
  7694.  
  7695.   #--------------------------------------------------------------------------
  7696.   # ● On Item OK
  7697.   #--------------------------------------------------------------------------
  7698.   def on_item_ok
  7699.       Sound.play_equip
  7700.       @actor.change_equip(@slot_window.index, @equip_window[@slot_window.index].item)
  7701.       @slot_window.activate
  7702.       @slot_window.refresh
  7703.       @equip_window[@slot_window.index].unselect
  7704.       @equip_window[@slot_window.index].refresh
  7705.   end
  7706.  
  7707.   #--------------------------------------------------------------------------
  7708.   # ● On Item Cancel
  7709.   #--------------------------------------------------------------------------
  7710.   def on_item_cancel
  7711.       @slot_window.activate
  7712.       @equip_window[@slot_window.index].unselect
  7713.   end
  7714.  
  7715.   #--------------------------------------------------------------------------
  7716.   # ● Return Scene
  7717.   #--------------------------------------------------------------------------         
  7718.   def return_scene
  7719.       Sound.play_cancel
  7720.       SceneManager.return
  7721.     end
  7722.  
  7723.   #--------------------------------------------------------------------------
  7724.   # ● ON Actor Charge
  7725.   #--------------------------------------------------------------------------
  7726.   def on_actor_change
  7727.       $game_temp.actor_menu_temp = @actor
  7728.       SceneManager.goto(Scene_Equip)
  7729.   end  
  7730.  
  7731. end
  7732.  
  7733. #==============================================================================
  7734. # ■ Scene_Equip
  7735. #==============================================================================
  7736. class Scene_Equip
  7737.  
  7738.   #--------------------------------------------------------------------------
  7739.   # ● Update Command
  7740.   #--------------------------------------------------------------------------      
  7741.   def update_command
  7742.  
  7743.   end
  7744.  
  7745. end
  7746.  
  7747. #==============================================================================
  7748. # ■ Game_Temp
  7749. #==============================================================================
  7750. class Game_Temp
  7751.  
  7752.   #--------------------------------------------------------------------------
  7753.   # ● Execute Pre Cache Status Menu
  7754.   #--------------------------------------------------------------------------   
  7755.   def execute_pre_cache_status_menu
  7756.       @pre_cache_status_menu = []
  7757.       @pre_cache_status_menu.push(Cache.menu_status("Background"))
  7758.       @pre_cache_status_menu.push(Cache.menu_status("Layout"))
  7759.   end   
  7760.  
  7761. end
  7762.  
  7763. #==============================================================================
  7764. # ■ Scene_Status
  7765. #==============================================================================
  7766. class Scene_Status
  7767.   include MOG_MENU_STATUS
  7768.   include MOG_MENU_BASE
  7769.  
  7770.   #--------------------------------------------------------------------------
  7771.   # ● Main
  7772.   #--------------------------------------------------------------------------        
  7773.   def main
  7774.       execute_setup
  7775.       execute_loop
  7776.       execute_dispose
  7777.   end  
  7778.  
  7779.   #--------------------------------------------------------------------------
  7780.   # ● Execute Setup
  7781.   #--------------------------------------------------------------------------        
  7782.   def execute_setup
  7783.       @actor = $game_temp.actor_menu_temp
  7784.       @actor_old = @actor
  7785.       @phase = 0
  7786.       create_sprites
  7787.   end
  7788.  
  7789.   #--------------------------------------------------------------------------
  7790.   # ● Execute Lopp
  7791.   #--------------------------------------------------------------------------        
  7792.   def execute_loop
  7793.       Graphics.transition(10)
  7794.       loop do
  7795.          Input.update
  7796.          update
  7797.          Graphics.update
  7798.          break if SceneManager.scene != self
  7799.       end
  7800.   end
  7801.  
  7802. end
  7803.  
  7804. #==============================================================================
  7805. # ■ Window_Status
  7806. #==============================================================================
  7807. class Window_Status < Window_Selectable
  7808.  
  7809.   #--------------------------------------------------------------------------
  7810.   # ● Initialize
  7811.   #--------------------------------------------------------------------------
  7812.   def initialize(actor)
  7813.       super(-16, -16, Graphics.width + 32, Graphics.height + 32)
  7814.       @actor = actor
  7815.       self.z = 10
  7816.       refresh
  7817.       activate
  7818.   end
  7819.  
  7820.   #--------------------------------------------------------------------------
  7821.   # ● Actor
  7822.   #--------------------------------------------------------------------------
  7823.   def actor=(actor)
  7824.       return if @actor == actor
  7825.       @actor = actor
  7826.       refresh
  7827.   end
  7828.  
  7829.   #--------------------------------------------------------------------------
  7830.   # ● Refresh
  7831.   #--------------------------------------------------------------------------
  7832.   def refresh
  7833.       contents.clear
  7834.       draw_description
  7835.       self.contents.font.size = 18
  7836.       self.contents.font.bold = true
  7837.       self.contents.font.name = "Georgia"
  7838.       draw_exp_info
  7839.       draw_parameters      
  7840.       draw_equipments
  7841.       draw_actor_hp_mp_tp
  7842.       draw_actor_name
  7843.  
  7844.   end
  7845.  
  7846.   #--------------------------------------------------------------------------
  7847.   # ● Draw Actor Name
  7848.   #--------------------------------------------------------------------------  
  7849.   def draw_actor_name
  7850.       self.contents.font.name = "Verdana"
  7851.       self.contents.font.size = 16
  7852.       text = @actor.class.name
  7853.       draw_text(240,185,100,32, text.to_s,1)      
  7854.       self.contents.font.size = 20   
  7855.       self.contents.font.italic = true
  7856.       text = @actor.name
  7857.       draw_text(125,50,120,32, text.to_s,1)
  7858.   end
  7859.  
  7860.   #--------------------------------------------------------------------------
  7861.   # ● Draw Parameters
  7862.   #--------------------------------------------------------------------------
  7863.   def draw_parameters
  7864.       par = @actor.atk
  7865.       draw_text(43,112,80,32, par.to_s,2)
  7866.       par = @actor.def
  7867.       draw_text(43,146,80,32, par.to_s,2)
  7868.       par = @actor.mat
  7869.       draw_text(162 ,112,80,32, par.to_s,2)      
  7870.       par = @actor.mdf
  7871.       draw_text(162,146,80,32, par.to_s,2)      
  7872.       par = @actor.agi
  7873.       draw_text(282,112,80,32, par.to_s,2)         
  7874.       par = @actor.luk
  7875.       draw_text(282,146,80,32, par.to_s,2)
  7876.   end   
  7877.  
  7878.   #--------------------------------------------------------------------------
  7879.   # ● Draw Actor HP MP TP
  7880.   #--------------------------------------------------------------------------  
  7881.   def draw_actor_hp_mp_tp
  7882.       self.contents.font.name = "Verdana"
  7883.       self.contents.font.size = 16
  7884.       par = @actor.hp.truncate
  7885.       draw_text(5,80,80,32, par.to_s,2)      
  7886.       par = @actor.mhp.truncate
  7887.       draw_text(50,80,80,32, par.to_s,2)           
  7888.       par = @actor.mp.truncate
  7889.       draw_text(123,80,80,32, par.to_s,2)      
  7890.       par = @actor.mmp.truncate
  7891.       draw_text(168,80,80,32, par.to_s,2)        
  7892.       par = @actor.tp.truncate
  7893.       draw_text(244,80,80,32, par.to_s,2)      
  7894.       par = @actor.max_tp.truncate
  7895.       draw_text(282,80,80,32, par.to_s,2)      
  7896.   end
  7897.  
  7898.   #--------------------------------------------------------------------------
  7899.   # ● Draw Exp Info
  7900.   #--------------------------------------------------------------------------
  7901.   def draw_exp_info
  7902.       draw_text(200,10,64,32,@actor.level.to_s,1)
  7903.       s1 = @actor.max_level? ? "----------" : @actor.exp
  7904.       s2 = @actor.max_level? ? "----------" : @actor.next_level_exp - @actor.exp
  7905.       draw_text(300,10, 80, 32,s1.to_s, 1)
  7906.       draw_text(460,10, 80, 32,s2.to_s, 1)
  7907.   end
  7908.  
  7909.   #--------------------------------------------------------------------------
  7910.   # ● Draw Equipments
  7911.   #--------------------------------------------------------------------------
  7912.   def draw_equipments
  7913.       self.contents.font.size = 16
  7914.       item = @actor.equips[0]
  7915.       draw_item_name(item, 20, 220,true,140)
  7916.       item = @actor.equips[1]
  7917.       draw_item_name(item, 20, 220 + 43,true,140)
  7918.       item = @actor.equips[2]
  7919.       draw_item_name(item, 20, 220 + 86,true,140)      
  7920.       item = @actor.equips[3]
  7921.       draw_item_name(item, 196, 242,true,140)      
  7922.       item = @actor.equips[4]
  7923.       draw_item_name(item, 196, 242 + 43,true,140)
  7924.   end
  7925.  
  7926.   #--------------------------------------------------------------------------
  7927.   # ● Draw Description
  7928.   #--------------------------------------------------------------------------
  7929.   def draw_description
  7930.       draw_text_ex(20, height - 96,@actor.description)
  7931.   end
  7932.  
  7933.   #--------------------------------------------------------------------------
  7934.   # ● Next Actor
  7935.   #--------------------------------------------------------------------------
  7936.   def next_actor
  7937.       $game_temp.actor_menu_temp = $game_party.menu_actor_next
  7938.       on_actor_change
  7939.   end
  7940.   #--------------------------------------------------------------------------
  7941.   # ● Prev Actor
  7942.   #--------------------------------------------------------------------------
  7943.   def prev_actor
  7944.       $game_temp.actor_menu_temp = $game_party.menu_actor_prev
  7945.       on_actor_change
  7946.   end  
  7947.  
  7948.   #--------------------------------------------------------------------------
  7949.   # ● On Actor Change
  7950.   #--------------------------------------------------------------------------
  7951.   def on_actor_change
  7952.       Sound.play_cursor
  7953.       SceneManager.goto(Scene_Status)
  7954.   end  
  7955.  
  7956. end
  7957.  
  7958. module MOG_STATUS_PARAMETER
  7959.   PICTURE_POS = [-105,0]
  7960.   METER_POSITION = [53,101]
  7961.   STATES_POSITION = [21,46]
  7962.   STATES_SCROLLING_ANIMATION = false
  7963.   MAX_PARAMETER_VALUE = 999
  7964. end
  7965. #==============================================================================
  7966. # ■ Status Parameter
  7967. #==============================================================================
  7968. class Status_Parameter
  7969.  
  7970.   include MOG_STATUS_PARAMETER
  7971.  
  7972.   #--------------------------------------------------------------------------
  7973.   # ● Initialize
  7974.   #--------------------------------------------------------------------------
  7975.   def initialize(actor)
  7976.       @actor = actor
  7977.       create_picture
  7978.       create_states
  7979.       create_meter
  7980.   end
  7981.  
  7982.   #--------------------------------------------------------------------------
  7983.   # ● Create Picture
  7984.   #--------------------------------------------------------------------------   
  7985.   def create_picture
  7986.       @picture = Sprite.new
  7987.       pic_name = "Actor_S" + @actor.id.to_s
  7988.       @picture.bitmap = Cache.menu_status(pic_name.to_s)
  7989.       @picture.ox = @picture.bitmap.width / 2
  7990.       pos = [Graphics.width,Graphics.height - @picture.bitmap.height]
  7991.       @pos_org_pic = [PICTURE_POS[0] + pos[0] ,PICTURE_POS[1] + pos[1]]
  7992.       @picture.x = @pos_org_pic[0]
  7993.       @picture.y = @pos_org_pic[1] + 150
  7994.       @picture.opacity = 0
  7995.       @picture.z = 3
  7996.   end  
  7997.  
  7998.   #--------------------------------------------------------------------------
  7999.   # ● Create_States
  8000.   #--------------------------------------------------------------------------      
  8001.   def create_states
  8002.       @status_old = nil
  8003.       @status_flow = [-24,0]   
  8004.       @status = Sprite.new
  8005.       @status.bitmap = Bitmap.new(24,24)
  8006.       @org_pos_states = [STATES_POSITION[0],STATES_POSITION[1]]      
  8007.       @status.x = @org_pos_states[0] + 150
  8008.       @status.y = @org_pos_states[1]
  8009.       @status.z = 11
  8010.       @status.opacity = 0
  8011.   end      
  8012.  
  8013.   #--------------------------------------------------------------------------
  8014.   # * Refresh States
  8015.   #--------------------------------------------------------------------------        
  8016.   def refresh_states
  8017.       check_icon_image
  8018.       @status_old = @actor.states
  8019.       @status_flow = [0,0]
  8020.       @actor_status.dispose if @actor_status != nil
  8021.       @states_size = @actor.states.size > 0 ? (26 * @actor.states.size) : 24
  8022.       @actor_status = Bitmap.new(@states_size,24)
  8023.       index = 0
  8024.       for i in @actor.states
  8025.          rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
  8026.          @actor_status.blt(26 * index , 0, @icon_image, rect)
  8027.          index += 1
  8028.       end
  8029.   end   
  8030.  
  8031.   #--------------------------------------------------------------------------
  8032.   # * Flow_Status
  8033.   #--------------------------------------------------------------------------         
  8034.   def flow_states
  8035.       return if @actor_status == nil
  8036.       @status.bitmap.clear
  8037.       return if @actor.states.size == 0
  8038.       st_src_rect = Rect.new(@status_flow[0],0, 24,24)
  8039.       @status.bitmap.blt(0,0, @actor_status, st_src_rect)
  8040.       if STATES_SCROLLING_ANIMATION
  8041.          @status_flow[0] += 1
  8042.          @status_flow[0] = -24 if @status_flow[0] >= @states_size + 2
  8043.       else   
  8044.          @status_flow[1] += 1 unless @actor.states.size <= 1
  8045.          if @status_flow[1] > 30
  8046.             @status_flow[1] = 0
  8047.             @status_flow[0] += 26
  8048.             @status_flow[0] = 0 if @status_flow[0] >= (@states_size - 0)
  8049.          end   
  8050.      end   
  8051.   end        
  8052.  
  8053.   #--------------------------------------------------------------------------
  8054.   # * Check Icon Image
  8055.   #--------------------------------------------------------------------------         
  8056.   def check_icon_image
  8057.       if @icon_image == nil or @icon_image.disposed?
  8058.          @icon_image = Cache.system("Iconset")
  8059.       end   
  8060.   end   
  8061.  
  8062.   #--------------------------------------------------------------------------
  8063.   # * Create Meter
  8064.   #--------------------------------------------------------------------------            
  8065.   def create_meter
  8066.       @meter_image = Cache.menu_status("Par_Meter")
  8067.       @meter_cw = @meter_image.width / 3
  8068.       @meter_ch = @meter_image.height / 4
  8069.       @meter = Sprite.new
  8070.       @meter.bitmap = Bitmap.new(380,140)
  8071.       @org_pos_meter = [METER_POSITION[0],METER_POSITION[1]]      
  8072.       @meter.x = @org_pos_meter[0] + 150
  8073.       @meter.y = @org_pos_meter[1]
  8074.       @meter.z = 11  
  8075.       @meter.opacity = 0
  8076.       @meter_flow = [0,@meter_cw * 2]      
  8077.       refresh_meter
  8078.   end  
  8079.  
  8080.   #--------------------------------------------------------------------------
  8081.   # * Refresh Meter
  8082.   #--------------------------------------------------------------------------            
  8083.   def refresh_meter
  8084.       @meter.bitmap.clear
  8085.       max_par = MAX_PARAMETER_VALUE
  8086.       value = @actor.hp
  8087.       value_max = @actor.mhp
  8088.       pos = [0,0]
  8089.       draw_meter(value,value_max,0,pos[0],pos[1])
  8090.       value = @actor.mp
  8091.       value_max = @actor.mmp
  8092.       pos = [120,0]
  8093.       draw_meter(value,value_max,1,pos[0],pos[1])
  8094.       value = @actor.tp
  8095.       value_max = @actor.max_tp
  8096.       pos = [240,0]
  8097.       draw_meter(value,value_max,2,pos[0],pos[1])         
  8098.       value = @actor.atk
  8099.       value_max = max_par
  8100.       pos = [0,34]
  8101.       draw_meter(value,value_max,3,pos[0],pos[1])      
  8102.       value = @actor.mat
  8103.       value_max = max_par
  8104.       pos = [120,34]
  8105.       draw_meter(value,value_max,3,pos[0],pos[1])         
  8106.       value = @actor.agi
  8107.       value_max = max_par
  8108.       pos = [240,34]
  8109.       draw_meter(value,value_max,3,pos[0],pos[1])      
  8110.       value = @actor.def
  8111.       value_max = max_par
  8112.       pos = [0,68]
  8113.       draw_meter(value,value_max,3,pos[0],pos[1])      
  8114.       value = @actor.mdf
  8115.       value_max = max_par
  8116.       pos = [120,68]
  8117.       draw_meter(value,value_max,3,pos[0],pos[1])         
  8118.       value = @actor.luk
  8119.       value_max = max_par
  8120.       pos = [240,68]
  8121.       draw_meter(value,value_max,3,pos[0],pos[1])      
  8122.       @meter_flow[0] += 5
  8123.       @meter_flow[0] = 0 if @meter_flow[0] > @meter_flow[1]
  8124.   end
  8125.  
  8126.   #--------------------------------------------------------------------------
  8127.   # * Draw Meter
  8128.   #--------------------------------------------------------------------------              
  8129.   def draw_meter(value,value_max,type,x,y)
  8130.       value_max = 1 if value_max <= 0
  8131.       range = @meter_cw * value.truncate / value_max.truncate
  8132.       ch = @meter_ch * type
  8133.       meter_scr = Rect.new(@meter_flow[0],ch,range,@meter_ch)
  8134.       @meter.bitmap.blt(x,y,@meter_image,meter_scr)
  8135.   end
  8136.  
  8137.   #--------------------------------------------------------------------------
  8138.   # ● Dispose
  8139.   #--------------------------------------------------------------------------  
  8140.   def dispose
  8141.       dispose_picture
  8142.       dispose_states
  8143.       dispose_meter
  8144.   end
  8145.  
  8146.   #--------------------------------------------------------------------------
  8147.   # ● Dispose Picture
  8148.   #--------------------------------------------------------------------------   
  8149.   def dispose_picture
  8150.       @picture.bitmap.dispose
  8151.       @picture.dispose
  8152.   end
  8153.  
  8154.   #--------------------------------------------------------------------------
  8155.   # ● Dispose States
  8156.   #--------------------------------------------------------------------------            
  8157.    def dispose_states
  8158.        return if @status == nil
  8159.        @status.bitmap.dispose
  8160.        @status.dispose
  8161.        if @actor_status != nil
  8162.           @actor_status.dispose
  8163.           @actor_status = nil
  8164.        end   
  8165.    end     
  8166.  
  8167.   #--------------------------------------------------------------------------
  8168.   # ● Dispose Meter
  8169.   #--------------------------------------------------------------------------            
  8170.    def dispose_meter
  8171.        return if @meter == nil
  8172.        @meter.bitmap.dispose
  8173.        @meter.dispose
  8174.    end     
  8175.  
  8176.   #--------------------------------------------------------------------------
  8177.   # ● Update
  8178.   #--------------------------------------------------------------------------  
  8179.   def update
  8180.       update_slide(0,@picture,@pos_org_pic[0])
  8181.       update_slide(1,@picture,@pos_org_pic[1])
  8182.       update_slide(0,@status,@org_pos_states[0])
  8183.       update_slide(1,@status,@org_pos_states[1])   
  8184.       update_slide(0,@meter,@org_pos_meter[0])
  8185.       update_slide(1,@meter,@org_pos_meter[1])         
  8186.       refresh_states if @status_old != @actor.states
  8187.       refresh_meter
  8188.       flow_states      
  8189.   end
  8190.  
  8191.  
  8192. #--------------------------------------------------------------------------
  8193. # ● Update Slide
  8194. #--------------------------------------------------------------------------                       
  8195.   def update_slide(type,sprite,np)
  8196.       sprite.opacity += 5
  8197.       cp = type == 0 ? sprite.x : sprite.y
  8198.       sp = 3 + ((cp - np).abs / 10)
  8199.       if cp > np
  8200.          cp -= sp
  8201.          cp = np if cp < np
  8202.       elsif cp < np
  8203.          cp += sp
  8204.          cp = np if cp > np
  8205.       end     
  8206.       sprite.x = cp if type == 0
  8207.       sprite.y = cp if type == 1
  8208.   end   
  8209.  
  8210. end
  8211.  
  8212. #==============================================================================
  8213. # ■ Scene_Status
  8214. #==============================================================================
  8215. class Scene_Status
  8216.  
  8217.   #--------------------------------------------------------------------------
  8218.   # ● Create Sprites
  8219.   #--------------------------------------------------------------------------
  8220.   def create_sprites
  8221.       create_menu_background
  8222.       create_layout
  8223.       create_particles
  8224.       create_status_window
  8225.       create_parameter
  8226.   end
  8227.  
  8228.   #--------------------------------------------------------------------------
  8229.   # ● Create Menu Background
  8230.   #--------------------------------------------------------------------------            
  8231.   def create_menu_background
  8232.       @background = Plane.new
  8233.       @background.bitmap = $game_temp.pre_cache_status_menu[0]
  8234.       @background.z = 0
  8235.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  8236.   end   
  8237.  
  8238.   #--------------------------------------------------------------------------
  8239.   # ● Create Layout
  8240.   #--------------------------------------------------------------------------              
  8241.   def create_layout     
  8242.       @layout = Sprite.new
  8243.       @layout.bitmap = $game_temp.pre_cache_status_menu[1]
  8244.       @layout.z = 9
  8245.       @layout.x = -150
  8246.       @layout.opacity = 0
  8247.   end  
  8248.  
  8249.   #--------------------------------------------------------------------------
  8250.   # ● Create Particles
  8251.   #--------------------------------------------------------------------------  
  8252.   def create_particles
  8253.       @particles_sprite =[]
  8254.       for i in 0...NUMBER_OF_PARTICLES
  8255.           @particles_sprite.push(Particles_Menu.new(nil))
  8256.       end
  8257.   end   
  8258.  
  8259.   #--------------------------------------------------------------------------
  8260.   # ● Create Status Window
  8261.   #--------------------------------------------------------------------------  
  8262.   def create_status_window
  8263.       @status_window = Window_Status.new(@actor)
  8264.       @status_window.set_handler(:cancel,   method(:return_scene))
  8265.       @status_window.set_handler(:pagedown, method(:next_actor))
  8266.       @status_window.set_handler(:pageup,   method(:prev_actor))
  8267.       @org_pos_win = [@status_window.x,@status_window.y]
  8268.       @status_window.x += 150
  8269.       @status_window.opacity = 0
  8270.       @status_window.contents_opacity = 0
  8271.   end  
  8272.  
  8273.   #--------------------------------------------------------------------------
  8274.   # ● Create Parameter
  8275.   #--------------------------------------------------------------------------   
  8276.   def create_parameter
  8277.       @parameter = Status_Parameter.new(@actor)
  8278.   end
  8279.  
  8280. end
  8281.  
  8282. #==============================================================================
  8283. # ■ Scene_Status
  8284. #==============================================================================
  8285. class Scene_Status
  8286.  
  8287.   #--------------------------------------------------------------------------
  8288.   # ● Execute Dispose
  8289.   #--------------------------------------------------------------------------        
  8290.   def execute_dispose
  8291.       Graphics.freeze
  8292.       dispose_background
  8293.       dispose_layout
  8294.       dispose_particles
  8295.       dispose_status_window
  8296.       dispose_parameter
  8297.    end
  8298.  
  8299.   #--------------------------------------------------------------------------
  8300.   # ● Dispose Background
  8301.   #--------------------------------------------------------------------------  
  8302.   def dispose_background
  8303.       return if @background == nil
  8304.       @background.dispose
  8305.       @background = nil
  8306.   end
  8307.  
  8308.   #--------------------------------------------------------------------------
  8309.   # ● Dispose Layout
  8310.   #--------------------------------------------------------------------------               
  8311.   def dispose_layout
  8312.       return if @layout == nil
  8313.       @layout.dispose
  8314.       @layout = nil
  8315.   end  
  8316.  
  8317. #--------------------------------------------------------------------------
  8318. # ● Dispose Particles
  8319. #--------------------------------------------------------------------------   
  8320. def dispose_particles
  8321.      return if @particles_sprite == nil
  8322.      @particles_sprite.each {|sprite| sprite.dispose }
  8323. end     
  8324.  
  8325.   #--------------------------------------------------------------------------
  8326.   # ● Dispose Status Window
  8327.   #--------------------------------------------------------------------------  
  8328.   def dispose_status_window
  8329.       return if @status_window == nil
  8330.       @status_window.dispose
  8331.   end  
  8332.  
  8333.   #--------------------------------------------------------------------------
  8334.   # ● Dispose Parameter
  8335.   #--------------------------------------------------------------------------   
  8336.   def dispose_parameter
  8337.       return if @parameter == nil
  8338.       @parameter.dispose
  8339.   end  
  8340.  
  8341. end
  8342.  
  8343. #==============================================================================
  8344. # ■ Scene Status
  8345. #==============================================================================
  8346. class Scene_Status
  8347.  
  8348.   #--------------------------------------------------------------------------
  8349.   # ● Update Sprites
  8350.   #--------------------------------------------------------------------------         
  8351.   def update_sprites   
  8352.       update_background
  8353.       update_particles     
  8354.       update_status_window
  8355.       update_parameter
  8356.       update_move
  8357.   end
  8358.  
  8359.   #--------------------------------------------------------------------------
  8360.   # ● Update Background
  8361.   #--------------------------------------------------------------------------              
  8362.   def update_background
  8363.       return if @background == nil
  8364.       @background.ox += @background_scroll[0]
  8365.       @background.oy += @background_scroll[1]
  8366.   end   
  8367.  
  8368.   #--------------------------------------------------------------------------
  8369.   # ● Update Particles
  8370.   #--------------------------------------------------------------------------  
  8371.   def update_particles
  8372.       return if @particles_sprite == nil
  8373.       @particles_sprite.each {|sprite| sprite.update }
  8374.   end
  8375.  
  8376.   #--------------------------------------------------------------------------
  8377.   # ● Update Sprites
  8378.   #--------------------------------------------------------------------------  
  8379.   def update_status_window
  8380.       return if @status_window == nil
  8381.       @status_window.update
  8382.   end
  8383.  
  8384.   #--------------------------------------------------------------------------
  8385.   # ● Update Move
  8386.   #--------------------------------------------------------------------------      
  8387.   def update_move
  8388.       update_slide(0,@status_window,@org_pos_win[0],0)
  8389.       update_slide(1,@status_window,@org_pos_win[1],0)
  8390.       update_slide(0,@layout,0,1)
  8391.       update_slide(1,@layout,0,1)     
  8392.   end  
  8393.  
  8394. #--------------------------------------------------------------------------
  8395. # ● Update Slide
  8396. #--------------------------------------------------------------------------                       
  8397.   def update_slide(type,sprite,np,opa)
  8398.       if opa == 0
  8399.          sprite.contents_opacity += 5
  8400.       else   
  8401.          sprite.opacity += 5
  8402.       end  
  8403.       cp = type == 0 ? sprite.x : sprite.y
  8404.       sp = 3 + ((cp - np).abs / 10)
  8405.       if cp > np
  8406.          cp -= sp
  8407.          cp = np if cp < np
  8408.       elsif cp < np
  8409.          cp += sp
  8410.          cp = np if cp > np
  8411.       end     
  8412.       sprite.x = cp if type == 0
  8413.       sprite.y = cp if type == 1
  8414.   end   
  8415.  
  8416.   #--------------------------------------------------------------------------
  8417.   # ● Update Parameter
  8418.   #--------------------------------------------------------------------------   
  8419.   def update_parameter
  8420.       return if @parameter == nil
  8421.       @parameter.update
  8422.   end   
  8423.  
  8424. end
  8425.  
  8426. #==============================================================================
  8427. # ■ Scene_Status
  8428. #==============================================================================
  8429. class Scene_Status
  8430.  
  8431.   #--------------------------------------------------------------------------
  8432.   # ● Update
  8433.   #--------------------------------------------------------------------------      
  8434.   def update
  8435.       update_sprites
  8436.       update_command
  8437.   end
  8438.  
  8439.   #--------------------------------------------------------------------------
  8440.   # ● Return Scene
  8441.   #--------------------------------------------------------------------------         
  8442.   def return_scene
  8443.       Sound.play_cancel
  8444.       SceneManager.return
  8445.   end
  8446.  
  8447.   #--------------------------------------------------------------------------
  8448.   # ● ON Actor Charge
  8449.   #--------------------------------------------------------------------------
  8450.   def on_actor_change
  8451.       Sound.play_cursor
  8452.       $game_temp.actor_menu_temp = @actor
  8453.       SceneManager.goto(Scene_Status)
  8454.   end  
  8455.  
  8456. end
  8457.  
  8458. #==============================================================================
  8459. # ■ Scene_Status
  8460. #==============================================================================
  8461. class Scene_Status
  8462.  
  8463.   #--------------------------------------------------------------------------
  8464.   # ● Update Command
  8465.   #--------------------------------------------------------------------------      
  8466.   def update_command
  8467.       update_next_actor
  8468.   end
  8469.  
  8470.   #--------------------------------------------------------------------------
  8471.   # ● Update Next Actor
  8472.   #--------------------------------------------------------------------------        
  8473.   def update_next_actor
  8474.       if Input.trigger?(:RIGHT)
  8475.          @status_window.next_actor
  8476.        elsif Input.trigger?(:LEFT)
  8477.          @status_window.prev_actor
  8478.       end
  8479.   end
  8480.  
  8481. end
  8482.  
  8483.  
  8484.  
  8485. #==============================================================================
  8486. # ■ Game_Temp
  8487. #==============================================================================
  8488. class Game_Temp
  8489.  
  8490.   #--------------------------------------------------------------------------
  8491.   # ● Execute Pre Cache Party Menu
  8492.   #--------------------------------------------------------------------------   
  8493.   def execute_pre_cache_party_menu
  8494.       @pre_cache_party_menu = []
  8495.       @pre_cache_party_menu.push(Cache.menu_party("Background"))
  8496.       @pre_cache_party_menu.push(Cache.menu_party("Layout"))
  8497.   end   
  8498.  
  8499. end
  8500.  
  8501. #==============================================================================
  8502. # ■ Scene_Party
  8503. #==============================================================================
  8504. class Scene_Party
  8505.   include MOG_MENU_PARTY
  8506.   include MOG_MENU_BASE
  8507.  
  8508.   #--------------------------------------------------------------------------
  8509.   # ● Main
  8510.   #--------------------------------------------------------------------------        
  8511.   def main
  8512.       execute_setup
  8513.       execute_loop
  8514.       execute_dispose
  8515.   end  
  8516.  
  8517.   #--------------------------------------------------------------------------
  8518.   # ● Execute Setup
  8519.   #--------------------------------------------------------------------------        
  8520.   def execute_setup
  8521.       @phase = 0
  8522.       @actor = $game_party.members[0]
  8523.       @actor_old = @actor
  8524.       create_sprites
  8525.   end
  8526.  
  8527.   #--------------------------------------------------------------------------
  8528.   # ● Execute Lopp
  8529.   #--------------------------------------------------------------------------        
  8530.   def execute_loop
  8531.       Graphics.transition(10)
  8532.       loop do
  8533.          Input.update
  8534.          update
  8535.          Graphics.update
  8536.          break if SceneManager.scene != self
  8537.       end
  8538.   end
  8539.  
  8540. end
  8541.  
  8542. module MOG_ACTOR_MENU_PARTY
  8543.   FACE_POSITION = [390,96]
  8544.   NAME_POSITION = [390,73]
  8545.   FONT_NAME = "Verdana"
  8546.   FONT_SIZE = 16
  8547.   FONT_BOLD = true
  8548. end
  8549.  
  8550.  
  8551. #==============================================================================
  8552. # ■ Actor Menu Status Party
  8553. #==============================================================================
  8554. class Actor_Menu_Status_Party
  8555.  
  8556.   include MOG_ACTOR_MENU_PARTY
  8557.  
  8558.   #--------------------------------------------------------------------------
  8559.   # ● Initialize
  8560.   #--------------------------------------------------------------------------
  8561.   def initialize
  8562.       @active = false
  8563.       @max_members = $game_party.max_battle_members
  8564.       @max_members = $game_party.members.size if @max_members > $game_party.members.size
  8565.       create_sprites
  8566.   end
  8567.  
  8568.   #--------------------------------------------------------------------------
  8569.   # ● Create Sprites
  8570.   #--------------------------------------------------------------------------  
  8571.   def create_sprites
  8572.       @face = []
  8573.       @face_org = []
  8574.       @name = []
  8575.       @name_org = []
  8576.       @actor_id = []
  8577.       space = 70
  8578.       index = 0
  8579.       for actor in $game_party.members  
  8580.          @face.push(Sprite.new)
  8581.          @face_org[index] = [FACE_POSITION[0],FACE_POSITION[1] + space * index]
  8582.          @face[index].x = @face_org[index][0] + 150 + (150 * index)
  8583.          @face[index].y = @face_org[index][1]
  8584.          @face[index].z = 10   
  8585.          @name.push(Sprite.new)
  8586.          @name[index].bitmap = Bitmap.new(200,120)
  8587.          @name[index].bitmap.font.name = FONT_NAME
  8588.          @name[index].bitmap.font.size = FONT_SIZE
  8589.          @name[index].bitmap.font.bold = FONT_BOLD
  8590.          @name_org[index] = [NAME_POSITION[0],NAME_POSITION[1] + space * index]
  8591.          @name[index].x = @name_org[index][0] + 150 + (150 * index)
  8592.          @name[index].y = @name_org[index][1]
  8593.          @name[index].z = 11
  8594.          @actor_id[index] = actor.id
  8595.          index += 1
  8596.          break if index >= @max_members
  8597.       end
  8598.       refresh
  8599.   end
  8600.  
  8601.   #--------------------------------------------------------------------------
  8602.   # ● Refresh Position
  8603.   #--------------------------------------------------------------------------   
  8604.   def refresh_position(actor,index)
  8605.       @actor_id[index] = actor.id
  8606.       @face[index].x = @face_org[index][0] + 150 + (150 * index)
  8607.       @name[index].x = @name_org[index][0] + 150 + (150 * index)   
  8608.   end
  8609.  
  8610.   #--------------------------------------------------------------------------
  8611.   # ● Dispose
  8612.   #--------------------------------------------------------------------------      
  8613.   def dispose
  8614.       @face.each {|sprite| sprite.dispose }
  8615.       @name.each {|sprite| sprite.bitmap.dispose }
  8616.       @name.each {|sprite| sprite.dispose }
  8617.   end
  8618.  
  8619.   #--------------------------------------------------------------------------
  8620.   # ● Refresh
  8621.   #--------------------------------------------------------------------------      
  8622.   def refresh
  8623.       index = 0
  8624.       for actor in $game_party.members  
  8625.           face_name = "Face_B" + actor.id.to_s
  8626.           @face[index].bitmap = Cache.menu(face_name.to_s)
  8627.           @name[index].bitmap.clear
  8628.           @name[index].bitmap.draw_text(100,28,64,32,"LV " + actor.level.to_s,0)
  8629.           aname = actor.name
  8630.           @name[index].bitmap.draw_text(0,0,100,32,aname.to_s,0)
  8631.           refresh_position(actor,index) if @actor_id[index] != actor.id
  8632.           index += 1
  8633.           break if index >= @max_members
  8634.       end
  8635.   end
  8636.  
  8637. #--------------------------------------------------------------------------
  8638. # ● Update Slide
  8639. #--------------------------------------------------------------------------                       
  8640.   def update_slide(type,sprite,np)
  8641.       sprite.opacity += 5
  8642.       cp = type == 0 ? sprite.x : sprite.y
  8643.       sp = 3 + ((cp - np).abs / 10)
  8644.       if cp > np
  8645.          cp -= sp
  8646.          cp = np if cp < np
  8647.       elsif cp < np
  8648.          cp += sp
  8649.          cp = np if cp > np
  8650.       end     
  8651.       sprite.x = cp if type == 0
  8652.       sprite.y = cp if type == 1
  8653.   end      
  8654.  
  8655.   #--------------------------------------------------------------------------
  8656.   # ● Update
  8657.   #--------------------------------------------------------------------------
  8658.   def update(actor)
  8659.       for index in [email]0...@name.size[/email]
  8660.           update_slide(0,@face[index],@face_org[index][0])
  8661.           update_slide(1,@face[index],@face_org[index][1])
  8662.           update_slide(0,@name[index],@name_org[index][0])
  8663.           update_slide(1,@name[index],@name_org[index][1])
  8664.       end      
  8665.   end      
  8666.  
  8667. end
  8668.  
  8669. #==============================================================================
  8670. # ■ Window_MenuStatus Party
  8671. #==============================================================================
  8672. class Window_MenuStatus_Party < Window_Selectable
  8673.   attr_reader   :pending_index           
  8674.  
  8675.   #--------------------------------------------------------------------------
  8676.   # ● Initialize
  8677.   #--------------------------------------------------------------------------
  8678.   def initialize(x, y)
  8679.       super(x, y, window_width, window_height)
  8680.       @pending_index = -1
  8681.       self.opacity = 0
  8682.       self.contents.font.bold = true
  8683.       self.contents.font.size = 18
  8684.       refresh
  8685.   end
  8686.  
  8687.   #--------------------------------------------------------------------------
  8688.   # ● Window Width
  8689.   #--------------------------------------------------------------------------
  8690.   def window_width
  8691.       Graphics.width - 160
  8692.   end
  8693.  
  8694.   #--------------------------------------------------------------------------
  8695.   # ● Window Height
  8696.   #--------------------------------------------------------------------------
  8697.   def window_height
  8698.       Graphics.height
  8699.   end
  8700.  
  8701.   #--------------------------------------------------------------------------
  8702.   # ● Item Max
  8703.   #--------------------------------------------------------------------------
  8704.   def item_max
  8705.       $game_party.members.size
  8706.   end
  8707.  
  8708.   #--------------------------------------------------------------------------
  8709.   # ● Item Height
  8710.   #--------------------------------------------------------------------------
  8711.   def item_height
  8712.     (height - standard_padding * 2) / 4
  8713.   end
  8714.  
  8715.   #--------------------------------------------------------------------------
  8716.   # ● Draw Item
  8717.   #--------------------------------------------------------------------------
  8718.   def draw_item(index)
  8719.     actor = $game_party.members[index]
  8720.     enabled = $game_party.battle_members.include?(actor)
  8721.     rect = item_rect(index)
  8722.     draw_item_background(index)
  8723.     draw_actor_face(actor, rect.x + 1, rect.y + 1, enabled)
  8724.     self.contents.font.color = Color.new(255,155,55,255)
  8725.     draw_text(rect.x + 60,rect.y + 23,64,32,"LV",2)
  8726.     draw_text(rect.x + 60,rect.y + 43,64,32,"HP",2)
  8727.     draw_text(rect.x + 60,rect.y + 63,64,32,"MP",2)
  8728.  
  8729.     draw_text(rect.x + 140,rect.y + 23,64,32,"Atk",2)
  8730.     draw_text(rect.x + 140,rect.y + 43,64,32,"Def",2)
  8731.     draw_text(rect.x + 140,rect.y + 63,64,32,"Agi",2)   
  8732.  
  8733.     draw_text(rect.x + 220,rect.y + 23,64,32,"Mag",2)
  8734.     draw_text(rect.x + 220,rect.y + 43,64,32,"Mdf",2)
  8735.     draw_text(rect.x + 220,rect.y + 63,64,32,"Luk",2)      
  8736.  
  8737.     self.contents.font.color = Color.new(255,255,255,255)
  8738.     draw_text(rect.x + 105,rect.y,105,32,actor.name,0)
  8739.  
  8740.     draw_text(rect.x + 105,rect.y + 23,64,32,actor.level,2)
  8741.     draw_text(rect.x + 105,rect.y + 43,64,32,actor.mhp,2)
  8742.     draw_text(rect.x + 105,rect.y + 63,64,32,actor.mmp,2)   
  8743.  
  8744.  
  8745.     draw_text(rect.x + 185,rect.y + 23,64,32,actor.atk,2)
  8746.     draw_text(rect.x + 185,rect.y + 43,64,32,actor.def,2)
  8747.     draw_text(rect.x + 185,rect.y + 63,64,32,actor.agi,2)   
  8748.  
  8749.     draw_text(rect.x + 265,rect.y + 23,64,32,actor.mat,2)
  8750.     draw_text(rect.x + 265,rect.y + 43,64,32,actor.mdf,2)
  8751.     draw_text(rect.x + 265,rect.y + 63,64,32,actor.luk,2)      
  8752.  
  8753.   end
  8754.  
  8755.  
  8756.   #--------------------------------------------------------------------------
  8757.   # ● Draw Item Background
  8758.   #--------------------------------------------------------------------------
  8759.   def draw_item_background(index)
  8760.       if index == @pending_index
  8761.         contents.fill_rect(item_rect(index), pending_color)
  8762.       end
  8763.   end
  8764.  
  8765.   #--------------------------------------------------------------------------
  8766.   # ● Process OK
  8767.   #--------------------------------------------------------------------------
  8768.   def process_ok
  8769.       super
  8770.       $game_party.menu_actor = $game_party.members[index]
  8771.   end
  8772.  
  8773.   #--------------------------------------------------------------------------
  8774.   # ● Select Last
  8775.   #--------------------------------------------------------------------------
  8776.   def select_last
  8777.       select($game_party.menu_actor.index || 0)
  8778.   end
  8779.  
  8780.   #--------------------------------------------------------------------------
  8781.   # ● Pending Index
  8782.   #--------------------------------------------------------------------------
  8783.   def pending_index=(index)
  8784.       last_pending_index = @pending_index
  8785.       @pending_index = index
  8786.       redraw_item(@pending_index)
  8787.       redraw_item(last_pending_index)
  8788.   end
  8789. end
  8790.  
  8791. #==============================================================================
  8792. # ■ Scene_Party
  8793. #==============================================================================
  8794. class Scene_Party
  8795.  
  8796.   #--------------------------------------------------------------------------
  8797.   # ● Create Sprites
  8798.   #--------------------------------------------------------------------------
  8799.   def create_sprites
  8800.       create_menu_background
  8801.       create_layout
  8802.       create_particles
  8803.       create_status_window
  8804.       create_actor_menu
  8805.   end
  8806.  
  8807.   #--------------------------------------------------------------------------
  8808.   # ● Create Status Window
  8809.   #--------------------------------------------------------------------------
  8810.   def create_status_window
  8811.       @status_window = Window_MenuStatus_Party.new(0, 0)
  8812.       command_formation
  8813.   end  
  8814.  
  8815.   #--------------------------------------------------------------------------
  8816.   # ● Create Actor Menu
  8817.   #--------------------------------------------------------------------------  
  8818.   def create_actor_menu
  8819.       @actor_status = Actor_Menu_Status_Party.new   
  8820.   end
  8821.  
  8822.   #--------------------------------------------------------------------------
  8823.   # ● Command Personal
  8824.   #--------------------------------------------------------------------------
  8825.   def command_personal
  8826.     @status_window.select_last
  8827.     @status_window.activate
  8828.     @status_window.set_handler(:ok,     method(:on_personal_ok))
  8829.     @status_window.set_handler(:cancel, method(:on_personal_cancel))
  8830.   end
  8831.  
  8832.   #--------------------------------------------------------------------------
  8833.   # ● Command Formation
  8834.   #--------------------------------------------------------------------------
  8835.   def command_formation
  8836.     @status_window.index = 0
  8837.     @old_index = @status_window.index
  8838.     @status_window.activate
  8839.     @status_window.set_handler(:ok,     method(:on_formation_ok))
  8840.     @status_window.set_handler(:cancel, method(:on_formation_cancel))
  8841.   end
  8842.  
  8843.   #--------------------------------------------------------------------------
  8844.   # ● On Personal Cancel
  8845.   #--------------------------------------------------------------------------
  8846.   def on_personal_cancel
  8847.       @status_window.unselect
  8848.   end
  8849.  
  8850.   #--------------------------------------------------------------------------
  8851.   # ● On Formation OK
  8852.   #--------------------------------------------------------------------------
  8853.   def on_formation_ok   
  8854.       if @status_window.pending_index >= 0
  8855.         $game_party.swap_order(@status_window.index,
  8856.                                @status_window.pending_index)
  8857.         @status_window.pending_index = -1
  8858.         @status_window.redraw_item(@status_window.index)
  8859.         @actor_status.refresh
  8860.       else
  8861.         @status_window.pending_index = @status_window.index        
  8862.       end
  8863.       @status_window.activate
  8864.   end
  8865.  
  8866.   #--------------------------------------------------------------------------
  8867.   # ● On Formation Cancel
  8868.   #--------------------------------------------------------------------------
  8869.   def on_formation_cancel
  8870.       if @status_window.pending_index >= 0
  8871.          @status_window.pending_index = -1
  8872.          @status_window.activate         
  8873.       else
  8874.          return_scene
  8875.       end
  8876.   end  
  8877.  
  8878.   #--------------------------------------------------------------------------
  8879.   # ● Create Menu Background
  8880.   #--------------------------------------------------------------------------            
  8881.   def create_menu_background
  8882.       @background = Plane.new
  8883.       @background.bitmap = $game_temp.pre_cache_party_menu[0]
  8884.       @background.z = 0
  8885.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  8886.   end   
  8887.  
  8888.   #--------------------------------------------------------------------------
  8889.   # ● Create Layout
  8890.   #--------------------------------------------------------------------------              
  8891.   def create_layout     
  8892.       @layout = Sprite.new
  8893.       @layout.bitmap = $game_temp.pre_cache_party_menu[1]
  8894.       @layout.z = 3
  8895.   end  
  8896.  
  8897.   #--------------------------------------------------------------------------
  8898.   # ● Create Particles
  8899.   #--------------------------------------------------------------------------  
  8900.   def create_particles
  8901.       @particles_sprite =[]
  8902.       for i in 0...NUMBER_OF_PARTICLES
  8903.           @particles_sprite.push(Particles_Menu.new(nil))
  8904.       end
  8905.   end   
  8906.  
  8907. end
  8908.  
  8909. #==============================================================================
  8910. # ■ Scene_Party
  8911. #==============================================================================
  8912. class Scene_Party
  8913.  
  8914.   #--------------------------------------------------------------------------
  8915.   # ● Execute Dispose
  8916.   #--------------------------------------------------------------------------        
  8917.   def execute_dispose
  8918.       Graphics.freeze
  8919.       dispose_background
  8920.       dispose_layout
  8921.       dispose_particles
  8922.       dispose_status_window
  8923.       dispose_actor_menu
  8924.    end
  8925.  
  8926.   #--------------------------------------------------------------------------
  8927.   # ● Dispose Status Window
  8928.   #--------------------------------------------------------------------------           
  8929.    def dispose_status_window
  8930.        @status_window.dispose
  8931.    end
  8932.  
  8933.   #--------------------------------------------------------------------------
  8934.   # ● Dispose Background
  8935.   #--------------------------------------------------------------------------  
  8936.   def dispose_background
  8937.       return if @background == nil
  8938.       @background.dispose
  8939.       @background = nil
  8940.   end   
  8941.  
  8942.   #--------------------------------------------------------------------------
  8943.   # ● Dispose Layout
  8944.   #--------------------------------------------------------------------------               
  8945.   def dispose_layout
  8946.       return if @layout == nil
  8947.       @layout.dispose
  8948.       @layout = nil
  8949.   end  
  8950.  
  8951. #--------------------------------------------------------------------------
  8952. # ● Dispose Particles
  8953. #--------------------------------------------------------------------------   
  8954. def dispose_particles
  8955.      return if @particles_sprite == nil
  8956.      @particles_sprite.each {|sprite| sprite.dispose }
  8957. end     
  8958.  
  8959. #--------------------------------------------------------------------------
  8960. # ● Dispose Actor Menu
  8961. #--------------------------------------------------------------------------   
  8962. def dispose_actor_menu
  8963.      return if @actor_status == nil
  8964.      @actor_status.dispose
  8965. end   
  8966.  
  8967. end
  8968.  
  8969. #==============================================================================
  8970. # ■ Scene_Party
  8971. #==============================================================================
  8972. class Scene_Party
  8973.  
  8974.   #--------------------------------------------------------------------------
  8975.   # ● Update Sprites
  8976.   #--------------------------------------------------------------------------         
  8977.   def update_sprites   
  8978.       update_background
  8979.       update_particles
  8980.       update_status_window
  8981.   end
  8982.  
  8983.   #--------------------------------------------------------------------------
  8984.   # ● Update Background
  8985.   #--------------------------------------------------------------------------              
  8986.   def update_background
  8987.       return if @background == nil
  8988.       @background.ox += @background_scroll[0]
  8989.       @background.oy += @background_scroll[1]
  8990.   end   
  8991.  
  8992.   #--------------------------------------------------------------------------
  8993.   # ● Update Particles
  8994.   #--------------------------------------------------------------------------  
  8995.   def update_particles
  8996.       return if @particles_sprite == nil
  8997.       @particles_sprite.each {|sprite| sprite.update }
  8998.   end
  8999.  
  9000.   #--------------------------------------------------------------------------
  9001.   # ● Update Status Window
  9002.   #--------------------------------------------------------------------------   
  9003.   def update_status_window
  9004.       return if @status_window == nil
  9005.       @status_window.update
  9006.       update_slide(0,@status_window,0)
  9007.       update_slide(1,@status_window,0)
  9008.       @actor = $game_party.members[@status_window.index]
  9009.       @actor_status.update(@actor)
  9010.   end
  9011.  
  9012. #--------------------------------------------------------------------------
  9013. # ● Update Slide
  9014. #--------------------------------------------------------------------------                       
  9015.   def update_slide(type,sprite,np)
  9016.       sprite.contents_opacity += 5
  9017.       cp = type == 0 ? sprite.x : sprite.y
  9018.       sp = 3 + ((cp - np).abs / 10)
  9019.       if cp > np
  9020.          cp -= sp
  9021.          cp = np if cp < np
  9022.       elsif cp < np
  9023.          cp += sp
  9024.          cp = np if cp > np
  9025.       end     
  9026.       sprite.x = cp if type == 0
  9027.       sprite.y = cp if type == 1
  9028.   end   
  9029.  
  9030. end
  9031.  
  9032. #==============================================================================
  9033. # ■ Scene_Party
  9034. #==============================================================================
  9035. class Scene_Party
  9036.  
  9037.   #--------------------------------------------------------------------------
  9038.   # ● Update
  9039.   #--------------------------------------------------------------------------      
  9040.   def update
  9041.       update_sprites
  9042.       update_command
  9043.   end
  9044.  
  9045.   #--------------------------------------------------------------------------
  9046.   # ● Return Scene
  9047.   #--------------------------------------------------------------------------         
  9048.   def return_scene
  9049.       Sound.play_cancel
  9050.       SceneManager.return
  9051.   end
  9052.  
  9053.   #--------------------------------------------------------------------------
  9054.   # ● ON Actor Charge
  9055.   #--------------------------------------------------------------------------
  9056.   def on_actor_change
  9057.       $game_temp.actor_menu_temp = @actor
  9058.       SceneManager.goto(Scene_Status)
  9059.   end  
  9060.  
  9061. end
  9062.  
  9063. #==============================================================================
  9064. # ■ Scene_Party
  9065. #==============================================================================
  9066. class Scene_Party
  9067.  
  9068.   #--------------------------------------------------------------------------
  9069.   # ● Update Command
  9070.   #--------------------------------------------------------------------------      
  9071.   def update_command
  9072.  
  9073.   end
  9074.  
  9075. end
  9076.  
  9077. #==============================================================================
  9078. # ■ Game_Temp
  9079. #==============================================================================
  9080. class Game_Temp
  9081.  
  9082.   #--------------------------------------------------------------------------
  9083.   # ● Execute Pre Cache File Menu
  9084.   #--------------------------------------------------------------------------   
  9085.   def execute_pre_cache_file_menu
  9086.       @pre_cache_file_menu = []
  9087.       @pre_cache_file_menu.push(Cache.menu_save("Background"))
  9088.       @pre_cache_file_menu.push(Cache.menu_save("Layout"))
  9089.       @pre_cache_file_menu.push(Cache.menu_save("File_Mode"))
  9090.       @pre_cache_file_menu.push(Cache.menu_save("File_layout_1"))
  9091.       @pre_cache_file_menu.push(Cache.menu_save("File_layout_2"))
  9092.       @pre_cache_file_menu.push(Cache.menu_save("File_layout_3"))
  9093.       @pre_cache_file_menu.push(Cache.menu_save("Character_Floor"))
  9094.       @pre_cache_file_menu.push(Cache.menu_save("File_Number"))
  9095.   end   
  9096.  
  9097. end
  9098.  
  9099. #==============================================================================
  9100. # ■ Game Temp
  9101. #==============================================================================
  9102. class Game_Temp
  9103.  
  9104.   attr_accessor :scene_save
  9105.   #--------------------------------------------------------------------------
  9106.   # ● Initialize
  9107.   #--------------------------------------------------------------------------
  9108.   alias mog_scene_file_initialize initialize
  9109.   def initialize
  9110.       mog_scene_file_initialize
  9111.       @scene_save = false  
  9112.   end
  9113.  
  9114. end
  9115.  
  9116. #==============================================================================
  9117. # ■ Window_Base
  9118. #==============================================================================
  9119. class Window_Base < Window
  9120.  
  9121.   #--------------------------------------------------------------------------
  9122.   # ● draw_picture_number(x,y,value,file_name,align, space, frame_max ,frame_index)     
  9123.   #--------------------------------------------------------------------------
  9124.   # X - Posição na horizontal
  9125.   # Y - Posição na vertical
  9126.   # VALUE - Valor Numérico
  9127.   # FILE_NAME - Nome do arquivo
  9128.   # ALIGN - Centralizar 0 - Esquerda 1- Centro 2 - Direita  
  9129.   # SPACE - Espaço entre os números.
  9130.   # FRAME_MAX - Quantidade de quadros(Linhas) que a imagem vai ter.
  9131.   # FRAME_INDEX - Definição do quadro a ser utilizado.
  9132.   #--------------------------------------------------------------------------  
  9133.   def draw_picture_number_file(x,y,value, file_name,align = 0, space = 0, frame_max = 1,frame_index = 0)     
  9134.       number_image = $game_temp.pre_cache_file_menu[7]
  9135.       frame_max = 1 if frame_max < 1
  9136.       frame_index = frame_max -1 if frame_index > frame_max -1
  9137.       align = 2 if align > 2
  9138.       cw = number_image.width / 10
  9139.       ch = number_image.height / frame_max
  9140.       h = ch * frame_index
  9141.       number = value.abs.to_s.split(//)
  9142.       case align
  9143.          when 0
  9144.             plus_x = (-cw + space) * number.size
  9145.          when 1
  9146.             plus_x = (-cw + space) * number.size
  9147.             plus_x /= 2
  9148.          when 2  
  9149.             plus_x = 0
  9150.       end
  9151.       for r in 0..number.size - 1      
  9152.           number_abs = number[r].to_i
  9153.           number_rect = Rect.new(cw * number_abs, h, cw, ch)
  9154.           self.contents.blt(plus_x + x + ((cw - space) * r), y , number_image, number_rect)        
  9155.       end   
  9156.   end
  9157.  
  9158.   #--------------------------------------------------------------------------
  9159.   # ● Draw Help Layout
  9160.   #--------------------------------------------------------------------------
  9161.   def draw_face_save(name,x,y,type)
  9162.       if type == 0
  9163.          image_name = name + "_0"
  9164.       elsif type == 1
  9165.          image_name = name + "_1"         
  9166.       else  
  9167.          image_name = name + "_2"
  9168.       end
  9169.       image = Cache.face(image_name)   
  9170.       cw = image.width  
  9171.       ch = image.height
  9172.       src_rect = Rect.new(0, 0, cw, ch)   
  9173.       self.contents.blt(x , y , image, src_rect)  
  9174.       image.dispose
  9175.   end   
  9176.  
  9177.   #--------------------------------------------------------------------------
  9178.   # ● draw_parameter_layout
  9179.   #--------------------------------------------------------------------------  
  9180.   def draw_parameter_layout(x,y)
  9181.       image = $game_temp.pre_cache_file_menu[3]
  9182.       cw = image.width  
  9183.       ch = image.height
  9184.       src_rect = Rect.new(0, 0, cw, ch)   
  9185.       self.contents.blt(x , y , image, src_rect)     
  9186.   end   
  9187.  
  9188.   #--------------------------------------------------------------------------
  9189.   # ● draw_parameter_layout2
  9190.   #--------------------------------------------------------------------------  
  9191.   def draw_parameter_layout2(x,y,type)
  9192.       if type == 0
  9193.          image = $game_temp.pre_cache_file_menu[4]
  9194.       else   
  9195.          image = $game_temp.pre_cache_file_menu[5]
  9196.       end  
  9197.       cw = image.width  
  9198.       ch = image.height
  9199.       src_rect = Rect.new(0, 0, cw, ch)   
  9200.       self.contents.blt(x , y , image, src_rect)     
  9201.   end      
  9202.  
  9203.   #--------------------------------------------------------------------------
  9204.   # ● draw_character_floor
  9205.   #--------------------------------------------------------------------------  
  9206.   def draw_character_floor(x,y)
  9207.       image = $game_temp.pre_cache_file_menu[6]
  9208.       cw = image.width  
  9209.       ch = image.height
  9210.       src_rect = Rect.new(0, 0, cw, ch)   
  9211.       self.contents.blt(x , y , image, src_rect)   
  9212.   end
  9213.  
  9214. end  
  9215.  
  9216. #==============================================================================
  9217. # ■ DataManager
  9218. #==============================================================================
  9219. module DataManager
  9220.  
  9221.   #--------------------------------------------------------------------------
  9222.   # ● Make Save Header
  9223.   #--------------------------------------------------------------------------  
  9224.   def self.make_save_header
  9225.       header = {}
  9226.       header[:characters] = $game_party.characters_for_savefile
  9227.       header[:playtime_s] = $game_system.playtime_s
  9228.       header[:playtime] = $game_system.playtime
  9229.       header[:map_name] = $game_map.display_name
  9230.       header[:members] = $game_party.members
  9231.       header
  9232.   end  
  9233.  
  9234. end  
  9235.  
  9236. #==============================================================================
  9237. # ■ Scene Save
  9238. #==============================================================================
  9239. class Scene_Save < Scene_File
  9240.  
  9241.   #--------------------------------------------------------------------------
  9242.   # ● Initialize
  9243.   #--------------------------------------------------------------------------
  9244.   def initialize
  9245.       $game_temp.scene_save = true
  9246.       super
  9247.   end  
  9248.  
  9249. end  
  9250.  
  9251. #==============================================================================
  9252. # ■ Scene Load
  9253. #==============================================================================
  9254. class Scene_Load < Scene_File
  9255.  
  9256.   #--------------------------------------------------------------------------
  9257.   # ● Initialize
  9258.   #--------------------------------------------------------------------------
  9259.   def initialize
  9260.       $game_temp.scene_save = false
  9261.       super
  9262.   end  
  9263.  
  9264. end
  9265.  
  9266. #==============================================================================
  9267. # ■ Scene_File
  9268. #==============================================================================
  9269. class Scene_File
  9270.   include MOG_MENU_SAVE
  9271.  
  9272. #--------------------------------------------------------------------------
  9273. # ● Main
  9274. #--------------------------------------------------------------------------         
  9275. def main
  9276.      $game_temp.execute_pre_cache_file_menu
  9277.      create_sprites
  9278.      Graphics.transition(10)
  9279.      execute_loop
  9280.      execute_dispose
  9281. end   
  9282.  
  9283. #--------------------------------------------------------------------------
  9284. # ● Execute Loop
  9285. #--------------------------------------------------------------------------           
  9286. def execute_loop
  9287.      loop do
  9288.           Graphics.update
  9289.           Input.update
  9290.           update
  9291.           if SceneManager.scene != self
  9292.               break
  9293.           end
  9294.      end
  9295. end   
  9296.  
  9297. end
  9298.  
  9299. #==============================================================================
  9300. # ■ Window_SaveFile
  9301. #==============================================================================
  9302. class Window_SaveFile_A < Window_Base
  9303.   attr_reader   :filename               
  9304.   attr_reader   :file_exist               
  9305.   attr_reader   :time_stamp              
  9306.   attr_reader   :selected                 
  9307.   attr_reader   :file_index
  9308.  
  9309.   #--------------------------------------------------------------------------
  9310.   # ● Initialize
  9311.   #--------------------------------------------------------------------------
  9312.   def initialize(file_index, filename)
  9313.       super(0, 0,720, 140)
  9314.       self.opacity = 0
  9315.       @file_index = file_index
  9316.       @filename = filename
  9317.       load_gamedata
  9318.       refresh
  9319.       @selected = false
  9320.   end
  9321.  
  9322.   #--------------------------------------------------------------------------
  9323.   # ● load_gamedata
  9324.   #--------------------------------------------------------------------------
  9325.   def load_gamedata
  9326.     @time_stamp = Time.at(0)
  9327.     @file_exist = FileTest.exist?(@filename)
  9328.     if @file_exist
  9329.        header = DataManager.load_header(@file_index)
  9330.        if header == nil
  9331.           @file_exist = false
  9332.           return
  9333.        end  
  9334.        @characters = header[:characters]
  9335.        @total_sec = header[:playtime]
  9336.        @mapname = header[:map_name]
  9337.        @members = header[:members]
  9338.     end
  9339.   end
  9340.  
  9341.   #--------------------------------------------------------------------------
  9342.   # ● Refresh
  9343.   #--------------------------------------------------------------------------
  9344.   def refresh
  9345.       self.contents.clear
  9346.       self.contents.font.color = normal_color
  9347.       xp = 96
  9348.       ex = 60   
  9349.       if @file_exist
  9350.          if @total_sec == nil
  9351.             draw_parameter_layout2(0,50,0)
  9352.             draw_parameter_layout(-10 + xp,0)
  9353.             value = @file_index + 1
  9354.             draw_picture_number_file(13 + xp, 32,value, "File_Number_01",1,0,3,0)           
  9355.             self.contents.draw_text(140, 50, 450, 32, "Error! - Please, dont't use your old Save Files...", 0)
  9356.             return
  9357.         end  
  9358.         draw_parameter_layout2(0,50,0)
  9359.         draw_parameter_layout(-10 + xp,0)
  9360.         value = @file_index + 1
  9361.         draw_picture_number_file(13 + xp, 32,value, "File_Number_01",1,0,3,0)
  9362.         draw_party_characters(180 + xp, 75,ex)
  9363.         draw_playtime(495, 20, contents.width - 4, 2)
  9364.         draw_map_location( 400 + xp,64)
  9365.         draw_level(185 + xp,85,ex)
  9366.         draw_face_save(40 + xp,0)
  9367.       else  
  9368.         draw_parameter_layout2(0,50,1)
  9369.         draw_parameter_layout(-10 + xp,0)
  9370.         value = @file_index + 1
  9371.         draw_picture_number_file(13 + xp, 32,value, "File_Number_01",1,0,3,0)      
  9372.          self.contents.draw_text(260, 50, 120, 32, "No Data", 1)
  9373.       end
  9374.     end
  9375.  
  9376.   #--------------------------------------------------------------------------
  9377.   # ● draw_face
  9378.   #--------------------------------------------------------------------------
  9379.   def draw_face_save(x,y)
  9380.      draw_actor_face(@members[0], x, y)
  9381.   end
  9382.  
  9383.   #--------------------------------------------------------------------------
  9384.   # ● draw_level
  9385.   #--------------------------------------------------------------------------
  9386.   def draw_level(x,y,ex)
  9387.       self.contents.font.color = normal_color   
  9388.       for i in [email]0...@members.size[/email]
  9389.         break if i > 3
  9390.         level = @members[i].level
  9391.         draw_picture_number_file(x + (ex  * i) , y ,level, "File_Number_01",1,0,3,1)
  9392.       end        
  9393.   end
  9394.  
  9395.   #--------------------------------------------------------------------------
  9396.   # ● draw_map_location
  9397.   #--------------------------------------------------------------------------
  9398.   def draw_map_location(x,y)
  9399.       self.contents.font.bold = true
  9400.       self.contents.font.name = "Georgia"
  9401.       self.contents.font.size = 20
  9402.       self.contents.font.italic = true
  9403.       self.contents.draw_text(x, y, 125, 32, @mapname.to_s, 0)
  9404.   end
  9405.   #--------------------------------------------------------------------------
  9406.   # ● draw_party_characters
  9407.   #--------------------------------------------------------------------------
  9408.   def draw_party_characters(x, y,ex)
  9409.       for i in [email]0...@characters.size[/email]
  9410.         break if i > 3
  9411.         name = @characters[i][0]
  9412.         index = @characters[i][1]
  9413.         draw_character_floor(- 35 + x + i * ex,y - 20)      
  9414.         draw_character(name, index, x + i * ex, y)
  9415.       end
  9416.   end
  9417.  
  9418.   #--------------------------------------------------------------------------
  9419.   # ● draw_playtime
  9420.   #--------------------------------------------------------------------------
  9421.   def draw_playtime(x, y, width, align)
  9422.       hour = @total_sec / 60 / 60
  9423.       min = @total_sec / 60 % 60
  9424.       sec = @total_sec % 60
  9425.       time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
  9426.       draw_picture_number_file(x + 18 * 0, y ,0, "File_Number_01",0,0,3,0) if hour < 10
  9427.       draw_picture_number_file(x + 18 * 1, y ,hour, "File_Number_01",0,0,3,0)
  9428.       draw_picture_number_file(x + 18 * 3, y ,0, "File_Number_01",0,0,3,0) if min < 10
  9429.       draw_picture_number_file(x + 18 * 4, y ,min, "File_Number_01",0,0,3,0)
  9430.       draw_picture_number_file(x + 18 * 6, y ,0, "File_Number_01",0,0,3,0) if sec < 10
  9431.       draw_picture_number_file(x + 18 * 7, y ,sec , "File_Number_01",0,0,3,0)     
  9432.   end
  9433.  
  9434.   #--------------------------------------------------------------------------
  9435.   # ● selected
  9436.   #--------------------------------------------------------------------------
  9437.   def selected=(selected)
  9438.       @selected = selected
  9439.   end
  9440. end
  9441.  
  9442. #==============================================================================
  9443. # ■ Scene_File
  9444. #==============================================================================
  9445. class Scene_File
  9446.  
  9447.   #--------------------------------------------------------------------------
  9448.   # ● Create Sprites
  9449.   #--------------------------------------------------------------------------
  9450.   def create_sprites
  9451.       @saving = $game_temp.scene_save
  9452.       @file_max = FILES_MAX
  9453.       @file_max = 1 if FILES_MAX < 1
  9454.       create_background
  9455.       create_layout
  9456.       create_savefile_windows
  9457.       create_particles
  9458.       @index = DataManager.last_savefile_index
  9459.       @check_prev_index = true
  9460.       @savefile_windows[@index].selected = true   
  9461.   end  
  9462.  
  9463.   #--------------------------------------------------------------------------
  9464.   # ● Create Background
  9465.   #--------------------------------------------------------------------------            
  9466.   def create_background
  9467.       @background = Plane.new
  9468.       @background.bitmap = $game_temp.pre_cache_file_menu[0]
  9469.       @background.z = 0
  9470.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  9471.   end   
  9472.  
  9473.   #--------------------------------------------------------------------------
  9474.   # ● Create_Layout
  9475.   #--------------------------------------------------------------------------  
  9476.   def create_layout
  9477.       @layout_01 = Sprite.new  
  9478.       @layout_01.bitmap = $game_temp.pre_cache_file_menu[1]
  9479.       @layout_01.z = 1      
  9480.       @layout_01.blend_type = 1      
  9481.       @save_image = $game_temp.pre_cache_file_menu[2]
  9482.       @layout_02 = Sprite.new  
  9483.       @layout_02.bitmap = Bitmap.new(@save_image.width,@save_image.height)
  9484.       cw = @save_image.width
  9485.       ch = @save_image.height / 2
  9486.       if @saving
  9487.          h = 0
  9488.       else  
  9489.          h = ch
  9490.       end  
  9491.       src_rect = Rect.new(0, h, cw, ch)
  9492.       @layout_02.bitmap.blt(0,0, @save_image, src_rect)      
  9493.       @layout_02.z = 3
  9494.       @layout_02.y = 370
  9495.    end
  9496.  
  9497.   #--------------------------------------------------------------------------
  9498.   # ● Create Save File Window
  9499.   #--------------------------------------------------------------------------
  9500.   def create_savefile_windows
  9501.       @pw_pos = [-160,32]
  9502.       @aw_pos = [-96,160]
  9503.       @nw_pos = [-32,288]
  9504.       @savefile_windows = []
  9505.       for i in 0...@file_max
  9506.           @savefile_windows[i] = Window_SaveFile_A.new(i, DataManager.make_filename(i))
  9507.           @savefile_windows[i].z = 2
  9508.           @savefile_windows[i].visible = false
  9509.           @savefile_windows[i].x = 400
  9510.       end
  9511.       check_active_window
  9512.       @item_max = @file_max
  9513.   end
  9514.  
  9515.   #--------------------------------------------------------------------------
  9516.   # ● Create Particles
  9517.   #--------------------------------------------------------------------------  
  9518.   def create_particles
  9519.       @particles_sprite =[]
  9520.       for i in 0...NUMBER_OF_PARTICLES
  9521.           @particles_sprite.push(Particles_Menu.new(nil))
  9522.       end
  9523.   end   
  9524.  
  9525. end
  9526.  
  9527. #==============================================================================
  9528. # ■ Scene_File
  9529. #==============================================================================
  9530. class Scene_File
  9531.  
  9532.   #--------------------------------------------------------------------------
  9533.   # ● Execute Dispose
  9534.   #--------------------------------------------------------------------------
  9535.   def execute_dispose
  9536.       return if @background == nil
  9537.       Graphics.freeze
  9538.       dispose_background
  9539.       dispose_particles
  9540.       dispose_layout
  9541.       dispose_item_windows
  9542.   end
  9543.  
  9544. #--------------------------------------------------------------------------
  9545. # ● Dispose Layout
  9546. #--------------------------------------------------------------------------  
  9547. def dispose_layout
  9548.      @layout_01.dispose
  9549.      @layout_02.bitmap.dispose
  9550.      @layout_02.dispose  
  9551. end
  9552.  
  9553. #--------------------------------------------------------------------------
  9554. # ● Dispose Background
  9555. #--------------------------------------------------------------------------
  9556. def dispose_background
  9557.      @background.dispose
  9558.      @background = nil   
  9559. end
  9560.  
  9561. #--------------------------------------------------------------------------
  9562. # ● Dispose Particles
  9563. #--------------------------------------------------------------------------   
  9564. def dispose_particles
  9565.      return if @particles_sprite == nil
  9566.      @particles_sprite.each {|sprite| sprite.dispose }
  9567. end   
  9568.  
  9569.   #--------------------------------------------------------------------------
  9570.   # ● Dispose of Save File Window
  9571.   #--------------------------------------------------------------------------
  9572.   def dispose_item_windows
  9573.       for window in @savefile_windows
  9574.           window.dispose
  9575.       end
  9576.   end  
  9577.  
  9578. end
  9579.  
  9580. #==============================================================================
  9581. # ■ Scene_File
  9582. #==============================================================================
  9583. class Scene_File  
  9584.  
  9585.   #--------------------------------------------------------------------------
  9586.   # ● Update Sprites
  9587.   #--------------------------------------------------------------------------
  9588.   def update_sprites
  9589.       check_start_index
  9590.       update_savefile_windows      
  9591.       update_background
  9592.       update_particles      
  9593.   end
  9594.  
  9595.   #--------------------------------------------------------------------------
  9596.   # ● Update Background
  9597.   #--------------------------------------------------------------------------              
  9598.   def update_background
  9599.       return if @background == nil
  9600.       @background.ox += @background_scroll[0]
  9601.       @background.oy += @background_scroll[1]
  9602.   end   
  9603.  
  9604.   #--------------------------------------------------------------------------
  9605.   # ● Update Particles
  9606.   #--------------------------------------------------------------------------  
  9607.   def update_particles
  9608.       return if @particles_sprite == nil
  9609.       @particles_sprite.each {|sprite| sprite.update }
  9610.   end
  9611.  
  9612.   #--------------------------------------------------------------------------
  9613.   # ● check_start_index
  9614.   #--------------------------------------------------------------------------
  9615.   def check_start_index
  9616.       return if @check_prev_index == false
  9617.       @check_prev_index = false
  9618.       check_active_window   
  9619.   end  
  9620.  
  9621.   #--------------------------------------------------------------------------
  9622.   # ● check_active_window   
  9623.   #--------------------------------------------------------------------------
  9624.   def check_active_window   
  9625.       @index = 0 if @index == nil
  9626.       for i in 0...@file_max  
  9627.         @pw = @index - 1
  9628.         @pw = 0 if @pw > @file_max - 1
  9629.         @pw = @file_max- 1 if @pw < 0        
  9630.         @aw = @index
  9631.         @nw = @index + 1
  9632.         @nw = 0 if @nw > @file_max - 1
  9633.         @nw = @file_max - 1  if @nw < 0
  9634.         case @savefile_windows[i].file_index
  9635.            when @pw,@nw
  9636.                 @savefile_windows[i].visible = true
  9637.                 @savefile_windows[i].contents_opacity = 80
  9638.            when @aw  
  9639.                 @savefile_windows[i].visible = true
  9640.                 @savefile_windows[i].contents_opacity = 255
  9641.            else
  9642.                 @savefile_windows[i].visible = false
  9643.         end
  9644.       end         
  9645.   end
  9646.  
  9647.   #--------------------------------------------------------------------------
  9648.   # ● Update Save File Window
  9649.   #--------------------------------------------------------------------------
  9650.   def update_savefile_windows
  9651.       update_slide_window
  9652.       for window in @savefile_windows
  9653.         window.update
  9654.       end
  9655.   end
  9656.  
  9657.   #--------------------------------------------------------------------------
  9658.   # ● update_slide_window
  9659.   #--------------------------------------------------------------------------  
  9660.   def update_slide_window
  9661.       slide_window_x(@pw,@pw_pos[0])
  9662.       slide_window_x(@aw,@aw_pos[0])
  9663.       slide_window_x(@nw,@nw_pos[0])
  9664.       slide_window_y(@pw,@pw_pos[1])
  9665.       slide_window_y(@aw,@aw_pos[1])
  9666.       slide_window_y(@nw,@nw_pos[1])
  9667.   end
  9668.  
  9669.   #--------------------------------------------------------------------------
  9670.   # ● slide_window_x
  9671.   #--------------------------------------------------------------------------   
  9672.   def slide_window_x(i,x_pos)
  9673.       if @savefile_windows[i].x < x_pos
  9674.          @savefile_windows[i].x += 15
  9675.          @savefile_windows[i].x = x_pos if @savefile_windows[i].x > x_pos
  9676.       end  
  9677.       if @savefile_windows[i].x > x_pos
  9678.          @savefile_windows[i].x -= 15
  9679.          @savefile_windows[i].x = x_pos if @savefile_windows[i].x < x_pos        
  9680.        end            
  9681.   end   
  9682.  
  9683.   #--------------------------------------------------------------------------
  9684.   # ● slide_window_y
  9685.   #--------------------------------------------------------------------------   
  9686.   def slide_window_y(i,y_pos)
  9687.       if @savefile_windows[i].y < y_pos
  9688.          @savefile_windows[i].y += 15
  9689.          @savefile_windows[i].y = y_pos if @savefile_windows[i].y > y_pos
  9690.       end  
  9691.       if @savefile_windows[i].y > y_pos
  9692.          @savefile_windows[i].y -= 15
  9693.          @savefile_windows[i].y = y_pos if @savefile_windows[i].y < y_pos        
  9694.        end            
  9695.   end   
  9696.  
  9697.   #--------------------------------------------------------------------------
  9698.   # ● reset_position
  9699.   #--------------------------------------------------------------------------     
  9700.   def reset_position(diretion)
  9701.       check_active_window      
  9702.       case diretion
  9703.          when 0
  9704.             @savefile_windows[@pw].y = -64
  9705.             @savefile_windows[@pw].x = 0
  9706.          when 1  
  9707.             @savefile_windows[@nw].y = 440
  9708.             @savefile_windows[@nw].x = 0
  9709.       end        
  9710.   end   
  9711.  
  9712. end  
  9713.  
  9714. #==============================================================================
  9715. # ■ Scene_File
  9716. #==============================================================================
  9717. class Scene_File  
  9718.  
  9719.   #--------------------------------------------------------------------------
  9720.   # ● Frame Update
  9721.   #--------------------------------------------------------------------------
  9722.   def update
  9723.       update_sprites
  9724.       update_command      
  9725.   end
  9726.  
  9727.   #--------------------------------------------------------------------------
  9728.   # ● Update Command
  9729.   #--------------------------------------------------------------------------
  9730.   def update_command
  9731.       if Input.trigger?(Input::C)
  9732.          on_savefile_ok
  9733.       elsif Input.trigger?(Input::B)
  9734.          Sound.play_cancel
  9735.          return_scene
  9736.       else
  9737.         last_index = @index
  9738.         if Input.trigger?(Input::DOWN)
  9739.            execute_index(1)
  9740.            if @file_max > 2
  9741.               reset_position(1)
  9742.            else
  9743.               reset_position(0)
  9744.            end  
  9745.         end
  9746.         if Input.trigger?(Input::UP)
  9747.            execute_index(-1)
  9748.            reset_position(0)
  9749.         end
  9750.         if @index != last_index
  9751.            Sound.play_cursor
  9752.            @savefile_windows[last_index].selected = false
  9753.            @savefile_windows[@index].selected = true
  9754.         end      
  9755.       end
  9756.   end
  9757.  
  9758.   #--------------------------------------------------------------------------
  9759.   # ● Execute Index
  9760.   #--------------------------------------------------------------------------  
  9761.   def execute_index(value)
  9762.       @index += value
  9763.       @index = @index >= @file_max ? 0 : @index < 0 ? (@file_max - 1) : @index
  9764.   end
  9765.  
  9766. end
  9767.  
  9768. #==============================================================================
  9769. # ■ Game_Temp
  9770. #==============================================================================
  9771. class Game_Temp
  9772.  
  9773.   #--------------------------------------------------------------------------
  9774.   # ● Execute Pre Cache End Menu
  9775.   #--------------------------------------------------------------------------   
  9776.   def execute_pre_cache_end_menu
  9777.       @pre_cache_end_menu = []
  9778.       @pre_cache_end_menu.push(Cache.menu_end("Background"))
  9779.       @pre_cache_end_menu.push(Cache.menu_end("Layout"))
  9780.   end   
  9781.  
  9782. end
  9783.  
  9784. #==============================================================================
  9785. # ■ Scene_End
  9786. #==============================================================================
  9787. class Scene_End
  9788.   include MOG_MENU_END
  9789.   include MOG_MENU_BASE
  9790.  
  9791.   #--------------------------------------------------------------------------
  9792.   # ● Main
  9793.   #--------------------------------------------------------------------------        
  9794.   def main
  9795.       execute_setup
  9796.       execute_loop
  9797.       execute_dispose
  9798.   end  
  9799.  
  9800.   #--------------------------------------------------------------------------
  9801.   # ● Execute Setup
  9802.   #--------------------------------------------------------------------------        
  9803.   def execute_setup
  9804.       @phase = 0
  9805.       create_sprites
  9806.   end
  9807.  
  9808.   #--------------------------------------------------------------------------
  9809.   # ● Execute Lopp
  9810.   #--------------------------------------------------------------------------        
  9811.   def execute_loop
  9812.       Graphics.transition(10)
  9813.       loop do
  9814.          Input.update
  9815.          update
  9816.          Graphics.update
  9817.          break if SceneManager.scene != self
  9818.       end
  9819.   end
  9820.  
  9821. end
  9822.  
  9823. #==============================================================================
  9824. # ■ Scene_End
  9825. #==============================================================================
  9826. class Scene_End
  9827.  
  9828.   #--------------------------------------------------------------------------
  9829.   # ● Create Sprites
  9830.   #--------------------------------------------------------------------------
  9831.   def create_sprites
  9832.       create_menu_background
  9833.       create_layout
  9834.       create_particles
  9835.       create_command_window
  9836.   end
  9837.  
  9838.   #--------------------------------------------------------------------------
  9839.   # ● Create Menu Background
  9840.   #--------------------------------------------------------------------------            
  9841.   def create_menu_background
  9842.       @background = Plane.new
  9843.       @background.bitmap = $game_temp.pre_cache_end_menu[0]
  9844.       @background.z = 0
  9845.       @background_scroll = [BACKGROUND_SCROLL_SPEED[0],BACKGROUND_SCROLL_SPEED[1]]
  9846.   end   
  9847.  
  9848.   #--------------------------------------------------------------------------
  9849.   # ● Create Layout
  9850.   #--------------------------------------------------------------------------              
  9851.   def create_layout     
  9852.       @layout = Sprite.new
  9853.       @layout.bitmap = $game_temp.pre_cache_end_menu[1]
  9854.       @layout.z = 3
  9855.   end  
  9856.  
  9857.   #--------------------------------------------------------------------------
  9858.   # ● Create Particles
  9859.   #--------------------------------------------------------------------------  
  9860.   def create_particles
  9861.       @particles_sprite =[]
  9862.       for i in 0...NUMBER_OF_PARTICLES
  9863.           @particles_sprite.push(Particles_Menu.new(nil))
  9864.       end
  9865.   end   
  9866.  
  9867.   #--------------------------------------------------------------------------
  9868.   # ● Create Command Window
  9869.   #--------------------------------------------------------------------------
  9870.   def create_command_window
  9871.       @command_window = Window_GameEnd.new
  9872.       @command_window.set_handler(:to_title, method(:command_to_title))
  9873.       @command_window.set_handler(:shutdown, method(:command_shutdown))
  9874.       @command_window.set_handler(:cancel,   method(:return_scene))
  9875.   end  
  9876.  
  9877. end
  9878.  
  9879. #==============================================================================
  9880. # ■ Scene_End
  9881. #==============================================================================
  9882. class Scene_End
  9883.  
  9884.   #--------------------------------------------------------------------------
  9885.   # ● Execute Dispose
  9886.   #--------------------------------------------------------------------------        
  9887.   def execute_dispose
  9888.       Graphics.freeze
  9889.       dispose_background
  9890.       dispose_layout
  9891.       dispose_particles
  9892.       dispose_command_window
  9893.    end
  9894.  
  9895.   #--------------------------------------------------------------------------
  9896.   # ● Dispose Background
  9897.   #--------------------------------------------------------------------------  
  9898.   def dispose_background
  9899.       return if @background == nil
  9900.       @background.dispose
  9901.       @background = nil
  9902.   end
  9903.  
  9904.  
  9905.   #--------------------------------------------------------------------------
  9906.   # ● Dispose Layout
  9907.   #--------------------------------------------------------------------------               
  9908.   def dispose_layout
  9909.       return if @layout == nil
  9910.       @layout.dispose
  9911.       @layout = nil
  9912.   end  
  9913.  
  9914. #--------------------------------------------------------------------------
  9915. # ● Dispose Particles
  9916. #--------------------------------------------------------------------------   
  9917. def dispose_particles
  9918.      return if @particles_sprite == nil
  9919.      @particles_sprite.each {|sprite| sprite.dispose }
  9920. end     
  9921.  
  9922.   #--------------------------------------------------------------------------
  9923.   # ● Dispose Command Window
  9924.   #--------------------------------------------------------------------------
  9925.   def dispose_command_window
  9926.       return if @command_window == nil
  9927.       @command_window.dispose
  9928.   end     
  9929.  
  9930. end
  9931.  
  9932. #==============================================================================
  9933. # ■ Scene_End
  9934. #==============================================================================
  9935. class Scene_End
  9936.  
  9937.   #--------------------------------------------------------------------------
  9938.   # ● Update Sprites
  9939.   #--------------------------------------------------------------------------         
  9940.   def update_sprites   
  9941.       update_background
  9942.       update_particles     
  9943.       update_command_window
  9944.   end
  9945.  
  9946.   #--------------------------------------------------------------------------
  9947.   # ● Update Background
  9948.   #--------------------------------------------------------------------------              
  9949.   def update_background
  9950.       return if @background == nil
  9951.       @background.ox += @background_scroll[0]
  9952.       @background.oy += @background_scroll[1]
  9953.   end   
  9954.  
  9955.   #--------------------------------------------------------------------------
  9956.   # ● Update Particles
  9957.   #--------------------------------------------------------------------------  
  9958.   def update_particles
  9959.       return if @particles_sprite == nil
  9960.       @particles_sprite.each {|sprite| sprite.update }
  9961.   end
  9962.  
  9963.   #--------------------------------------------------------------------------
  9964.   # ● Update Command Window
  9965.   #--------------------------------------------------------------------------
  9966.   def update_command_window
  9967.       return if @command_window == nil
  9968.       @command_window.update
  9969.   end      
  9970.  
  9971. end
  9972.  
  9973. #==============================================================================
  9974. # ■ Scene_End
  9975. #==============================================================================
  9976. class Scene_End
  9977.  
  9978.   #--------------------------------------------------------------------------
  9979.   # ● Update
  9980.   #--------------------------------------------------------------------------      
  9981.   def update
  9982.       update_sprites
  9983.       update_command
  9984.   end
  9985.  
  9986.   #--------------------------------------------------------------------------
  9987.   # ● Return Scene
  9988.   #--------------------------------------------------------------------------         
  9989.   def return_scene
  9990.       Sound.play_cancel
  9991.       SceneManager.return
  9992.   end
  9993.  
  9994.   #--------------------------------------------------------------------------
  9995.   # ● ON Actor Charge
  9996.   #--------------------------------------------------------------------------
  9997.   def on_actor_change
  9998.       $game_temp.actor_menu_temp = @actor
  9999.       SceneManager.goto(Scene_Status)
  10000.   end  
  10001.  
  10002. end
  10003.  
  10004. #==============================================================================
  10005. # ■ Scene_End
  10006. #==============================================================================
  10007. class Scene_End
  10008.  
  10009.   #--------------------------------------------------------------------------
  10010.   # ● Update Command
  10011.   #--------------------------------------------------------------------------      
  10012.   def update_command   
  10013.   end
  10014.  
  10015. end
  10016.  
  10017. $mog_rgss3_monogatari = true
求大神解决 !在商店购买装备会出现报错!   

)MTND]1PMD5KPMPMV)GUQV1.jpg (19.3 KB, 下载次数: 2)

)MTND]1PMD5KPMPMV)GUQV1.jpg
你的意思就是要打架咯?

Lv1.梦旅人

梦石
0
星屑
199
在线时间
248 小时
注册时间
2012-4-29
帖子
386
10
 楼主| 发表于 2013-11-21 21:21:10 | 只看该作者
tan12345 发表于 2013-11-21 13:41
给你个治标不治本的方法:第一个脚本,报错那一行(6793行),改成这样试试:
@actor ? @actor.equip_slots ...

好吧 谢谢  不过还是报错   话说好卡   这贴!   我关贴先!
你的意思就是要打架咯?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
9
发表于 2013-11-21 13:41:51 | 只看该作者
给你个治标不治本的方法:第一个脚本,报错那一行(6793行),改成这样试试:
@actor ? @actor.equip_slots.size.to_i : 0
不行我也没办法了。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22878
在线时间
8634 小时
注册时间
2011-12-31
帖子
3367
8
发表于 2013-11-21 12:51:56 | 只看该作者
貼脚本上来也没用,論壇會加止url的東西
根本測試不了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
199
在线时间
248 小时
注册时间
2012-4-29
帖子
386
7
 楼主| 发表于 2013-11-21 12:14:31 | 只看该作者
绿坝 发表于 2013-11-21 12:08
一万多行的脚本,我连打字都开始卡了。

的确好卡   不好解决的话  我会速度关贴的!
你的意思就是要打架咯?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
199
在线时间
248 小时
注册时间
2012-4-29
帖子
386
6
 楼主| 发表于 2013-11-21 12:11:13 | 只看该作者
tan12345 发表于 2013-11-21 09:10
你只是单独使用了这个脚本吗?

不是  他和商店脚本不兼容 !这个脚本
  1. #==============================================================================
  2. # ■ VXAce-RGSS3-30 マルチカテゴリショップ [Ver.1.0.0]       by Claimh
  3. #------------------------------------------------------------------------------
  4. # カテゴリ分類を細分化できるショップです。
  5. #<機能概要>
  6. #・購入・売却リストをカテゴリ分類する
  7. #・武器タイプ・防具タイプで分類する
  8. #・アクターが装備可能な武器・防具で分類する
  9. #・ショップ画面からの装備変更
  10. #・購入した装備品をすぐに装備する
  11. #・購入・売却不可のアイテムを設定できる
  12. #・購入・売却の価格レートの変更
  13. #------------------------------------------------------------------------------
  14. # <操作>
  15. # Cボタン      : 購入/売買
  16. # ←/→ボタン  : アクター情報切り替え
  17. # ↑/↓ボタン  : 購入/売却数 ±10
  18. # L/Rボタン    : カテゴリ切り替え
  19. #------------------------------------------------------------------------------
  20. # <メモ欄設定>
  21. # ・売却不可 : <not_sell>
  22. #------------------------------------------------------------------------------
  23. #<売買不可設定>
  24. # ・購入不可アイテム追加
  25. #    $game_system.shop.buy.add_ng_item(type, id)
  26. #      type : 種別(0:アイテム, 1:武器, 2:防具)
  27. #      id   : ID
  28. # ・購入不可アイテム解除
  29. #    $game_system.shop.buy.del_ng_item(type, id)
  30. # ・売却不可アイテム追加
  31. #    $game_system.shop.sell.add_ng_item(type, id)
  32. # ・売却不可アイテム解除
  33. #    $game_system.shop.sell.del_ng_item(type, id)
  34. #------------------------------------------------------------------------------
  35. # <全体売買レート変更>
  36. #・購入レート
  37. #  $game_system.shop.buy.rate   = レート(%)
  38. #・売却レート
  39. #  $game_system.shop.sell.rate  = レート(%)
  40. #------------------------------------------------------------------------------
  41. # <個別売買レート変更>
  42. #※全体レートよりも個別レートが優先されます。(全体×個別というレート計算はしません)
  43. #・個別購入レート
  44. #  $game_system.shop.buy.item_rate(type, id, rate)
  45. #      type : 種別(0:アイテム, 1:武器, 2:防具)
  46. #      id   : ID
  47. #      rate : レート(%)
  48. #・個別売却レート
  49. #  $game_system.shop.sell.item_rate(type, id, rate)
  50. #・個別購入レート情報削除
  51. #  $game_system.shop.buy.del_item_rate(type, id)
  52. #・個別売却レート情報削除
  53. #  $game_system.shop.sell.del_item_rate(type, id)
  54. #------------------------------------------------------------------------------
  55. # <合計金額取得>
  56. #・購入合計:  $game_system.shop.buy.gold
  57. #・売却合計:  $game_system.shop.sell.gold
  58. #------------------------------------------------------------------------------
  59. # <購入不可判定について>
  60. # 以下のいずれかに当てはまる場合は購入不可
  61. #   ・お金が足りない
  62. #   ・アイテムの最大数超過($game_party.item_max?)
  63. #   ・購入不可アイテムの対象($game_system.shop.buy.add_ng_item)
  64. #------------------------------------------------------------------------------
  65. # <売却不可判定について>
  66. # 以下のいずれかに当てはまる場合は売却不可
  67. #   ・データベース上の値段が0 (※レート計算で値段が0になる場合は除く)
  68. #   ・メモ欄に <not_sell>指定がある
  69. #   ・売却不可アイテムの対象($game_system.shop.sell.add_ng_item)
  70. #------------------------------------------------------------------------------
  71. # <アクターが装備可能な武器・防具で分類>
  72. # BUY_CTにACTORを入れた時の動作
  73. #   ・カテゴリ切り替えでACTORカテゴリに変わった時にアクターステータスも切り替え
  74. #   ・アイコンはキャラクターを表示
  75. #------------------------------------------------------------------------------
  76. # <購入した装備品をすぐに装備する>
  77. # アクターステータスウィンドウに表示されているアクターが装備できる武器・防具を
  78. # 購入したときに装備するか否かの選択が表示されます。
  79. #==============================================================================

  80. module ExShop
  81.   ALL=0;ITEM=1;WEAPON=2;ARMOR=3;KEY=4;ACTOR=5
  82.   #----------------------------------------------------------------------------
  83.   # レート設定
  84.   #----------------------------------------------------------------------------
  85.   # 初期購入レート(%)
  86.   BUY_RATE  = 100.0
  87.   # 初期売却レート(%)
  88.   SELL_RATE = 60.0

  89.   # 値段指定あり時も購入レートを適応する
  90.   USE_P_RATE = true

  91.   #----------------------------------------------------------------------------
  92.   # 分類設定
  93.   #----------------------------------------------------------------------------
  94.   # 購入分類設定
  95.   #   ALL     : すべて
  96.   #   ITEM    : アイテム
  97.   #   WEAPON  : 武器
  98.   #   ARMOR   : 防具
  99.   #   ACTOR   : アクターが装備できる武器・防具
  100.   BUY_CT = [ALL, ITEM, WEAPON, ARMOR]
  101.   #BUY_CT = [ALL, ITEM, ACTOR]  # アクター装備別の例

  102.   # 売却分類設定
  103.   #   ALL     : すべて
  104.   #   ITEM    : アイテム
  105.   #   WEAPON  : 武器
  106.   #   ARMOR   : 防具
  107.   #   KEY     : 大事なもの
  108.   SELL_CT = [ALL, ITEM, WEAPON, ARMOR, KEY]


  109.   # 武器をさらに分類する
  110.   # (分類設定のWEAPONを武器タイプで分類します)
  111.   USE_W_TYPE =  false
  112.   # 防具をさらに分類する
  113.   # (分類設定のARMORを防具タイプ/防具種別で分類します)
  114.   #   0 : 分類しない
  115.   #   1 : 防具タイプで分類
  116.   #   2 : 装備タイプ(盾/頭/身体/装飾品)で分類
  117.   USE_A_TYPE = 0


  118.   # アイコン設定
  119.   #         [ALL用, ITEM用, WEAPON用, ARMOR用, KEY用]
  120.   CT_ICON = [  4608,    4609,      4610,     4611,   4612]
  121.   # 武器タイプ アイコン設定
  122.   #           [0, 武器タイプ1, 武器タイプ2, …]
  123.   CT_W_ICON = [0, 4634, 4633, 146, 147, 148, 149, 150, 151, 152, 153]
  124.   # 防具タイプ アイコン設定
  125.   #           [0, 防具タイプ1, 防具タイプ2, …]
  126.   CT_A_ICON = [0, 4632, 4631, 169, 170, 160, 161]
  127.   # 防具種別 アイコン設定
  128.   #           [0,  盾, 頭, 身体, 装飾品]
  129.   CT_E_ICON = [0, 4630, 4629,  169,    176]


  130.   #----------------------------------------------------------------------------
  131.   # 表示設定
  132.   #----------------------------------------------------------------------------
  133.   # 購入不可アイテムの値段表示(""の時は値段を表示)
  134.   V_N_BUY = "售价"

  135.   #----------------------------------------------------------------------------
  136.   # レイアウト設定
  137.   #----------------------------------------------------------------------------
  138.   # 所持金ウィンドウを左下に配置する
  139.   #   true  : 左下に配置(カテゴリ多用)
  140.   #   false : 右上に配置(カテゴリ小用)
  141.   GOLD_LD = false
  142. end



  143. module ExShop
  144.   #--------------------------------------------------------------------------
  145.   # ● 購入レート変換(購入価格計算)
  146.   #--------------------------------------------------------------------------
  147.   def self.buy_price(item, price, fix=false)
  148.     return price if fix and !USE_P_RATE
  149.     $game_system.shop.buy.price(item_type(item), item.id, price)
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # ● 売却レート変換(売却価格計算)
  153.   #--------------------------------------------------------------------------
  154.   def self.sell_price(item, price)
  155.     $game_system.shop.sell.price(item_type(item), item.id, price)
  156.   end
  157.   #--------------------------------------------------------------------------
  158.   # ● atype => symbol
  159.   #--------------------------------------------------------------------------
  160.   def self.actor_sym
  161.     $game_party.members.collect {|a| a.id.to_s.to_sym }
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ● CT設定 => symbol
  165.   #--------------------------------------------------------------------------
  166.   def self.ct_sym(ct)
  167.     ct.inject([]) do |r, c|
  168.       case c
  169.       when WEAPON;  r += wtype_sym
  170.       when ARMOR;   r += atype_sym
  171.       when ACTOR;   r += actor_sym
  172.       else;         r.push([:all, :item, :weapon, :armor, :key_item][c])
  173.       end
  174.     end
  175.   end
  176.   #--------------------------------------------------------------------------
  177.   # ● wtype => symbol
  178.   #--------------------------------------------------------------------------
  179.   def self.wtype_sym
  180.     return [:weapon] unless ExShop::USE_W_TYPE
  181.     $data_system.weapon_types[1, $data_system.weapon_types.size].collect {|a| a.to_sym}
  182.   end
  183.   #--------------------------------------------------------------------------
  184.   # ● atype => symbol
  185.   #--------------------------------------------------------------------------
  186.   def self.atype_sym
  187.     case ExShop::USE_A_TYPE
  188.     when 1  # 防具タイプ
  189.       $data_system.armor_types[1, $data_system.armor_types.size].collect {|a| a.to_sym}
  190.     when 2  # 装備タイプ
  191.       [:shield, :helmet, :clothes, :accessory]
  192.     else
  193.       [:armor]
  194.     end
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ● symbol => wtype or atype
  198.   #--------------------------------------------------------------------------
  199.   def self.sym_type(sym)
  200.     str = sym.id2name
  201.     return WEAPON if $data_system.weapon_types.include?(str)
  202.     return ARMOR  if $data_system.armor_types.include?(str)
  203.     ACTOR
  204.   end
  205.   #--------------------------------------------------------------------------
  206.   # ● sym => wtype
  207.   #--------------------------------------------------------------------------
  208.   def self.sym_wtype(sym)
  209.     $data_system.weapon_types.index(sym.id2name)
  210.   end
  211.   #--------------------------------------------------------------------------
  212.   # ● sym => atype
  213.   #--------------------------------------------------------------------------
  214.   def self.sym_atype(sym)
  215.     $data_system.armor_types.index(sym.id2name)
  216.   end
  217.   #--------------------------------------------------------------------------
  218.   # ● symbol => 設定
  219.   #--------------------------------------------------------------------------
  220.   def self.sym2id(sym)
  221.     case sym
  222.     when :all;      return ALL
  223.     when :item;     return ITEM
  224.     when :weapon;   return WEAPON
  225.     when :armor;    return ARMOR
  226.     when :key_item; return KEY
  227.     when :shield, :helmet, :clothes, :accessory;  return ARMOR
  228.     else  return sym_type(sym)
  229.     end
  230.   end
  231.   #--------------------------------------------------------------------------
  232.   # ● symbol => アイコン
  233.   #--------------------------------------------------------------------------
  234.   def self.sym2icon(sym)
  235.     case sym
  236.     when :all;        return CT_ICON[ALL]
  237.     when :none;       return 0
  238.     when :item;       return CT_ICON[ITEM]
  239.     when :weapon;     return CT_ICON[WEAPON]
  240.     when :armor;      return CT_ICON[ARMOR]
  241.     when :key_item;   return CT_ICON[KEY]
  242.     when :shield;     return CT_E_ICON[1]
  243.     when :helmet;     return CT_E_ICON[2]
  244.     when :clothes;    return CT_E_ICON[3]
  245.     when :accessory;  return CT_E_ICON[4]
  246.     else
  247.       case sym_type(sym)
  248.       when WEAPON;  return CT_W_ICON[sym_wtype(sym)]
  249.       when ARMOR;   return CT_A_ICON[sym_atype(sym)]
  250.       when ACTOR;   return 0
  251.       end
  252.     end
  253.   end
  254.   #--------------------------------------------------------------------------
  255.   # ● symbol => Actor
  256.   #--------------------------------------------------------------------------
  257.   def self.sym2actor(sym)
  258.     $game_actors[sym.id2name.to_i]
  259.   end
  260.   #--------------------------------------------------------------------------
  261.   # ● アイテムをリストに含めるかどうか
  262.   #--------------------------------------------------------------------------
  263.   def self.item_include?(sym, item)
  264.     case sym
  265.     when :all
  266.       true
  267.     when :none
  268.       false
  269.     when :item
  270.       item.is_a?(RPG::Item) && !item.key_item?
  271.     when :weapon
  272.       item.is_a?(RPG::Weapon)
  273.     when :armor
  274.       item.is_a?(RPG::Armor)
  275.     when :key_item
  276.       item.is_a?(RPG::Item) && item.key_item?
  277.     when :shield
  278.       item.is_a?(RPG::Armor) && item.etype_id == 1
  279.     when :helmet
  280.       item.is_a?(RPG::Armor) && item.etype_id == 2
  281.     when :clothes
  282.       item.is_a?(RPG::Armor) && item.etype_id == 3
  283.     when :accessory
  284.       item.is_a?(RPG::Armor) && item.etype_id == 4
  285.     else
  286.       case sym_type(sym)
  287.       when WEAPON
  288.         item.is_a?(RPG::Weapon) and item.wtype_id == sym_wtype(sym)
  289.       when ARMOR
  290.         item.is_a?(RPG::Armor)  and item.atype_id == sym_atype(sym)
  291.       when ACTOR
  292.         sym2actor(sym).equippable?(item)
  293.       else
  294.         false
  295.       end
  296.     end
  297.   end
  298.   #--------------------------------------------------------------------------
  299.   # ● アイテムタイプ
  300.   #--------------------------------------------------------------------------
  301.   def self.item_type(item)
  302.     case item
  303.     when RPG::Item;   return 0
  304.     when RPG::Weapon; return 1
  305.     when RPG::Armor;  return 2
  306.     end
  307.   end
  308.   #--------------------------------------------------------------------------
  309.   # ● 購入可否判定
  310.   #--------------------------------------------------------------------------
  311.   def self.buy_enable?(item)
  312.     not $game_system.shop.buy.ng_item?(item_type(item), item.id)
  313.   end
  314.   #--------------------------------------------------------------------------
  315.   # ● 売却可否判定
  316.   #--------------------------------------------------------------------------
  317.   def self.sell_enable?(item)
  318.     not $game_system.shop.sell.ng_item?(item_type(item), item.id)
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   # ● 購入不可文字
  322.   #--------------------------------------------------------------------------
  323.   def self.not_buy(item, price)
  324.     return price if V_N_BUY == ""
  325.     buy_enable?(item) ? price : V_N_BUY
  326.   end
  327. end



  328. #==============================================================================
  329. # ■ RPG::Item
  330. #==============================================================================
  331. class RPG::Item < RPG::UsableItem
  332.   #--------------------------------------------------------------------------
  333.   # ● 売却可能か?
  334.   #--------------------------------------------------------------------------
  335.   def sell?
  336.     @price > 0 and [email protected]?("<not_sell>")
  337.   end
  338. end

  339. #==============================================================================
  340. # ■ RPG::EquipItem
  341. #==============================================================================
  342. class RPG::EquipItem < RPG::BaseItem
  343.   #--------------------------------------------------------------------------
  344.   # ● 売却可能か?
  345.   #--------------------------------------------------------------------------
  346.   def sell?
  347.     @price > 0 and [email protected]?("<not_sell>")
  348.   end
  349. end


  350. #==============================================================================
  351. # ■ ExShop::ShopStatus
  352. #==============================================================================
  353. class ExShop::ShopStatus
  354.   #--------------------------------------------------------------------------
  355.   # ● 公開インスタンス変数
  356.   #--------------------------------------------------------------------------
  357.   attr_reader :buy   # 購入ステータス
  358.   attr_reader :sell  # 売却ステータス
  359.   #--------------------------------------------------------------------------
  360.   # ● オブジェクト初期化
  361.   #--------------------------------------------------------------------------
  362.   def initialize
  363.     reset
  364.   end
  365.   #--------------------------------------------------------------------------
  366.   # ● リセット
  367.   #--------------------------------------------------------------------------
  368.   def reset
  369.     @buy  = Status.new(ExShop::BUY_RATE)
  370.     @sell = Status.new(ExShop::SELL_RATE)
  371.   end
  372.   #--------------------------------------------------------------------------
  373.   # ● レートリセット
  374.   #--------------------------------------------------------------------------
  375.   def rate_reset
  376.     @buy.rate  = ExShop::BUY_RATE
  377.     @sell.rate = ExShop::SELL_RATE
  378.     @buy.i_rate_reset
  379.     @sell.i_rate_reset
  380.   end
  381.   #--------------------------------------------------------------------------
  382.   # ● 売買不可アイテム情報リセット
  383.   #--------------------------------------------------------------------------
  384.   def ng_reset
  385.     @buy.ng_reset
  386.     @sell.ng_reset
  387.   end

  388.   #============================================================================
  389.   # ■ Status  : 売買情報
  390.   #============================================================================
  391.   class Status
  392.     attr_accessor :rate        # レート
  393.     attr_accessor :gold        # 金額
  394.     #------------------------------------------------------------------------
  395.     # ● オブジェクト初期化
  396.     #------------------------------------------------------------------------
  397.     def initialize(rate)
  398.       @rate = rate
  399.       [url=home.php?mod=space&uid=236945]@gold[/url] = 0
  400.       i_rate_reset
  401.       ng_reset
  402.     end
  403.     #------------------------------------------------------------------------
  404.     # ● 個別レート設定リセット
  405.     #------------------------------------------------------------------------
  406.     def i_rate_reset
  407.       @i_rate = []
  408.     end
  409.     #------------------------------------------------------------------------
  410.     # ● 売買不可アイテムリセット
  411.     #------------------------------------------------------------------------
  412.     def ng_reset
  413.       @ng_items = []
  414.     end
  415.     #------------------------------------------------------------------------
  416.     # ● レート: 百分率 => 浮動小数点数
  417.     #------------------------------------------------------------------------
  418.     def rate_f
  419.       (@rate / 100.0)
  420.     end
  421.     #------------------------------------------------------------------------
  422.     # ● アイテム価格計算
  423.     #------------------------------------------------------------------------
  424.     def price(type, id, price)
  425.       (price * i_rate_f(type, id)).truncate
  426.     end
  427.     #------------------------------------------------------------------------
  428.     # ● 対象アイテムレート取得
  429.     #------------------------------------------------------------------------
  430.     def i_rate_f(type, id)
  431.       it = find_i_rate(type, id)
  432.       it.nil? ? rate_f : it.rate_f
  433.     end
  434.     #------------------------------------------------------------------------
  435.     # ● 対象アイテムレート取得
  436.     #------------------------------------------------------------------------
  437.     def i_rate(type, id)
  438.       it = find_i_rate(type, id)
  439.       it.nil? ? @rate : it.rate
  440.     end
  441.     #------------------------------------------------------------------------
  442.     # ● 個別レート設定アイテム?
  443.     #------------------------------------------------------------------------
  444.     def item_rate?(type, id)
  445.       find_i_rate(type, id) != nil
  446.     end
  447.     #------------------------------------------------------------------------
  448.     # ● 個別レート設定アイテム情報取得
  449.     #------------------------------------------------------------------------
  450.     def find_i_rate(type, id)
  451.       @i_rate.find {|a| a.include?(type, id)}
  452.     end
  453.     #------------------------------------------------------------------------
  454.     # ● 個別レート設定
  455.     #------------------------------------------------------------------------
  456.     def item_rate(type, id, rate)
  457.       it = find_i_rate(type, id)
  458.       if it.nil?
  459.         @i_rate.push(Item_Rate.new(type, id, rate))
  460.       else
  461.         it.rate = rate
  462.       end
  463.     end
  464.     #------------------------------------------------------------------------
  465.     # ● 個別レート設定削除
  466.     #------------------------------------------------------------------------
  467.     def del_item_rate(type, id)
  468.       @i_rate.reject! {|item| item.include?(type, id)}
  469.     end
  470.     #------------------------------------------------------------------------
  471.     # ● 売買不可アイテム?
  472.     #------------------------------------------------------------------------
  473.     def ng_item?(type, id)
  474.       @ng_items.any? {|item| item.include?(type, id)}
  475.     end
  476.     #------------------------------------------------------------------------
  477.     # ● 売買不可アイテム追加
  478.     #------------------------------------------------------------------------
  479.     def add_ng_item(type, id)
  480.       return if ng_item?(type, id)
  481.       @ng_items.push(NG_Item.new(type, id))
  482.     end
  483.     #------------------------------------------------------------------------
  484.     # ● 売買不可アイテム解除
  485.     #------------------------------------------------------------------------
  486.     def del_ng_item(type, id)
  487.       @ng_items.reject! {|item| item.include?(type, id)}
  488.     end
  489.     #==========================================================================
  490.     # ■ NG_Item   : 売買不可アイテム情報
  491.     #==========================================================================
  492.     class NG_Item
  493.       #----------------------------------------------------------------------
  494.       # ● オブジェクト初期化
  495.       #      type : 種別(0..RPG:Item, 1..RPG::Weapon, 2..RPG::Armor)
  496.       #      id   : ID
  497.       #----------------------------------------------------------------------
  498.       def initialize(type, id)
  499.         @type = type; @id = id
  500.       end
  501.       #----------------------------------------------------------------------
  502.       # ● 売買不可アイテム?
  503.       #----------------------------------------------------------------------
  504.       def include?(type, id)
  505.         @type == type and @id == id
  506.       end
  507.     end
  508.     #==========================================================================
  509.     # ■ Item_Rate   : アイテム売買レート
  510.     #==========================================================================
  511.     class Item_Rate
  512.       #----------------------------------------------------------------------
  513.       # ● 公開インスタンス変数
  514.       #----------------------------------------------------------------------
  515.       attr_accessor :rate     # レート(%)
  516.       #----------------------------------------------------------------------
  517.       # ● オブジェクト初期化
  518.       #      type : 種別(0..RPG:Item, 1..RPG::Weapon, 2..RPG::Armor)
  519.       #      id   : ID
  520.       #      rate : レート(%)
  521.       #----------------------------------------------------------------------
  522.       def initialize(type, id, rate)
  523.         @type = type; @id = id; @rate = rate
  524.       end
  525.       #----------------------------------------------------------------------
  526.       # ● レート: 百分率 => 浮動小数点数
  527.       #----------------------------------------------------------------------
  528.       def rate_f
  529.         (@rate / 100.0)
  530.       end
  531.       #----------------------------------------------------------------------
  532.       # ● 売買レート対象アイテム?
  533.       #----------------------------------------------------------------------
  534.       def include?(type, id)
  535.         @type == type and @id == id
  536.       end
  537.     end
  538.   end
  539. end


  540. #==============================================================================
  541. # ■ Game_System
  542. #==============================================================================
  543. class Game_System
  544.   #--------------------------------------------------------------------------
  545.   # ● 公開インスタンス変数
  546.   #--------------------------------------------------------------------------
  547.   attr_reader :shop         # ショップ情報
  548.   #--------------------------------------------------------------------------
  549.   # ● オブジェクト初期化
  550.   #--------------------------------------------------------------------------
  551.   alias initialize_shop_ex initialize
  552.   def initialize
  553.     initialize_shop_ex
  554.     @shop = ExShop::ShopStatus.new
  555.   end
  556. end





  557. #==============================================================================
  558. # ■ Window_ExShopCommand
  559. #------------------------------------------------------------------------------
  560. #  ショップ画面で、購入/売却/装備を選択するウィンドウです。
  561. #==============================================================================
  562. class Window_ExShopCommand < Window_Command
  563.   #--------------------------------------------------------------------------
  564.   # ● クラス変数
  565.   #--------------------------------------------------------------------------
  566.   @@last_command_symbol = :buy
  567.   #--------------------------------------------------------------------------
  568.   # ● オブジェクト初期化
  569.   #--------------------------------------------------------------------------
  570.   def initialize(window_width, purchase_only)
  571.     @window_width = window_width
  572.     @purchase_only = purchase_only
  573.     super(0, 0)
  574.     select_last
  575.   end
  576.   #--------------------------------------------------------------------------
  577.   # ● ウィンドウ幅の取得
  578.   #--------------------------------------------------------------------------
  579.   def window_width
  580.     @window_width
  581.   end
  582.   #--------------------------------------------------------------------------
  583.   # ● 表示行数の取得
  584.   #--------------------------------------------------------------------------
  585.   def visible_line_number
  586.     4
  587.   end
  588.   #--------------------------------------------------------------------------
  589.   # ● コマンドリストの作成
  590.   #--------------------------------------------------------------------------
  591.   def make_command_list
  592.     add_command(Vocab::ShopBuy,    :buy)
  593.     add_command(Vocab::ShopSell,   :sell,   !@purchase_only)
  594.     add_command(Vocab.equip,       :equip,  $game_party.members.size > 0)
  595.     add_command(Vocab::ShopCancel, :cancel)
  596.   end
  597.   #--------------------------------------------------------------------------
  598.   # ● 決定ボタンが押されたときの処理
  599.   #--------------------------------------------------------------------------
  600.   def process_ok
  601.     @@last_command_symbol = (current_symbol == :equip ? :equip : :buy)
  602.     super
  603.   end
  604.   #--------------------------------------------------------------------------
  605.   # ● 前回の選択位置を復帰
  606.   #--------------------------------------------------------------------------
  607.   def select_last
  608.     select_symbol(@@last_command_symbol)
  609.   end
  610. end


  611. #==============================================================================
  612. # ■ Window_ExShopCategory
  613. #------------------------------------------------------------------------------
  614. #  ショップ画面で、カテゴリを選択するウィンドウです。
  615. #==============================================================================
  616. class Window_ExShopCategory < Window_HorzCommand
  617.   #--------------------------------------------------------------------------
  618.   # ● 公開インスタンス変数
  619.   #--------------------------------------------------------------------------
  620.   attr_reader   :item_window
  621.   #--------------------------------------------------------------------------
  622.   # ● オブジェクト初期化
  623.   #--------------------------------------------------------------------------
  624.   def initialize(x, y, w)
  625.     @win_width = w
  626.     super(x, y)
  627.   end
  628.   #--------------------------------------------------------------------------
  629.   # ● ウィンドウ幅の取得
  630.   #--------------------------------------------------------------------------
  631.   def window_width
  632.     @win_width
  633.   end
  634.   #--------------------------------------------------------------------------
  635.   # ● 桁数の取得
  636.   #--------------------------------------------------------------------------
  637.   def col_max
  638.     ExShop::GOLD_LD ? 10 : 5
  639.   end
  640.   #--------------------------------------------------------------------------
  641.   # ● 先頭の桁の設定
  642.   #--------------------------------------------------------------------------
  643.   def top_col=(col)
  644.     col = 0 if col < 0
  645. #    col = col_max - 1 if col > col_max - 1
  646.     self.ox = col * (item_width + spacing)
  647.   end
  648.   #--------------------------------------------------------------------------
  649.   # ● シンボルリスト
  650.   #--------------------------------------------------------------------------
  651.   def symlist
  652.     [:all, :item, :weapon, :armor, :key_item]
  653.   end
  654.   #--------------------------------------------------------------------------
  655.   # ● コマンドリストの作成
  656.   #--------------------------------------------------------------------------
  657.   def make_command_list
  658.     symlist.each {|s| add_command(ExShop.sym2icon(s), s, true, ExShop.sym2id(s))}
  659.   end
  660.   #--------------------------------------------------------------------------
  661.   # ● 項目を描画する矩形の取得
  662.   #--------------------------------------------------------------------------
  663.   def item_rect(index)
  664.     r = super(index)
  665.     r.x += (r.width - 24) / 2
  666.     r.width = 24
  667.     r
  668.   end
  669.   #--------------------------------------------------------------------------
  670.   # ● 項目の描画
  671.   #--------------------------------------------------------------------------
  672.   def draw_item(index)
  673.     r = item_rect(index)
  674.     if @list[index][:ext] == ExShop::ACTOR
  675.       draw_charicon(ExShop.sym2actor(@list[index][:symbol]), r.x, r.y, command_enabled?(index))
  676.     else
  677.       draw_icon(command_name(index), r.x, r.y, command_enabled?(index))
  678.     end
  679.   end
  680.   #--------------------------------------------------------------------------
  681.   # ● 歩行グラフィックの描画
  682.   #--------------------------------------------------------------------------
  683.   def draw_charicon(actor, x, y, enabled)
  684.     return if actor.nil?
  685.     return unless actor.character_name
  686.     bitmap = Cache.character(actor.character_name)
  687.     sign = actor.character_name[/^[\!\$]./]
  688.     if sign && sign.include?('$')
  689.       cw = bitmap.width / 3
  690.       ch = bitmap.height / 4
  691.     else
  692.       cw = bitmap.width / 12
  693.       ch = bitmap.height / 8
  694.     end
  695.     n = actor.character_index
  696.     src_rect = Rect.new((n%4*3+1)*cw + (cw - 20) / 2, (n/4*4)*ch, 20, 20)
  697.     contents.blt(x+2, y+2, bitmap, src_rect)
  698.   end
  699.   #--------------------------------------------------------------------------
  700.   # ● フレーム更新
  701.   #--------------------------------------------------------------------------
  702.   def update
  703.     super
  704.     @item_window.category = current_symbol if @item_window
  705.   end
  706.   #--------------------------------------------------------------------------
  707.   # ● アイテムウィンドウの設定
  708.   #--------------------------------------------------------------------------
  709.   def item_window=(item_window)
  710.     @item_window = item_window
  711.     update
  712.   end
  713. end

  714. #==============================================================================
  715. # ■ Window_ExShopCategory
  716. #------------------------------------------------------------------------------
  717. #  ショップ画面で、購入カテゴリを選択するウィンドウです。
  718. #==============================================================================
  719. class Window_ExShopBuyCt < Window_ExShopCategory
  720.   #--------------------------------------------------------------------------
  721.   # ● シンボルリスト
  722.   #--------------------------------------------------------------------------
  723.   def symlist
  724.     ExShop.ct_sym(ExShop::BUY_CT)
  725.   end
  726. end

  727. #==============================================================================
  728. # ■ Window_ExShopCategory
  729. #------------------------------------------------------------------------------
  730. #  ショップ画面で、売却カテゴリを選択するウィンドウです。
  731. #==============================================================================
  732. class Window_ExShopSellCt < Window_ExShopCategory
  733.   #--------------------------------------------------------------------------
  734.   # ● シンボルリスト
  735.   #--------------------------------------------------------------------------
  736.   def symlist
  737.     ExShop.ct_sym(ExShop::SELL_CT)
  738.   end
  739. end


  740. #==============================================================================
  741. # ■ Sprite_ShopTAG
  742. #==============================================================================
  743. class Sprite_ShopTAG < Sprite
  744.   W = 100
  745.   H = 14
  746.   #--------------------------------------------------------------------------
  747.   # ● オブジェクト初期化
  748.   #--------------------------------------------------------------------------
  749.   def initialize(x, y, tag)
  750.     super(Viewport.new(x, y, W, H))
  751.     self.viewport.z = 200
  752.     self.bitmap = Bitmap.new(W, H)
  753.     self.bitmap.font.size = 12
  754.     self.bitmap.font.color = system_color
  755.     self.bitmap.draw_text(0, 0, W, H, tag)
  756.   end
  757.   #--------------------------------------------------------------------------
  758.   # ● 文字色取得
  759.   #     n : 文字色番号(0..31)
  760.   #--------------------------------------------------------------------------
  761.   def text_color(n)
  762.     Cache.system("Window").get_pixel(64 + (n % 8) * 8, 96 + (n / 8) * 8)
  763.   end
  764.   #--------------------------------------------------------------------------
  765.   # ● 各種文字色の取得
  766.   #--------------------------------------------------------------------------
  767.   def normal_color;      text_color(0);   end;    # 通常
  768.   def system_color;      text_color(16);  end;    # システム
  769. end

  770. #==============================================================================
  771. # ■ Window_ShopBuy
  772. #==============================================================================
  773. class Window_ShopBuy < Window_Selectable
  774.   #--------------------------------------------------------------------------
  775.   # ● オブジェクト初期化
  776.   #--------------------------------------------------------------------------
  777.   def initialize(x, y, width, height, shop_goods)
  778.     super(x, y, width, height)
  779.     @shop_goods = shop_goods
  780.     [url=home.php?mod=space&uid=26101]@Money[/url] = 0
  781.     @category = :none
  782.     refresh
  783.     select(0)
  784.     create_sprites
  785.   end
  786.   #--------------------------------------------------------------------------
  787.   # ● 解放
  788.   #--------------------------------------------------------------------------
  789.   def dispose
  790.     super
  791.     dispose_sprites
  792.   end
  793.   #--------------------------------------------------------------------------
  794.   # ● タグスプライト生成
  795.   #--------------------------------------------------------------------------
  796.   def create_sprites
  797.     @sprite_price = Sprite_ShopTAG.new(self.x+385, self.y+2, "价格")
  798.     @sprite_num   = Sprite_ShopTAG.new(self.x+430, self.y+2, "拥有数目")
  799.   end
  800.   #--------------------------------------------------------------------------
  801.   # ● タグスプライト解放
  802.   #--------------------------------------------------------------------------
  803.   def dispose_sprites
  804.     @sprite_price.dispose
  805.     @sprite_num.dispose
  806.   end
  807.   #--------------------------------------------------------------------------
  808.   # ● ウィンドウの表示/非表示
  809.   #--------------------------------------------------------------------------
  810.   def visible=(flag)
  811.     super(flag)
  812.     @sprite_price.visible = @sprite_num.visible = flag
  813.   end
  814.   #--------------------------------------------------------------------------
  815.   # ● ウィンドウ幅の取得
  816.   #--------------------------------------------------------------------------
  817.   def window_width
  818.     width
  819.   end
  820.   #--------------------------------------------------------------------------
  821.   # ● カテゴリの設定
  822.   #--------------------------------------------------------------------------
  823.   def category=(category)
  824.     return if @category == category
  825.     @category = category
  826.     refresh
  827.     self.oy = 0
  828.   end
  829.   #--------------------------------------------------------------------------
  830.   # ● アイテムリストの作成 <再定義>
  831.   #--------------------------------------------------------------------------
  832.   def make_item_list
  833.     @data = []
  834.     @price = {}
  835.     @shop_goods.each do |goods|
  836.       case goods[0]
  837.       when 0;  item = $data_items[goods[1]]
  838.       when 1;  item = $data_weapons[goods[1]]
  839.       when 2;  item = $data_armors[goods[1]]
  840.       end
  841.       if item
  842.         next unless include?(item)
  843.         @data.push(item)
  844.         i_price = goods[2] == 0 ? item.price : goods[3]
  845.         @price[item] = ExShop.buy_price(item, i_price, goods[2] != 0)
  846.       end
  847.     end
  848.   end
  849.   #--------------------------------------------------------------------------
  850.   # ● アイテムをリストに含めるかどうか
  851.   #--------------------------------------------------------------------------
  852.   def include?(item)
  853.     item && ExShop.item_include?(@category, item)
  854.   end
  855.   #--------------------------------------------------------------------------
  856.   # ● 項目の描画
  857.   #--------------------------------------------------------------------------
  858.   def draw_item(index)
  859.     item = @data[index]
  860.     rect = item_rect(index)
  861.     draw_item_name(item, rect.x, rect.y, enable?(item))
  862.     rect.width -= 64
  863.     draw_text(rect, ExShop.not_buy(item, price(item)), 2)
  864.     rect.width += 60
  865.     draw_text(rect, $game_party.item_number(item), 2)
  866.   end
  867.   #--------------------------------------------------------------------------
  868.   # ● アイテムを許可状態で表示するかどうか
  869.   #--------------------------------------------------------------------------
  870.   def enable?(item)
  871.     item && price(item) <= @money && !$game_party.item_max?(item) && ExShop.buy_enable?(item)
  872.   end
  873.   #--------------------------------------------------------------------------
  874.   # ● ヘルプテキスト更新
  875.   #--------------------------------------------------------------------------
  876.   def update_help
  877.     @help_window.set_item(item) if @help_window
  878.     if @status_window
  879.       @status_window.item = item
  880.       if ExShop.sym2id(@category) == ExShop::ACTOR
  881.         @status_window.page_index = ExShop.sym2actor(@category).index
  882.       end
  883.     end
  884.   end
  885. end


  886. #==============================================================================
  887. # ■ Window_ShopSell
  888. #==============================================================================
  889. class Window_ShopSell < Window_ItemList
  890.   #--------------------------------------------------------------------------
  891.   # ● 公開インスタンス変数
  892.   #--------------------------------------------------------------------------
  893.   attr_reader   :status_window            # ステータスウィンドウ
  894.   #--------------------------------------------------------------------------
  895.   # ● 桁数の取得
  896.   #--------------------------------------------------------------------------
  897.   def col_max
  898.     1
  899.   end
  900.   #--------------------------------------------------------------------------
  901.   # ● アイテムをリストに含めるかどうか
  902.   #--------------------------------------------------------------------------
  903.   def include?(item)
  904.     item && ExShop.item_include?(@category, item)
  905.   end
  906.   #--------------------------------------------------------------------------
  907.   # ● アイテムを許可状態で表示するかどうか
  908.   #--------------------------------------------------------------------------
  909.   def enable?(item)
  910.     item && item.sell? && ExShop.sell_enable?(item)
  911.   end
  912.   #--------------------------------------------------------------------------
  913.   # ● ステータスウィンドウの設定
  914.   #--------------------------------------------------------------------------
  915.   def status_window=(status_window)
  916.     @status_window = status_window
  917.     call_update_help
  918.   end
  919.   #--------------------------------------------------------------------------
  920.   # ● ヘルプテキスト更新
  921.   #--------------------------------------------------------------------------
  922.   def update_help
  923.     super
  924.     @status_window.item = item if @status_window
  925.   end
  926. end



  927. #==============================================================================
  928. # ■ Window_ShopNumber
  929. #==============================================================================
  930. class Window_ShopNumber < Window_Selectable
  931.   #--------------------------------------------------------------------------
  932.   # ● 公開インスタンス変数
  933.   #--------------------------------------------------------------------------
  934.   attr_reader   :number                   # 入力された個数
  935.   #--------------------------------------------------------------------------
  936.   # ● オブジェクト初期化
  937.   #--------------------------------------------------------------------------
  938.   def initialize(x, y, width, height)
  939.     super(x, y, width, height)
  940.     @item = nil
  941.     [url=home.php?mod=space&uid=25307]@Max[/url] = 1
  942.     @price = 0
  943.     [url=home.php?mod=space&uid=27178]@Number[/url] = 1
  944.     @currency_unit = Vocab::currency_unit
  945.   end
  946. end


  947. #==============================================================================
  948. # ■ Window_ShopStatus
  949. #==============================================================================
  950. class Window_ShopStatus < Window_Base
  951.   #--------------------------------------------------------------------------
  952.   # ● オブジェクト初期化
  953.   #--------------------------------------------------------------------------
  954.   def initialize(x, y, width, height, actor)
  955.     super(x, y, width, height)
  956.     @item = nil
  957.     @page_index = actor.index
  958.     self.ox = 1 if page_max > 1
  959.     refresh
  960.   end
  961.   #--------------------------------------------------------------------------
  962.   # ● ウィンドウ内容の幅を計算
  963.   #--------------------------------------------------------------------------
  964.   def contents_width
  965.     super + (page_max > 1 ? 2 : 0)
  966.   end
  967.   #--------------------------------------------------------------------------
  968.   # ● リフレッシュ
  969.   #--------------------------------------------------------------------------
  970.   def refresh
  971.     contents.clear
  972.     actor = current_actor
  973.     enabled = @item.is_a?(RPG::EquipItem) ? actor.equippable?(@item) : false
  974.     draw_actor_face(actor, self.ox + contents_width - 96, 0, enabled)
  975.     change_color(normal_color, enabled)
  976.     draw_text(self.ox, 0, 112, line_height, actor.name)
  977.     return unless @item.is_a?(RPG::EquipItem)
  978.     draw_actor_equip_info(self.ox, line_height*2, actor, enabled)
  979.   end
  980.   #--------------------------------------------------------------------------
  981.   # ● 顔グラフィックの描画
  982.   #--------------------------------------------------------------------------
  983.   def draw_actor_face(actor, x, y, enabled = true)
  984.     bitmap = Cache.face(actor.face_name)
  985.     rect = Rect.new(actor.face_index % 4 * 96,
  986.                     actor.face_index / 4 * 96 + 16, 96, line_height*2)
  987.     contents.blt(x, y, bitmap, rect, enabled ? 255 : translucent_alpha)
  988.     bitmap.dispose
  989.   end
  990.   #--------------------------------------------------------------------------
  991.   # ● アイテムの設定
  992.   #--------------------------------------------------------------------------
  993.   def item=(item)
  994.     @item = item
  995.     refresh
  996.   end
  997.   #--------------------------------------------------------------------------
  998.   # ● 表示中アクター
  999.   #--------------------------------------------------------------------------
  1000.   def current_actor
  1001.     $game_party.members[@page_index]
  1002.   end
  1003.   #--------------------------------------------------------------------------
  1004.   # ● 一度に表示できるアクターの人数
  1005.   #--------------------------------------------------------------------------
  1006.   def page_size
  1007.     return 1
  1008.   end
  1009.   #--------------------------------------------------------------------------
  1010.   # ● 最大ページ数の取得
  1011.   #--------------------------------------------------------------------------
  1012.   def page_max
  1013.     $game_party.members.size
  1014.   end
  1015.   #--------------------------------------------------------------------------
  1016.   # ● アクターの装備情報を描画
  1017.   #--------------------------------------------------------------------------
  1018.   def draw_actor_equip_info(x, y, actor, enabled)
  1019.     item1 = current_equipped_item(actor, @item.etype_id)
  1020.     prms = ExShop::GOLD_LD ? [2, 3, 4, 5] : [2, 3, 4, 5, 6, 7]
  1021.     prms.each do |prm|
  1022.       draw_actor_param_change(x, y, actor, item1, prm, enabled)
  1023.       y += line_height
  1024.     end
  1025.   end
  1026.   #--------------------------------------------------------------------------
  1027.   # ● アクターの能力値変化を描画
  1028.   #--------------------------------------------------------------------------
  1029.   def draw_actor_param_change(x, y, actor, item1, prm_id, enabled)
  1030.     rect = Rect.new(x, y, contents.width - 4 - x, line_height)
  1031.     change = @item.params[prm_id] - (item1 ? item1.params[prm_id] : 0)
  1032.     change_color(system_color, enabled)
  1033.     draw_text(rect, $data_system.terms.params[prm_id])
  1034.     if enabled
  1035.       change_color(param_change_color(change), enabled)
  1036.       draw_text(rect, sprintf("%+d", change), 2)
  1037.     else
  1038.       change_color(normal_color, enabled)
  1039.       draw_text(rect, "―", 2)
  1040.     end
  1041.   end
  1042.   #--------------------------------------------------------------------------
  1043.   # ● フレーム更新
  1044.   #--------------------------------------------------------------------------
  1045.   def update
  1046.     super
  1047.     update_page
  1048.   end
  1049.   #--------------------------------------------------------------------------
  1050.   # ● ページの更新
  1051.   #--------------------------------------------------------------------------
  1052.   def update_page
  1053.     if active && visible && page_max > 1
  1054.       next_page if Input.trigger?(:RIGHT)
  1055.       prev_page if Input.trigger?(:LEFT)
  1056.     end
  1057.   end
  1058.   #--------------------------------------------------------------------------
  1059.   # ● 指定ページへ
  1060.   #--------------------------------------------------------------------------
  1061.   def page_index=(index)
  1062.     @page_index = index
  1063.     refresh
  1064.   end
  1065.   #--------------------------------------------------------------------------
  1066.   # ● 次のページへ
  1067.   #--------------------------------------------------------------------------
  1068.   def next_page
  1069.     Sound.play_cursor
  1070.     @page_index = (@page_index + 1) % page_max
  1071.     refresh
  1072.   end
  1073.   #--------------------------------------------------------------------------
  1074.   # ● 前のページへ
  1075.   #--------------------------------------------------------------------------
  1076.   def prev_page
  1077.     Sound.play_cursor
  1078.     @page_index = (@page_index - 1 + page_max) % page_max
  1079.     refresh
  1080.   end
  1081. end


  1082. #==============================================================================
  1083. # ■ Window_ShopEquip
  1084. #==============================================================================
  1085. class Window_ShopEquip < Window_HorzCommand
  1086.   #--------------------------------------------------------------------------
  1087.   # ● オブジェクト初期化
  1088.   #--------------------------------------------------------------------------
  1089.   def initialize(x, y, width, height)
  1090.     @ww = width
  1091.     @wh = height
  1092.     super(x, y)
  1093.   end
  1094.   #--------------------------------------------------------------------------
  1095.   # ● ウィンドウ幅の取得
  1096.   #--------------------------------------------------------------------------
  1097.   def window_width
  1098.     @ww
  1099.   end
  1100.   #--------------------------------------------------------------------------
  1101.   # ● ウィンドウ高さの取得
  1102.   #--------------------------------------------------------------------------
  1103.   def window_height
  1104.     @wh
  1105.   end
  1106.   #--------------------------------------------------------------------------
  1107.   # ● 桁数の取得
  1108.   #--------------------------------------------------------------------------
  1109.   def col_max
  1110.     2
  1111.   end
  1112.   #--------------------------------------------------------------------------
  1113.   # ● ウィンドウ内容の高さを計算
  1114.   #--------------------------------------------------------------------------
  1115.   def contents_height
  1116.     height - standard_padding * 3
  1117.   end
  1118.   #--------------------------------------------------------------------------
  1119.   # ● 項目を描画する矩形の取得
  1120.   #--------------------------------------------------------------------------
  1121.   def item_rect(index)
  1122.     rect = super
  1123.     rect.y = 0
  1124.     rect.width = 80
  1125.     rect.x = 180 + index * (rect.width + spacing)
  1126.     rect
  1127.   end
  1128.   #--------------------------------------------------------------------------
  1129.   # ● コマンドリストの作成
  1130.   #--------------------------------------------------------------------------
  1131.   def make_command_list
  1132.     add_command("装备",   :equip)
  1133.     add_command("否", :cancel)
  1134.   end
  1135.   #--------------------------------------------------------------------------
  1136.   # ● リフレッシュ
  1137.   #--------------------------------------------------------------------------
  1138.   def set(actor=nil, item=nil)
  1139.     [url=home.php?mod=space&uid=95897]@actor[/url] = actor
  1140.     @item  = item
  1141.     refresh
  1142.   end
  1143.   #--------------------------------------------------------------------------
  1144.   # ● リフレッシュ
  1145.   #--------------------------------------------------------------------------
  1146.   def refresh
  1147.     super
  1148.     if [email protected]? and [email protected]?
  1149.       draw_text(0, 0, 150, line_height,"是否装备?")
  1150.       draw_horz_line(line_height)
  1151.       draw_actor_equip(line_height * 2)
  1152.     end
  1153.   end
  1154.   #--------------------------------------------------------------------------
  1155.   # ● 水平線の描画
  1156.   #--------------------------------------------------------------------------
  1157.   def draw_horz_line(y)
  1158.     line_y = y + line_height / 2 - 1
  1159.     contents.fill_rect(0, line_y, contents_width, 2, line_color)
  1160.   end
  1161.   #--------------------------------------------------------------------------
  1162.   # ● 水平線の色を取得
  1163.   #--------------------------------------------------------------------------
  1164.   def line_color
  1165.     color = normal_color
  1166.     color.alpha = 48
  1167.     color
  1168.   end
  1169.   #--------------------------------------------------------------------------
  1170.   # ● アクターの装備情報を描画
  1171.   #--------------------------------------------------------------------------
  1172.   def draw_actor_equip(y)
  1173.     draw_actor_name(@actor, 4, y)
  1174.     item1 = current_equipped_item
  1175.     draw_item_name(item1, 140, y)
  1176.     draw_actor_param_changes(4, y + line_height, item1)
  1177.   end
  1178.   #--------------------------------------------------------------------------
  1179.   # ● 現在の装備品を取得
  1180.   #    二刀流など、同じ種類の装備が複数ある場合は弱い方を返す。
  1181.   #--------------------------------------------------------------------------
  1182.   def current_equipped_item
  1183.     list = []
  1184.     @actor.equip_slots.each_with_index do |slot_etype_id, i|
  1185.       list.push(@actor.equips[i]) if slot_etype_id == @item.etype_id
  1186.     end
  1187.     list.min_by {|item| item ? item.params[param_id] : 0 }
  1188.   end
  1189.   #--------------------------------------------------------------------------
  1190.   # ● 選択中のアイテムに対応する能力値 ID の取得
  1191.   #    デフォルトでは武器なら攻撃力、防具なら防御力とする。
  1192.   #--------------------------------------------------------------------------
  1193.   def param_id
  1194.     @item.is_a?(RPG::Weapon) ? 2 : 3
  1195.   end
  1196.   #--------------------------------------------------------------------------
  1197.   # ● アクターの装備情報を描画
  1198.   #--------------------------------------------------------------------------
  1199.   def draw_actor_param_changes(x, y, item)
  1200.     prms = [0, 1, 2, 3, 4, 5, 6, 7]
  1201.     rect = Rect.new(x, y, (contents_width-8) / 2, line_height)
  1202.     prms.each_index do |i|
  1203.       draw_actor_param_change(rect, item, prms[i])
  1204.       rect.y += rect.height
  1205.     end
  1206.   end
  1207.   #--------------------------------------------------------------------------
  1208.   # ● アクターの能力値変化を描画
  1209.   #--------------------------------------------------------------------------
  1210.   def draw_actor_param_change(rect, item1, prm_id)
  1211.     change = @item.params[prm_id] - (item1 ? item1.params[prm_id] : 0)
  1212.     change_color(system_color)
  1213.     draw_text(rect, $data_system.terms.params[prm_id])
  1214.     change_color(normal_color)
  1215.     r = Rect.new(rect.x + 70, rect.y, 80, rect.height)
  1216.     draw_text(r, @actor.param(prm_id), 2)
  1217.     return if change == 0
  1218.     r.x += r.width + 4
  1219.     draw_text(r, "→")
  1220.     change_color(param_change_color(change))
  1221.     draw_text(r, @actor.param(prm_id) + change , 2)
  1222.   end
  1223. end




  1224. #==============================================================================
  1225. # ■ Scene_Shop
  1226. #==============================================================================
  1227. class Scene_Shop < Scene_MenuBase
  1228.   #--------------------------------------------------------------------------
  1229.   # ● 準備
  1230.   #--------------------------------------------------------------------------
  1231.   def prepare(goods, purchase_only)
  1232.     @goods = goods
  1233.     @purchase_only = purchase_only
  1234.     @actor = $game_party.members[0]
  1235.   end
  1236.   #--------------------------------------------------------------------------
  1237.   # ● 準備
  1238.   #--------------------------------------------------------------------------
  1239.   def prepare_actor(actor)
  1240.     @actor = actor
  1241.   end
  1242.   #--------------------------------------------------------------------------
  1243.   # ● 開始処理
  1244.   #--------------------------------------------------------------------------
  1245.   def start
  1246.     super
  1247.     create_help_window
  1248.     create_gold_window
  1249.     create_command_window
  1250.     create_dummy_window
  1251.     create_status_window
  1252.     create_category_window
  1253.     create_buy_window
  1254.     create_sell_window
  1255.     create_number_window
  1256.     create_equip_window
  1257.   end
  1258.   #--------------------------------------------------------------------------
  1259.   # ● ゴールドウィンドウの作成
  1260.   #--------------------------------------------------------------------------
  1261.   def create_gold_window
  1262.     @gold_window = Window_Gold.new
  1263.     @gold_window.viewport = @viewport
  1264.     if ExShop::GOLD_LD
  1265.       @gold_window.y = Graphics.height - @gold_window.height
  1266.     else
  1267.       @gold_window.x = Graphics.width - @gold_window.width
  1268.       @gold_window.y = @help_window.height
  1269.       @gold_window.z = 200
  1270.     end
  1271.   end
  1272.   #--------------------------------------------------------------------------
  1273.   # ● コマンドウィンドウの作成
  1274.   #--------------------------------------------------------------------------
  1275.   def create_command_window
  1276.     @command_window = Window_ExShopCommand.new(@gold_window.width, @purchase_only)
  1277.     @command_window.viewport = @viewport
  1278.     @command_window.y = @help_window.height
  1279.     @command_window.set_handler(:buy,    method(:command_buy))
  1280.     @command_window.set_handler(:sell,   method(:command_sell))
  1281.     @command_window.set_handler(:equip,  method(:command_equip))
  1282.     @command_window.set_handler(:cancel, method(:return_scene))
  1283.   end
  1284.   #--------------------------------------------------------------------------
  1285.   # ● ダミーウィンドウの作成
  1286.   #--------------------------------------------------------------------------
  1287.   def create_dummy_window
  1288.     wx = @command_window.width
  1289.     wy = @help_window.height
  1290.     ww = Graphics.width  - wx
  1291.     wh = Graphics.height - wy
  1292.     @dummy_window = Window_Base.new(wx, wy, ww, wh)
  1293.     @dummy_window.viewport = @viewport
  1294.   end
  1295.   #--------------------------------------------------------------------------
  1296.   # ● 個数入力ウィンドウの作成
  1297.   #--------------------------------------------------------------------------
  1298.   def create_number_window
  1299.     wx = @buy_window.x
  1300.     wy = @buy_window.y
  1301.     ww = @buy_window.width
  1302.     wh = @buy_window.height
  1303.     @number_window = Window_ShopNumber.new(wx, wy, ww, wh)
  1304.     @number_window.viewport = @viewport
  1305.     @number_window.hide
  1306.     @number_window.set_handler(:ok,     method(:on_number_ok))
  1307.     @number_window.set_handler(:cancel, method(:on_number_cancel))
  1308.   end
  1309.   #--------------------------------------------------------------------------
  1310.   # ● ステータスウィンドウの作成
  1311.   #--------------------------------------------------------------------------
  1312.   def create_status_window
  1313.     wy = @command_window.y + @command_window.height
  1314.     ww = @command_window.width
  1315.     wh = Graphics.height - wy
  1316.     wh -= @gold_window.height if ExShop::GOLD_LD
  1317.     @status_window = Window_ShopStatus.new(0, wy, ww, wh, @actor)
  1318.     @status_window.viewport = @viewport
  1319.   end
  1320.   #--------------------------------------------------------------------------
  1321.   # ● カテゴリウィンドウの作成
  1322.   #--------------------------------------------------------------------------
  1323.   def create_category_window
  1324.     wx = @command_window.width
  1325.     wy = @help_window.height
  1326.     ww = Graphics.width - wx
  1327.     ww -= @gold_window.width unless ExShop::GOLD_LD
  1328.     @buy_ct_window = Window_ExShopBuyCt.new(wx, wy, ww)
  1329.     @buy_ct_window.viewport = @viewport
  1330.     @buy_ct_window.hide.deactivate
  1331.    
  1332.     @sell_ct_window = Window_ExShopSellCt.new(wx, wy, ww)
  1333.     @sell_ct_window.viewport = @viewport
  1334.     @sell_ct_window.hide.deactivate
  1335.   end
  1336.   #--------------------------------------------------------------------------
  1337.   # ● 購入ウィンドウの作成
  1338.   #--------------------------------------------------------------------------
  1339.   def create_buy_window
  1340.     wx = @dummy_window.x
  1341.     wy = @buy_ct_window.y + @buy_ct_window.height
  1342.     ww = Graphics.width - wx
  1343.     wh = Graphics.height - wy
  1344.     @buy_window = Window_ShopBuy.new(wx, wy, ww, wh, @goods)
  1345.     @buy_window.viewport = @viewport
  1346.     @buy_window.help_window = @help_window
  1347.     @buy_window.status_window = @status_window
  1348.     @buy_window.hide
  1349.     @buy_window.set_handler(:ok,       method(:on_buy_ok))
  1350.     @buy_window.set_handler(:cancel,   method(:on_buy_cancel))
  1351.     @buy_window.set_handler(:pagedown, method(:next_buy_ct))
  1352.     @buy_window.set_handler(:pageup,   method(:prev_buy_ct))
  1353.     @buy_ct_window.item_window = @buy_window
  1354.   end
  1355.   #--------------------------------------------------------------------------
  1356.   # ● 売却ウィンドウの作成
  1357.   #--------------------------------------------------------------------------
  1358.   def create_sell_window
  1359.     wx = @command_window.width
  1360.     wy = @sell_ct_window.y + @sell_ct_window.height
  1361.     ww = Graphics.width - wx
  1362.     wh = Graphics.height - wy
  1363.     @sell_window = Window_ShopSell.new(wx, wy, ww, wh)
  1364.     @sell_window.viewport = @viewport
  1365.     @sell_window.help_window = @help_window
  1366.     @sell_window.status_window = @status_window
  1367.     @sell_window.hide
  1368.     @sell_window.set_handler(:ok,     method(:on_sell_ok))
  1369.     @sell_window.set_handler(:cancel, method(:on_sell_cancel))
  1370.     @sell_window.set_handler(:pagedown, method(:next_sell_ct))
  1371.     @sell_window.set_handler(:pageup,   method(:prev_sell_ct))
  1372.     @sell_ct_window.item_window = @sell_window
  1373.   end
  1374.   #--------------------------------------------------------------------------
  1375.   # ● 装備ウィンドウの作成
  1376.   #--------------------------------------------------------------------------
  1377.   def create_equip_window
  1378.     wx = @number_window.x
  1379.     wy = @number_window.y
  1380.     ww = @number_window.width
  1381.     wh = @number_window.height
  1382.     @equip_window = Window_ShopEquip.new(wx, wy, ww, wh)
  1383.     @equip_window.hide.deactivate
  1384.     @equip_window.set_handler(:equip,  method(:on_equip_ok))
  1385.     @equip_window.set_handler(:cancel, method(:on_equip_cancel))
  1386.   end
  1387.   #--------------------------------------------------------------------------
  1388.   # ● コマンドウィンドウのアクティブ化
  1389.   #--------------------------------------------------------------------------
  1390.   def activate_cmd_window
  1391.     @command_window.activate
  1392.     @dummy_window.show
  1393.     @buy_ct_window.hide
  1394.     @buy_window.hide
  1395.     @sell_ct_window.hide
  1396.     @sell_window.hide
  1397.     @status_window.item = nil
  1398.     @help_window.clear
  1399.   end
  1400.   #--------------------------------------------------------------------------
  1401.   # ● 購入ウィンドウのアクティブ化
  1402.   #--------------------------------------------------------------------------
  1403.   def activate_buy_window
  1404.     @buy_ct_window.show
  1405.     @buy_window.money = money
  1406.     @buy_window.refresh
  1407.     @buy_window.show.activate
  1408.     @status_window.activate
  1409.   end
  1410.   #--------------------------------------------------------------------------
  1411.   # ● 売却ウィンドウのアクティブ化
  1412.   #--------------------------------------------------------------------------
  1413.   def activate_sell_window
  1414.     @sell_ct_window.show
  1415.     @sell_window.refresh
  1416.     @sell_window.show.activate
  1417.     @status_window.activate
  1418.   end
  1419.   #--------------------------------------------------------------------------
  1420.   # ● 装備ウィンドウのアクティブ化
  1421.   #--------------------------------------------------------------------------
  1422.   def activate_equip_window
  1423.     @equip_window.set(@status_window.current_actor, @item)
  1424.     @equip_window.show.activate
  1425.     @equip_window.select(0)
  1426.     @status_window.deactivate
  1427.   end
  1428.   #--------------------------------------------------------------------------
  1429.   # ● コマンド[購入する]
  1430.   #--------------------------------------------------------------------------
  1431.   def command_buy
  1432.     @dummy_window.hide
  1433.     activate_buy_window
  1434.     @buy_window.select(0)
  1435.   end
  1436.   #--------------------------------------------------------------------------
  1437.   # ● コマンド[売却する]
  1438.   #--------------------------------------------------------------------------
  1439.   def command_sell
  1440.     @dummy_window.hide
  1441.     activate_sell_window
  1442.     @sell_window.select(0)
  1443.   end
  1444.   #--------------------------------------------------------------------------
  1445.   # ● コマンド[装備]
  1446.   #--------------------------------------------------------------------------
  1447.   def command_equip
  1448.     SceneManager.call(Scene_ShopEquip)
  1449.     SceneManager.scene.prepare(@status_window.current_actor)
  1450.   end
  1451.   #--------------------------------------------------------------------------
  1452.   # ● 購入[決定]
  1453.   #--------------------------------------------------------------------------
  1454.   def on_buy_ok
  1455.     @item = @buy_window.item
  1456.     @buy_window.hide
  1457.     @number_window.set(@item, max_buy, buying_price, currency_unit)
  1458.     @number_window.show.activate
  1459.     @status_window.deactivate
  1460.   end
  1461.   #--------------------------------------------------------------------------
  1462.   # ● 購入[キャンセル]
  1463.   #--------------------------------------------------------------------------
  1464.   def on_buy_cancel
  1465.     activate_cmd_window
  1466.   end
  1467.   #--------------------------------------------------------------------------
  1468.   # ● 次の購入カテゴリに切り替え
  1469.   #--------------------------------------------------------------------------
  1470.   def next_buy_ct
  1471.     @buy_ct_window.cursor_right(true)
  1472.     @buy_ct_window.update_cursor
  1473.     @buy_ct_window.update
  1474.     @buy_window.activate.select(0)
  1475.     @buy_window.update_help
  1476.   end
  1477.   #--------------------------------------------------------------------------
  1478.   # ● 前の購入カテゴリに切り替え
  1479.   #--------------------------------------------------------------------------
  1480.   def prev_buy_ct
  1481.     @buy_ct_window.cursor_left(true)
  1482.     @buy_ct_window.update_cursor
  1483.     @buy_ct_window.update
  1484.     @buy_window.activate.select(0)
  1485.     @buy_window.update_help
  1486.   end
  1487.   #--------------------------------------------------------------------------
  1488.   # ● 売却[決定]
  1489.   #--------------------------------------------------------------------------
  1490.   def on_sell_ok
  1491.     @item = @sell_window.item
  1492.     @sell_window.hide
  1493.     @number_window.set(@item, max_sell, selling_price, currency_unit)
  1494.     @number_window.show.activate
  1495.     @status_window.deactivate
  1496.   end
  1497.   #--------------------------------------------------------------------------
  1498.   # ● 売却[キャンセル]
  1499.   #--------------------------------------------------------------------------
  1500.   def on_sell_cancel
  1501.     activate_cmd_window
  1502.   end
  1503.   #--------------------------------------------------------------------------
  1504.   # ● 次の売却カテゴリに切り替え
  1505.   #--------------------------------------------------------------------------
  1506.   def next_sell_ct
  1507.     @sell_ct_window.cursor_right(true)
  1508.     @sell_ct_window.update_cursor
  1509.     @sell_ct_window.update
  1510.     @sell_window.activate.select(0)
  1511.     @sell_window.update_help
  1512.   end
  1513.   #--------------------------------------------------------------------------
  1514.   # ● 前の売却カテゴリに切り替え
  1515.   #--------------------------------------------------------------------------
  1516.   def prev_sell_ct
  1517.     @sell_ct_window.cursor_left(true)
  1518.     @sell_ct_window.update_cursor
  1519.     @sell_ct_window.update
  1520.     @sell_window.activate.select(0)
  1521.     @sell_window.update_help
  1522.   end
  1523.   #--------------------------------------------------------------------------
  1524.   # ● 個数入力[決定]
  1525.   #--------------------------------------------------------------------------
  1526.   def on_number_ok
  1527.     Sound.play_shop
  1528.     case @command_window.current_symbol
  1529.     when :buy
  1530.       do_buy(@number_window.number)
  1531.     when :sell
  1532.       do_sell(@number_window.number)
  1533.     end
  1534.     end_number_input(true)
  1535.     @gold_window.refresh
  1536.     @status_window.refresh
  1537.   end
  1538.   #--------------------------------------------------------------------------
  1539.   # ● 個数入力[キャンセル]
  1540.   #--------------------------------------------------------------------------
  1541.   def on_number_cancel
  1542.     Sound.play_cancel
  1543.     end_number_input(false)
  1544.   end
  1545.   #--------------------------------------------------------------------------
  1546.   # ● 購入の実行
  1547.   #--------------------------------------------------------------------------
  1548.   def do_buy(number)
  1549.     $game_party.lose_gold(number * buying_price)
  1550.     $game_party.gain_item(@item, number)
  1551.     $game_system.shop.buy.gold += number * buying_price
  1552.   end
  1553.   #--------------------------------------------------------------------------
  1554.   # ● 売却の実行
  1555.   #--------------------------------------------------------------------------
  1556.   def do_sell(number)
  1557.     $game_party.gain_gold(number * selling_price)
  1558.     $game_party.lose_item(@item, number)
  1559.     $game_system.shop.sell.gold += number * selling_price
  1560.   end
  1561.   #--------------------------------------------------------------------------
  1562.   # ● 個数入力の終了
  1563.   #--------------------------------------------------------------------------
  1564.   def end_number_input(buy=true)
  1565.     @number_window.hide
  1566.     case @command_window.current_symbol
  1567.     when :buy
  1568.       if buy && @status_window.current_actor.equippable?(@item)
  1569.         activate_equip_window
  1570.       else
  1571.         activate_buy_window
  1572.       end
  1573.     when :sell
  1574.       activate_sell_window
  1575.     end
  1576.   end
  1577.   #--------------------------------------------------------------------------
  1578.   # ● 装備[決定]
  1579.   #--------------------------------------------------------------------------
  1580.   def on_equip_ok
  1581.     Sound.play_equip
  1582.     @equip_window.hide
  1583.     actor = @status_window.current_actor
  1584.     actor.change_equip(actor.empty_slot(@item.etype_id), @item)
  1585.     activate_buy_window
  1586.   end
  1587.   #--------------------------------------------------------------------------
  1588.   # ● 装備[キャンセル]
  1589.   #--------------------------------------------------------------------------
  1590.   def on_equip_cancel
  1591.     @equip_window.hide
  1592.     activate_buy_window
  1593.   end
  1594.   #--------------------------------------------------------------------------
  1595.   # ● 最大購入可能個数の取得
  1596.   #--------------------------------------------------------------------------
  1597.   def max_buy
  1598.     max = $game_party.max_item_number(@item) - $game_party.item_number(@item)
  1599.     buying_price == 0 ? max : [max, money / buying_price].min
  1600.   end
  1601.   #--------------------------------------------------------------------------
  1602.   # ● 売値の取得
  1603.   #--------------------------------------------------------------------------
  1604.   def selling_price
  1605.     ExShop::sell_price(@item, @item.price)
  1606.   end
  1607. end



  1608. #==============================================================================
  1609. # ■ Scene_ShopEquip
  1610. #------------------------------------------------------------------------------
  1611. # ショップ画面から呼び出す装備画面。メニューのものとは処理を分離。
  1612. # ($game_party.menu_actorは変化させない)
  1613. #==============================================================================
  1614. class Scene_ShopEquip < Scene_Equip
  1615.   #--------------------------------------------------------------------------
  1616.   # ● 準備
  1617.   #--------------------------------------------------------------------------
  1618.   def prepare(actor)
  1619.     @start_actor = actor
  1620.   end
  1621.   #--------------------------------------------------------------------------
  1622.   # ● 開始処理
  1623.   #--------------------------------------------------------------------------
  1624.   def start
  1625.     tmp_actor = $game_party.menu_actor
  1626.     $game_party.menu_actor = @start_actor
  1627.     super
  1628.     $game_party.menu_actor = tmp_actor
  1629.   end
  1630.   #--------------------------------------------------------------------------
  1631.   # ● 次のアクターに切り替え
  1632.   #--------------------------------------------------------------------------
  1633.   def next_actor
  1634.     tmp_actor = $game_party.menu_actor
  1635.     @actor = $game_party.menu_actor_next
  1636.     $game_party.menu_actor = tmp_actor
  1637.     on_actor_change
  1638.   end
  1639.   #--------------------------------------------------------------------------
  1640.   # ● 前のアクターに切り替え
  1641.   #--------------------------------------------------------------------------
  1642.   def prev_actor
  1643.     tmp_actor = $game_party.menu_actor
  1644.     @actor = $game_party.menu_actor_prev
  1645.     $game_party.menu_actor = tmp_actor
  1646.     on_actor_change
  1647.   end
  1648.   #--------------------------------------------------------------------------
  1649.   # ● 呼び出し元のシーンへ戻る
  1650.   #--------------------------------------------------------------------------
  1651.   def return_scene
  1652.     super
  1653.     SceneManager.scene.prepare_actor(@actor)
  1654.   end
  1655. end

复制代码
如果麻烦的话  帮我把这个商店中查看装备这个功能去掉吧!如截图!!!麻烦你了。。

RKS7I)7${SP6%{PB{@%3I46.jpg (59.2 KB, 下载次数: 2)

RKS7I)7${SP6%{PB{@%3I46.jpg
你的意思就是要打架咯?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1457
在线时间
892 小时
注册时间
2011-3-4
帖子
839
5
发表于 2013-11-21 12:08:17 | 只看该作者
一万多行的脚本,我连打字都开始卡了。
全民制作人们,大家好,我是练习时长两年半的黄油制作人绿坝,喜欢唱、跳、rap、篮球,music!欢迎加群:107335249
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
4
发表于 2013-11-21 09:10:51 | 只看该作者
你只是单独使用了这个脚本吗?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
199
在线时间
248 小时
注册时间
2012-4-29
帖子
386
3
 楼主| 发表于 2013-11-20 23:10:19 | 只看该作者
魔力的觉醒 发表于 2013-11-20 23:05
没人么!@喵呜喵5 @tan12345

完蛋了!
你的意思就是要打架咯?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
199
在线时间
248 小时
注册时间
2012-4-29
帖子
386
2
 楼主| 发表于 2013-11-20 23:05:04 | 只看该作者
没人么!@喵呜喵5 @tan12345  

点评

反正一个几万行的代码我是根本不会去看的  发表于 2013-11-20 23:08
你的意思就是要打架咯?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-1 12:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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