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

Project1

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

[已经过期] 以下图鉴脚本 打败敌人后不出现敌人详细资料 T T

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2012-1-18
帖子
8
跳转到指定楼层
1
发表于 2012-1-18 16:51:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 以战止战 于 2012-1-18 21:08 编辑
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 怪物图鉴 - KGC_EnemyGuide ◆ VX ◆
  3. #_/                                       汉化 by 约束
  4. #_/    ◇ Last update : 2008/08/28 ◇
  5. #_/----------------------------------------------------------------------------
  6. #_/  作成怪物图鉴。
  7. #_/============================================================================
  8. #_/ 【基本機能】请在≪物品掉落扩张≫ 之上添加。
  9. #_/
  10. #_/ 使用方法:1.# ◆怪物的说明文,请在怪物的备注栏中添加<图鉴说明>要添加的说明,
  11. #_/             例如对怪物的简要介绍</图鉴说明>,PS:尽量不要太长
  12. #_/           2.# ◆图鉴的操作方法,图鉴画面是左侧的目录是怪物的名称排列,有关
  13. #_/             他的情报在右方显示。在这个状况时按下右方向键,就会显示关于
  14. #_/             这个敌人的说明文了。返回前一步请按左方向键。如果按下C键就
  15. #_/             可以放大敌人图片了。
  16. #_/           3.# ◆ 图鉴背景用图片表示   USE_BACKGROUND_IMAGE = true
  17. #_/             # ◆ 背景图片文件名 BACKGROUND_FILENAME  = "EnemyGuideBack"
  18. #_/             图片背景请按照给出的形式。
  19. #_/             如果不使用背景图片的时候,会按照普通窗口处理。
  20. #_/           4.# ◆表示完成度的参数  INFO_INTERVAL = 90
  21. #_/             设定画面左上完成度与变换之间的时间(1秒等于60)
  22. #_/              默认的是90,也就是每1.5秒改换一次
  23. #_/           5.# ◆调出属性耐性的范围
  24. #_/             在图鉴中设定排列耐性表现的属性ID,对象范围为(1..16 等)
  25. #_/             的整数都可以用。
  26. #_/           6.# ◆ 属性的ICON
  27. #_/             ELEMENT_ICON = [nil,                       # ID:0 是不体现
  28. #_/             50,   1,   4,  14,  24,  12, 189, 136,  # 格斗 ~ 吸收
  29. #_/             104, 105, 106, 107, 108, 109, 110, 111,  # 炎 ~ 黑暗
  30. #_/             ]  # ← 这里不要消除!
  31. #_/             各属性的ICON请在ICON图片中的编号,从第一行左端开始1,2,3
  32. #_/             依次类推,一排是15个。
  33. #_/             7.# ◆剧情用指令
  34. #_/               set_enemy_encountered(enemy_id[, enabled])
  35. #_/               敌 IDenemy_id的遭遇状态设定为enabled。
  36. #_/               设定enabled是true或者false。
  37. #_/               省略enabled情况视为true。
  38. #_/               例如:
  39. #_/                  # 敌 ID:10 变为遭遇过
  40. #_/                  set_enemy_encountered(10)
  41. #_/                  # 敌 ID:20 变为未遭遇过
  42. #_/                  set_enemy_encountered(20, false)
  43. #_/
  44. #_/               set_enemy_defeated(enemy_id[, enabled])
  45. #_/               敌 IDenemy_id击败过状态设定为enabled。
  46. #_/               enabled的设定方法与set_enemy_encountered同样。
  47. #_/               例如:
  48. #_/                  # 敌 ID:10 变为击破过
  49. #_/                  set_enemy_defeated(10)
  50. #_/                  # 敌 ID:20 变为未击破过
  51. #_/                  set_enemy_defeated(20, false)
  52. #_/               set_enemy_item_dropped(enemy_id, item_index[, enabled])
  53. #_/               敌 IDenemy_id的item_index编号的物品掉落状态设定为enabled。
  54. #_/               item_index、第一个物品时用O。
  55. #_/               如果添加了≪物品掉落扩张≫ 就用2以上的数值。具体参照你自己
  56. #_/               设定过的情况。
  57. #_/               enabled的设定方法是与set_enemy_encountered等同样的。
  58. #_/               例如:
  59. #_/                  # 敌 ID:10 的第一个物品变为掉落过
  60. #_/                  set_enemy_item_dropped(10, 0)
  61. #_/                 
  62. #_/               8.# ◆ reset_enemy_guide
  63. #_/                    初始化图鉴。
  64. #_/               9.# ◆ complete_enemy_guide
  65. #_/                    完成图鉴。
  66. #_/
  67. #_/               10.# ◆ get_enemy_guide_completion[(variable_id)]
  68. #_/                  图鉴的完成度(% 为单位)从variable_id号的变量中取得。
  69. #_/                  取得后、变量中取得的数值作为返还应用值。
  70. #_/                  将variable_id省略时、就不能代入变量。
  71. #_/
  72. #_/                  例如
  73. #_/                  # 图鉴的完成度在变量10号中取得
  74. #_/                    get_enemy_guide_completion(10)
  75. #_/
  76. #_/                  # 完成度 50% 以上后会怎样?
  77. #_/                    if get_enemy_guide_completion >= 50
  78. #_/                      p "IYH!"
  79. #_/                    end
  80. #_/
  81. #_/                11.# ◆  call_enemy_guide
  82. #_/                      呼出怪物图鉴。
  83. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  84. #==============================================================================
  85. # ★ カスタマイズ項目 - Customize ★
  86. #==============================================================================

  87. module KGC
  88. module EnemyGuide
  89.   # ◆ 图鉴用背景图片表示
  90.   #   true  : 用背景图片代替原本窗口。
  91.   #   false : 使用平常窗口。
  92.   USE_BACKGROUND_IMAGE = true
  93.   # ◆ 背景图片的文件夹名
  94.   #  "Graphics/System/" 内载入。
  95.   BACKGROUND_FILENAME  = "EnemyGuideBack"
  96.   # ◆ 完成度表示的间隔 [框架]
  97.   INFO_INTERVAL = 90

  98.   # ◆ 名字前面编号
  99.   #   true  : 001: 史莱姆
  100.   #   false : 史莱姆
  101.   SHOW_SERIAL_NUMBER = true
  102.   # ◆ 标号按照目录排序
  103.   #  true  : 无视ID的排列编号 。
  104.   #  false : 按照目录的排列顺序编号。
  105.   SERIAL_NUM_FOLLOW  = true
  106.   # ◆ 编号的格式
  107.   #  参照帮助的 sprintf 格式。
  108.   SERIAL_NUM_FORMAT  = "%03d: "
  109.   # ◆ 未遭遇的敌人名字
  110.   #  只写入一个文字的时候,会自动扩张成怪物名字的字数。
  111.   UNKNOWN_ENEMY_NAME = "?"
  112.   # ◆ 未遭遇敌人的资料表示
  113.   UNENCOUNTERED_DATA = "- No Data -"
  114.   # ◆ 图鉴的属性名
  115.   PARAMETER_NAME = {
  116.     :weak_element   => "弱点属性",
  117.     :resist_element => "耐性属性",
  118.     :weak_state     => "弱点状态",
  119.     :resist_state   => "无效状态",
  120.     :exp            => "经验值",
  121.     :treasure       => "物品",
  122.     :drop_prob      => "掉落率",
  123.   }  # ← 这里不能消除!
  124.   # ◆ 未击破敌人的变数表示
  125.   UNDEFEATED_PARAMETER = "???"
  126.   # ◆ 未掉落物品的名字表示
  127.   #  只写入一个文字的时候,会自动扩张成掉落物品名字的字数。
  128.   UNDROPPED_ITEM_NAME  = "?"

  129.   # ◆ 调查耐性属性的范围
  130.   #  容纳排列调查耐性属性的 ID 。
  131.   #  使用.. 或 ... 范围指定都是可以的。
  132.   ELEMENT_RANGE = [1..16]
  133.   # ◆ 属性的ICON
  134.   #  指定各属性的ICON编号。
  135.   #  对应排列的添加字的属性ID。
  136.   ELEMENT_ICON = [nil,                       # ID:0 是没有的
  137.      50,   1,   4,  14,  24,  12, 189, 136,  # 格斗 ~ 吸收
  138.     104, 105, 106, 107, 108, 109, 110, 111,  # 炎 ~ 黑暗
  139.   ]  # ← 这里不能消除!

  140.   # ◆ 从图鉴中隐藏敌人
  141.   #  排列想要从图鉴中隐藏的敌人ID。
  142.   #  ID 和范围 (1..10 等), 哪种都可以。
  143.   # <例> HIDDEN_ENEMIES = [2, 4, 8, 16..32]
  144.   HIDDEN_ENEMIES = []

  145.   # ◆ 敌人的排列顺序
  146.   #  表示的敌人ID、排列成想要的顺序。
  147.   #  使用.. 或 ... 范围指定都是可以的。
  148.   #  没有被指定的敌人、或者 HIDDEN_ENEMIES 中指定过的敌人不表示。
  149.   #  (不适用这个机能的时候是 nil)
  150.   ENEMY_ORDER = nil
  151.   # ENEMY_ORDER = [1..5, 8..13, 6, 7, 14, 15]
  152.   #  ↑使用例子

  153.   # ◆ 变身前的敌人也击破
  154.   #   true  : 变身前的敌人也被看作是击败过。
  155.   #   false : 变身前的敌人不被看作是击败过(只是遭遇过)。
  156.   ORIGINAL_DEFEAT = true

  157.   # ◆ 菜单画面中「怪物图鉴」指令的追加
  158.   #  追加的地点是、菜单画面指令列的最下方。
  159.   #  如果想要在其他地方放置指令时请使用≪特制菜单指令排列≫ 脚本。
  160.   USE_MENU_ENEMY_GUIDE_COMMAND = false
  161.   # ◆ 菜单画面的「怪物图鉴」指令名称
  162.   VOCAB_MENU_ENEMY_GUIDE       = "怪物图鉴"
  163. end
  164. end

  165. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  166. $imported = {} if $imported == nil
  167. $imported["EnemyGuide"] = true

  168. module KGC::EnemyGuide
  169.   # 正规表现
  170.   module Regexp
  171.     # 敌人
  172.     module Enemy
  173.       # 图鉴说明开始
  174.       BEGIN_GUIDE_DESCRIPTION = /<(?:GUIDE_DESCRIPTION|图鉴说明)>/i
  175.       # 图鉴说明终了
  176.       END_GUIDE_DESCRIPTION = /<\/(?:GUIDE_DESCRIPTION|图鉴说明)>/i
  177.     end
  178.   end

  179.   #--------------------------------------------------------------------------
  180.   # ○ Range と Integer 的排列按照 Integer 的排列 (排除重复的情况)
  181.   #--------------------------------------------------------------------------
  182.   def self.convert_integer_array(array)
  183.     result = []
  184.     array.each { |i|
  185.       if i.is_a?(Range)
  186.         result |= i.to_a
  187.       elsif e.is_a?(Integer)
  188.         result |= [i]
  189.       end
  190.     }
  191.     return result
  192.   end

  193.   # 非表示的怪物资料
  194.   HIDDEN_ENEMY_LIST = convert_integer_array(HIDDEN_ENEMIES)
  195.   # 确认属性资料
  196.   CHECK_ELEMENT_LIST = convert_integer_array(ELEMENT_RANGE)
  197. end

  198. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  199. #==============================================================================
  200. # □ KGC::Commands
  201. #==============================================================================

  202. module KGC
  203. module Commands
  204.   module_function
  205.   #--------------------------------------------------------------------------
  206.   # ○ 取得遭遇状态
  207.   #     enemy_id : 敌 ID
  208.   #--------------------------------------------------------------------------
  209.   def enemy_encountered?(enemy_id)
  210.     return $game_system.enemy_encountered[enemy_id]
  211.   end
  212.   #--------------------------------------------------------------------------
  213.   # ○ 取得击破状态
  214.   #     enemy_id : 敵 ID
  215.   #--------------------------------------------------------------------------
  216.   def enemy_defeated?(enemy_id)
  217.     return $game_system.enemy_defeated[enemy_id]
  218.   end
  219.   #--------------------------------------------------------------------------
  220.   # ○ 取得掉落物品状态
  221.   #     enemy_id   : 敌 ID
  222.   #     item_index : 掉落物品的号码
  223.   #--------------------------------------------------------------------------
  224.   def enemy_item_dropped?(enemy_id, item_index)
  225.     if $game_system.enemy_item_dropped[enemy_id] == nil
  226.       return false
  227.     end
  228.     result = $game_system.enemy_item_dropped[enemy_id] & (1 << item_index)
  229.     return (result != 0)
  230.   end
  231.   #--------------------------------------------------------------------------
  232.   # ○ 设定遭遇状态
  233.   #     enemy_id : 敌 ID
  234.   #     enabled  : true..遭遇过  false..未遭遇
  235.   #--------------------------------------------------------------------------
  236.   def set_enemy_encountered(enemy_id, enabled = true)
  237.     $game_system.enemy_encountered[enemy_id] = enabled
  238.   end
  239.   #--------------------------------------------------------------------------
  240.   # ○ 设定击败状态
  241.   #     enemy_id : 敌 ID
  242.   #     enabled  : true..击败过  false..未击败
  243.   #--------------------------------------------------------------------------
  244.   def set_enemy_defeated(enemy_id, enabled = true)
  245.     $game_system.enemy_defeated[enemy_id] = enabled
  246.   end
  247.   #--------------------------------------------------------------------------
  248.   # ○ 设定掉落物品的状态
  249.   #     enemy_id   : 敌 ID
  250.   #     item_index : 掉落物品的编号
  251.   #     enabled    : true..掉落过  false..未掉落
  252.   #--------------------------------------------------------------------------
  253.   def set_enemy_item_dropped(enemy_id, item_index, enabled = true)
  254.     if $game_system.enemy_item_dropped[enemy_id] == nil
  255.       $game_system.enemy_item_dropped[enemy_id] = 0
  256.     end
  257.     if enabled
  258.       $game_system.enemy_item_dropped[enemy_id] |= (1 << item_index)
  259.     else
  260.       $game_system.enemy_item_dropped[enemy_id] &= ~(1 << item_index)
  261.     end
  262.   end
  263.   #--------------------------------------------------------------------------
  264.   # ○ 清空图鉴
  265.   #--------------------------------------------------------------------------
  266.   def reset_enemy_guide
  267.     $game_system.enemy_encountered = []
  268.     $game_system.enemy_defeated = []
  269.     $game_system.enemy_item_dropped = []
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # ○ 图鉴完成
  273.   #--------------------------------------------------------------------------
  274.   def complete_enemy_guide
  275.     (1...$data_enemies.size).each { |i|
  276.       set_enemy_encountered(i)
  277.       set_enemy_defeated(i)

  278.       enemy = $data_enemies[i]
  279.       items = [enemy.drop_item1, enemy.drop_item2]
  280.       if $imported["ExtraDropItem"]
  281.         items += enemy.extra_drop_items
  282.       end
  283.       items.each_index { |j| set_enemy_item_dropped(i, j) }
  284.     }
  285.   end
  286.   #--------------------------------------------------------------------------
  287.   # ○ 已经获得图鉴?
  288.   #     enemy_id : 敌 ID
  289.   #--------------------------------------------------------------------------
  290.   def enemy_guide_include?(enemy_id)
  291.     return false if KGC::EnemyGuide::HIDDEN_ENEMIES.include?(enemy_id)
  292.     enemy = $data_enemies[enemy_id]
  293.     return (enemy != nil && enemy.name != "")
  294.   end
  295.   #--------------------------------------------------------------------------
  296.   # ○ 取得存在敌人的种类数
  297.   #     variable_id : 代入取得后的值的变量ID
  298.   #--------------------------------------------------------------------------
  299.   def get_all_enemies_number(variable_id = 0)
  300.     n = 0
  301.     (1...$data_enemies.size).each { |i|
  302.       n += 1 if enemy_guide_include?(i)
  303.     }
  304.     $game_variables[variable_id] = n if variable_id > 0
  305.     return n
  306.   end
  307.   #--------------------------------------------------------------------------
  308.   # ○ 取得遭遇过敌人的种类数
  309.   #     variable_id : 代入取得后的值的变量ID
  310.   #--------------------------------------------------------------------------
  311.   def get_encountered_enemies_number(variable_id = 0)
  312.     n = 0
  313.     (1...$data_enemies.size).each { |i|
  314.       if enemy_guide_include?(i) && $game_system.enemy_encountered[i]
  315.         n += 1
  316.       end
  317.     }
  318.     $game_variables[variable_id] = n if variable_id > 0
  319.     return n
  320.   end
  321.   #--------------------------------------------------------------------------
  322.   # ○ 取得击败过的敌人的种类数
  323.   #     variable_id : 代入取得后的值的变量ID
  324.   #--------------------------------------------------------------------------
  325.   def get_defeated_enemies_number(variable_id = 0)
  326.     n = 0
  327.     (1...$data_enemies.size).each { |i|
  328.       if enemy_guide_include?(i) && $game_system.enemy_encountered[i] &&
  329.           $game_system.enemy_defeated[i]
  330.         n += 1
  331.       end
  332.     }
  333.     $game_variables[variable_id] = n if variable_id > 0
  334.     return n
  335.   end
  336.   #--------------------------------------------------------------------------
  337.   # ○ 怪物图鉴完成度的取得
  338.   #     variable_id : 代入取得后的值的变量ID
  339.   #--------------------------------------------------------------------------
  340.   def get_enemy_guide_completion(variable_id = 0)
  341.     num = get_all_enemies_number
  342.     value = (num > 0 ? (get_defeated_enemies_number * 100 / num) : 0)
  343.     $game_variables[variable_id] = value if variable_id > 0
  344.     return value
  345.   end
  346.   #--------------------------------------------------------------------------
  347.   # ○ 呼出怪物图鉴
  348.   #--------------------------------------------------------------------------
  349.   def call_enemy_guide
  350.     return if $game_temp.in_battle
  351.     $game_temp.next_scene = :enemy_guide
  352.   end
  353. end
  354. end

  355. class Game_Interpreter
  356.   include KGC::Commands
  357. end

  358. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  359. #==============================================================================
  360. # ■ Vocab
  361. #==============================================================================

  362. module Vocab
  363.   # 怪物图鉴
  364.   def self.enemy_guide
  365.     return KGC::EnemyGuide::VOCAB_MENU_ENEMY_GUIDE
  366.   end
  367. end

  368. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  369. #==============================================================================
  370. # ■ RPG::Enemy
  371. #==============================================================================

  372. class RPG::Enemy
  373.   #--------------------------------------------------------------------------
  374.   # ○ 怪物图鉴的存放处生成
  375.   #--------------------------------------------------------------------------
  376.   def create_enemy_guide_cache
  377.     @__enemy_guide_description = ""

  378.     description_flag = false
  379.     self.note.split(/[\r\n]+/).each { |line|
  380.       case line
  381.       when KGC::EnemyGuide::Regexp::Enemy::BEGIN_GUIDE_DESCRIPTION
  382.         # 说明文开始
  383.         description_flag = true
  384.       when KGC::EnemyGuide::Regexp::Enemy::END_GUIDE_DESCRIPTION
  385.         # 说明文终了
  386.         description_flag = false
  387.       else
  388.         if description_flag
  389.           @__enemy_guide_description += "#{line}\r\n"
  390.         end
  391.       end
  392.     }
  393.   end
  394.   #--------------------------------------------------------------------------
  395.   # ○ 图鉴说明文
  396.   #--------------------------------------------------------------------------
  397.   def enemy_guide_description
  398.     create_enemy_guide_cache if @__enemy_guide_description == nil
  399.     return @__enemy_guide_description
  400.   end
  401. end
  402. #==============================================================================
  403. # ■ Game_System
  404. #==============================================================================

  405. class Game_System
  406.   #--------------------------------------------------------------------------
  407.   # ● 公开即时变量
  408.   #--------------------------------------------------------------------------
  409.   attr_writer   :enemy_encountered        # 遭遇过的标注
  410.   attr_writer   :enemy_defeated           # 击败过的标志
  411.   attr_writer   :enemy_item_dropped       # 物品掉落过的标志
  412.   #--------------------------------------------------------------------------
  413.   # ○ 取得遭遇过的标志
  414.   #--------------------------------------------------------------------------
  415.   def enemy_encountered
  416.     @enemy_encountered = [] if @enemy_encountered == nil
  417.     return @enemy_encountered
  418.   end
  419.   #--------------------------------------------------------------------------
  420.   # ○ 取得击败过的标志
  421.   #--------------------------------------------------------------------------
  422.   def enemy_defeated
  423.     @enemy_defeated = [] if @enemy_defeated == nil
  424.     return @enemy_defeated
  425.   end
  426.   #--------------------------------------------------------------------------
  427.   # ○ 物品掉落过的标志
  428.   #--------------------------------------------------------------------------
  429.   def enemy_item_dropped
  430.     @enemy_item_dropped = [] if @enemy_item_dropped == nil
  431.     return @enemy_item_dropped
  432.   end
  433. end

  434. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  435. #==============================================================================
  436. # ■ Game_Enemy
  437. #==============================================================================

  438. class Game_Enemy < Game_Battler
  439.   #--------------------------------------------------------------------------
  440.   # ● 对象初始化
  441.   #     index    : 敌人队伍中的目录
  442.   #     enemy_id : 敌人造型 ID
  443.   #--------------------------------------------------------------------------
  444.   alias initialize_KGC_EnemyGuide initialize
  445.   def initialize(index, enemy_id)
  446.     initialize_KGC_EnemyGuide(index, enemy_id)

  447.     @original_ids = []  # 变身前的 ID
  448.     # 开启遭遇过标志
  449.     KGC::Commands.set_enemy_encountered(enemy_id) unless hidden
  450.   end
  451.   #--------------------------------------------------------------------------
  452.   # ● 破坏
  453.   #--------------------------------------------------------------------------
  454.   alias perform_collapse_KGC_EnemyGuide perform_collapse
  455.   def perform_collapse
  456.     last_collapsed = @collapse

  457.     perform_collapse_KGC_EnemyGuide

  458.     if !last_collapsed && @collapse
  459.       # 开启击败过标志
  460.       KGC::Commands.set_enemy_defeated(enemy_id)
  461.       # 变身前的敌人也按照击败过来处理
  462.       if KGC::EnemyGuide::ORIGINAL_DEFEAT
  463.         @original_ids.compact.each { |i|
  464.           KGC::Commands.set_enemy_defeated(i)
  465.         }
  466.       end
  467.     end
  468.   end
  469.   #--------------------------------------------------------------------------
  470.   # ● 变身
  471.   #     enemy_id : 变身前敌人造型 ID
  472.   #--------------------------------------------------------------------------
  473.   alias transform_KGC_EnemyGuide transform
  474.   def transform(enemy_id)
  475.     # 保存变身前的敌人ID
  476.     @original_ids << @enemy_id

  477.     transform_KGC_EnemyGuide(enemy_id)

  478.     # 变身后的敌人也按照遭遇过来处理
  479.     KGC::Commands.set_enemy_encountered(enemy_id)
  480.   end
  481.   #--------------------------------------------------------------------------
  482.   # ● 隐藏状态的设定
  483.   #--------------------------------------------------------------------------
  484.   alias hidden_KGC_EnemyGuide= hidden= unless $@
  485.   def hidden=(value)
  486.     hidden_KGC_EnemyGuide=(value)
  487.     # 出现过的场合为开启遭遇过的标志
  488.     KGC::Commands.set_enemy_encountered(enemy_id) unless value
  489.   end
  490. end

  491. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  492. #==============================================================================
  493. # ■ Game_Troop
  494. #==============================================================================

  495. class Game_Troop < Game_Unit
  496.   #--------------------------------------------------------------------------
  497.   # ● 作成排列掉落物品
  498.   #--------------------------------------------------------------------------
  499.   def make_drop_items
  500.     drop_items = []
  501.     dead_members.each { |enemy|
  502.       [enemy.drop_item1, enemy.drop_item2].each_with_index { |di, i|
  503.         next if di.kind == 0
  504.         next if rand(di.denominator) != 0
  505.         if di.kind == 1
  506.           drop_items.push($data_items[di.item_id])
  507.         elsif di.kind == 2
  508.           drop_items.push($data_weapons[di.weapon_id])
  509.         elsif di.kind == 3
  510.           drop_items.push($data_armors[di.armor_id])
  511.         end
  512.         # 调整掉落过标志
  513.         KGC::Commands.set_enemy_item_dropped(enemy.enemy.id, i)
  514.       }
  515.     }
  516.     return drop_items
  517.   end
  518. end

  519. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  520. #==============================================================================
  521. # □ Window_EnemyGuideTop
  522. #------------------------------------------------------------------------------
  523. #   在怪物图鉴上显示完成度。
  524. #==============================================================================

  525. class Window_EnemyGuideTop < Window_Base
  526.   #--------------------------------------------------------------------------
  527.   # ● 对象初始化
  528.   #--------------------------------------------------------------------------
  529.   def initialize
  530.     super(0, 0, 240, WLH * 4 + 32)
  531.     self.height = WLH + 32
  532.     @duration = 0
  533.     @interval = KGC::EnemyGuide::INFO_INTERVAL
  534.     refresh

  535.     if KGC::EnemyGuide::USE_BACKGROUND_IMAGE
  536.       self.opacity = 0
  537.     end
  538.     if self.windowskin != nil
  539.       bitmap = Bitmap.new(windowskin.width, windowskin.height)
  540.       bitmap.blt(0, 0, windowskin, windowskin.rect)
  541.       bitmap.clear_rect(80, 16, 32, 32)
  542.       self.windowskin = bitmap
  543.     end
  544.   end
  545.   #--------------------------------------------------------------------------
  546.   # ● 废弃
  547.   #--------------------------------------------------------------------------
  548.   def dispose
  549.     self.windowskin.dispose
  550.     super
  551.   end
  552.   #--------------------------------------------------------------------------
  553.   # ● 情报更新
  554.   #--------------------------------------------------------------------------
  555.   def refresh
  556.     self.contents.clear
  557.     total = KGC::Commands.get_all_enemies_number
  558.     encountered = KGC::Commands.get_encountered_enemies_number
  559.     defeated = KGC::Commands.get_defeated_enemies_number

  560.     text = sprintf("遭遇过: %3d/%3d ",encountered, total)
  561.     self.contents.draw_text(0,       0, width - 32, WLH, text, 1)
  562.     self.contents.draw_text(0, WLH * 3, width - 32, WLH, text, 1)
  563.     text = sprintf("击败过: %3d/%3d", defeated, total)
  564.     self.contents.draw_text(0, WLH, width - 32, WLH, text, 1)
  565.     text = sprintf("完成度: %3d%%", defeated * 100 / total)
  566.     self.contents.draw_text(0, WLH * 2, width - 32, WLH, text, 1)
  567.   end
  568.   #--------------------------------------------------------------------------
  569.   # ● 构成的更新
  570.   #--------------------------------------------------------------------------
  571.   def update
  572.     @duration += 1
  573.     case @duration
  574.     when @interval...(@interval + WLH)
  575.       self.oy += 1
  576.     when (@interval + WLH)
  577.       @duration = 0
  578.       if self.oy >= WLH * 3
  579.         self.oy = 0
  580.       end
  581.     end
  582.   end
  583. end

  584. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  585. #==============================================================================
  586. # □ Window_EnemyGuideList
  587. #------------------------------------------------------------------------------
  588. #   怪物图件上表示怪物一栏的窗口。
  589. #==============================================================================

  590. class Window_EnemyGuideList < Window_Selectable
  591.   #--------------------------------------------------------------------------
  592.   # ● 对象初始化
  593.   #--------------------------------------------------------------------------
  594.   def initialize
  595.     super(0, WLH + 32, 240, Graphics.height - (WLH + 32))
  596.     self.index = 0
  597.     refresh
  598.     if KGC::EnemyGuide::USE_BACKGROUND_IMAGE
  599.       self.opacity = 0
  600.       self.height -= (self.height - 32) % WLH
  601.     end
  602.   end
  603.   #--------------------------------------------------------------------------
  604.   # ○ 取得选择的怪物
  605.   #--------------------------------------------------------------------------
  606.   def item
  607.     return @data[self.index]
  608.   end
  609.   #--------------------------------------------------------------------------
  610.   # ○ 敌人的目录是否已获得
  611.   #     enemy_id : 敌 ID
  612.   #--------------------------------------------------------------------------
  613.   def include?(enemy_id)
  614.     return KGC::Commands.enemy_guide_include?(enemy_id)
  615.   end
  616.   #--------------------------------------------------------------------------
  617.   # ● 情报更新
  618.   #--------------------------------------------------------------------------
  619.   def refresh
  620.     @data = []
  621.     if KGC::EnemyGuide::ENEMY_ORDER == nil
  622.       # ID顺序
  623.       (1...$data_enemies.size).each { |i|
  624.         @data << $data_enemies[i] if include?(i)
  625.       }
  626.     else
  627.       # 指定顺序
  628.       KGC::EnemyGuide::ENEMY_ORDER.each { |i|
  629.         case i
  630.         when Range    # 制定范围
  631.           i.each { |j|
  632.             @data << $data_enemies[i] if include?(j)
  633.           }
  634.         when Integer  # 指定ID
  635.           @data << $data_enemies[i] if include?(i)
  636.         end
  637.       }
  638.     end
  639.     @item_max = @data.size
  640.     create_contents
  641.     for i in 0...@item_max
  642.       draw_item(i)
  643.     end
  644.   end
  645.   #--------------------------------------------------------------------------
  646.   # ● 项目的描绘
  647.   #     index : 项目编号
  648.   #--------------------------------------------------------------------------
  649.   def draw_item(index)
  650.     enemy = @data[index]
  651.     self.contents.font.color = normal_color
  652.     unless KGC::Commands.enemy_defeated?(enemy.id)
  653.       self.contents.font.color.alpha = 128
  654.     end
  655.     rect = item_rect(index)
  656.     self.contents.clear_rect(rect)

  657.     if KGC::EnemyGuide::SHOW_SERIAL_NUMBER
  658.       s_num = sprintf(KGC::EnemyGuide::SERIAL_NUM_FORMAT,
  659.         KGC::EnemyGuide::SERIAL_NUM_FOLLOW ? (index + 1) : enemy.id)
  660.     end

  661.     text = (KGC::EnemyGuide::SHOW_SERIAL_NUMBER ? s_num : "")
  662.     if KGC::Commands.enemy_encountered?(enemy.id)
  663.       # 遭遇过
  664.       text += enemy.name
  665.     else
  666.       # 未遭遇
  667.       mask = KGC::EnemyGuide::UNKNOWN_ENEMY_NAME
  668.       if mask.scan(/./).size == 1
  669.         mask = mask * enemy.name.scan(/./).size
  670.       end
  671.       text += mask
  672.     end
  673.     self.contents.draw_text(rect, text)
  674.   end
  675. end

  676. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  677. #==============================================================================
  678. # □ Window_EnemyGuideStatus
  679. #------------------------------------------------------------------------------
  680. #   在怪物图件上、表示简介的窗口。
  681. #==============================================================================

  682. class Window_EnemyGuideStatus < Window_Base
  683.   #--------------------------------------------------------------------------
  684.   # ○ 定数
  685.   #--------------------------------------------------------------------------
  686.   TYPE_PARAMETERS  = 0  # 表现形式 : 属性
  687.   TYPE_DESCRIPTION = 1  # 表现形式 : 说明
  688.   #--------------------------------------------------------------------------
  689.   # ● 公开即时变量
  690.   #--------------------------------------------------------------------------
  691.   attr_reader   :enemy                    # 表示敌人
  692.   #--------------------------------------------------------------------------
  693.   # ● 对象初始化
  694.   #--------------------------------------------------------------------------
  695.   def initialize
  696.     super(240, 0, Graphics.width - 240, Graphics.height)
  697.     self.enemy = nil
  698.     self.z = 100
  699.     if KGC::EnemyGuide::USE_BACKGROUND_IMAGE
  700.       self.opacity = 0
  701.     end
  702.     @show_sprite = false
  703.     @enemy_sprite = Sprite.new
  704.     @enemy_sprite.bitmap = Bitmap.new(Graphics.width, Graphics.height)
  705.     @enemy_sprite.x = 0
  706.     @enemy_sprite.y = 0
  707.     @enemy_sprite.z = self.z + 100
  708.     @enemy_sprite.visible = false
  709.   end
  710.   #--------------------------------------------------------------------------
  711.   # ● 废弃
  712.   #--------------------------------------------------------------------------
  713.   def dispose
  714.     super
  715.     @enemy_sprite.bitmap.dispose
  716.     @enemy_sprite.dispose
  717.   end
  718.   #--------------------------------------------------------------------------
  719.   # ○ 表现敌人设定
  720.   #--------------------------------------------------------------------------
  721.   def enemy=(enemy)
  722.     @enemy = enemy
  723.     refresh
  724.   end
  725.   #--------------------------------------------------------------------------
  726.   # ○ 表示情报设定
  727.   #     type : 表示形式 (TYPE_PARAMETERS, TYPE_DESCRIPTION)
  728.   #--------------------------------------------------------------------------
  729.   def set_info_type(type)
  730.     case type
  731.     when TYPE_PARAMETERS
  732.       self.ox = 0
  733.     when TYPE_DESCRIPTION
  734.       self.ox = self.width - 32
  735.     end
  736.   end
  737.   #--------------------------------------------------------------------------
  738.   # ○ sprite的表示切换
  739.   #--------------------------------------------------------------------------
  740.   def switch_sprite
  741.     @show_sprite = !@show_sprite
  742.     @enemy_sprite.visible = @show_sprite
  743.   end
  744.   #--------------------------------------------------------------------------
  745.   # ● 情报更新
  746.   #--------------------------------------------------------------------------
  747.   def refresh
  748.     original_width = self.width
  749.     self.width = original_width * 2 - 32
  750.     create_contents
  751.     self.width = original_width

  752.     return if enemy == nil

  753.     self.contents.font.color = normal_color
  754.     # 没有遭遇
  755.     unless KGC::Commands.enemy_encountered?(enemy.id)
  756.       self.contents.font.color.alpha = 128
  757.       dy = (height - 32) / 2
  758.       dy -= dy % WLH
  759.       self.contents.draw_text(0, dy, width - 32, WLH,
  760.         KGC::EnemyGuide::UNENCOUNTERED_DATA, 1)
  761.       return
  762.     end

  763.     draw_status
  764.   end
  765.   #--------------------------------------------------------------------------
  766.   # ○ 简介的描绘
  767.   #--------------------------------------------------------------------------
  768.   def draw_status
  769.     draw_graphic
  770.     draw_parameter
  771.     draw_element
  772.     draw_state
  773.     draw_prize
  774.     draw_description
  775.   end
  776.   #--------------------------------------------------------------------------
  777.   # ○ 图解的描绘
  778.   #--------------------------------------------------------------------------
  779.   def draw_graphic
  780.     bitmap = Cache.battler(enemy.battler_name, enemy.battler_hue)
  781.     rect = Rect.new(0, 0, bitmap.width / 3, bitmap.height / 3)
  782.     rect.x = (104 - rect.width) / 2
  783.     rect.y = (96 - rect.height) / 2
  784.     self.contents.stretch_blt(rect, bitmap, bitmap.rect)

  785.     @enemy_sprite.bitmap.fill_rect(@enemy_sprite.bitmap.rect,
  786.       Color.new(0, 0, 0, 160))
  787.     rect.x = (Graphics.width - bitmap.width) / 2
  788.     rect.y = (Graphics.height - bitmap.height) / 2
  789.     @enemy_sprite.bitmap.blt(rect.x, rect.y, bitmap, bitmap.rect)
  790.   end
  791.   #--------------------------------------------------------------------------
  792.   # ○ 参数的描画
  793.   #--------------------------------------------------------------------------
  794.   def draw_parameter
  795.     param = {}
  796.     if KGC::Commands.enemy_defeated?(enemy.id)
  797.       param[:maxhp] = enemy.maxhp
  798.       param[:maxmp] = enemy.maxmp
  799.       param[:atk]   = enemy.atk
  800.       param[:def]   = enemy.def
  801.       param[:spi]   = enemy.spi
  802.       param[:agi]   = enemy.agi
  803.     else
  804.       param[:maxhp] = param[:maxmp] = param[:atk] = param[:def] =
  805.         param[:spi] = param[:agi] = KGC::EnemyGuide::UNDEFEATED_PARAMETER
  806.     end

  807.     # 名字, HP, MP
  808.     dx = 112
  809.     dy = 0
  810.     self.contents.font.color = normal_color
  811.     self.contents.draw_text(dx, dy, width - (32 + dx), WLH, enemy.name)
  812.     self.contents.font.color = system_color
  813.     self.contents.draw_text(dx, dy + WLH,     80, WLH, Vocab.hp)
  814.     self.contents.draw_text(dx, dy + WLH * 2, 80, WLH, Vocab.mp)
  815.     self.contents.font.color = normal_color
  816.     self.contents.draw_text(dx + 88, dy + WLH,     64, WLH, param[:maxhp], 2)
  817.     self.contents.draw_text(dx + 88, dy + WLH * 2, 64, WLH, param[:maxmp], 2)

  818.     # ATK ~ AGI
  819.     dx = 0
  820.     dy = 96
  821.     dw = (width - 32) / 2
  822.     self.contents.font.color = system_color
  823.     self.contents.draw_text(dx,      dy,       80, WLH, Vocab.atk)
  824.     self.contents.draw_text(dx + dw, dy,       80, WLH, Vocab.def)
  825.     self.contents.draw_text(dx,      dy + WLH, 80, WLH, Vocab.spi)
  826.     self.contents.draw_text(dx + dw, dy + WLH, 80, WLH, Vocab.agi)
  827.     dx = 80
  828.     self.contents.font.color = normal_color
  829.     self.contents.draw_text(dx,      dy,       48, WLH, param[:atk], 2)
  830.     self.contents.draw_text(dx + dw, dy,       48, WLH, param[:def], 2)
  831.     self.contents.draw_text(dx     , dy + WLH, 48, WLH, param[:spi], 2)
  832.     self.contents.draw_text(dx + dw, dy + WLH, 48, WLH, param[:agi], 2)
  833.   end
  834.   #--------------------------------------------------------------------------
  835.   # ○ 属性的描画
  836.   #--------------------------------------------------------------------------
  837.   def draw_element
  838.     dx = 0
  839.     dy = 96 + WLH * 2
  840.     self.contents.font.color = system_color
  841.     self.contents.draw_text(dx, dy,       80, WLH,
  842.       KGC::EnemyGuide::PARAMETER_NAME[:weak_element])
  843.     self.contents.draw_text(dx, dy + WLH, 80, WLH,
  844.       KGC::EnemyGuide::PARAMETER_NAME[:resist_element])

  845.     return unless KGC::Commands.enemy_defeated?(enemy.id)

  846.     # 弱点属性
  847.     draw_icon_list(dx + 80, dy,
  848.       KGC::EnemyGuide::CHECK_ELEMENT_LIST,
  849.       Proc.new { |i| enemy.element_ranks[i] < 3 },
  850.       Proc.new { |i| KGC::EnemyGuide::ELEMENT_ICON[i] })
  851.     # 耐性属性
  852.     draw_icon_list(dx + 80, dy + WLH,
  853.       KGC::EnemyGuide::CHECK_ELEMENT_LIST,
  854.       Proc.new { |i| enemy.element_ranks[i] > 3 },
  855.       Proc.new { |i| KGC::EnemyGuide::ELEMENT_ICON[i] })
  856.   end
  857.   #--------------------------------------------------------------------------
  858.   # ○ ICON目录的描画
  859.   #     dx, dy          : 描画处 X, Y
  860.   #     item_list       : 描画对象的目录
  861.   #     condition_proc  : 描画条件 Proc
  862.   #     icon_index_proc : ICON index 取得用 Proc
  863.   #--------------------------------------------------------------------------
  864.   def draw_icon_list(dx, dy, item_list, condition_proc, icon_index_proc)
  865.     ix = 0
  866.     item_list.each { |item|
  867.       next if item == nil
  868.       if condition_proc.call(item)
  869.         icon_index = icon_index_proc.call(item)
  870.         if icon_index != nil && icon_index > 0
  871.           draw_icon(icon_index, dx + ix, dy)
  872.           ix += 24
  873.         end
  874.       end
  875.     }
  876.   end
  877.   #--------------------------------------------------------------------------
  878.   # ○ 状态的描画
  879.   #--------------------------------------------------------------------------
  880.   def draw_state
  881.     dx = 0
  882.     dy = 96 + WLH * 4
  883.     self.contents.font.color = system_color
  884.     self.contents.draw_text(dx, dy,       80, WLH,
  885.       KGC::EnemyGuide::PARAMETER_NAME[:weak_state])
  886.     self.contents.draw_text(dx, dy + WLH, 80, WLH,
  887.       KGC::EnemyGuide::PARAMETER_NAME[:resist_state])

  888.     return unless KGC::Commands.enemy_defeated?(enemy.id)

  889.     # 弱点状态
  890.     draw_icon_list(dx + 80, dy,
  891.       $data_states,
  892.       Proc.new { |i| enemy.state_ranks[i.id] < 3 },
  893.       Proc.new { |i| i.icon_index })
  894.     # 无效状态
  895.     draw_icon_list(dx + 80, dy + WLH,
  896.       $data_states,
  897.       Proc.new { |i| enemy.state_ranks[i.id] == 6 },
  898.       Proc.new { |i| i.icon_index })
  899.   end
  900.   #--------------------------------------------------------------------------
  901.   # ○ 战利品的描画
  902.   #--------------------------------------------------------------------------
  903.   def draw_prize
  904.     param = {}
  905.     if KGC::Commands.enemy_defeated?(enemy.id)
  906.       param[:exp]  = enemy.exp
  907.       param[:gold] = enemy.gold
  908.     else
  909.       param[:exp] = param[:gold] = KGC::EnemyGuide::UNDEFEATED_PARAMETER
  910.     end

  911.     dx = 0
  912.     dy = 96 + WLH * 6
  913.     dw = (width - 32) / 2
  914.     self.contents.font.color = system_color
  915.     self.contents.draw_text(dx,      dy,        80, WLH,
  916.       KGC::EnemyGuide::PARAMETER_NAME[:exp])
  917.     self.contents.draw_text(dx + dw, dy,        80, WLH, Vocab.gold)
  918.     self.contents.draw_text(dx,      dy + WLH, 128, WLH,
  919.       KGC::EnemyGuide::PARAMETER_NAME[:treasure], 1)
  920.     self.contents.draw_text(dx + dw, dy + WLH, 128, WLH,
  921.       KGC::EnemyGuide::PARAMETER_NAME[:drop_prob], 2)

  922.     # EXP, Golds
  923.     dx = 76
  924.     self.contents.font.color = normal_color
  925.     self.contents.draw_text(dx,      dy, 52, WLH, param[:exp], 2)
  926.     self.contents.draw_text(dx + dw, dy, 52, WLH, param[:gold], 2)

  927.     return unless KGC::Commands.enemy_defeated?(enemy.id)

  928.     # 掉落物品
  929.     drop_items = [enemy.drop_item1, enemy.drop_item2]
  930.     if $imported["ExtraDropItem"]
  931.       drop_items += enemy.extra_drop_items
  932.     end
  933.     drop_items.delete_if { |i| i.kind == 0 }

  934.     dx = 0
  935.     dy += WLH * 2
  936.     drop_items.each_with_index { |item, i|
  937.       # 物品名
  938.       case item.kind
  939.       when 0
  940.         next
  941.       when 1
  942.         drop_item = $data_items[item.item_id]
  943.       when 2
  944.         drop_item = $data_weapons[item.weapon_id]
  945.       when 3
  946.         drop_item = $data_armors[item.armor_id]
  947.       end
  948.       if KGC::Commands.enemy_item_dropped?(enemy.id, i)
  949.         draw_item_name(drop_item, dx, dy)
  950.       else
  951.         draw_masked_item_name(drop_item, dx, dy)
  952.       end
  953.       # 掉落率
  954.       if $imported["ExtraDropItem"] && item.drop_prob > 0
  955.         text = sprintf("%d%%", item.drop_prob)
  956.       else
  957.         text = "1/#{item.denominator}"
  958.       end
  959.       self.contents.draw_text(dx + dw, dy, 128, WLH, text, 2)
  960.       dy += WLH
  961.     }
  962.   end
  963.   #--------------------------------------------------------------------------
  964.   # ○ 物品名为遮挡的描画
  965.   #     item    : 物品 (机能、武器、防具都可以)
  966.   #     x       : 描画处 X 坐标
  967.   #     y       : 描画出 Y 坐标
  968.   #     enabled : 有効标志。false 的时候半透明的描画
  969.   #--------------------------------------------------------------------------
  970.   def draw_masked_item_name(item, x, y, enabled = true)
  971.     return if item == nil

  972.     draw_icon(item.icon_index, x, y, enabled)
  973.     self.contents.font.color = normal_color
  974.     self.contents.font.color.alpha = enabled ? 255 : 128
  975.     text = KGC::EnemyGuide::UNDROPPED_ITEM_NAME
  976.     if text.scan(/./).size == 1
  977.       text = text * item.name.scan(/./).size
  978.     end
  979.     self.contents.draw_text(x + 24, y, 172, WLH, text)
  980.   end
  981.   #--------------------------------------------------------------------------
  982.   # ○ 说明文的描画
  983.   #--------------------------------------------------------------------------
  984.   def draw_description
  985.     dx = self.width - 32
  986.     dy = 96
  987.     self.contents.clear_rect(dx, dy, self.width - 32, self.height - 128)
  988.     rect = Rect.new(0, 0, self.width - 32, 96)
  989.     self.contents.blt(dx, 0, self.contents, rect)

  990.     return unless KGC::Commands.enemy_defeated?(enemy.id)

  991.     dx += 4
  992.     enemy.enemy_guide_description.split(/[\r\n]+/).each { |line|
  993.       self.contents.draw_text(dx, dy, self.width - 32, WLH, line)
  994.       dy += WLH
  995.     }
  996.   end
  997. end

  998. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  999. #==============================================================================
  1000. # ■ Scene_Map
  1001. #==============================================================================

  1002. class Scene_Map < Scene_Base
  1003.   #--------------------------------------------------------------------------
  1004.   # ● 实行画面的切换
  1005.   #--------------------------------------------------------------------------
  1006.   alias update_scene_change_KGC_EnemyGuide update_scene_change
  1007.   def update_scene_change
  1008.     return if $game_player.moving?    # PLAYER的移动中?

  1009.     if $game_temp.next_scene == :enemy_guide
  1010.       call_enemy_guide
  1011.       return
  1012.     end

  1013.     update_scene_change_KGC_EnemyGuide
  1014.   end
  1015.   #--------------------------------------------------------------------------
  1016.   # ○ 切换到怪物图鉴
  1017.   #--------------------------------------------------------------------------
  1018.   def call_enemy_guide
  1019.     $game_temp.next_scene = nil
  1020.     $scene = Scene_EnemyGuide.new(0, Scene_EnemyGuide::HOST_MAP)
  1021.   end
  1022. end

  1023. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  1024. #==============================================================================
  1025. # ■ Scene_Menu
  1026. #==============================================================================

  1027. class Scene_Menu < Scene_Base
  1028.   if KGC::EnemyGuide::USE_MENU_ENEMY_GUIDE_COMMAND
  1029.   #--------------------------------------------------------------------------
  1030.   # ● 作成指令窗口
  1031.   #--------------------------------------------------------------------------
  1032.   alias create_command_window_KGC_EnemyGuide create_command_window
  1033.   def create_command_window
  1034.     create_command_window_KGC_EnemyGuide

  1035.     return if $imported["CustomMenuCommand"]

  1036.     @__command_enemy_guide_index =
  1037.       @command_window.add_command(Vocab.enemy_guide)
  1038.     if @command_window.oy > 0
  1039.       @command_window.oy -= Window_Base::WLH
  1040.     end
  1041.     @command_window.index = @menu_index
  1042.   end
  1043.   end
  1044.   #--------------------------------------------------------------------------
  1045.   # ● 指令选择的更新
  1046.   #--------------------------------------------------------------------------
  1047.   alias update_command_selection_KGC_EnemyGuide update_command_selection
  1048.   def update_command_selection
  1049.     current_menu_index = @__command_enemy_guide_index
  1050.     call_enemy_guide_flag = false

  1051.     if Input.trigger?(Input::C)
  1052.       case @command_window.index
  1053.       when @__command_enemy_guide_index  # 怪物图鉴
  1054.         call_enemy_guide_flag = true
  1055.       end
  1056.     end

  1057.     # 移动到怪物图鉴
  1058.     if call_enemy_guide_flag
  1059.       Sound.play_decision
  1060.       $scene = Scene_EnemyGuide.new(@__command_enemy_guide_index,
  1061.         Scene_EnemyGuide::HOST_MENU)
  1062.       return
  1063.     end

  1064.     update_command_selection_KGC_EnemyGuide
  1065.   end
  1066. end

  1067. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  1068. #==============================================================================
  1069. # □ Scene_EnemyGuide
  1070. #------------------------------------------------------------------------------
  1071. #   进行怪物图鉴画面的处理的目录。
  1072. #==============================================================================

  1073. class Scene_EnemyGuide < Scene_Base
  1074.   HOST_MENU   = 0
  1075.   HOST_MAP    = 1
  1076.   #--------------------------------------------------------------------------
  1077.   # ● 对象初始化
  1078.   #     menu_index  : 指令光标初期位置
  1079.   #     host_scene  : 呼出原处 (0..菜单  1..地图)
  1080.   #--------------------------------------------------------------------------
  1081.   def initialize(menu_index = 0, host_scene = HOST_MENU)
  1082.     @menu_index = menu_index
  1083.     @host_scene = host_scene
  1084.   end
  1085.   #--------------------------------------------------------------------------
  1086.   # ● 开始的处理
  1087.   #--------------------------------------------------------------------------
  1088.   def start
  1089.     super
  1090.     create_menu_background
  1091.     if KGC::EnemyGuide::USE_BACKGROUND_IMAGE
  1092.       @back_sprite = Sprite.new
  1093.       begin
  1094.         @back_sprite.bitmap = Cache.system(KGC::EnemyGuide::BACKGROUND_FILENAME)
  1095.       rescue
  1096.         @back_sprite.bitmap = Bitmap.new(32, 32)
  1097.       end
  1098.     end

  1099.     @top_window = Window_EnemyGuideTop.new
  1100.     @enemy_window = Window_EnemyGuideList.new
  1101.     @status_window = Window_EnemyGuideStatus.new
  1102.     @status_window.enemy = @enemy_window.item
  1103.   end
  1104.   #--------------------------------------------------------------------------
  1105.   # ● 终了的处理
  1106.   #--------------------------------------------------------------------------
  1107.   def terminate
  1108.     super
  1109.     dispose_menu_background
  1110.     if @back_sprite != nil
  1111.       @back_sprite.bitmap.dispose
  1112.       @back_sprite.dispose
  1113.     end
  1114.     @top_window.dispose
  1115.     @enemy_window.dispose
  1116.     @status_window.dispose
  1117.   end
  1118.   #--------------------------------------------------------------------------
  1119.   # ○ 返回原菜单画面
  1120.   #--------------------------------------------------------------------------
  1121.   def return_scene
  1122.     case @host_scene
  1123.     when HOST_MENU
  1124.       $scene = Scene_Menu.new(@menu_index)
  1125.     when HOST_MAP
  1126.       $scene = Scene_Map.new
  1127.     end
  1128.   end
  1129.   #--------------------------------------------------------------------------
  1130.   # ● 构架的更新
  1131.   #--------------------------------------------------------------------------
  1132.   def update
  1133.     super
  1134.     update_menu_background
  1135.     @top_window.update
  1136.     @enemy_window.update
  1137.     @status_window.update
  1138.     if @enemy_window.active
  1139.       update_enemy_selection
  1140.     end
  1141.   end
  1142.   #--------------------------------------------------------------------------
  1143.   # ○ 敌人选择的更新
  1144.   #--------------------------------------------------------------------------
  1145.   def update_enemy_selection
  1146.     if @last_index != @enemy_window.index
  1147.       @status_window.enemy = @enemy_window.item
  1148.       @last_index = @enemy_window.index
  1149.     end

  1150.     if Input.trigger?(Input::B)
  1151.       Sound.play_cancel
  1152.       return_scene
  1153.     elsif Input.trigger?(Input::A) || Input.trigger?(Input::C)
  1154.       # sprte的表示切换
  1155.       Sound.play_decision
  1156.       @status_window.switch_sprite
  1157.     elsif Input.trigger?(Input::LEFT)
  1158.       # 参数表示
  1159.       Sound.play_cursor
  1160.       @status_window.set_info_type(Window_EnemyGuideStatus::TYPE_PARAMETERS)
  1161.     elsif Input.trigger?(Input::RIGHT)
  1162.       # 说明表示
  1163.       Sound.play_cursor
  1164.       @status_window.set_info_type(Window_EnemyGuideStatus::TYPE_DESCRIPTION)
  1165.     end
  1166.   end
  1167. end
复制代码
dsu_plus_rewardpost_czw
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-17 12:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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