cooldoode325

Battle Command List

Apr 4th, 2014
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 41.60 KB | None | 0 0
  1. #==============================================================================
  2. #
  3. # ¥ Yanfly Engine Ace - Battle Command List v1.09b
  4. # -- Last Updated: 2012.12.18
  5. # -- Level: Normal
  6. # -- Requires: n/a
  7. #
  8. #==============================================================================
  9.  
  10. $imported = {} if $imported.nil?
  11. $imported["YEA-BattleCommandList"] = true
  12.  
  13. #==============================================================================
  14. # ¥ Updates
  15. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  16. # 2012.12.18 - Completely fixed the command hide switch bug.
  17. # 2012.12.17 - Fixed Bug with command hide until switch.
  18. # 2012.01.10 - Compatibility Update: Battle System FTB
  19. # 2011.12.30 - Bug Fixed: Disappearing windows when no confirm window is used.
  20. # 2011.12.26 - Bug Fixed: Actor Command Window disappears without Battle Engine
  21. # Ace installed.
  22. # 2011.12.19 - Compatibility Update: Class System
  23. # - New Actor Command: Subclass List
  24. # 2011.12.17 - Bug Fixed: Item command from Actor Command Window fixed.
  25. # 2011.12.15 - Bug Fixed: Prevented multiple actions per battler.
  26. # 2011.12.13 - Compatibility Update: Command Equip
  27. # Compatibility Update: Add-On: Command Party
  28. # 2011.12.12 - Compatibility Update: Command Autobattle
  29. # 2011.12.10 - Started Script and Finished.
  30. # - Compatibility Update: Combat Log Display
  31. #
  32. #==============================================================================
  33. # ¥ Introduction
  34. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  35. # This script allows you to change the order to commands that appear in battle
  36. # for the Party Command Window and Actor Command Window. In addition to the
  37. # ability to change the order commands appear, you may also add commands to the
  38. # Actor Command Window that can trigger the usage of skills and/or items. The
  39. # Confirm Command Window is also a new addition that appears at the end of the
  40. # action select phase (after the last actor has made a choice) before entering
  41. # the battle phase.
  42. #
  43. #==============================================================================
  44. # ¥ Instructions
  45. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  46. # To install this script, open up your script editor and copy/paste this script
  47. # to an open slot below ¥ Materials/‘fÞ but above ¥ Main. Remember to save.
  48. #
  49. # -----------------------------------------------------------------------------
  50. # Actor Notetags - These notetags go in the actors notebox in the database.
  51. # -----------------------------------------------------------------------------
  52. # <command list>
  53. # string
  54. # string
  55. # </command list>
  56. # These lines go inside of an actor's notebox to adjust the battle commands
  57. # that appear in the actor's Actor Command Window. Refer to the module as to
  58. # what to use for the strings. If a custom command list is used for an actor,
  59. # it will take priority over its class's custom command list, which takes place
  60. # over the default command list.
  61. #
  62. # -----------------------------------------------------------------------------
  63. # Class Notetags - These notetags go in the class notebox in the database.
  64. # -----------------------------------------------------------------------------
  65. # <command list>
  66. # string
  67. # string
  68. # </command list>
  69. # These lines go inside of a class's notebox to adjust the battle commands
  70. # that appear in the actor's Actor Command Window. Refer to the module as to
  71. # what to use for the strings. A custom command list for a class does not take
  72. # priority over an actor's custom command list, but it does take priority over
  73. # the default command list.
  74. #
  75. # -----------------------------------------------------------------------------
  76. # Skill Notetags - These notetags go in the skill notebox in the database.
  77. # -----------------------------------------------------------------------------
  78. # <command name: string>
  79. # If this skill is being used as a command, it will use "string" to replace the
  80. # skill's name in the command list window.
  81. #
  82. # <command hide until learn>
  83. # This hides the command until the actor has learned the respective skill for
  84. # the command to appear in the actor's command list.
  85. #
  86. # <command hide until usable>
  87. # This hides the command until the actor is capable of using the command by
  88. # meeting TP costs or MP costs.
  89. #
  90. # <command hide until switch: x>
  91. # This switch x is OFF, then the command remains hidden. If the switch is ON,
  92. # then the command becomes enabled and appears in the command list.
  93. #
  94. # -----------------------------------------------------------------------------
  95. # Item Notetags - These notetags go in the item notebox in the database.
  96. # -----------------------------------------------------------------------------
  97. # <command name: string>
  98. # If this item is being used as a command, it will use "string" to replace the
  99. # item's name in the command list window.
  100. #
  101. # <command hide until usable>
  102. # This hides the command until the actor is capable of using the command as
  103. # long as that item is usable normally.
  104. #
  105. # <command hide until switch: x>
  106. # This switch x is OFF, then the command remains hidden. If the switch is ON,
  107. # then the command becomes enabled and appears in the command list.
  108. #
  109. #==============================================================================
  110. # ¥ Compatibility
  111. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  112. # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
  113. # it will run with RPG Maker VX without adjusting.
  114. #
  115. # For maximum compatibility with Yanfly Engine Ace - Ace Battle Engine, place
  116. # this script under Ace Battle Engine.
  117. #
  118. #==============================================================================
  119.  
  120. module YEA
  121. module BATTLE_COMMANDS
  122.  
  123. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  124. # - Party Command Window Settings -
  125. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  126. # This section adjusts the commands for the Party Command Window. Rearrange
  127. # commands as you see fit or add in new ones. Here's a list of which
  128. # command does what:
  129. #
  130. # -------------------------------------------------------------------------
  131. # :command Description
  132. # -------------------------------------------------------------------------
  133. # :fight Enters the command selection phase for actors. Default.
  134. # :escape Party attempts to escape from battle. Default.
  135. #
  136. # :combatlog Requires YEA - Combat Log Display.
  137. # :autobattle Requires YEA - Command Autobattle.
  138. # :party Requires YEA - Party System Add-On: Command Party.
  139. #
  140. # And that's all of the currently available commands. This list will be
  141. # updated as more scripts become available.
  142. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  143. # This array arranges the order of which the commands appear in the Party
  144. # Command window.
  145. PARTY_COMMANDS =[
  146. :fight,
  147. :autobattle,
  148. :party,
  149. # :custom1,
  150. # :custom2,
  151. :escape,
  152. ] # Do not remove this.
  153.  
  154. #--------------------------------------------------------------------------
  155. # - Party Command Custom Commands -
  156. # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  157. # For those who use scripts to that may produce unique effects in battle,
  158. # use this hash to manage the custom commands for the Party Command Window.
  159. # You can disable certain commands or prevent them from appearing by using
  160. # switches. If you don't wish to bind them to a switch, set the proper
  161. # switch to 0 for it to have no impact.
  162. #--------------------------------------------------------------------------
  163. CUSTOM_PARTY_COMMANDS ={
  164. # :command => ["Display Name", EnableSwitch, ShowSwitch, Handler Method],
  165. :custom1 => [ "Custom Name", 0, 0, :command_name1],
  166. :custom2 => [ "Custom Name", 13, 0, :command_name2],
  167. } # Do not remove this.
  168.  
  169. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  170. # - Actor Command Window Settings -
  171. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  172. # This section only adjusts the default commands for actors. If you wish
  173. # for an actor to have a unique command list, use the notetags listed in
  174. # the instructions to apply them. The custom command lists for actors will
  175. # override this command list.
  176. #
  177. # Here's a list of which command does what:
  178. #
  179. # -------------------------------------------------------------------------
  180. # :command Description
  181. # -------------------------------------------------------------------------
  182. # "ATTACK" Normal attack for actor. Default.
  183. # "SKILL LIST" All of the skill types the actor can use. Default.
  184. # "DEFEND" Set defend action for actor. Default.
  185. # "ITEMS" Opens up the item menu for the actor. Default.
  186. #
  187. # "SKILL TYPE X" Specifically puts in skill type X if actor has it.
  188. # "SKILL X" Uses Skill X in that slot.
  189. # "ITEM X" Uses Item X in that slot.
  190. #
  191. # "AUTOBATTLE" Requires YEA - Command Autobattle.
  192. # "EQUIP" Requires YEA - Command Equip
  193. # "SUBCLASS LIST" Requires YEA - Class System. Adds subclass skill types.
  194. #
  195. # And that's all of the currently available commands. This list will be
  196. # updated as more scripts become available.
  197. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  198. # This array arranges the order of which the commands appear in the Actor
  199. # Command window if the actor does not have a custom command list.
  200. DEFAULT_ACTOR_COMMANDS =[
  201. # "AUTOBATTLE",
  202. "ATTACK",
  203. "SKILL LIST",
  204. "SUBCLASS LIST",
  205. "DEFEND",
  206. "ITEMS",
  207. "EQUIP",
  208. ] # Do not remove this.
  209.  
  210. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  211. # - Confirm Command Window Settings -
  212. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  213. # The confirm window is something new that's been added. It shows after the
  214. # last actor has made a decision as to what actions the player wishes to
  215. # take for the turn Here's a list of which command does what:
  216. #
  217. # -------------------------------------------------------------------------
  218. # :command Description
  219. # -------------------------------------------------------------------------
  220. # :execute Start the battle turn. Comes with this script.
  221. #
  222. # :combatlog Requires YEA - Combat Log Display.
  223. #
  224. # And that's all of the currently available commands. This list will be
  225. # updated as more scripts become available.
  226. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  227. USE_CONFIRM_WINDOW = true # Set to false if you don't wish to use it.
  228.  
  229. # This array arranges the order of which the commands appear in the Party
  230. # Command window.
  231. CONFIRM_COMMANDS =[
  232. :execute,
  233. :combatlog,
  234. # :custom1,
  235. # :custom2,
  236. ] # Do not remove this.
  237.  
  238. # This sets what text appears for the execute command.
  239. EXECUTE_VOCAB = "Confirm"
  240.  
  241. #--------------------------------------------------------------------------
  242. # - Confirm Command Custom Commands -
  243. # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  244. # For those who use scripts to that may produce unique effects in battle,
  245. # use this hash to manage the custom commands for the Confirm Command
  246. # Window. You can disable certain commands or prevent them from appearing
  247. # by using switches. If you don't wish to bind them to a switch, set the
  248. # proper switch to 0 for it to have no impact.
  249. #--------------------------------------------------------------------------
  250. CUSTOM_CONFIRM_COMMANDS ={
  251. # :command => ["Display Name", EnableSwitch, ShowSwitch, Handler Method],
  252. :custom1 => [ "Custom Name", 0, 0, :command_name1],
  253. :custom2 => [ "Custom Text", 13, 0, :command_name2],
  254. } # Do not remove this.
  255.  
  256. end # BATTLE_COMMANDS
  257. end # YEA
  258.  
  259. #==============================================================================
  260. # ¥ Editting anything past this point may potentially result in causing
  261. # computer damage, incontinence, explosion of user's head, coma, death, and/or
  262. # halitosis so edit at your own risk.
  263. #==============================================================================
  264.  
  265. module YEA
  266. module REGEXP
  267. module BASEITEM
  268.  
  269. COMMAND_LIST_ON = /<(?:COMMAND_LIST|command list)>/i
  270. COMMAND_LIST_OFF = /<\/(?:COMMAND_LIST|command list)>/i
  271.  
  272. end # BASEITEM
  273. module USABLEITEM
  274.  
  275. COMMAND_NAME = /<(?:COMMAND NAME|command name):[ ](.*)>/i
  276. COMMAND_HIDE_LEARN =
  277. /<(?:COMMAND_HIDE_UNTIL_LEARN|command hide until learn)>/i
  278. COMMAND_HIDE_USABLE =
  279. /<(?:COMMAND_HIDE_UNTIL_USABLE|command hide until usable)>/i
  280. COMMAND_HIDE_SWITCH =
  281. /<(?:COMMAND_HIDE_UNTIL_SWITCH|command hide until switch):[ ](\d+)>/i
  282.  
  283. end # USABLEITEM
  284. end # REGEXP
  285. end # YEA
  286.  
  287. #==============================================================================
  288. # ¡ DataManager
  289. #==============================================================================
  290.  
  291. module DataManager
  292.  
  293. #--------------------------------------------------------------------------
  294. # alias method: load_database
  295. #--------------------------------------------------------------------------
  296. class <<self; alias load_database_bcl load_database; end
  297. def self.load_database
  298. load_database_bcl
  299. load_notetags_bcl
  300. end
  301.  
  302. #--------------------------------------------------------------------------
  303. # new method: load_notetags_bcl
  304. #--------------------------------------------------------------------------
  305. def self.load_notetags_bcl
  306. groups = [$data_actors, $data_classes, $data_skills, $data_items]
  307. for group in groups
  308. for obj in group
  309. next if obj.nil?
  310. obj.load_notetags_bcl
  311. end
  312. end
  313. end
  314.  
  315. end # DataManager
  316.  
  317. #==============================================================================
  318. # ¡ RPG::BaseItem
  319. #==============================================================================
  320.  
  321. class RPG::BaseItem
  322.  
  323. #--------------------------------------------------------------------------
  324. # public instance variables
  325. #--------------------------------------------------------------------------
  326. attr_accessor :battle_commands
  327.  
  328. #--------------------------------------------------------------------------
  329. # common cache: load_notetags_bcl
  330. #--------------------------------------------------------------------------
  331. def load_notetags_bcl
  332. @battle_commands = []
  333. @command_list = false
  334. #---
  335. self.note.split(/[\r\n]+/).each { |line|
  336. case line
  337. #---
  338. when YEA::REGEXP::BASEITEM::COMMAND_LIST_ON
  339. @command_list = true
  340. when YEA::REGEXP::BASEITEM::COMMAND_LIST_OFF
  341. @command_list = false
  342. else
  343. next unless @command_list
  344. @battle_commands.push(line.to_s.upcase)
  345. #---
  346. end
  347. } # self.note.split
  348. #---
  349. if @battle_commands == [] and self.is_a?(RPG::Class)
  350. @battle_commands = YEA::BATTLE_COMMANDS::DEFAULT_ACTOR_COMMANDS
  351. end
  352. end
  353.  
  354. end # RPG::BaseItem
  355.  
  356. #==============================================================================
  357. # ¡ RPG::UsableItem
  358. #==============================================================================
  359.  
  360. class RPG::UsableItem < RPG::BaseItem
  361.  
  362. #--------------------------------------------------------------------------
  363. # public instance variables
  364. #--------------------------------------------------------------------------
  365. attr_accessor :command_name
  366. attr_accessor :command_hide_until_learn
  367. attr_accessor :command_hide_until_usable
  368. attr_accessor :command_hide_until_switch
  369.  
  370. #--------------------------------------------------------------------------
  371. # common cache: load_notetags_bcl
  372. #--------------------------------------------------------------------------
  373. def load_notetags_bcl
  374. @command_name = @name.clone
  375. @command_hide_until_switch = 0
  376. #---
  377. self.note.split(/[\r\n]+/).each { |line|
  378. case line
  379. #---
  380. when YEA::REGEXP::USABLEITEM::COMMAND_NAME
  381. @command_name = $1.to_s
  382. when YEA::REGEXP::USABLEITEM::COMMAND_HIDE_LEARN
  383. @command_hide_until_learn = true
  384. when YEA::REGEXP::USABLEITEM::COMMAND_HIDE_USABLE
  385. @command_hide_until_usable = true
  386. when YEA::REGEXP::USABLEITEM::COMMAND_HIDE_SWITCH
  387. @command_hide_until_switch = $1.to_i
  388. #---
  389. end
  390. } # self.note.split
  391. #---
  392. end
  393.  
  394. end # RPG::UsableItem
  395.  
  396. #==============================================================================
  397. # ¡ Game_Actor
  398. #==============================================================================
  399.  
  400. class Game_Actor < Game_Battler
  401.  
  402. #--------------------------------------------------------------------------
  403. # new method: battle_commands
  404. #--------------------------------------------------------------------------
  405. def battle_commands
  406. return self.actor.battle_commands unless actor.battle_commands == []
  407. return self.class.battle_commands
  408. end
  409.  
  410. #--------------------------------------------------------------------------
  411. # new method: next_command_valid?
  412. #--------------------------------------------------------------------------
  413. def next_command_valid?
  414. if $imported["YEA-BattleSystem-FTB"] && BattleManager.btype?(:ftb)
  415. return false
  416. end
  417. return false if @action_input_index >= @actions.size - 1
  418. return true
  419. end
  420.  
  421. end # Game_Actor
  422.  
  423. #==============================================================================
  424. # ¡ Window_PartyCommand
  425. #==============================================================================
  426.  
  427. class Window_PartyCommand < Window_Command
  428.  
  429. #--------------------------------------------------------------------------
  430. # overwrite method: make_command_list
  431. #--------------------------------------------------------------------------
  432. def make_command_list
  433. for command in YEA::BATTLE_COMMANDS::PARTY_COMMANDS
  434. case command
  435. when :fight
  436. add_command(Vocab::fight, :fight)
  437. when :escape
  438. add_command(Vocab::escape, :escape, BattleManager.can_escape?)
  439. when :combatlog
  440. next unless $imported["YEA-CombatLogDisplay"]
  441. add_command(YEA::COMBAT_LOG::COMMAND_NAME, :combatlog)
  442. when :autobattle
  443. next unless $imported["YEA-CommandAutobattle"]
  444. add_autobattle_command
  445. when :party
  446. next unless $imported["YEA-PartySystem"]
  447. next unless $imported["YEA-CommandParty"]
  448. add_party_command
  449. else
  450. process_custom_command(command)
  451. end
  452. end
  453. end
  454.  
  455. #--------------------------------------------------------------------------
  456. # new method: process_custom_command
  457. #--------------------------------------------------------------------------
  458. def process_custom_command(command)
  459. return unless YEA::BATTLE_COMMANDS::CUSTOM_PARTY_COMMANDS.include?(command)
  460. show = YEA::BATTLE_COMMANDS::CUSTOM_PARTY_COMMANDS[command][2]
  461. continue = show <= 0 ? true : $game_switches[show]
  462. return unless continue
  463. text = YEA::BATTLE_COMMANDS::CUSTOM_PARTY_COMMANDS[command][0]
  464. switch = YEA::BATTLE_COMMANDS::CUSTOM_PARTY_COMMANDS[command][1]
  465. enabled = switch <= 0 ? true : $game_switches[switch]
  466. add_command(text, command, enabled)
  467. end
  468.  
  469. end # Window_PartyCommand
  470.  
  471. #==============================================================================
  472. # ¡ Window_ConfirmCommand
  473. #==============================================================================
  474.  
  475. class Window_ConfirmCommand < Window_Command
  476.  
  477. #--------------------------------------------------------------------------
  478. # initialize
  479. #--------------------------------------------------------------------------
  480. def initialize
  481. super(0, 0)
  482. deactivate
  483. hide
  484. end
  485.  
  486. #--------------------------------------------------------------------------
  487. # window_width
  488. #--------------------------------------------------------------------------
  489. def window_width; return 128; end
  490.  
  491. #--------------------------------------------------------------------------
  492. # visible_line_number
  493. #--------------------------------------------------------------------------
  494. def visible_line_number; return 4; end
  495.  
  496. #--------------------------------------------------------------------------
  497. # overwrite method: make_command_list
  498. #--------------------------------------------------------------------------
  499. def make_command_list
  500. for command in YEA::BATTLE_COMMANDS::CONFIRM_COMMANDS
  501. case command
  502. when :execute
  503. text = YEA::BATTLE_COMMANDS::EXECUTE_VOCAB
  504. add_command(text, :execute)
  505. when :combatlog
  506. next unless $imported["YEA-CombatLogDisplay"]
  507. add_command(YEA::COMBAT_LOG::COMMAND_NAME, :combatlog)
  508. else
  509. process_custom_command(command)
  510. end
  511. end
  512. end
  513.  
  514. #--------------------------------------------------------------------------
  515. # new method: process_custom_command
  516. #--------------------------------------------------------------------------
  517. def process_custom_command(command)
  518. return unless YEA::BATTLE_COMMANDS::CUSTOM_CONFIRM_COMMANDS.include?(command)
  519. show = YEA::BATTLE_COMMANDS::CUSTOM_CONFIRM_COMMANDS[command][2]
  520. continue = show <= 0 ? true : $game_switches[show]
  521. return unless continue
  522. text = YEA::BATTLE_COMMANDS::CUSTOM_CONFIRM_COMMANDS[command][0]
  523. switch = YEA::BATTLE_COMMANDS::CUSTOM_CONFIRM_COMMANDS[command][1]
  524. enabled = switch <= 0 ? true : $game_switches[switch]
  525. add_command(text, command, enabled)
  526. end
  527.  
  528. #--------------------------------------------------------------------------
  529. # setup
  530. #--------------------------------------------------------------------------
  531. def setup
  532. clear_command_list
  533. make_command_list
  534. refresh
  535. select(0)
  536. activate
  537. self.openness = 255
  538. show
  539. end
  540.  
  541. #--------------------------------------------------------------------------
  542. # process_handling
  543. #--------------------------------------------------------------------------
  544. if $imported["YEA-BattleEngine"]
  545. def process_handling
  546. return unless open? && active
  547. return process_dir4 if Input.repeat?(:LEFT)
  548. return super
  549. end
  550.  
  551. #--------------------------------------------------------------------------
  552. # process_dir4
  553. #--------------------------------------------------------------------------
  554. def process_dir4
  555. Sound.play_cursor
  556. Input.update
  557. deactivate
  558. call_handler(:dir4)
  559. end
  560. end # $imported["YEA-BattleEngine"]
  561.  
  562. end # Window_ConfirmCommand
  563.  
  564. #==============================================================================
  565. # ¡ Window_ActorCommand
  566. #==============================================================================
  567.  
  568. class Window_ActorCommand < Window_Command
  569.  
  570. #--------------------------------------------------------------------------
  571. # alias method: setup
  572. #--------------------------------------------------------------------------
  573. alias window_actorcommand_setup_bcl setup
  574. def setup(actor)
  575. window_actorcommand_setup_bcl(actor)
  576. show
  577. end
  578.  
  579. #--------------------------------------------------------------------------
  580. # overwrite method: make_command_list
  581. #--------------------------------------------------------------------------
  582. def make_command_list
  583. return if @actor.nil?
  584. @stype_list = []
  585. for command in @actor.battle_commands
  586. case command.upcase
  587. #---
  588. when /ATTACK/i
  589. add_attack_command
  590. when /SKILL LIST/i
  591. add_skill_commands
  592. when /DEFEND/i
  593. add_guard_command
  594. when /ITEMS/i
  595. add_item_command
  596. #---
  597. when /SKILL TYPE[ ](\d+)/i
  598. add_skill_type_command($1.to_i)
  599. when /SKILL[ ](\d+)/i
  600. add_skill_id_command($1.to_i)
  601. when /ITEM[ ](\d+)/i
  602. add_item_id_command($1.to_i)
  603. #---
  604. when /AUTOBATTLE/i
  605. next unless $imported["YEA-CommandAutobattle"]
  606. add_autobattle_command
  607. when /EQUIP/i
  608. next unless $imported["YEA-CommandEquip"]
  609. add_equip_command
  610. when /SUBCLASS LIST/i
  611. add_subclass_skill_types
  612. #---
  613. else; next
  614. end
  615. end
  616. end
  617.  
  618. #--------------------------------------------------------------------------
  619. # overwrite method: add_skill_commands
  620. #--------------------------------------------------------------------------
  621. def add_skill_commands
  622. @actor.added_skill_types.each do |stype_id|
  623. next if @stype_list.include?(stype_id)
  624. next if include_subclass_type?(stype_id)
  625. add_skill_type_command(stype_id)
  626. end
  627. end
  628.  
  629. #--------------------------------------------------------------------------
  630. # new method: include_subclass_type?
  631. #--------------------------------------------------------------------------
  632. def include_subclass_type?(stype_id)
  633. return false unless $imported["YEA-ClassSystem"]
  634. return @actor.subclass_skill_types.include?(stype_id)
  635. end
  636.  
  637. #--------------------------------------------------------------------------
  638. # new method: add_subclass_skill_types
  639. #--------------------------------------------------------------------------
  640. def add_subclass_skill_types
  641. return unless $imported["YEA-ClassSystem"]
  642. return if @actor.subclass.nil?
  643. @actor.subclass_skill_types.sort.each do |stype_id|
  644. next if @stype_list.include?(stype_id)
  645. add_skill_type_command(stype_id)
  646. end
  647. end
  648.  
  649. #--------------------------------------------------------------------------
  650. # new method: add_skill_type_command
  651. #--------------------------------------------------------------------------
  652. def add_skill_type_command(stype_id)
  653. return unless @actor.added_skill_types.include?(stype_id)
  654. return if @stype_list.include?(stype_id)
  655. @stype_list.push(stype_id)
  656. name = $data_system.skill_types[stype_id]
  657. add_command(name, :skill, true, stype_id)
  658. end
  659.  
  660. #--------------------------------------------------------------------------
  661. # new method: add_skill_id_command
  662. #--------------------------------------------------------------------------
  663. def add_skill_id_command(skill_id)
  664. return if $data_skills[skill_id].nil?
  665. return unless add_use_skill?(skill_id)
  666. name = $data_skills[skill_id].command_name
  667. add_command(name, :use_skill, use_skill_valid?(skill_id), skill_id)
  668. end
  669.  
  670. #--------------------------------------------------------------------------
  671. # new method: add_use_skill?
  672. #--------------------------------------------------------------------------
  673. def add_use_skill?(skill_id)
  674. skill = $data_skills[skill_id]
  675. return false if hide_until_learn?(skill)
  676. return false if hide_until_usable?(skill)
  677. return false if hide_until_switch?(skill)
  678. return true
  679. end
  680.  
  681. #--------------------------------------------------------------------------
  682. # new method: hide_until_learn?
  683. #--------------------------------------------------------------------------
  684. def hide_until_learn?(skill)
  685. return false unless skill.command_hide_until_learn
  686. return false if @actor.skill_learn?(skill)
  687. return false if @actor.added_skills.include?(skill.id)
  688. return true
  689. end
  690.  
  691. #--------------------------------------------------------------------------
  692. # new method: hide_until_usable?
  693. #--------------------------------------------------------------------------
  694. def hide_until_usable?(skill)
  695. return false unless skill.command_hide_until_usable
  696. return false if @actor.usable?(skill)
  697. return true
  698. end
  699.  
  700. #--------------------------------------------------------------------------
  701. # new method: hide_until_switch?
  702. #--------------------------------------------------------------------------
  703. def hide_until_switch?(skill)
  704. return false unless skill.command_hide_until_switch > 0
  705. return false if $game_switches[skill.command_hide_until_switch]
  706. return true
  707. end
  708.  
  709. #--------------------------------------------------------------------------
  710. # new method: use_skill_valid?
  711. #--------------------------------------------------------------------------
  712. def use_skill_valid?(skill_id)
  713. skill = $data_skills[skill_id]
  714. return false unless @actor.skill_conditions_met?(skill)
  715. return true
  716. end
  717.  
  718. #--------------------------------------------------------------------------
  719. # new method: add_item_id_command
  720. #--------------------------------------------------------------------------
  721. def add_item_id_command(item_id)
  722. return if $data_items[item_id].nil?
  723. return unless add_use_item?(item_id)
  724. name = $data_items[item_id].command_name
  725. add_command(name, :use_item, use_item_valid?(item_id), item_id)
  726. end
  727.  
  728. #--------------------------------------------------------------------------
  729. # new method: add_use_item?
  730. #--------------------------------------------------------------------------
  731. def add_use_item?(item_id)
  732. item = $data_items[item_id]
  733. return false if hide_until_usable?(item)
  734. return false if hide_until_switch?(item)
  735. return true
  736. end
  737.  
  738. #--------------------------------------------------------------------------
  739. # new method: use_item_valid?
  740. #--------------------------------------------------------------------------
  741. def use_item_valid?(item_id)
  742. item = $data_items[item_id]
  743. return false unless @actor.item_conditions_met?(item)
  744. return true
  745. end
  746.  
  747. end # Window_ActorCommand
  748.  
  749. #==============================================================================
  750. # ¡ Scene_Battle
  751. #==============================================================================
  752.  
  753. class Scene_Battle < Scene_Base
  754.  
  755. #--------------------------------------------------------------------------
  756. # alias method: create_all_windows
  757. #--------------------------------------------------------------------------
  758. alias scene_battle_create_all_windows_bcl create_all_windows
  759. def create_all_windows
  760. scene_battle_create_all_windows_bcl
  761. create_confirm_command_window
  762. end
  763.  
  764. #--------------------------------------------------------------------------
  765. # alias method: create_party_command_window
  766. #--------------------------------------------------------------------------
  767. alias create_party_command_window_bcl create_party_command_window
  768. def create_party_command_window
  769. create_party_command_window_bcl
  770. process_custom_party_commands
  771. end
  772.  
  773. #--------------------------------------------------------------------------
  774. # new method: process_custom_party_commands
  775. #--------------------------------------------------------------------------
  776. def process_custom_party_commands
  777. for command in YEA::BATTLE_COMMANDS::PARTY_COMMANDS
  778. next unless YEA::BATTLE_COMMANDS::CUSTOM_PARTY_COMMANDS.include?(command)
  779. called_method = YEA::BATTLE_COMMANDS::CUSTOM_PARTY_COMMANDS[command][3]
  780. @party_command_window.set_handler(command, method(called_method))
  781. end
  782. end
  783.  
  784. #--------------------------------------------------------------------------
  785. # alias method: create_actor_command_window
  786. #--------------------------------------------------------------------------
  787. alias create_actor_command_window_bcl create_actor_command_window
  788. def create_actor_command_window
  789. create_actor_command_window_bcl
  790. @actor_command_window.set_handler(:use_skill, method(:command_use_skill))
  791. @actor_command_window.set_handler(:use_item, method(:command_use_item))
  792. end
  793.  
  794. #--------------------------------------------------------------------------
  795. # alias method: start_actor_command_selection
  796. #--------------------------------------------------------------------------
  797. alias start_actor_command_selection_bcl start_actor_command_selection
  798. def start_actor_command_selection
  799. @confirm_command_window.hide unless @confirm_command_window.nil?
  800. start_actor_command_selection_bcl
  801. @actor_command_window.show
  802. end
  803.  
  804. #--------------------------------------------------------------------------
  805. # new method: command_use_skill
  806. #--------------------------------------------------------------------------
  807. def command_use_skill
  808. @skill = $data_skills[@actor_command_window.current_ext]
  809. BattleManager.actor.input.set_skill(@skill.id)
  810. BattleManager.actor.last_skill.object = @skill
  811. status_redraw_target(BattleManager.actor)
  812. if $imported["YEA-BattleEngine"]
  813. $game_temp.battle_aid = @skill
  814. if @skill.for_opponent?
  815. select_enemy_selection
  816. elsif @skill.for_friend?
  817. select_actor_selection
  818. else
  819. next_command
  820. $game_temp.battle_aid = nil
  821. end
  822. else
  823. if [email protected]_selection?
  824. next_command
  825. elsif @skill.for_opponent?
  826. select_enemy_selection
  827. else
  828. select_actor_selection
  829. end
  830. end
  831. end
  832.  
  833. #--------------------------------------------------------------------------
  834. # new method: command_use_item
  835. #--------------------------------------------------------------------------
  836. def command_use_item
  837. @item = $data_items[@actor_command_window.current_ext]
  838. BattleManager.actor.input.set_item(@item.id)
  839. status_redraw_target(BattleManager.actor)
  840. if $imported["YEA-BattleEngine"]
  841. $game_temp.battle_aid = @item
  842. if @item.for_opponent?
  843. select_enemy_selection
  844. elsif @item.for_friend?
  845. select_actor_selection
  846. else
  847. next_command
  848. $game_temp.battle_aid = nil
  849. end
  850. else
  851. if [email protected]_selection?
  852. next_command
  853. elsif @item.for_opponent?
  854. select_enemy_selection
  855. else
  856. select_actor_selection
  857. end
  858. end
  859. end
  860.  
  861. #--------------------------------------------------------------------------
  862. # alias method: on_actor_ok
  863. #--------------------------------------------------------------------------
  864. alias scene_battle_on_actor_ok_bcl on_actor_ok
  865. def on_actor_ok
  866. scene_battle_on_actor_ok_bcl
  867. return if !@confirm_command_window.nil? && @confirm_command_window.visible
  868. @actor_command_window.show
  869. end
  870.  
  871. #--------------------------------------------------------------------------
  872. # alias method: on_actor_cancel
  873. #--------------------------------------------------------------------------
  874. alias scene_battle_on_actor_cancel_bcl on_actor_cancel
  875. def on_actor_cancel
  876. scene_battle_on_actor_cancel_bcl
  877. case @actor_command_window.current_symbol
  878. when :use_skill, :use_item
  879. @help_window.hide
  880. @status_window.show
  881. @actor_command_window.activate
  882. status_redraw_target(BattleManager.actor)
  883. end
  884. end
  885.  
  886. #--------------------------------------------------------------------------
  887. # alias method: on_enemy_ok
  888. #--------------------------------------------------------------------------
  889. alias scene_battle_on_enemy_ok_bcl on_enemy_ok
  890. def on_enemy_ok
  891. scene_battle_on_enemy_ok_bcl
  892. return if !@confirm_command_window.nil? && @confirm_command_window.visible
  893. @actor_command_window.show
  894. end
  895.  
  896. #--------------------------------------------------------------------------
  897. # alias method: on_enemy_cancel
  898. #--------------------------------------------------------------------------
  899. alias scene_battle_on_enemy_cancel_bcl on_enemy_cancel
  900. def on_enemy_cancel
  901. scene_battle_on_enemy_cancel_bcl
  902. case @actor_command_window.current_symbol
  903. when :use_skill, :use_item
  904. @help_window.hide
  905. @status_window.show
  906. @actor_command_window.activate
  907. status_redraw_target(BattleManager.actor)
  908. end
  909. end
  910.  
  911. #--------------------------------------------------------------------------
  912. # new method: status_redraw_target
  913. #--------------------------------------------------------------------------
  914. def status_redraw_target(target)
  915. return unless target.actor?
  916. @status_window.draw_item($game_party.battle_members.index(target))
  917. end
  918.  
  919. #--------------------------------------------------------------------------
  920. # new method: create_confirm_command_window
  921. #--------------------------------------------------------------------------
  922. def create_confirm_command_window
  923. return unless YEA::BATTLE_COMMANDS::USE_CONFIRM_WINDOW
  924. @confirm_command_window = Window_ConfirmCommand.new
  925. @confirm_command_window.viewport = @info_viewport
  926. @confirm_command_window.set_handler(:execute, method(:command_execute))
  927. @confirm_command_window.set_handler(:cancel, method(:on_confirm_cancel))
  928. @confirm_command_window.set_handler(:dir4, method(:on_confirm_cancel))
  929. @confirm_command_window.unselect
  930. @confirm_command_window.x = Graphics.width
  931. process_custom_confirm_commands
  932. process_confirm_compatibility_commands
  933. end
  934.  
  935. #--------------------------------------------------------------------------
  936. # new method: process_custom_confirm_commands
  937. #--------------------------------------------------------------------------
  938. def process_custom_confirm_commands
  939. for command in YEA::BATTLE_COMMANDS::CONFIRM_COMMANDS
  940. next unless YEA::BATTLE_COMMANDS::CUSTOM_CONFIRM_COMMANDS.include?(command)
  941. called_method = YEA::BATTLE_COMMANDS::CUSTOM_CONFIRM_COMMANDS[command][3]
  942. @party_command_window.set_handler(command, method(called_method))
  943. end
  944. end
  945.  
  946. #--------------------------------------------------------------------------
  947. # new method: process_confirm_compatibility_commands
  948. #--------------------------------------------------------------------------
  949. def process_confirm_compatibility_commands
  950. #---
  951. if $imported["YEA-CombatLogDisplay"]
  952. @confirm_command_window.set_handler(:combatlog, method(:open_combatlog))
  953. end
  954. #---
  955. end
  956.  
  957. #--------------------------------------------------------------------------
  958. # new method: start_confirm_command_selection
  959. #--------------------------------------------------------------------------
  960. def start_confirm_command_selection
  961. if $imported["YEA-BattleEngine"]
  962. @status_window.show
  963. redraw_current_status
  964. @status_aid_window.hide
  965. end
  966. @status_window.unselect
  967. @actor_command_window.hide
  968. @confirm_command_window.setup
  969. end
  970.  
  971. #--------------------------------------------------------------------------
  972. # new method: on_confirm_cancel
  973. #--------------------------------------------------------------------------
  974. def on_confirm_cancel
  975. @confirm_command_window.hide unless @confirm_command_window.nil?
  976. @actor_command_window.show
  977. @actor_command_window.setup(BattleManager.actor)
  978. @status_window.select(BattleManager.actor.index)
  979. prior_command unless BattleManager.actor.inputable?
  980. end
  981.  
  982. #--------------------------------------------------------------------------
  983. # alias method: next_command
  984. #--------------------------------------------------------------------------
  985. alias scene_battle_next_command_bcl next_command
  986. def next_command
  987. if prompt_next_actor?
  988. scene_battle_next_command_bcl
  989. elsif YEA::BATTLE_COMMANDS::USE_CONFIRM_WINDOW
  990. start_confirm_command_selection
  991. else
  992. turn_start
  993. end
  994. end
  995.  
  996. #--------------------------------------------------------------------------
  997. # new method: prompt_next_actor?
  998. #--------------------------------------------------------------------------
  999. def prompt_next_actor?
  1000. index = @status_window.index
  1001. last_index = $game_party.battle_members.size - 1
  1002. for member in $game_party.battle_members.reverse
  1003. break if member.inputable?
  1004. last_index -= 1
  1005. end
  1006. if index >= last_index
  1007. actor = $game_party.battle_members[index]
  1008. return true if prompt_ftb_action?(actor)
  1009. return true if actor.next_command_valid?
  1010. return false if YEA::BATTLE_COMMANDS::USE_CONFIRM_WINDOW
  1011. end
  1012. return true
  1013. end
  1014.  
  1015. #--------------------------------------------------------------------------
  1016. # new method: prompt_ftb_action?
  1017. #--------------------------------------------------------------------------
  1018. def prompt_ftb_action?(actor)
  1019. return false unless $imported["YEA-BattleEngine"]
  1020. return false unless $imported["YEA-BattleSystem-FTB"]
  1021. return false unless BattleManager.btype?(:ftb)
  1022. return actor.current_action.valid?
  1023. end
  1024.  
  1025. #--------------------------------------------------------------------------
  1026. # new method: command_execute
  1027. #--------------------------------------------------------------------------
  1028. def command_execute
  1029. @confirm_command_window.close
  1030. turn_start
  1031. end
  1032.  
  1033. #--------------------------------------------------------------------------
  1034. # new method: command_name1
  1035. #--------------------------------------------------------------------------
  1036. def command_name1
  1037. # Do nothing.
  1038. end
  1039.  
  1040. #--------------------------------------------------------------------------
  1041. # new method: command_name2
  1042. #--------------------------------------------------------------------------
  1043. def command_name2
  1044. # Do nothing.
  1045. end
  1046.  
  1047. end # Scene_Battle
  1048.  
  1049. #==============================================================================
  1050. #
  1051. # ¥ End of File
  1052. #
  1053. #==============================================================================
Advertisement
Add Comment
Please, Sign In to add comment