Advertisement
Guest User

Untitled

a guest
Aug 13th, 2012
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 119.48 KB | None | 0 0
  1. #===============================================================================
  2. # ** RBS - Ramiro's Battle System (PART II - Classes And Modules)
  3. # Version 2.2
  4. # Difficulty Very Hard.
  5. # + little shield Addon by Stesc
  6. #-------------------------------------------------------------------------------
  7. # If you don't know what to do... DO NOT EDIT THIS FILE.
  8. #-------------------------------------------------------------------------------
  9. # YANFLY SCRIPTS COMPATIBILITY:
  10. #
  11. # Common ways to test if an YF script works:
  12. #
  13. # First of all, put the Unlisted YEA script BEFORE the RBS, why before? because
  14. # YEA is 'older' (in terms of published date) and the compatibility patches are
  15. # made with the RBS (that supports a way to mix both battle systems altogether)
  16. #
  17. # If the script does not work properly, you may put it AFTER RBS and TRY AGAIN.
  18. #
  19. # If even with that change the script does not work, you may then call it a
  20. # "compatibility issue" and I will, eventually, make a patch for it.
  21. #
  22. # Why are you making compatibility patches?
  23. #
  24. # It's quite simple, YF scripts sometimes overrite some methods that I had to
  25. # alias or vice-versa. in that cases, Yanfly or I should need to make a Patch.
  26. # To run the scripts toguether.
  27. #
  28. # The next section will show HOW TO APPLY each script, knowkn in wich order
  29. # and if it needs or not this patch.
  30. #
  31. #
  32. #
  33. # List of Compatible YEA scripts:
  34. # BATTLE SCRIPTS:
  35. # - Ace Battle Engine (Insert BEFORE RBS)
  36. # Known Issues: Disable one of the popup systems or YEA popup or
  37. # RBS popup.
  38. # - Lunatic Objects (Doesn't infleunce the place)
  39. # Known Issues: None.
  40. # - TargetManager (Doesn't infleunce the place)
  41. # Known Issues: None.
  42. # - CastAnimations (Doesn't infleunce the place)
  43. # Known Issues: None.
  44. #
  45. # OTHER YF SCRIPTS:
  46. # Because other YF scripts won't collide with this battle system.
  47. # They should be compatible. If there is an incompatibility issue, just
  48. # ask and I'll do as much as I can to repair it.
  49. #-------------------------------------------------------------------------------
  50. # License:
  51. #Copyright (c) 2012, Ramiro Rojo
  52. #All rights reserved.
  53. #
  54. #Redistribution and use in source and binary forms, with or without
  55. #modification, are permitted provided that the following conditions are met:
  56. #
  57. #1. Redistributions of source code must retain the above copyright notice, this
  58. # list of conditions and the following disclaimer.
  59. #2. Redistributions in binary form must reproduce the above copyright notice,
  60. # this list of conditions and the following disclaimer in the documentation
  61. # and/or other materials provided with the distribution.
  62. #
  63. #THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  64. #ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  65. #WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  66. #DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
  67. #ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  68. #(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  69. #LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  70. #ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  71. #(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  72. #SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  73. #
  74. #The views and conclusions contained in the software and documentation are those
  75. #of the authors and should not be interpreted as representing official policies,
  76. #either expressed or implied, of the FreeBSD Project.
  77. #===============================================================================
  78.  
  79. #===============================================================================
  80. # BEGIN MODULE SECTION
  81. #===============================================================================
  82.  
  83. module Cache
  84.  
  85. #-----------------------------------------------------------------------------
  86. # Constants
  87. #-----------------------------------------------------------------------------
  88. @@icon_bitmaps = {}
  89.  
  90. def self.get_icon_bitmap(icon_index)
  91. if !@@icon_bitmaps[icon_index] || @@icon_bitmaps[icon_index].disposed?
  92. bmp = Bitmap.new(24,24)
  93. bitmap = Cache.system("Iconset")
  94. rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
  95. bmp.blt(0, 0, bitmap, rect)
  96. @@icon_bitmaps[icon_index] = bmp
  97. end
  98. @@icon_bitmaps[icon_index]
  99. end
  100.  
  101. class << self
  102. alias rbs_cache_clear clear
  103.  
  104. def clear
  105. @@icon_bitmaps ||= {}
  106. @@icon_bitmaps.clear
  107. rbs_cache_clear
  108. end
  109. end
  110.  
  111. end
  112.  
  113. #===============================================================================
  114. # * BattleCamera module
  115. #-------------------------------------------------------------------------------
  116. # Controls the camera`s position on the battlefield.
  117. # It can be zoomed in and out.
  118. #===============================================================================
  119. module BattleCamera
  120.  
  121. #-----------------------------------------------------------------------------
  122. # Starts the camera
  123. #-----------------------------------------------------------------------------
  124. def self.start
  125. self.reset
  126. end
  127.  
  128. #-----------------------------------------------------------------------------
  129. # Resets the camera
  130. #-----------------------------------------------------------------------------
  131. def self.reset
  132. @center_x = Graphics.width / 2
  133. @center_y = Graphics.height / 2
  134. @current_x = @desired_x = @center_x
  135. @current_y = @desired_y = @center_y
  136. @current_zoom = @desired_zoom = 1.0
  137. @zoom_time = 0
  138. @movement_time = 0
  139. @target = :screen
  140. end
  141.  
  142. #-----------------------------------------------------------------------------
  143. # Corrects a position
  144. #-----------------------------------------------------------------------------
  145. def self.correct_position(pos, current, current_zoom, center)
  146. return ((pos - current) * (current_zoom - 1.0) + pos - (current - center))
  147. end
  148.  
  149. #-----------------------------------------------------------------------------
  150. # Corrects the x position given
  151. #-----------------------------------------------------------------------------
  152. def self.correct_x(x)
  153. return correct_position(x, @current_x, @current_zoom, @center_x)
  154. end
  155.  
  156. #-----------------------------------------------------------------------------
  157. # Corrects the y position given
  158. #-----------------------------------------------------------------------------
  159. def self.correct_y(y)
  160. return correct_position(y, @current_y, @current_zoom, @center_y)
  161. end
  162.  
  163. #-----------------------------------------------------------------------------
  164. # Corrects the zoom given
  165. #-----------------------------------------------------------------------------
  166. def self.correct_zoom(zoom, x=nil, y=nil, zoom_effective=true)
  167. if BattleConfig::BattleCamera_UsePanoramicCamera
  168. if !x || !y || !zoom_effective
  169. return zoom * @current_zoom
  170. else
  171. return ((y - @center_y * 130 / 100) * 0.005 + 1.0) * @current_zoom
  172. end
  173. else
  174. return zoom * @current_zoom
  175. end
  176. end
  177.  
  178. #-----------------------------------------------------------------------------
  179. # Corrects the angle given
  180. #-----------------------------------------------------------------------------
  181. def self.correct_angle(angle)
  182. return angle
  183. end
  184.  
  185. #-----------------------------------------------------------------------------
  186. # Corrects the mirror value given
  187. #-----------------------------------------------------------------------------
  188. def self.correct_mirror(mirror)
  189. return mirror
  190. end
  191.  
  192. #-----------------------------------------------------------------------------
  193. # Calculates the difference of movement in the frame
  194. #-----------------------------------------------------------------------------
  195. def self.calculate_display_change(current, desired, count)
  196. ((current * (count - 1) + desired) / count)
  197. end
  198.  
  199. #-----------------------------------------------------------------------------
  200. # Updates the camera.
  201. #-----------------------------------------------------------------------------
  202. def self.update
  203. @center_x = Graphics.width / 2
  204. @center_y = Graphics.height / 2
  205. if @zoom_time > 0
  206. @current_zoom = self.calculate_display_change(@current_zoom, @desired_zoom, @zoom_time)
  207. @zoom_time -= 1
  208. end
  209.  
  210. if @movement_time > 0
  211. @current_x = self.calculate_display_change(@current_x, @desired_x, @movement_time)
  212. @current_y = self.calculate_display_change(@current_y, @desired_y, @movement_time)
  213. @movement_time -= 1
  214. end
  215.  
  216. if @target != :screen && !moving?
  217. cx = 0
  218. cy = 0
  219. @target.each do |i|
  220. cx += i.current_x
  221. cy += i.current_y
  222. end
  223. if @target.size > 0
  224. cx /= @target.size
  225. cy /= @target.size
  226. end
  227. @current_x = cx
  228. @current_y = cy
  229. end
  230.  
  231. end
  232.  
  233. #-----------------------------------------------------------------------------
  234. # Sets the movement of the Camera.
  235. #-----------------------------------------------------------------------------
  236. def self.set_movement(x, y, time)
  237. @desired_x = x
  238. @desired_y = y
  239. @movement_time = time
  240. end
  241.  
  242. #-----------------------------------------------------------------------------
  243. # Sets the zoom of the Camera.
  244. #-----------------------------------------------------------------------------
  245. def self.set_zoom(zoom, time)
  246. @desired_zoom = zoom
  247. @zoom_time = time
  248. end
  249.  
  250. #-----------------------------------------------------------------------------
  251. # Sets the target of the Camera.
  252. #-----------------------------------------------------------------------------
  253. def self.set_target(target)
  254. @target = target
  255. end
  256.  
  257. #-----------------------------------------------------------------------------
  258. # Checks if the camera is moving.
  259. #-----------------------------------------------------------------------------
  260. def self.moving?
  261. return ( @movement_time > 0 || @zoom_time > 0 )
  262. end
  263.  
  264. end
  265.  
  266. #===============================================================================
  267. # * BattleInterpreter module
  268. #-------------------------------------------------------------------------------
  269. # This module manages the battle's actions and keeps track of all of them.
  270. # it can read commands for using in battle animations.
  271. #===============================================================================
  272. module BattleInterpreter
  273.  
  274. #-----------------------------------------------------------------------------
  275. # CONSTANTS
  276. #-----------------------------------------------------------------------------
  277. Commands = {}
  278.  
  279. #=============================================================================
  280. # * BattleInterpreter::Action
  281. #-----------------------------------------------------------------------------
  282. # An action used by the battle interpreter module.
  283. # It stores information of the action used and process part of them.
  284. #=============================================================================
  285. class Action
  286.  
  287. #---------------------------------------------------------------------------
  288. # Class properties
  289. #---------------------------------------------------------------------------
  290. attr_reader :original_user
  291. attr_reader :original_target
  292. attr_accessor :user
  293. attr_accessor :targets
  294. attr_accessor :item
  295. attr_accessor :loop_depth
  296. attr_accessor :linked_actions
  297. attr_accessor :paused
  298.  
  299. #---------------------------------------------------------------------------
  300. # Starts an action
  301. #---------------------------------------------------------------------------
  302. def initialize(spriteset, user, targets, sequence, item, can_counter=true)
  303. @extra_affected_battlers = []
  304. @sequence = sequence
  305. @user = user
  306. @targets = targets
  307. @item = item
  308. @loop_depth = 0
  309. @wait_count = 0
  310. @original_user = user
  311. @original_targets = targets
  312. @spriteset = spriteset
  313. @counter_check = can_counter
  314. @linked_actions = []
  315. @paused = false
  316. compile_data
  317. end
  318.  
  319. #---------------------------------------------------------------------------
  320. # Checks if a counter can be realized
  321. #---------------------------------------------------------------------------
  322. def counter_active?
  323. return @counter_check
  324. end
  325.  
  326. #---------------------------------------------------------------------------
  327. # Evaluates parameters
  328. #---------------------------------------------------------------------------
  329. def eval_data(data)
  330. make_parameters(data)[0]
  331. end
  332.  
  333. #---------------------------------------------------------------------------
  334. # Sets the wait time of the action
  335. #---------------------------------------------------------------------------
  336. def wait(wait)
  337. @wait_count = wait
  338. end
  339.  
  340. #---------------------------------------------------------------------------
  341. # Makes the parameters for an action
  342. #---------------------------------------------------------------------------
  343. def make_parameters(parameters)
  344. return [] if !parameters
  345. a = @user
  346. b = @targets[0]
  347. t = @targets
  348. s = $game_siwtches
  349. v = $game_variables
  350. result = []
  351. parameters.split(',').each do |i|
  352. r = Kernel.eval(i) rescue nil
  353. result.push(r)
  354. end
  355. return result
  356. end
  357.  
  358. #---------------------------------------------------------------------------
  359. # Compiles the data for the action
  360. #---------------------------------------------------------------------------
  361. def compile_data
  362. @commands = get_compile_commands(@sequence)
  363. end
  364.  
  365. #---------------------------------------------------------------------------
  366. # Returns the compiled result
  367. #---------------------------------------------------------------------------
  368. def get_compile_commands(data)
  369. result = []
  370. data.split(';').each do |line|
  371. next if (line.gsub(/\s/mi) {''}) == ''
  372. line += ';'
  373. if line[/((\s+)?)(.*?)(:(.*?))?;/mi]
  374. result.push([$3.upcase, make_parameters($5)])
  375. end
  376. end
  377. return result
  378. end
  379.  
  380. #---------------------------------------------------------------------------
  381. # Updates the action
  382. #---------------------------------------------------------------------------
  383. def update
  384. return if @paused
  385. if (@wait_count && @wait_count > 0)
  386. @wait_count -= 1
  387. return
  388. end
  389. call_next_command
  390. end
  391.  
  392. #---------------------------------------------------------------------------
  393. # Calls next command
  394. #---------------------------------------------------------------------------
  395. def call_next_command
  396. return if @commands.size == 0 || (@wait_count && @wait_count > 0)
  397. initial_depth = current_depth = @loop_depth
  398. command, params = next_command
  399. raise sprintf(Vocab::Error_CommandNotRecognized, command) if !Commands[command]
  400. has_depth, link_method = Commands[command]
  401. current_depth += 1
  402. result = []
  403. if has_depth
  404. while initial_depth != current_depth && @commands.size > 0
  405. i = next_command
  406. nested_command, nested_params = i
  407. if Commands[nested_command] && Commands[nested_command][0]
  408. current_depth += 1
  409. elsif nested_command[/END/mi]
  410. current_depth -= 1
  411. end
  412. result.push(i)
  413. end
  414. if initial_depth == current_depth
  415. params.push(result)
  416. @loop_depth += 1
  417. else
  418. raise Vocab::Error_TagSintaxError
  419. end
  420. end
  421. link_method.call(self, params)
  422. call_next_command
  423. end
  424.  
  425. #---------------------------------------------------------------------------
  426. # Gets the next command
  427. #---------------------------------------------------------------------------
  428. def next_command
  429. @commands.shift
  430. end
  431.  
  432. #---------------------------------------------------------------------------
  433. # Insert commands as next
  434. #---------------------------------------------------------------------------
  435. def insert_commands_as_next(commands)
  436. @commands = commands + @commands
  437. end
  438.  
  439. #---------------------------------------------------------------------------
  440. # Checks if the action is running
  441. #---------------------------------------------------------------------------
  442. def running?
  443. return (@commands.size > 0 || @wait_count > 0)
  444. end
  445.  
  446. #---------------------------------------------------------------------------
  447. # Pauses the action
  448. #---------------------------------------------------------------------------
  449. def pause
  450. @paused = true
  451. end
  452.  
  453. #---------------------------------------------------------------------------
  454. # Checks if the action is paused
  455. #---------------------------------------------------------------------------
  456. def paused?
  457. @paused
  458. end
  459.  
  460. #---------------------------------------------------------------------------
  461. # Resumes the action
  462. #---------------------------------------------------------------------------
  463. def resume
  464. @paused = false
  465. call_next_command
  466. end
  467.  
  468. #---------------------------------------------------------------------------
  469. # Stops the action
  470. #---------------------------------------------------------------------------
  471. def abort
  472. @commands.clear
  473. @wait_count = 0
  474. end
  475.  
  476. #---------------------------------------------------------------------------
  477. # Analizes targets by a string
  478. #---------------------------------------------------------------------------
  479. def analize_target_string(string, origin_valid = true, screen_valid = false)
  480. case string
  481. when /(.*?) except (.*)/im
  482. t1 = analize_target_string($1, origin_valid, screen_valid)
  483. t2 = analize_target_string($2, origin_valid, screen_valid)
  484. return t1 - t2
  485. when /(.*?) but (.*)/im
  486. t1 = analize_target_string($1, origin_valid, screen_valid)
  487. t2 = analize_target_string($2, origin_valid, screen_valid)
  488. return t1 - t2
  489. when /(\d+) random ([\w\s]+)/im
  490. num = $1.to_i
  491. targets = analize_target_string($2, false, false)
  492. result = []
  493. num.times do |i|
  494. result.push(targets[rand(targets.size)])
  495. end
  496. return result
  497. when /original (\w+)/im
  498. case $1
  499. when /user/im
  500. return [@original_user]
  501. when /target(s?)/im
  502. return @original_targets
  503. end
  504. when /dead battler(s?)/im
  505. return $game_troop.dead_members + $game_party.dead_members
  506. when /dead all(y||es)/im
  507. case @user.confusion_level
  508. when 0
  509. return @user.friend_unit.dead_members
  510. when 1
  511. return @user.enemy_unit.dead_members+@user.friend_unit.dead_members
  512. when 2
  513. return @user.enemy_unit.dead_members
  514. end
  515. when /dead enem(y||ies)/im
  516. case @user.confusion_level
  517. when 0
  518. return @user.enemy_unit.dead_members
  519. when 1
  520. return @user.enemy_unit.dead_members+@user.friend_unit.dead_members
  521. when 2
  522. return @user.friend_unit.dead_members
  523. end
  524. when /battler(s?)/im
  525. return $game_troop.alive_members + $game_party.alive_members
  526. when /all(y||es)/im
  527. case @user.confusion_level
  528. when 0
  529. return @user.friend_unit.alive_members
  530. when 1
  531. return @user.enemy_unit.alive_members+@user.friend_unit.alive_members
  532. when 2
  533. return @user.enemy_unit.alive_members
  534. end
  535. when /friend(s?)/im
  536. case @user.confusion_level
  537. when 0
  538. group = @user.friend_unit.alive_members
  539. when 1
  540. group = @user.enemy_unit.alive_members+@user.friend_unit.alive_members
  541. when 2
  542. group = @user.enemy_unit.alive_members
  543. end
  544. return group - [@user]
  545. when /enem(y||ies)/im
  546. case @user.confusion_level
  547. when 0
  548. return @user.enemy_unit.alive_members
  549. when 1
  550. return @user.enemy_unit.alive_members+@user.friend_unit.alive_members
  551. when 2
  552. return @user.friend_unit.alive_members
  553. end
  554. when /target(s?)/im
  555. return @targets
  556. when /user/im
  557. return [@user]
  558. when /screen/im
  559. if screen_valid
  560. return :screen
  561. else
  562. raise Vocab::Error_ScreenNotValid
  563. end
  564. when /origin/im
  565. if origin_valid
  566. return :origin
  567. else
  568. raise Vocab::Error_OriginNotValid
  569. end
  570. end
  571. return nil
  572.  
  573. end
  574.  
  575. #---------------------------------------------------------------------------
  576. # Get the sprites of battlers.
  577. #---------------------------------------------------------------------------
  578. def get_battler_sprites(battlers)
  579. result = []
  580. @spriteset.battler_sprites.each do |i|
  581. result.push(i) if battlers.any? {|j| i.battler == j }
  582. end
  583. return result
  584. end
  585.  
  586. #---------------------------------------------------------------------------
  587. # gets the battler sprites of a determined target string
  588. #---------------------------------------------------------------------------
  589. def analize_battler_sprites_string(string, origin_valid = true, screen_valid = false)
  590. battlers = analize_target_string(string, origin_valid, screen_valid)
  591. return battlers if battlers.is_a?(Symbol)
  592. return battlers ? get_battler_sprites(battlers) : []
  593. end
  594.  
  595. def affected_battlers
  596. targets + [user] + @extra_affected_battlers
  597. end
  598.  
  599. end
  600.  
  601. class LoopingAction < BattleInterpreter::Action
  602.  
  603. def next_command
  604. new_command = @commands.shift
  605. @commands.push(new_command)
  606. return new_command
  607. end
  608.  
  609. end
  610.  
  611. #-----------------------------------------------------------------------------
  612. # Starts the interpreter
  613. #-----------------------------------------------------------------------------
  614. def self.start(spriteset)
  615. self.reset
  616. @spriteset = spriteset
  617. end
  618.  
  619. #-----------------------------------------------------------------------------
  620. # Resets the interpreter
  621. #-----------------------------------------------------------------------------
  622. def self.reset
  623. Commands.clear
  624. @looping_actions = {}
  625. @actions = []
  626. end
  627.  
  628. #-----------------------------------------------------------------------------
  629. # Adds an action
  630. #-----------------------------------------------------------------------------
  631. def self.add_action(user, targets, sequence, item, can_counter = true)
  632. action = BattleInterpreter::Action.new(@spriteset, user, targets, sequence, item, can_counter)
  633. @actions.push(action) if @actions
  634. action
  635. end
  636.  
  637. #-----------------------------------------------------------------------------
  638. # Updates the interpreter
  639. #-----------------------------------------------------------------------------
  640. def self.update
  641. current_battlers = []
  642. @actions.each do |i|
  643. i.update
  644. if i.running?
  645. i.affected_battlers.each do |j|
  646. current_battlers.push(j)
  647. end
  648. else
  649. @actions.delete(i)
  650. end
  651. end
  652. @looping_actions.each_pair do |battler, action|
  653. action.update if !current_battlers.include?(battler)
  654. end
  655. end
  656.  
  657. #-----------------------------------------------------------------------------
  658. # Checks if the interpreter is running
  659. #-----------------------------------------------------------------------------
  660. def self.running?
  661. return true if @actions.any? {|i| i.running? && !i.paused?}
  662. return true if BattleCamera.moving?
  663. return true if @spriteset.animation?
  664. return false
  665. end
  666.  
  667. #-----------------------------------------------------------------------------
  668. # Adds a looping action to an user
  669. #-----------------------------------------------------------------------------
  670. def self.add_looping_action(user, sequence)
  671. action = BattleInterpreter::LoopingAction.new(@spriteset, user, [user], sequence, nil)
  672. @looping_actions[user] = action
  673. action
  674. end
  675.  
  676. def self.pause_looping_action(user)
  677. @looping_actions[user].pause if @looping_actions[user]
  678. end
  679.  
  680. def self.resume_looping_action(user)
  681. @looping_actions[user].resume if @looping_actions[user]
  682. end
  683.  
  684. end
  685.  
  686. #==============================================================================
  687. # ¦ BattleManager
  688. #==============================================================================
  689.  
  690. module BattleManager
  691.  
  692. #-----------------------------------------------------------------------------
  693. # Checks if the battle is a surprise battle
  694. #-----------------------------------------------------------------------------
  695. def self.surprise?
  696. return @surprise
  697. end
  698.  
  699. #-----------------------------------------------------------------------------
  700. # Checks if the battle is a preemptive battle
  701. #-----------------------------------------------------------------------------
  702. def self.preemptive?
  703. return @preemptive
  704. end
  705.  
  706. class << self
  707.  
  708. #---------------------------------------------------------------------------
  709. # Alias methods
  710. #---------------------------------------------------------------------------
  711. alias rbs_battle_manager_process_victory process_victory
  712.  
  713. #-----------------------------------------------------------------------------
  714. # Process victory
  715. #-----------------------------------------------------------------------------
  716. def process_victory
  717. for member in $game_party.alive_members
  718. sequence = member.get_victory_sequence
  719. BattleInterpreter.add_action(member, [member], sequence, nil, false)
  720. end
  721. rbs_battle_manager_process_victory
  722. end
  723. end
  724.  
  725. end
  726. #===============================================================================
  727. # END MODULE SECTION
  728. #===============================================================================
  729. #===============================================================================
  730. # BEGIN SPRITE SECTION
  731. #===============================================================================
  732.  
  733. #===============================================================================
  734. # ¦ Sprite_Battler
  735. #===============================================================================
  736. class Sprite_Battler < Sprite_Base
  737.  
  738. #-----------------------------------------------------------------------------
  739. # Alias methods
  740. #-----------------------------------------------------------------------------
  741. alias rbs_sprite_battler_initialize initialize
  742. alias rbs_sprite_battler_update update
  743. alias rbs_sprite_battler_animation? animation?
  744. alias rbs_sprite_battler_dispose dispose
  745.  
  746. #-----------------------------------------------------------------------------
  747. # Class Properties
  748. #-----------------------------------------------------------------------------
  749. attr_reader :current_x
  750. attr_reader :current_y
  751. attr_reader :original_x
  752. attr_reader :original_y
  753.  
  754. #-----------------------------------------------------------------------------
  755. # Resets the position.
  756. #-----------------------------------------------------------------------------
  757. def reset_position
  758. @character_started = true
  759. @original_battler = @battler
  760. @original_x = @battler.screen_x
  761. @original_y = @battler.screen_y
  762. @current_x = @desired_x = @original_x
  763. @current_y = @desired_y = @original_y
  764. @jump_count = 0
  765. @jump_axis = 0
  766. @jump_value = 0
  767. @movement_count = 0
  768. @frame_count = 0
  769. @frame_delay = 16
  770. @last_battler = battler
  771. @battler_index = @battler.default_battler_index
  772. @frame = 0
  773. @pose = 0
  774. @poses = 1
  775. @frames = 1
  776. @frame_style = :rmvx
  777. @loops = 0
  778. @last_battle_index = 0
  779. @desired_zoom_x = @current_zoom_x = 1
  780. @desired_zoom_y = @current_zoom_y = 1
  781. @current_angle = @desired_angle = 0
  782. @angle_time = 0
  783. @zoom_time = 0
  784. @current_opacity = @desired_opacity = 0
  785. @opacity_time = 0
  786. @battler_name_result = ''
  787. @mirrored_sprite = false
  788. @effect_opacity = 255
  789. @effect_ox = 0
  790. @effect_height = 0
  791. @balloon_id = 0
  792. @need_refresh = true
  793. @last_battler = nil
  794. @last_battler_name = ''
  795. @last_battler_hue = 0
  796. end
  797.  
  798. def make_return_sequence(include_stand=true)
  799. return if !@battler
  800. seq = ''
  801. if (@original_x != @current_x) || (@original_y != @current_y)
  802. seq = @battler.get_return_sequence
  803. end
  804. BattleInterpreter.add_action(@battler, [@battler], seq, nil, false)
  805. if @battler.alive? && include_stand
  806. BattleInterpreter.add_looping_action(@battler, @battler.get_stand_sequence)
  807. end
  808. end
  809.  
  810. #-----------------------------------------------------------------------------
  811. # Sets the mirror value
  812. #-----------------------------------------------------------------------------
  813. def set_mirror_value(value)
  814. @mirrored_sprite = value
  815. end
  816.  
  817. #-----------------------------------------------------------------------------
  818. # Creates the sprite
  819. #-----------------------------------------------------------------------------
  820. def initialize(viewport, battler=nil)
  821. @weapon_sprites = []
  822. @character_started = false
  823. @afterimages = []
  824. @afterimages_visible = false
  825. @afterimage_separation = 8
  826. @animation_reg = []
  827. rbs_sprite_battler_initialize(viewport, battler)
  828. end
  829.  
  830. #-----------------------------------------------------------------------------
  831. # Dispose
  832. #-----------------------------------------------------------------------------
  833. def dispose
  834. dispose_afterimages
  835. dispose_weapon_sprites
  836. dispose_balloon
  837. rbs_sprite_battler_dispose
  838. end
  839.  
  840. #-----------------------------------------------------------------------------
  841. # Dispose afterimages
  842. #-----------------------------------------------------------------------------
  843. def dispose_afterimages
  844. @afterimages.each do |i|
  845. i.dispose
  846. end
  847. @afterimages.clear
  848. end
  849.  
  850. #-----------------------------------------------------------------------------
  851. # Dispose weapon sprites
  852. #-----------------------------------------------------------------------------
  853. def dispose_weapon_sprites
  854. @weapon_sprites.each do |i|
  855. i.dispose
  856. end
  857. end
  858.  
  859. #-----------------------------------------------------------------------------
  860. # Checks if the sprite is moving?
  861. #-----------------------------------------------------------------------------
  862. def moving?
  863. return false if !@battler
  864. return (@movement_count > 0 || @angle_time > 0 || @zoom_time > 0 || @opacity_time > 0 )
  865. end
  866.  
  867. #--------------------------------------------------------------------------
  868. # ? Update blink effect
  869. #--------------------------------------------------------------------------
  870. def update_blink
  871. @effect_opacity = (@effect_duration % 10 < 5) ? 255 : 0
  872. end
  873. #--------------------------------------------------------------------------
  874. # ? Opdates appear effect
  875. #--------------------------------------------------------------------------
  876. def update_appear
  877. @effect_opacity = (16 - @effect_duration) * 16
  878. end
  879. #--------------------------------------------------------------------------
  880. # ? Opdates disappear effect
  881. #--------------------------------------------------------------------------
  882. def update_disappear
  883. @effect_opacity = 256 - (32 - @effect_duration) * 10
  884. end
  885. #--------------------------------------------------------------------------
  886. # ? Update collapse effect
  887. #--------------------------------------------------------------------------
  888. def update_collapse
  889. self.blend_type = 1
  890. self.color.set(255, 128, 128, 128)
  891. @effect_opacity = 256 - (48 - @effect_duration) * 6
  892. end
  893.  
  894. #--------------------------------------------------------------------------
  895. # ? Reverts the sprite to normal
  896. #--------------------------------------------------------------------------
  897. def revert_to_normal
  898. self.blend_type = 0
  899. self.color.set(0, 0, 0, 0)
  900. @effect_opacity = 255
  901. @effect_ox = @battler_width / 2 if bitmap
  902. @effect_height = 0
  903. end
  904.  
  905. #--------------------------------------------------------------------------
  906. # ? Updates boss collpase
  907. #--------------------------------------------------------------------------
  908. def update_boss_collapse
  909. alpha = @effect_duration * 120 / bitmap.height
  910. @effect_ox = @battler_width / 2 + @effect_duration % 2 * 4 - 2
  911. self.blend_type = 1
  912. self.color.set(255, 255, 255, 255 - alpha)
  913. @effect_opacity = alpha
  914. @effect_height -= 1
  915. Sound.play_boss_collapse2 if @effect_duration % 20 == 19
  916. end
  917. #--------------------------------------------------------------------------
  918. # ? updates instant collapse
  919. #--------------------------------------------------------------------------
  920. def update_instant_collapse
  921. @effect_opacity = 0
  922. end
  923.  
  924. #-----------------------------------------------------------------------------
  925. # Frame update
  926. #-----------------------------------------------------------------------------
  927. def update
  928. if @battler && (!@character_started || @battler != @original_battler)
  929. start = @character_started
  930. reset_position
  931. if start
  932. @current_opacity = @desired_opacity = 255
  933. start_effect(:appear)
  934. update
  935. make_return_sequence
  936. end
  937. elsif !@battler && @original_battler
  938. @original_battler = nil
  939. end
  940. set_animation_origin if @animation
  941. rbs_sprite_battler_update
  942. if @battler
  943. update_battler_position
  944. update_battler_pose
  945. update_afterimages
  946. update_weapon_sprites
  947. update_balloon
  948. end
  949.  
  950. end
  951.  
  952. #-----------------------------------------------------------------------------
  953. # Update positions.
  954. #-----------------------------------------------------------------------------
  955. def update_battler_position
  956. if @movement_count > 0
  957. @current_x = BattleCamera.calculate_display_change(@current_x, @desired_x, @movement_count)
  958. @current_y = BattleCamera.calculate_display_change(@current_y, @desired_y, @movement_count)
  959. if @jump_count > 0
  960. @jump_value = BattleCamera.calculate_display_change(@jump_value, @jump_axis, @jump_count)
  961. @jump_count -= 1
  962. elsif @jump_value != 0
  963. @jump_axis = 0
  964. @jump_count = @movement_count - 1
  965. end
  966. @movement_count -= 1
  967. end
  968.  
  969. if @zoom_time > 0
  970. @current_zoom_x = BattleCamera.calculate_display_change(@current_zoom_x, @desired_zoom_x, @zoom_time)
  971. @current_zoom_y = BattleCamera.calculate_display_change(@current_zoom_y, @desired_zoom_y, @zoom_time)
  972. @zoom_time -= 1
  973. end
  974.  
  975. if @angle_time > 0
  976. @current_angle = BattleCamera.calculate_display_change(@current_angle, @desired_angle, @angle_time)
  977. @angle_time -= 1
  978. end
  979.  
  980. if @opacity_time > 0
  981. @current_opacity = BattleCamera.calculate_display_change(@current_opacity, @desired_opacity, @opacity_time)
  982. @opacity_time -= 1
  983. end
  984.  
  985. @original_x = @battler.screen_x
  986. @original_y = @battler.screen_y
  987.  
  988. self.x = BattleCamera.correct_x( @current_x )
  989. self.y = BattleCamera.correct_y( @current_y - @jump_value - @effect_height / 2)
  990. self.z = @current_y + 100
  991. self.zoom_x = BattleCamera.correct_zoom(@current_zoom_x, @current_x, @current_y, @battler.zoom_effective?)
  992. self.zoom_y = BattleCamera.correct_zoom(@current_zoom_y, @current_x, @current_y, @battler.zoom_effective?)
  993. self.angle = BattleCamera.correct_angle(@current_angle)
  994. self.mirror = BattleCamera.correct_mirror(@battler.enemy? ? @mirrored_sprite : !@mirrored_sprite)
  995. self.opacity = @current_opacity * @effect_opacity / 255
  996. self.visible = @effect_type || @battler.exist?
  997. end
  998.  
  999. #-----------------------------------------------------------------------------
  1000. # Get the max frame number
  1001. #-----------------------------------------------------------------------------
  1002. def max_frames
  1003. return @frame_style == -2 ? @frames * 2 : @frames
  1004. end
  1005.  
  1006. #-----------------------------------------------------------------------------
  1007. # Gets the real frame number
  1008. #-----------------------------------------------------------------------------
  1009. def real_frame
  1010. return @frame < @frames ? @frame : (max_frames - @frame - 1)
  1011. end
  1012.  
  1013. #-----------------------------------------------------------------------------
  1014. # Updates the current pose
  1015. #-----------------------------------------------------------------------------
  1016. def update_battler_pose
  1017.  
  1018. if @loops != 0
  1019. if @frame_style < 0
  1020. @frame_count = (@frame_count + 1) % @frame_delay
  1021. if @frame_count == 0
  1022. @frame = (@frame + 1) % max_frames
  1023. @loops -= 1 if @frame == 0 && @loops > 0
  1024. end
  1025. else
  1026. @frame = @frame_style
  1027. end
  1028. end
  1029. o_x = @battler_width * real_frame
  1030. o_y = @battler_height * @pose + @effect_height
  1031. bh = [@battler_height + @effect_height, 1].max
  1032. self.src_rect.set(o_x, o_y, @battler_width, bh)
  1033. end
  1034.  
  1035. #-----------------------------------------------------------------------------
  1036. # Makes the new battler name
  1037. #-----------------------------------------------------------------------------
  1038. def make_battler_name
  1039. if @need_refresh || @last_battler != self.battler ||
  1040. @last_battler_name != battler.battler_name ||
  1041. @last_battler_hue != battler.battler_hue
  1042. @last_battler_name = battler.battler_name
  1043. @last_battler_hue = battler.battler_hue
  1044. @need_refresh = false
  1045. @last_battler = self.battler
  1046. battler_name = @battler.battler_name.sub(/\[(\d+),(\d+)\]/i) { '' }
  1047. battler_name = @battler_index == 0 ? @battler.battler_name : "#{@battler.battler_name}_#{@battler_index}"
  1048. files = Dir.glob("Graphics/Battlers/#{battler_name}*")
  1049. @battler_name_result = (files.size > 0) ? files[0] : battler_name
  1050. @battler_name_result.gsub! (/Graphics\/Battlers\//mi) {''}
  1051. end
  1052. return @battler_name_result
  1053. end
  1054.  
  1055. #-----------------------------------------------------------------------------
  1056. # Updates the bitmap
  1057. #-----------------------------------------------------------------------------
  1058. def update_bitmap
  1059. battler_name = make_battler_name
  1060. new_bitmap = Cache.battler(battler_name, @battler.battler_hue)
  1061. if self.bitmap != new_bitmap
  1062. data = []
  1063. if battler_name[/\[(.*?),(.*?)\]/i]
  1064. @frames = eval($1)
  1065. @poses = eval($2)
  1066. else
  1067. @poses = BattleConfig::DefaultPoses
  1068. @frames = BattleConfig::DefaultFrames
  1069. end
  1070. @frame_delay = 16
  1071. @frame_style = -2
  1072. @loops = -1
  1073. self.bitmap = new_bitmap
  1074. @battler_width = self.bitmap.width / @frames
  1075. @battler_height = self.bitmap.height / @poses
  1076. @effect_ox = @battler_width / 2 if bitmap
  1077. init_visibility
  1078. end
  1079. end
  1080.  
  1081. #-----------------------------------------------------------------------------
  1082. # Updates the weapon sprites
  1083. #-----------------------------------------------------------------------------
  1084. def update_weapon_sprites
  1085. @weapon_sprites.each do |i|
  1086. if i.animation?
  1087. i.update
  1088. else
  1089. i.dispose
  1090. @weapon_sprites.delete(i)
  1091. end
  1092. end
  1093. end
  1094.  
  1095. #-----------------------------------------------------------------------------
  1096. # Updates original position.
  1097. #-----------------------------------------------------------------------------
  1098. def update_origin
  1099. if bitmap
  1100. self.ox = @effect_ox
  1101. self.oy = @battler_height + @effect_height
  1102. end
  1103. end
  1104. #-----------------------------------------------------------------------------
  1105. # Sets the movememnt
  1106. #-----------------------------------------------------------------------------
  1107. def set_movement(x, y, jump, time)
  1108. @desired_x = x
  1109. @desired_y = y
  1110. @jump_count = time / 2
  1111. @jump_axis = jump
  1112. @jump_value = 0
  1113. @movement_count = time
  1114. end
  1115. #-----------------------------------------------------------------------------
  1116. # Sets the pose
  1117. #-----------------------------------------------------------------------------
  1118. def set_pose(character_index, pose, style, loops, interval)
  1119. @poses = 0 if !@poses
  1120. @battler_index = character_index
  1121. @frame = 0
  1122. @frame_delay = interval
  1123. @pose = pose if pose < @poses
  1124. @frame_style = style
  1125. @loops = loops
  1126. @need_refresh = true
  1127. end
  1128. #-----------------------------------------------------------------------------
  1129. # Sets the zoom
  1130. #-----------------------------------------------------------------------------
  1131. def set_zoom(x, y, time)
  1132. @desired_zoom_x = x
  1133. @desired_zoom_y = y
  1134. @zoom_time = time
  1135. end
  1136.  
  1137. #-----------------------------------------------------------------------------
  1138. # Sets the angle
  1139. #-----------------------------------------------------------------------------
  1140. def set_angle(angle, time)
  1141. @desired_angle = angle
  1142. @angle_time = time
  1143. end
  1144.  
  1145. #-----------------------------------------------------------------------------
  1146. # Sets the opacity
  1147. #-----------------------------------------------------------------------------
  1148. def set_opacity(opacity, time)
  1149. @desired_opacity = opacity
  1150. @opacity_time = time
  1151. end
  1152.  
  1153. #-----------------------------------------------------------------------------
  1154. # Checks if the sprite is on animation
  1155. #-----------------------------------------------------------------------------
  1156. def animation?
  1157. return rbs_sprite_battler_animation? || moving? || (@effect_duration > 0)
  1158. end
  1159.  
  1160. #--------------------------------------------------------------------------
  1161. # ? Starts new effect
  1162. #--------------------------------------------------------------------------
  1163. def start_effect(effect_type)
  1164. @effect_type = effect_type
  1165. case @effect_type
  1166. when :appear
  1167. @effect_duration = 16
  1168. @battler_visible = true
  1169. when :disappear
  1170. @effect_duration = 32
  1171. @battler_visible = false
  1172. when :whiten
  1173. @effect_duration = 16
  1174. @battler_visible = true
  1175. when :blink
  1176. @effect_duration = 20
  1177. @battler_visible = true
  1178. when :collapse
  1179. @effect_duration = 48
  1180. @battler_visible = false
  1181. when :boss_collapse
  1182. @effect_duration = @battler_height
  1183. @battler_visible = false
  1184. when :instant_collapse
  1185. @effect_duration = 16
  1186. @battler_visible = false
  1187. end
  1188. revert_to_normal
  1189. end
  1190.  
  1191. #-----------------------------------------------------------------------------
  1192. # Sets the sprites of the animation
  1193. #-----------------------------------------------------------------------------
  1194. def animation_set_sprites(frame)
  1195. cell_data = frame.cell_data
  1196. @ani_sprites.each_with_index do |sprite, i|
  1197. next unless sprite
  1198. pattern = cell_data[i, 0]
  1199. if !pattern || pattern < 0
  1200. sprite.visible = false
  1201. next
  1202. end
  1203. sprite.bitmap = pattern < 100 ? @ani_bitmap1 : @ani_bitmap2
  1204. sprite.visible = true
  1205. sprite.src_rect.set(pattern % 5 * 192,
  1206. pattern % 100 / 5 * 192, 192, 192)
  1207. if @ani_mirror
  1208. sprite.x = @ani_ox - cell_data[i, 1]
  1209. sprite.y = @ani_oy + cell_data[i, 2]
  1210. sprite.angle = BattleCamera.correct_angle(360 - cell_data[i, 4])
  1211. sprite.mirror = BattleCamera.correct_mirror(cell_data[i, 5] == 0)
  1212. else
  1213. sprite.x = @ani_ox + cell_data[i, 1]
  1214. sprite.y = @ani_oy + cell_data[i, 2]
  1215. sprite.angle = BattleCamera.correct_angle(cell_data[i, 4])
  1216. sprite.mirror = BattleCamera.correct_mirror(cell_data[i, 5] == 1)
  1217. end
  1218. sprite.z = self.z + 300 + i
  1219. sprite.ox = 96
  1220. sprite.oy = 96
  1221. sprite.zoom_x = BattleCamera.correct_zoom(cell_data[i, 3] / 100.0, @current_x, @current_y, zoom_effective?)
  1222. sprite.zoom_y = BattleCamera.correct_zoom(cell_data[i, 3] / 100.0, @current_x, @current_y, zoom_effective?)
  1223. sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
  1224. sprite.blend_type = cell_data[i, 7]
  1225. end
  1226. end
  1227.  
  1228. def zoom_effective?
  1229. return false if !@battler
  1230. @battler.zoom_effective?
  1231. end
  1232.  
  1233. #-----------------------------------------------------------------------------
  1234. # Updates the animation
  1235. #-----------------------------------------------------------------------------
  1236. def update_animation
  1237. return unless @animation
  1238. @ani_duration -= 1
  1239. if @ani_duration % @ani_rate == 0
  1240. if @ani_duration > 0
  1241. frame_index = @animation.frame_max
  1242. frame_index -= (@ani_duration + @ani_rate - 1) / @ani_rate
  1243. animation_set_sprites(@animation.frames[frame_index])
  1244. @animation.timings.each do |timing|
  1245. animation_process_timing(timing) if timing.frame == frame_index
  1246. end
  1247. else
  1248. end_animation
  1249. end
  1250. end
  1251. end
  1252. #-----------------------------------------------------------------------------
  1253. # Updates afterimages
  1254. #-----------------------------------------------------------------------------
  1255. def update_afterimages
  1256. @animation_reg.push([self.bitmap, @current_x, @current_y - @jump_value,
  1257. self.z,
  1258. @current_zoom_x, @current_zoom_y,
  1259. self.src_rect.clone, self.ox, self.oy,
  1260. @current_angle, self.mirror])
  1261. @afterimages.each_with_index do |afterimage, i|
  1262. j = @animation_reg.size - ((i + 1) * @afterimage_separation)
  1263. reg = @animation_reg[j]
  1264. next if !reg
  1265. afterimage.update(i, @afterimages.size, reg, self)
  1266. end
  1267. end
  1268.  
  1269. #-----------------------------------------------------------------------------
  1270. # Sets the afterimages
  1271. #-----------------------------------------------------------------------------
  1272. def set_aftermages(value, count, separation)
  1273. @afterimages_visible = value
  1274. dispose_afterimages
  1275. @afterimages.clear
  1276. if @afterimages_visible
  1277. count.times do |i|
  1278. @afterimages.push(Sprite_Afterimage.new(viewport))
  1279. end
  1280. end
  1281. @afterimage_separation = separation
  1282. end
  1283.  
  1284. #-----------------------------------------------------------------------------
  1285. # Sets a weapon sprite by icons
  1286. #-----------------------------------------------------------------------------
  1287. def set_weapon_icon(x_corr, y_corr, start_angle, end_angle, time, left_hand=false, over=false)
  1288. if left_hand
  1289. if @battler.weapons[1]
  1290. bitmap = get_equip_sprite_icon(@battler.weapons[1])
  1291. else
  1292. return
  1293. end
  1294. else
  1295. if @battler.weapons[0]
  1296. bitmap = get_equip_sprite_icon(@battler.weapons[0])
  1297. else
  1298. return
  1299. end
  1300. end
  1301. sprite = Sprite_Weapon.new(self, bitmap, time, 1, 1, over, true)
  1302. sprite.set_angles(start_angle, end_angle)
  1303. sprite.setup_correction(x_corr, y_corr)
  1304. @weapon_sprites.push(sprite)
  1305. end
  1306.  
  1307. def set_shield_icon(x_corr, y_corr, start_angle, end_angle, time, over=false)
  1308.  
  1309.  
  1310. bitmap = get_equip_sprite_icon(@battler.armors[0])
  1311. sprite = Sprite_Weapon.new(self, bitmap, time, 1, 1, over, true)
  1312. sprite.set_angles(start_angle, end_angle)
  1313. sprite.setup_correction(x_corr, y_corr)
  1314. @weapon_sprites.push(sprite)
  1315. end
  1316.  
  1317. def get_equip_sprite_icon(equip)
  1318. Cache.get_icon_bitmap(equip.icon_index)
  1319. end
  1320.  
  1321. def set_weapon_sprite(bitmap_name, x_corr, y_corr, frames, interval, over)
  1322. time = frames * interval + 1
  1323. bitmap = get_weapon_bitmap_anime(bitmap_name)
  1324. sprite = Sprite_Weapon.new(self, bitmap, time, frames, interval, over, false)
  1325. sprite.setup_correction(x_corr, y_corr)
  1326. @weapon_sprites.push(sprite)
  1327. end
  1328.  
  1329. def get_weapon_bitmap_anime(bitmap, hue=0)
  1330. name = @battler.battler_name.sub(/\[(\d+),(\d+)\]/i) { '' }
  1331. bitmap_name = "#{name}_#{bitmap}"
  1332. if FileTest.exists?("Graphics/Battlers/#{bitmap_name}")
  1333. return Cache.battler(bitmap_name, hue)
  1334. else
  1335. return Cache.battler(bitmap, hue)
  1336. end
  1337. end
  1338.  
  1339. #--------------------------------------------------------------------------
  1340. # ? ?????????????
  1341. #--------------------------------------------------------------------------
  1342. def start_balloon(balloon_id)
  1343. dispose_balloon
  1344. @balloon_id = balloon_id
  1345. @balloon_duration = 8 * balloon_speed + balloon_wait
  1346. @balloon_sprite = ::Sprite.new(viewport)
  1347. @balloon_sprite.bitmap = Cache.system("Balloon")
  1348. @balloon_sprite.ox = 16
  1349. @balloon_sprite.oy = 32
  1350. update_balloon
  1351. end
  1352. #--------------------------------------------------------------------------
  1353. # ? ???????????
  1354. #--------------------------------------------------------------------------
  1355. def dispose_balloon
  1356. if @balloon_sprite
  1357. @balloon_sprite.dispose
  1358. @balloon_sprite = nil
  1359. end
  1360. @balloon_id = 0
  1361. end
  1362. #--------------------------------------------------------------------------
  1363. # ? ???????????
  1364. #--------------------------------------------------------------------------
  1365. def update_balloon
  1366. return if @balloon_id == 0
  1367. if @balloon_duration > 0
  1368. @balloon_duration -= 1
  1369. if @balloon_duration > 0
  1370. @balloon_sprite.x = BattleCamera.correct_x(@current_x)
  1371. @balloon_sprite.y = BattleCamera.correct_y(@current_y - @battler_height)
  1372. @balloon_sprite.z = self.z + 200
  1373. sx = balloon_frame_index * 32
  1374. sy = (@balloon_id - 1) * 32
  1375. @balloon_sprite.src_rect.set(sx, sy, 32, 32)
  1376. else
  1377. end_balloon
  1378. end
  1379. end
  1380. end
  1381. #--------------------------------------------------------------------------
  1382. # ? ???????????
  1383. #--------------------------------------------------------------------------
  1384. def end_balloon
  1385. dispose_balloon
  1386. @balloon_id = 0
  1387. end
  1388. #--------------------------------------------------------------------------
  1389. # ? ?????????????
  1390. #--------------------------------------------------------------------------
  1391. def balloon_speed
  1392. return 8
  1393. end
  1394. #--------------------------------------------------------------------------
  1395. # ? ?????????????????
  1396. #--------------------------------------------------------------------------
  1397. def balloon_wait
  1398. return 12
  1399. end
  1400. #--------------------------------------------------------------------------
  1401. # ? ???????????????
  1402. #--------------------------------------------------------------------------
  1403. def balloon_frame_index
  1404. return 7 - [(@balloon_duration - balloon_wait) / balloon_speed, 0].max
  1405. end
  1406.  
  1407. end
  1408.  
  1409. #===============================================================================
  1410. # ¦ Sprite_Weapon
  1411. #-------------------------------------------------------------------------------
  1412. # The class that controls weapon animations.
  1413. #===============================================================================
  1414. class Sprite_Weapon < Sprite
  1415.  
  1416. attr_reader :anime_count
  1417.  
  1418. def initialize(sprite, bitmap, anime_count, frames=1, frame_interval=1, over=false, icon=false)
  1419. super(sprite.viewport)
  1420. @sprite = sprite
  1421. @anime_count = anime_count
  1422. @current_angle = 0
  1423. @end_angle = 0
  1424. @frames = frames
  1425. @frame_interval = frame_interval
  1426. @frame_count = 0
  1427. @frame = 0
  1428. @over = over
  1429. @x_correction = @y_correction = 0
  1430. self.bitmap = bitmap
  1431. @bw = self.bitmap.width / @frames
  1432. @bh = self.bitmap.height
  1433. self.mirror = sprite.battler.enemy?
  1434. self.ox = icon ? @bw : @bw / 2
  1435. self.oy = @bh
  1436. update_rect
  1437. end
  1438.  
  1439. def update
  1440. super
  1441. return if @anime_count < 1
  1442. update_animation
  1443. @anime_count -= 1
  1444. end
  1445.  
  1446. def update_animation
  1447. update_angle
  1448. update_frame
  1449. update_rect
  1450. update_coordinates
  1451. end
  1452.  
  1453. def update_angle
  1454. @current_angle = (@current_angle * (@anime_count - 1) + @end_angle) / @anime_count
  1455. self.angle = @sprite.angle + @current_angle
  1456. end
  1457.  
  1458. def update_frame
  1459. @frame_count = (@frame_count + 1) % @frame_interval
  1460. @frame = (@frame + 1) % @frames if @frame_count == 0
  1461. end
  1462.  
  1463. def update_rect
  1464. self.src_rect.set(@bw * @frame, 0, @bw, @bh)
  1465. end
  1466.  
  1467. def animation?
  1468. return (@anime_count > 0)
  1469. end
  1470.  
  1471. def update_coordinates
  1472. self.x = BattleCamera.correct_x(@sprite.current_x + @x_correction)
  1473. self.y = BattleCamera.correct_y(@sprite.current_y + @y_correction)
  1474. self.z = @over ? @sprite.z + 1 : @sprite.z - 1
  1475. self.zoom_x = @sprite.zoom_x
  1476. self.zoom_y = @sprite.zoom_y
  1477.  
  1478. end
  1479.  
  1480. def set_angles(start_angle, end_angle)
  1481. @current_angle = start_angle
  1482. @end_angle = end_angle
  1483. end
  1484.  
  1485. def setup_correction(x, y)
  1486. @x_correction = x
  1487. @y_correction = y
  1488. end
  1489.  
  1490. end
  1491.  
  1492. #===============================================================================
  1493. # ¦ Sprite_Afterimage
  1494. #-------------------------------------------------------------------------------
  1495. # The class that controls afterimage processing.
  1496. #===============================================================================
  1497.  
  1498. class Sprite_Afterimage < Sprite
  1499.  
  1500. #-----------------------------------------------------------------------------
  1501. # Updates the afterimage
  1502. #-----------------------------------------------------------------------------
  1503. def update(index, size, data, sprite)
  1504. super()
  1505. self.bitmap = data[0]
  1506. self.x = BattleCamera.correct_x(data[1])
  1507. self.y = BattleCamera.correct_y(data[2])
  1508. self.z = data[3]
  1509. self.zoom_x = BattleCamera.correct_zoom(data[4], data[1], data[2], sprite.battler.zoom_effective?)
  1510. self.zoom_y = BattleCamera.correct_zoom(data[5], data[1], data[2], sprite.battler.zoom_effective?)
  1511. self.src_rect = data[6]
  1512. self.ox = data[7]
  1513. self.oy = data[8]
  1514. self.angle = BattleCamera.correct_angle(data[9])
  1515. self.mirror = data[10]
  1516. self.opacity = 255 - (index * 255 / size)
  1517. end
  1518.  
  1519. end
  1520.  
  1521. #==============================================================================
  1522. # ¦ Sprite_BattlePicture
  1523. #==============================================================================
  1524.  
  1525. class Sprite_BattlePicture < Sprite_Base
  1526. #--------------------------------------------------------------------------
  1527. # ? ?????????
  1528. # picture : Game_Picture
  1529. #--------------------------------------------------------------------------
  1530. def initialize(viewport, picture)
  1531. super(viewport)
  1532. @picture = picture
  1533. update
  1534. end
  1535. #--------------------------------------------------------------------------
  1536. # ? ??
  1537. #--------------------------------------------------------------------------
  1538. def dispose
  1539. bitmap.dispose if bitmap
  1540. super
  1541. end
  1542. #--------------------------------------------------------------------------
  1543. # ? ??????
  1544. #--------------------------------------------------------------------------
  1545. def update
  1546. super
  1547. update_bitmap
  1548. update_origin
  1549. update_position
  1550. update_zoom
  1551. update_other
  1552. end
  1553. #-----------------------------------------------------------------------------
  1554. # Updates the bitmap
  1555. #-----------------------------------------------------------------------------
  1556. def update_bitmap
  1557. if @picture.name.is_a?(Integer)
  1558. self.bitmap = Cache.get_icon_bitmap(@picture.name)
  1559. else
  1560. self.bitmap = Cache.picture(@picture.name)
  1561. end
  1562. end
  1563.  
  1564. #--------------------------------------------------------------------------
  1565. # ? ?????
  1566. #--------------------------------------------------------------------------
  1567. def update_origin
  1568. if @picture.origin == 0
  1569. self.ox = 0
  1570. self.oy = 0
  1571. else
  1572. self.ox = bitmap.width / 2
  1573. self.oy = bitmap.height / 2
  1574. end
  1575. end
  1576. #--------------------------------------------------------------------------
  1577. # ? ?????
  1578. #--------------------------------------------------------------------------
  1579. def update_position
  1580. self.x = BattleCamera.correct_x(@picture.x)
  1581. self.y = BattleCamera.correct_y(@picture.y)
  1582. self.z = @picture.number
  1583. end
  1584. #--------------------------------------------------------------------------
  1585. # ? ??????
  1586. #--------------------------------------------------------------------------
  1587. def update_zoom
  1588. self.zoom_x = BattleCamera.correct_zoom(@picture.zoom_x / 100.0)
  1589. self.zoom_y = BattleCamera.correct_zoom(@picture.zoom_y / 100.0)
  1590. end
  1591. #--------------------------------------------------------------------------
  1592. # ? ??????
  1593. #--------------------------------------------------------------------------
  1594. def update_other
  1595. self.opacity = @picture.opacity
  1596. self.blend_type = @picture.blend_type
  1597. self.angle = @picture.angle
  1598. self.tone.set(@picture.tone)
  1599. end
  1600.  
  1601. def start_animation_ex(animation, mirror = false)
  1602. start_animation(animation, mirror)
  1603. end
  1604.  
  1605.  
  1606.  
  1607. end
  1608.  
  1609. #===============================================================================
  1610. # ¦ Spriteset_Battle
  1611. #===============================================================================
  1612.  
  1613. class Spriteset_Battle
  1614.  
  1615. #--------------------------------------------------------------------------
  1616. # ? Class variables
  1617. #--------------------------------------------------------------------------
  1618. @@inverted_x_cache = {}
  1619. @@inverted_y_cache = {}
  1620. @@inverted_both_cache = {}
  1621.  
  1622. #--------------------------------------------------------------------------
  1623. # ? Alias methods
  1624. #--------------------------------------------------------------------------
  1625. alias rbs_spriteset_battle_initialize initialize
  1626. alias rbs_spriteset_battle_battleback1_bitmap battleback1_bitmap
  1627. alias rbs_spriteset_battle_battleback2_bitmap battleback2_bitmap
  1628.  
  1629. #--------------------------------------------------------------------------
  1630. # ? Creates the spriteset
  1631. #--------------------------------------------------------------------------
  1632. def initialize
  1633. rbs_spriteset_battle_initialize
  1634. @battler_sprites = @enemy_sprites + @actor_sprites
  1635. @icon_sprites = {}
  1636. end
  1637.  
  1638. def create_actors
  1639. @actor_sprites = $game_party.members.collect do |actor|
  1640. Sprite_Battler.new(@viewport1, actor)
  1641. end
  1642. end
  1643.  
  1644.  
  1645. def update_actors
  1646. @actor_sprites.each do |sprite|
  1647. if !sprite.battler
  1648. @actor_sprites.delete(sprite)
  1649. sprite.dispose
  1650. else
  1651. sprite.update
  1652. end
  1653. end
  1654. $game_party.members.each do |actor|
  1655. if !@actor_sprites.any? { |sprite| sprite.battler == actor}
  1656. new_sprite = Sprite_Battler.new(@viewport1, actor)
  1657. @actor_sprites.push(new_sprite)
  1658. new_sprite.update
  1659. if $game_troop.turn_count > 0 || BattleManager.turn_end?
  1660. BattleInterpreter.add_action(actor, [actor], actor.get_presentation_sequence, nil)
  1661. SceneManager.scene.wait_for_battle_interpreter
  1662. end
  1663. end
  1664. end
  1665. end
  1666.  
  1667. #--------------------------------------------------------------------------
  1668. # ? checks if animating
  1669. #--------------------------------------------------------------------------
  1670. def animation?
  1671. battler_sprites.any? {|sprite| sprite.animation? || sprite.moving? || BattleCamera.moving? }
  1672. end
  1673.  
  1674. #--------------------------------------------------------------------------
  1675. # ? gets the battler sprites
  1676. #--------------------------------------------------------------------------
  1677. def battler_sprites
  1678. @actor_sprites + @enemy_sprites
  1679. end
  1680.  
  1681. #--------------------------------------------------------------------------
  1682. # ? Get the battler sprite of a target
  1683. #--------------------------------------------------------------------------
  1684. def battler_sprite(battler)
  1685. @battler_sprites.each do |i|
  1686. return i if i.battler == battler
  1687. end
  1688. end
  1689.  
  1690. #--------------------------------------------------------------------------
  1691. # ? Creates the lower battleback
  1692. #--------------------------------------------------------------------------
  1693. def create_battleback1
  1694. @back1_sprite = Plane.new(@viewport1)
  1695. @back1_sprite.bitmap = battleback1_bitmap
  1696. @back1_sprite.z = 0
  1697. end
  1698. #--------------------------------------------------------------------------
  1699. # ? Creats the upper battleback
  1700. #--------------------------------------------------------------------------
  1701. def create_battleback2
  1702. @back2_sprite = Plane.new(@viewport1)
  1703. @back2_sprite.bitmap = battleback2_bitmap
  1704. @back2_sprite.z = 1
  1705. end
  1706.  
  1707. #--------------------------------------------------------------------------
  1708. # ? Updates lower battleback
  1709. #--------------------------------------------------------------------------
  1710. def update_battleback1
  1711. z = BattleConfig::Battleback_NormalZoom
  1712. ox = @back1_sprite.bitmap.width * 3 / 4
  1713. oy = @back1_sprite.bitmap.height * 3 / 4
  1714. @back1_sprite.ox = -BattleCamera.correct_x(ox)
  1715. @back1_sprite.oy = -BattleCamera.correct_y(oy)
  1716. zoom = BattleCamera.correct_zoom(BattleConfig::Battleback_NormalZoom)
  1717. @back1_sprite.zoom_x = @back1_sprite.zoom_y = zoom
  1718. end
  1719. #--------------------------------------------------------------------------
  1720. # ? Updates upper battleback
  1721. #--------------------------------------------------------------------------
  1722. def update_battleback2
  1723. z = BattleConfig::Battleback_NormalZoom
  1724. ox = @back2_sprite.bitmap.width * 3 / 4
  1725. oy = @back2_sprite.bitmap.height * 3 / 4
  1726. @back2_sprite.ox = -BattleCamera.correct_x(ox)
  1727. @back2_sprite.oy = -BattleCamera.correct_y(oy)
  1728. zoom = BattleCamera.correct_zoom(BattleConfig::Battleback_NormalZoom)
  1729. @back2_sprite.zoom_x = @back2_sprite.zoom_y = zoom
  1730. end
  1731.  
  1732. #--------------------------------------------------------------------------
  1733. # ? Gets the bitmap of lower battleback
  1734. #--------------------------------------------------------------------------
  1735. def battleback1_bitmap
  1736. if BattleConfig::UsingDefaultBattlebacks
  1737. return create_mirrored_battleback(rbs_spriteset_battle_battleback1_bitmap)
  1738. else
  1739. return rbs_spriteset_battle_battleback1_bitmap
  1740. end
  1741. end
  1742.  
  1743. #--------------------------------------------------------------------------
  1744. # ? Gets the bitmap of upper battleback
  1745. #--------------------------------------------------------------------------
  1746. def battleback2_bitmap
  1747. if BattleConfig::UsingDefaultBattlebacks
  1748. return create_mirrored_battleback(rbs_spriteset_battle_battleback2_bitmap)
  1749. else
  1750. return rbs_spriteset_battle_battleback2_bitmap
  1751. end
  1752. end
  1753.  
  1754. #--------------------------------------------------------------------------
  1755. # ? Creates the sprite of the battleback for compatibility
  1756. #--------------------------------------------------------------------------
  1757. def create_mirrored_battleback(battleback)
  1758. org_w = battleback.width
  1759. org_h = battleback.height
  1760. bw = battleback.width << 1
  1761. bh = battleback.height << 1
  1762. bmp = Bitmap.new(bw, bh)
  1763. bmp.blt(org_w >> 1, org_h >> 1, battleback, battleback.rect)
  1764. battleback.dispose
  1765. return bmp
  1766. end
  1767.  
  1768. def make_return_sequence(include_stand=true)
  1769. battler_sprites.each do |i|
  1770. i.make_return_sequence(include_stand)
  1771. end
  1772. end
  1773.  
  1774. #--------------------------------------------------------------------------
  1775. # ? ????????????
  1776. #--------------------------------------------------------------------------
  1777. def update_pictures
  1778. $game_troop.screen.pictures.each do |pic|
  1779. @picture_sprites[pic.number] ||= Sprite_BattlePicture.new(@viewport2, pic)
  1780. @picture_sprites[pic.number].update
  1781. end
  1782. end
  1783.  
  1784. end
  1785.  
  1786. #===============================================================================
  1787. # END SPRITE SECTION
  1788. #===============================================================================
  1789.  
  1790. #===============================================================================
  1791. # BEGIN GAME DATA SECTION
  1792. #===============================================================================
  1793.  
  1794. #===============================================================================
  1795. # * RPG::BaseItem
  1796. #===============================================================================
  1797. module RPG
  1798. class BaseItem
  1799.  
  1800. #---------------------------------------------------------------------------
  1801. # Gets attack skill id
  1802. #---------------------------------------------------------------------------
  1803. def get_atk_skill_id
  1804. return self.note[/<atk skill id:(.*?)>/mi] ? eval($1) : nil
  1805. end
  1806.  
  1807. #---------------------------------------------------------------------------
  1808. # Gets guard skill id
  1809. #---------------------------------------------------------------------------
  1810. def get_guard_skill_id
  1811. return self.note[/<guard skill id:(.*?)>/mi] ? eval($1) : nil
  1812. end
  1813.  
  1814. #---------------------------------------------------------------------------
  1815. # Gets a sequence
  1816. #---------------------------------------------------------------------------
  1817. def get_sequence(key)
  1818. ex = BattleConfig::Default_SequenceNotes
  1819. reg = /<sequence:#{key}>(.*?)<\/sequence>/mi
  1820. ex_r = ''
  1821. if self.is_a?(RPG::Actor) || self.is_a?(RPG::Enemy)
  1822. ex_r = (ex[reg] ? $1 : '')
  1823. end
  1824. return self.note[reg] ? $1 : ex_r
  1825. end
  1826.  
  1827. #---------------------------------------------------------------------------
  1828. # Gets a sequence
  1829. #---------------------------------------------------------------------------
  1830. def get_turn_start_sequence
  1831. get_sequence('turn start')
  1832. end
  1833.  
  1834. #---------------------------------------------------------------------------
  1835. # Gets a sequence
  1836. #---------------------------------------------------------------------------
  1837. def get_turn_end_sequence
  1838. get_sequence('turn end')
  1839. end
  1840.  
  1841. #---------------------------------------------------------------------------
  1842. # Gets a sequence
  1843. #---------------------------------------------------------------------------
  1844. def get_presentation_sequence
  1845. get_sequence('presentation')
  1846. end
  1847.  
  1848. #---------------------------------------------------------------------------
  1849. # Gets a sequence
  1850. #---------------------------------------------------------------------------
  1851. def get_surprised_sequence
  1852. get_sequence('surprised')
  1853. end
  1854.  
  1855. #---------------------------------------------------------------------------
  1856. # Gets a sequence
  1857. #---------------------------------------------------------------------------
  1858. def get_preemptive_sequence
  1859. get_sequence('preemptive')
  1860. end
  1861.  
  1862. #---------------------------------------------------------------------------
  1863. # Gets a sequence
  1864. #---------------------------------------------------------------------------
  1865. def get_attack_sequence
  1866. get_sequence('attack')
  1867. end
  1868.  
  1869. #---------------------------------------------------------------------------
  1870. # Gets a sequence
  1871. #---------------------------------------------------------------------------
  1872. def get_guard_sequence
  1873. get_sequence('guard')
  1874. end
  1875.  
  1876. #---------------------------------------------------------------------------
  1877. # Gets a sequence
  1878. #---------------------------------------------------------------------------
  1879. def get_counter_sequence
  1880. get_sequence('counter')
  1881. end
  1882.  
  1883. #---------------------------------------------------------------------------
  1884. # Gets a sequence
  1885. #---------------------------------------------------------------------------
  1886. def get_die_sequence
  1887. get_sequence('die')
  1888. end
  1889.  
  1890. #---------------------------------------------------------------------------
  1891. # Gets a sequence
  1892. #---------------------------------------------------------------------------
  1893. def get_dead_sequence
  1894. get_sequence('dead')
  1895. end
  1896.  
  1897. #---------------------------------------------------------------------------
  1898. # Gets a sequence
  1899. #---------------------------------------------------------------------------
  1900. def get_revive_sequence
  1901. get_sequence('revive')
  1902. end
  1903.  
  1904. #---------------------------------------------------------------------------
  1905. # Gets a sequence
  1906. #---------------------------------------------------------------------------
  1907. def get_victory_sequence
  1908. get_sequence('victory')
  1909. end
  1910.  
  1911. #---------------------------------------------------------------------------
  1912. # Gets a sequence
  1913. #---------------------------------------------------------------------------
  1914. def get_substitute_sequence
  1915. get_sequence('substitute')
  1916. end
  1917.  
  1918. #---------------------------------------------------------------------------
  1919. # Gets a sequence
  1920. #---------------------------------------------------------------------------
  1921. def get_reflect_sequence
  1922. get_sequence('reflect')
  1923. end
  1924.  
  1925. #---------------------------------------------------------------------------
  1926. # Gets a sequence
  1927. #---------------------------------------------------------------------------
  1928. def get_item_use_sequence
  1929. get_sequence('item')
  1930. end
  1931.  
  1932. #---------------------------------------------------------------------------
  1933. # Gets a sequence
  1934. #---------------------------------------------------------------------------
  1935. def get_skill_use_sequence
  1936. get_sequence('skill')
  1937. end
  1938.  
  1939. #---------------------------------------------------------------------------
  1940. # Gets a sequence
  1941. #---------------------------------------------------------------------------
  1942. def get_stand_sequence
  1943. get_sequence('stand')
  1944. end
  1945.  
  1946. #---------------------------------------------------------------------------
  1947. # Gets a sequence
  1948. #---------------------------------------------------------------------------
  1949. def get_evade_sequence
  1950. get_sequence('evade')
  1951. end
  1952.  
  1953. #---------------------------------------------------------------------------
  1954. # Gets a sequence
  1955. #---------------------------------------------------------------------------
  1956. def get_miss_sequence
  1957. get_sequence('miss')
  1958. end
  1959.  
  1960. #---------------------------------------------------------------------------
  1961. # Gets a sequence
  1962. #---------------------------------------------------------------------------
  1963. def get_return_sequence
  1964. get_sequence('return position')
  1965. end
  1966.  
  1967. #---------------------------------------------------------------------------
  1968. # Gets the sequence used when actor is processing an input
  1969. #---------------------------------------------------------------------------
  1970. def get_action_selection_sequence
  1971. get_sequence('action selection')
  1972. end
  1973.  
  1974. #---------------------------------------------------------------------------
  1975. # Gets the default battler index
  1976. #---------------------------------------------------------------------------
  1977. def get_default_battler_index
  1978. return self.note[/<default battler index:(.*?)>/mi] ? eval($1) : nil
  1979. end
  1980.  
  1981. end
  1982. end
  1983.  
  1984. class RPG::Skill < RPG::UsableItem
  1985.  
  1986. #---------------------------------------------------------------------------
  1987. # Gets a sequence
  1988. #---------------------------------------------------------------------------
  1989. def get_attack_sequence
  1990. get_sequence('skill') == '' ? get_sequence('attack') : get_sequence('skill')
  1991. end
  1992.  
  1993. end
  1994.  
  1995. class RPG::Item < RPG::UsableItem
  1996.  
  1997. #---------------------------------------------------------------------------
  1998. # Gets a sequence
  1999. #---------------------------------------------------------------------------
  2000. def get_attack_sequence
  2001. get_sequence('item') == '' ? get_sequence('attack') : get_sequence('skill')
  2002. end
  2003.  
  2004. end
  2005.  
  2006.  
  2007. #===============================================================================
  2008. # END GAME DATA SECTION
  2009. #===============================================================================
  2010.  
  2011. #===============================================================================
  2012. # BEGIN GAME OBJECTS SECTION
  2013. #===============================================================================
  2014.  
  2015. #===============================================================================
  2016. # ¦ Game_Battler
  2017. #===============================================================================
  2018. class Game_Battler
  2019.  
  2020. def friend_unit
  2021. return []
  2022. end
  2023.  
  2024. def enemy_unit
  2025. return []
  2026. end
  2027.  
  2028. def counter_skill_id
  2029. return attack_skill_id
  2030. end
  2031.  
  2032. def zoom_effective?
  2033. return true
  2034. end
  2035.  
  2036. end
  2037.  
  2038. #==============================================================================
  2039. # ¦ Game_Enemy
  2040. #==============================================================================
  2041. class Game_Enemy < Game_Battler
  2042.  
  2043. #-----------------------------------------------------------------------------
  2044. # Class atributes
  2045. #-----------------------------------------------------------------------------
  2046. attr_reader :atk_animation_id1
  2047. attr_reader :atk_animation_id2
  2048.  
  2049. #-----------------------------------------------------------------------------
  2050. # Alias methods
  2051. #-----------------------------------------------------------------------------
  2052. alias rbs_game_enemy_initialize initialize
  2053.  
  2054. #-----------------------------------------------------------------------------
  2055. # Object Creation
  2056. #-----------------------------------------------------------------------------
  2057. def initialize(index, enemy_id)
  2058. rbs_game_enemy_initialize(index, enemy_id)
  2059. @atk_animation_id1 = enemy.note[/<atk ani1:(.*?)>/im] ? eval($1) : BattleConfig::DefaultEnemey_Ani1ID
  2060. @atk_animation_id2 = enemy.note[/<atk ani2:(.*?)>/im] ? eval($1) : BattleConfig::DefaultEnemey_Ani2ID
  2061. @counter_skill_id = enemy.note[/<counter skill id:(.*?)>/im] ? eval($1) : attack_skill_id
  2062. @weapon_1_id = enemy.note[/<weapon 1 id:(.*?)>/im] ? eval($1) : 0
  2063. @weapon_2_id = enemy.note[/<weapon 2 id:(.*?)>/im] ? eval($1) : 0
  2064. end
  2065.  
  2066. #--------------------------------------------------------------------------
  2067. # ? Get the attack skll id
  2068. #--------------------------------------------------------------------------
  2069. def attack_skill_id
  2070. id = enemy.get_atk_skill_id
  2071. return id ? id : super
  2072. end
  2073. #--------------------------------------------------------------------------
  2074. # ? Get the guard skill id
  2075. #--------------------------------------------------------------------------
  2076. def guard_skill_id
  2077. id = enemy.get_guard_skill_id
  2078. return id ? id : super
  2079. end
  2080.  
  2081. #--------------------------------------------------------------------------
  2082. # ? Get sequence
  2083. #--------------------------------------------------------------------------
  2084. def get_turn_start_sequence
  2085. return enemy.presentation_sequence
  2086. end
  2087.  
  2088. #--------------------------------------------------------------------------
  2089. # ? Get sequence
  2090. #--------------------------------------------------------------------------
  2091. def get_turn_end_sequence
  2092. return enemy.presentation_sequence
  2093. end
  2094.  
  2095. #--------------------------------------------------------------------------
  2096. # ? Get sequence
  2097. #--------------------------------------------------------------------------
  2098. def get_presentation_sequence
  2099. return enemy.get_presentation_sequence
  2100. end
  2101.  
  2102. #--------------------------------------------------------------------------
  2103. # ? Get sequence
  2104. #--------------------------------------------------------------------------
  2105. def get_surprised_sequence
  2106. return enemy.get_surprised_sequence
  2107. end
  2108.  
  2109. #--------------------------------------------------------------------------
  2110. # ? Get sequence
  2111. #--------------------------------------------------------------------------
  2112. def get_preemptive_sequence
  2113. return enemy.get_preemptive_sequence
  2114. end
  2115.  
  2116. #--------------------------------------------------------------------------
  2117. # ? Get sequence
  2118. #--------------------------------------------------------------------------
  2119. def get_attack_sequence
  2120. return enemy.get_attack_sequence
  2121. end
  2122.  
  2123. #--------------------------------------------------------------------------
  2124. # ? Get sequence
  2125. #--------------------------------------------------------------------------
  2126. def get_guard_sequence
  2127. return enemy.get_guard_sequence
  2128. end
  2129.  
  2130. #--------------------------------------------------------------------------
  2131. # ? Get sequence
  2132. #--------------------------------------------------------------------------
  2133. def get_counter_sequence
  2134. return enemy.get_counter_sequence
  2135. end
  2136.  
  2137. #--------------------------------------------------------------------------
  2138. # ? Get sequence
  2139. #--------------------------------------------------------------------------
  2140. def get_die_sequence
  2141. return enemy.get_die_sequence
  2142. end
  2143.  
  2144. #--------------------------------------------------------------------------
  2145. # ? Get sequence
  2146. #--------------------------------------------------------------------------
  2147. def get_dead_sequence
  2148. return enemy.get_dead_sequence
  2149. end
  2150.  
  2151. #--------------------------------------------------------------------------
  2152. # ? Get sequence
  2153. #--------------------------------------------------------------------------
  2154. def get_revive_sequence
  2155. return enemy.get_revive_sequence
  2156. end
  2157.  
  2158. #--------------------------------------------------------------------------
  2159. # ? Get sequence
  2160. #--------------------------------------------------------------------------
  2161. def get_victory_sequence
  2162. return enemy.get_victory_sequence
  2163. end
  2164.  
  2165. #--------------------------------------------------------------------------
  2166. # ? Get sequence
  2167. #--------------------------------------------------------------------------
  2168. def get_substitute_sequence
  2169. return enemy.get_substitute_sequence
  2170. end
  2171.  
  2172. #--------------------------------------------------------------------------
  2173. # ? Get sequence
  2174. #--------------------------------------------------------------------------
  2175. def get_reflect_sequence
  2176. return enemy.get_substitute_sequence
  2177. end
  2178.  
  2179. #--------------------------------------------------------------------------
  2180. # ? Get sequence
  2181. #--------------------------------------------------------------------------
  2182. def get_item_use_sequence
  2183. return enemy.get_item_use_sequence
  2184. end
  2185.  
  2186. #--------------------------------------------------------------------------
  2187. # ? Get sequence
  2188. #--------------------------------------------------------------------------
  2189. def get_skill_use_sequence
  2190. return enemy.get_skill_use_sequence
  2191. end
  2192.  
  2193. #--------------------------------------------------------------------------
  2194. # ? Get sequence
  2195. #--------------------------------------------------------------------------
  2196. def get_stand_sequence
  2197. seq = ''
  2198. states.each do |i|
  2199. next if !i
  2200. seq += i.get_stand_sequence
  2201. end
  2202. return seq == '' ? enemy.get_stand_sequence : seq
  2203. end
  2204.  
  2205. #--------------------------------------------------------------------------
  2206. # ? Get sequence
  2207. #--------------------------------------------------------------------------
  2208. def get_evade_sequence
  2209. return enemy.get_evade_sequence
  2210. end
  2211.  
  2212. #--------------------------------------------------------------------------
  2213. # ? Get sequence
  2214. #--------------------------------------------------------------------------
  2215. def get_miss_sequence
  2216. return enemy.get_miss_sequence
  2217. end
  2218.  
  2219. #--------------------------------------------------------------------------
  2220. # ? Get sequence
  2221. #--------------------------------------------------------------------------
  2222. def get_return_sequence
  2223. return enemy.get_return_sequence
  2224. end
  2225.  
  2226. #-----------------------------------------------------------------------------
  2227. # Gets friend unit
  2228. #-----------------------------------------------------------------------------
  2229. def friend_unit
  2230. return $game_troop
  2231. end
  2232.  
  2233. #-----------------------------------------------------------------------------
  2234. # Gets enemy unit
  2235. #-----------------------------------------------------------------------------
  2236. def enemy_unit
  2237. return $game_party
  2238. end
  2239.  
  2240. #-----------------------------------------------------------------------------
  2241. # Gets default battler index
  2242. #-----------------------------------------------------------------------------
  2243. def default_battler_index
  2244. a = enemy.get_default_battler_index
  2245. return a ? a : BattleConfig::DefaultEnemyIndex
  2246. end
  2247.  
  2248. #-----------------------------------------------------------------------------
  2249. # Gets the real presentation action according to situation
  2250. #-----------------------------------------------------------------------------
  2251. def get_real_presentation_action
  2252. return get_dead_sequence if dead?
  2253. BattleManager.surprise? ? get_preemptive_sequence : (BattleManager.preemptive? ? get_surprised_sequence : get_presentation_sequence )
  2254. end
  2255.  
  2256. #-----------------------------------------------------------------------------
  2257. # Gets the counter skill id
  2258. #-----------------------------------------------------------------------------
  2259. def counter_skill_id
  2260. return @counter_skill_id
  2261. end
  2262.  
  2263. #-----------------------------------------------------------------------------
  2264. # has dia sequence?
  2265. #-----------------------------------------------------------------------------
  2266. def die_sequence?
  2267. return enemy.note[/<die sequence on>/mi] ? true : false
  2268. end
  2269.  
  2270. #-----------------------------------------------------------------------------
  2271. # Get weapons
  2272. #-----------------------------------------------------------------------------
  2273. def weapons
  2274. result = []
  2275. result.push($data_weapons[@weapon_1_id]) if @weapon_1_id > 0
  2276. result.push($data_weapons[@weapon_2_id]) if @weapon_2_id > 0
  2277. return result
  2278. end
  2279.  
  2280. end
  2281.  
  2282. #==============================================================================
  2283. # ¦ Game_Actor
  2284. #==============================================================================
  2285. class Game_Actor < Game_Battler
  2286.  
  2287. #-----------------------------------------------------------------------------
  2288. # Class atributes
  2289. #-----------------------------------------------------------------------------
  2290. attr_accessor :battler_name
  2291. attr_accessor :battler_hue
  2292. attr_accessor :counter_skill_id
  2293.  
  2294. #-----------------------------------------------------------------------------
  2295. # Alias methods
  2296. #-----------------------------------------------------------------------------
  2297. alias rbs_game_actor_setup setup
  2298. alias rbs_game_actor_make_actions make_actions
  2299.  
  2300. #--------------------------------------------------------------------------
  2301. # ? Setups an actor by ID
  2302. #--------------------------------------------------------------------------
  2303. def setup(actor_id)
  2304. rbs_game_actor_setup(actor_id)
  2305. @battler_name = actor.note[/<battler name:(.*?)>/im] ? $1 : @character_name
  2306. @battler_hue = actor.note[/<battler hue:(.*?)>/im] ? $1.to_i : 0
  2307. @custom_screen_x = actor.note[/<screen x:(.*?)>/im] ? $1.to_i : nil
  2308. @custom_screen_y = actor.note[/<screen y:(.*?)>/im] ? $1.to_i : nil
  2309. id1 = actor.note[/<atk ani1:(.*?)>/im] ? Kernel.eval($1) : ($data_classes[@class_id].note[/<atk ani1:(.*?)>/im] ? Kernel.eval($1) : BattleConfig::DefaultEnemey_Ani1ID)
  2310. id2 = actor.note[/<atk ani2:(.*?)>/im] ? Kernel.eval($1) : ($data_classes[@class_id].note[/<atk ani2:(.*?)>/im] ? Kernel.eval($1) : BattleConfig::DefaultEnemey_Ani2ID)
  2311. @default_atk_animation_id1 = id1
  2312. @default_atk_animation_id2 = id2
  2313. c_s_id = $data_classes[@class_id].note[/<counter skill id:(.*?)>/im] ? Kernel.eval($1) : attack_skill_id
  2314. @counter_skill_id = actor.note[/<counter skill id:(.*?)>/im] ? Kernel.eval($1) : c_s_id
  2315. end
  2316.  
  2317. #--------------------------------------------------------------------------
  2318. # ? Use sprite?
  2319. #--------------------------------------------------------------------------
  2320. def use_sprite?
  2321. return true
  2322. end
  2323.  
  2324. #--------------------------------------------------------------------------
  2325. # ? Get battle screen x position
  2326. #--------------------------------------------------------------------------
  2327. def screen_x
  2328. return 0 if !self.index
  2329. return @custom_screen_x ? @custom_screen_x : BattleConfig::ActorPos[self.index][0]
  2330. end
  2331.  
  2332. #--------------------------------------------------------------------------
  2333. # ? Get battle screen y position
  2334. #--------------------------------------------------------------------------
  2335. def screen_y
  2336. return 0 if !self.index
  2337. return @custom_screen_y ? @custom_screen_y : BattleConfig::ActorPos[self.index][1]
  2338. end
  2339.  
  2340. #--------------------------------------------------------------------------
  2341. # ? Get battle screen z position
  2342. #--------------------------------------------------------------------------
  2343. def screen_z
  2344. return 100
  2345. end
  2346.  
  2347. #--------------------------------------------------------------------------
  2348. # ? Get sequence
  2349. #--------------------------------------------------------------------------
  2350. def get_turn_start_sequence
  2351. seq = ''
  2352. equips.each do |i|
  2353. next if !i
  2354. seq += i.get_turn_start_sequence
  2355. end
  2356. return seq != '' ? seq : actor.get_turn_start_sequence
  2357. end
  2358.  
  2359. #--------------------------------------------------------------------------
  2360. # ? Get sequence
  2361. #--------------------------------------------------------------------------
  2362. def get_turn_end_sequence
  2363. seq = ''
  2364. equips.each do |i|
  2365. next if !i
  2366. seq += i.get_turn_end_sequence
  2367. end
  2368. return seq != '' ? seq : actor.get_turn_end_sequence
  2369. end
  2370.  
  2371. #--------------------------------------------------------------------------
  2372. # ? Get sequence
  2373. #--------------------------------------------------------------------------
  2374. def get_presentation_sequence
  2375. seq = ''
  2376. equips.each do |i|
  2377. next if !i
  2378. seq += i.get_presentation_sequence
  2379. end
  2380. return seq != '' ? seq : actor.get_presentation_sequence
  2381. end
  2382.  
  2383. #--------------------------------------------------------------------------
  2384. # ? Get sequence
  2385. #--------------------------------------------------------------------------
  2386. def get_surprised_sequence
  2387. seq = ''
  2388. equips.each do |i|
  2389. next if !i
  2390. seq += i.get_surprised_sequence
  2391. end
  2392. return seq != '' ? seq : actor.get_surprised_sequence
  2393. end
  2394.  
  2395. #--------------------------------------------------------------------------
  2396. # ? Get sequence
  2397. #--------------------------------------------------------------------------
  2398. def get_preemptive_sequence
  2399. seq = ''
  2400. equips.each do |i|
  2401. next if !i
  2402. seq += i.get_preemptive_sequence
  2403. end
  2404. return seq != '' ? seq : actor.get_preemptive_sequence
  2405. end
  2406.  
  2407. #--------------------------------------------------------------------------
  2408. # ? Get sequence
  2409. #--------------------------------------------------------------------------
  2410. def get_attack_sequence
  2411. seq = ''
  2412. equips.each do |i|
  2413. next if !i
  2414. seq += i.get_attack_sequence
  2415. end
  2416. return seq != '' ? seq : actor.get_attack_sequence
  2417. end
  2418.  
  2419. #--------------------------------------------------------------------------
  2420. # ? Get sequence
  2421. #--------------------------------------------------------------------------
  2422. def get_guard_sequence
  2423. seq = ''
  2424. equips.each do |i|
  2425. next if !i
  2426. seq += i.get_guard_sequence
  2427. end
  2428. return seq != '' ? seq : actor.get_guard_sequence
  2429. end
  2430.  
  2431. #--------------------------------------------------------------------------
  2432. # ? Get sequence
  2433. #--------------------------------------------------------------------------
  2434. def get_counter_sequence
  2435. seq = ''
  2436. equips.each do |i|
  2437. next if !i
  2438. seq += i.get_counter_sequence
  2439. end
  2440. return seq != '' ? seq : actor.get_counter_sequence
  2441. end
  2442.  
  2443. #--------------------------------------------------------------------------
  2444. # ? Get sequence
  2445. #--------------------------------------------------------------------------
  2446. def get_die_sequence
  2447. seq = ''
  2448. equips.each do |i|
  2449. next if !i
  2450. seq += i.get_die_sequence
  2451. end
  2452. return seq != '' ? seq : actor.get_die_sequence
  2453. end
  2454.  
  2455. #--------------------------------------------------------------------------
  2456. # ? Get sequence
  2457. #--------------------------------------------------------------------------
  2458. def get_dead_sequence
  2459. seq = ''
  2460. equips.each do |i|
  2461. next if !i
  2462. seq += i.get_dead_sequence
  2463. end
  2464. return seq != '' ? seq : actor.get_dead_sequence
  2465. end
  2466.  
  2467. #--------------------------------------------------------------------------
  2468. # ? Get sequence
  2469. #--------------------------------------------------------------------------
  2470. def get_revive_sequence
  2471. seq = ''
  2472. equips.each do |i|
  2473. next if !i
  2474. seq += i.get_revive_sequence
  2475. end
  2476. return seq != '' ? seq : actor.get_revive_sequence
  2477. end
  2478.  
  2479. #--------------------------------------------------------------------------
  2480. # ? Get sequence
  2481. #--------------------------------------------------------------------------
  2482. def get_victory_sequence
  2483. seq = ''
  2484. equips.each do |i|
  2485. next if !i
  2486. seq += i.get_victory_sequence
  2487. end
  2488. return seq != '' ? seq : actor.get_victory_sequence
  2489. end
  2490.  
  2491. #--------------------------------------------------------------------------
  2492. # ? Get sequence
  2493. #--------------------------------------------------------------------------
  2494. def get_substitute_sequence
  2495. seq = ''
  2496. equips.each do |i|
  2497. next if !i
  2498. seq += i.get_substitute_sequence
  2499. end
  2500. return seq != '' ? seq : actor.get_substitute_sequence
  2501. end
  2502.  
  2503. #--------------------------------------------------------------------------
  2504. # ? Get sequence
  2505. #--------------------------------------------------------------------------
  2506. def get_reflect_sequence
  2507. seq = ''
  2508. equips.each do |i|
  2509. next if !i
  2510. seq += i.get_reflect_sequence
  2511. end
  2512. return seq != '' ? seq : actor.get_reflect_sequence
  2513. end
  2514.  
  2515. #--------------------------------------------------------------------------
  2516. # ? Get sequence
  2517. #--------------------------------------------------------------------------
  2518. def get_item_use_sequence
  2519. seq = ''
  2520. equips.each do |i|
  2521. next if !i
  2522. seq += i.get_item_use_sequence
  2523. end
  2524. return seq != '' ? seq : actor.get_item_use_sequence
  2525. end
  2526.  
  2527. #--------------------------------------------------------------------------
  2528. # ? Get sequence
  2529. #--------------------------------------------------------------------------
  2530. def get_skill_use_sequence
  2531. seq = ''
  2532. equips.each do |i|
  2533. next if !i
  2534. seq += i.get_skill_use_sequence
  2535. end
  2536. return seq != '' ? seq : actor.get_skill_use_sequence
  2537. end
  2538.  
  2539. #--------------------------------------------------------------------------
  2540. # ? Get sequence
  2541. #--------------------------------------------------------------------------
  2542. def get_stand_sequence
  2543. seq = ''
  2544. equips.each do |i|
  2545. next if !i
  2546. seq += i.get_stand_sequence if seq == ''
  2547. end
  2548. states.each do |i|
  2549. next if !i
  2550. seq += i.get_stand_sequence if seq == ''
  2551. end
  2552. return seq != '' ? seq : actor.get_stand_sequence
  2553. end
  2554.  
  2555. #--------------------------------------------------------------------------
  2556. # ? Get sequence
  2557. #--------------------------------------------------------------------------
  2558. def get_evade_sequence
  2559. seq = ''
  2560. equips.each do |i|
  2561. next if !i
  2562. seq += i.get_evade_sequence
  2563. end
  2564. return seq != '' ? seq : actor.get_evade_sequence
  2565. end
  2566.  
  2567. #--------------------------------------------------------------------------
  2568. # ? Get sequence
  2569. #--------------------------------------------------------------------------
  2570. def get_miss_sequence
  2571. seq = ''
  2572. equips.each do |i|
  2573. next if !i
  2574. seq += i.get_miss_sequence if seq == ''
  2575. end
  2576. return seq != '' ? seq : actor.get_miss_sequence
  2577. end
  2578.  
  2579. #--------------------------------------------------------------------------
  2580. # ? Get sequence
  2581. #--------------------------------------------------------------------------
  2582. def get_return_sequence
  2583. seq = ''
  2584. equips.each do |i|
  2585. next if !i
  2586. seq += i.get_return_sequence if seq == ''
  2587. end
  2588. states.each do |i|
  2589. next if !i
  2590. seq += i.get_return_sequence if seq == ''
  2591. end
  2592. return seq != '' ? seq : actor.get_return_sequence
  2593. end
  2594.  
  2595. #---------------------------------------------------------------------------
  2596. # Gets the sequence used when actor is processing an input
  2597. #---------------------------------------------------------------------------
  2598. def get_action_selection_sequence
  2599. seq = ''
  2600. equips.each do |i|
  2601. next if !i
  2602. seq += i.get_action_selection_sequence if seq == ''
  2603. end
  2604. states.each do |i|
  2605. next if !i
  2606. seq += i.get_action_selection_sequence if seq == ''
  2607. end
  2608. return seq != '' ? seq : actor.get_action_selection_sequence
  2609. end
  2610.  
  2611. #-----------------------------------------------------------------------------
  2612. # Gets the real presentation action according to situation
  2613. #-----------------------------------------------------------------------------
  2614. def get_real_presentation_action
  2615. return get_dead_sequence if dead?
  2616. BattleManager.surprise? ? get_surprised_sequence : (BattleManager.preemptive? ? get_preemptive_sequence : get_presentation_sequence )
  2617. end
  2618.  
  2619. #-----------------------------------------------------------------------------
  2620. # Performs collapse effect
  2621. #-----------------------------------------------------------------------------
  2622. def perform_collapse_effect
  2623. case collapse_type
  2624. when 0
  2625. @sprite_effect_type = :collapse
  2626. Sound.play_enemy_collapse
  2627. when 1
  2628. @sprite_effect_type = :boss_collapse
  2629. Sound.play_boss_collapse1
  2630. when 2
  2631. @sprite_effect_type = :instant_collapse
  2632. end
  2633. end
  2634.  
  2635. #-----------------------------------------------------------------------------
  2636. # Has die sequence
  2637. #-----------------------------------------------------------------------------
  2638. def die_sequence?
  2639. return actor.note[/<die sequence on>/mi] ? true : false
  2640. end
  2641.  
  2642. #--------------------------------------------------------------------------
  2643. # ? Get the attack skill id
  2644. #--------------------------------------------------------------------------
  2645. def attack_skill_id
  2646. id = actor.get_atk_skill_id
  2647. wpns = weapons.compact
  2648. if wpns.size > 0
  2649. w = wpns[rand(wpns.size)]
  2650. id2 = w.get_atk_skill_id
  2651. id = id2 if id2
  2652. end
  2653. return id ? id : super
  2654. end
  2655. #--------------------------------------------------------------------------
  2656. # ? Get the guard skill id
  2657. #--------------------------------------------------------------------------
  2658. def guard_skill_id
  2659. id = actor.get_guard_skill_id
  2660. armrs = armors.compact
  2661. if armrs.size > 0
  2662. a = armrs[rand(armrs.size)]
  2663. id2 = a.get_guard_skill_id
  2664. id = id2 if id2
  2665. end
  2666. return id ? id : super
  2667. end
  2668.  
  2669. #-----------------------------------------------------------------------------
  2670. # Get friend unit
  2671. #-----------------------------------------------------------------------------
  2672. def friend_unit
  2673. return $game_party
  2674. end
  2675.  
  2676. #-----------------------------------------------------------------------------
  2677. # Get enemy unit
  2678. #-----------------------------------------------------------------------------
  2679. def enemy_unit
  2680. return $game_troop
  2681. end
  2682.  
  2683. #-----------------------------------------------------------------------------
  2684. # Get default battler index
  2685. #-----------------------------------------------------------------------------
  2686. def default_battler_index
  2687. a = actor.get_default_battler_index
  2688. return a ? a : BattleConfig::DefaultActorIndex
  2689. end
  2690.  
  2691. #-----------------------------------------------------------------------------
  2692. # Get attack animation 1
  2693. #-----------------------------------------------------------------------------
  2694. def atk_animation_id1
  2695. if dual_wield?
  2696. return weapons[0].animation_id if weapons[0]
  2697. return weapons[1] ? 0 : @default_atk_animation_id1
  2698. else
  2699. return weapons[0] ? weapons[0].animation_id : 1
  2700. end
  2701. end
  2702.  
  2703. #-----------------------------------------------------------------------------
  2704. # Get attack animation 2
  2705. #-----------------------------------------------------------------------------
  2706. def atk_animation_id2
  2707. if dual_wield?
  2708. return weapons[1] ? weapons[1].animation_id : @default_atk_animation_id2
  2709. else
  2710. return 0
  2711. end
  2712. end
  2713.  
  2714. #-----------------------------------------------------------------------------
  2715. # Get counter attack skill id
  2716. #-----------------------------------------------------------------------------
  2717. def counter_skill_id
  2718. id = @counter_skill_id
  2719. equips.each do |i|
  2720. next if !i
  2721. id = i.note[/<counter skill id:(.*?)>/im] ? Kernel.eval($1) : id
  2722. end
  2723. return id
  2724. end
  2725.  
  2726. end
  2727.  
  2728. #==============================================================================
  2729. # ¦ Game_Picture
  2730. #------------------------------------------------------------------------------
  2731. # ??????????????????? Game_Pictures ??????????
  2732. # ??????????????????????????
  2733. #==============================================================================
  2734.  
  2735. class Game_Picture
  2736.  
  2737. #-----------------------------------------------------------------------------
  2738. # Class atributes
  2739. #-----------------------------------------------------------------------------
  2740. attr_accessor :animation_id
  2741. attr_accessor :animation_flip
  2742.  
  2743. #-----------------------------------------------------------------------------
  2744. # Alias methods
  2745. #-----------------------------------------------------------------------------
  2746. alias rbs_game_picture_init_basic init_basic
  2747.  
  2748. #-----------------------------------------------------------------------------
  2749. # Start basic information
  2750. #-----------------------------------------------------------------------------
  2751. def init_basic
  2752. @animation_id = 0
  2753. @animation_flip = false
  2754. rbs_game_picture_init_basic
  2755. end
  2756.  
  2757. #-----------------------------------------------------------------------------
  2758. # Move ex
  2759. #-----------------------------------------------------------------------------
  2760. def move_ex(x, y, duration)
  2761. @target_x = x.to_f
  2762. @target_y = y.to_f
  2763. @duration = duration
  2764. end
  2765.  
  2766. #-----------------------------------------------------------------------------
  2767. # Set zoom
  2768. #-----------------------------------------------------------------------------
  2769. def set_zoom(zoom_x, zoom_y, duration)
  2770. @target_zoom_x = zoom_x.to_f
  2771. @target_zoom_y = zoom_y.to_f
  2772. @duration = duration
  2773. end
  2774.  
  2775. #-----------------------------------------------------------------------------
  2776. # Set opacity
  2777. #-----------------------------------------------------------------------------
  2778. def set_opacity(opacity, duration)
  2779. @target_opacity = opacity.to_f
  2780. @duration = duration
  2781. end
  2782.  
  2783. #-----------------------------------------------------------------------------
  2784. # Set animation
  2785. #-----------------------------------------------------------------------------
  2786. def set_animation(animation_id, flip=false)
  2787. @animation_id = animation_id
  2788. @animation_flip = flip
  2789. end
  2790.  
  2791. end
  2792.  
  2793. #===============================================================================
  2794. # END GAME OBJECTS SECTION
  2795. #===============================================================================
  2796.  
  2797. #===============================================================================
  2798. # BEGIN WINDOW SECTION
  2799. #===============================================================================
  2800.  
  2801. if !$imported["YEA-BattleEngine"] # If you use YEA please configure it from YEA.
  2802.  
  2803.  
  2804.  
  2805. end # if $imported["YEA-BattleEngine"]
  2806.  
  2807. #==============================================================================
  2808. # ¦ Window_BattleItem
  2809. #==============================================================================
  2810. class Window_BattleItem < Window_ItemList
  2811.  
  2812. #--------------------------------------------------------------------------
  2813. # ? Object creation
  2814. #--------------------------------------------------------------------------
  2815. def initialize(help_window, info_viewport)
  2816. y = Graphics.height - window_height
  2817. super(0, y, window_width, window_height)
  2818. self.visible = false
  2819. @help_window = help_window
  2820. @info_viewport = info_viewport
  2821. end
  2822.  
  2823. #--------------------------------------------------------------------------
  2824. # ? Get window width
  2825. #--------------------------------------------------------------------------
  2826. def window_width
  2827. Graphics.width
  2828. end
  2829.  
  2830. #--------------------------------------------------------------------------
  2831. # ? Get window height
  2832. #--------------------------------------------------------------------------
  2833. def window_height
  2834. fitting_height(visible_line_number)
  2835. end
  2836.  
  2837. #--------------------------------------------------------------------------
  2838. # ? Get visible line muber
  2839. #--------------------------------------------------------------------------
  2840. def visible_line_number
  2841. return 4
  2842. end
  2843.  
  2844.  
  2845. end
  2846.  
  2847. #==============================================================================
  2848. # ¦ Window_BattleSkill
  2849. #------------------------------------------------------------------------------
  2850. # ???????????????????????????
  2851. #==============================================================================
  2852.  
  2853. class Window_BattleSkill < Window_SkillList
  2854.  
  2855. #--------------------------------------------------------------------------
  2856. # ? Object Creation
  2857. #--------------------------------------------------------------------------
  2858. def initialize(help_window, info_viewport)
  2859. y = Graphics.height - window_height
  2860. super(0, y, window_width, window_height)
  2861. self.visible = false
  2862. @help_window = help_window
  2863. @info_viewport = info_viewport
  2864. end
  2865. #--------------------------------------------------------------------------
  2866. # ? Gets window width
  2867. #--------------------------------------------------------------------------
  2868. def window_width
  2869. Graphics.width
  2870. end
  2871. #--------------------------------------------------------------------------
  2872. # ? Gets window height
  2873. #--------------------------------------------------------------------------
  2874. def window_height
  2875. fitting_height(visible_line_number)
  2876. end
  2877.  
  2878. #--------------------------------------------------------------------------
  2879. # ? Get visible line muber
  2880. #--------------------------------------------------------------------------
  2881. def visible_line_number
  2882. return 4
  2883. end
  2884.  
  2885. end
  2886.  
  2887. #===============================================================================
  2888. # END WINDOW SECTION
  2889. #===============================================================================
  2890.  
  2891. #===============================================================================
  2892. # BEGIN SCENE SECTION
  2893. #===============================================================================
  2894.  
  2895. #==============================================================================
  2896. # ¦ Scene_Battle
  2897. #==============================================================================
  2898. class Scene_Battle < Scene_Base
  2899. #--------------------------------------------------------------------------
  2900. # ? Alias methods
  2901. #--------------------------------------------------------------------------
  2902. alias rbs_scene_battle_start start
  2903. alias rbs_scene_battle_post_start post_start
  2904. alias rbs_scene_battle_battle_start battle_start
  2905. alias rbs_scene_battle_use_item use_item
  2906. alias rbs_scene_battle_update_basic update_basic
  2907. alias rbs_scene_battle_start_actor_command_selection start_actor_command_selection
  2908. alias rbs_scene_battle_next_command next_command
  2909. alias rbs_scene_battle_prior_command prior_command
  2910.  
  2911. #--------------------------------------------------------------------------
  2912. # ? Start scene
  2913. #--------------------------------------------------------------------------
  2914. def start
  2915. BattleCamera.start
  2916. rbs_scene_battle_start
  2917. BattleInterpreter.start(@spriteset)
  2918. setup_battle_commands
  2919. end
  2920.  
  2921. #--------------------------------------------------------------------------
  2922. # ? Post star scene
  2923. #--------------------------------------------------------------------------
  2924. def post_start
  2925. rbs_scene_battle_post_start
  2926. show_presentation_animation
  2927. end
  2928.  
  2929. #--------------------------------------------------------------------------
  2930. # ? Start battle
  2931. #--------------------------------------------------------------------------
  2932. def battle_start
  2933. rbs_scene_battle_battle_start
  2934. end
  2935.  
  2936. #--------------------------------------------------------------------------
  2937. # ? Get next command
  2938. #--------------------------------------------------------------------------
  2939. def next_command
  2940. if BattleManager.actor
  2941. actor = BattleManager.actor
  2942. BattleInterpreter.add_looping_action(actor, actor.get_stand_sequence)
  2943. BattleInterpreter.add_action(actor, [actor], actor.get_turn_end_sequence, $data_skills[1])
  2944. wait_for_battle_interpreter
  2945. end
  2946. rbs_scene_battle_next_command
  2947. end
  2948.  
  2949. #--------------------------------------------------------------------------
  2950. # ? Get Prior command
  2951. #--------------------------------------------------------------------------
  2952. def prior_command
  2953. if BattleManager.actor
  2954. actor = BattleManager.actor
  2955. BattleInterpreter.add_looping_action(actor, actor.get_stand_sequence)
  2956. BattleInterpreter.add_action(actor, [actor], actor.get_turn_end_sequence, $data_skills[1])
  2957. wait_for_battle_interpreter
  2958. end
  2959. rbs_scene_battle_prior_command
  2960. end
  2961.  
  2962. #--------------------------------------------------------------------------
  2963. # ? Show presentation animation
  2964. #--------------------------------------------------------------------------
  2965. def show_presentation_animation
  2966. @spriteset.update
  2967. act = @party_command_window.active
  2968. @party_command_window.deactivate
  2969. @party_command_window.hide
  2970. for member in $game_party.members+$game_troop.members
  2971. sequence = member.get_real_presentation_action
  2972. BattleInterpreter.add_action(member, [member], sequence, $data_skills[1])
  2973. end
  2974. wait_for_battle_interpreter
  2975. wait(20)
  2976. @spriteset.make_return_sequence
  2977. wait_for_battle_interpreter
  2978. if $imported["YEA-BattleEngine"]
  2979. @party_command_window.show
  2980. @party_command_window.active = act
  2981. else
  2982. @party_command_window.activate
  2983. @party_command_window.show
  2984. end
  2985. end
  2986.  
  2987. #--------------------------------------------------------------------------
  2988. # ? Start actor command selection
  2989. #--------------------------------------------------------------------------
  2990. def start_actor_command_selection
  2991. if BattleManager.actor
  2992. actor = BattleManager.actor
  2993. BattleInterpreter.add_looping_action(actor, actor.get_action_selection_sequence)
  2994. BattleInterpreter.add_action(actor, [actor], actor.get_turn_start_sequence, $data_skills[1])
  2995. wait_for_battle_interpreter
  2996. end
  2997. rbs_scene_battle_start_actor_command_selection
  2998. end
  2999.  
  3000. #--------------------------------------------------------------------------
  3001. # ? Show attack animation
  3002. #--------------------------------------------------------------------------
  3003. def show_attack_animation(targets)
  3004. show_normal_animation(targets, @subject.atk_animation_id1, false)
  3005. wait_for_animation
  3006. show_normal_animation(targets, @subject.atk_animation_id2, true)
  3007. end
  3008.  
  3009. #--------------------------------------------------------------------------
  3010. # ? Use item
  3011. #--------------------------------------------------------------------------
  3012. def use_item
  3013. setup_dead_battlers
  3014. item = @subject.current_action.item
  3015. sequence = get_sequence(@subject, item)
  3016. @log_window.display_use_item(@subject, item)
  3017. @subject.use_item(item)
  3018. if $imported["YEA-LunaticObjects"]
  3019. lunatic_object_effect(:before, item, @subject, @subject)
  3020. end
  3021. if sequence == ''
  3022. refresh_status
  3023. targets = @subject.current_action.make_targets.compact
  3024. show_animation(targets, item.animation_id)
  3025. targets.each {|target| item.repeats.times { invoke_item(target, item) } }
  3026. else
  3027. targets = @subject.current_action.make_targets.compact
  3028. if $imported["YEA-TargetManager"]
  3029. if item.for_random?
  3030. targets = targets.collect do |target|
  3031. alive_random_target(target, item)
  3032. end
  3033. end
  3034. end
  3035. process_casting_animation if $imported["YEA-CastAnimations"]
  3036. BattleInterpreter.add_action(@subject, targets, sequence, item)
  3037. wait_for_battle_interpreter
  3038. end
  3039. if $imported["YEA-LunaticObjects"]
  3040. lunatic_object_effect(:after, item, @subject, @subject)
  3041. end
  3042. finish_item_use
  3043. end
  3044.  
  3045. def setup_dead_battlers
  3046. @dead_battlers = []
  3047. for battler in $game_troop.dead_members+$game_party.dead_members
  3048. @dead_battlers.push(battler) if battler.dead?
  3049. end
  3050. end
  3051.  
  3052. def finish_item_use
  3053. @spriteset.make_return_sequence
  3054. wait_for_battle_interpreter
  3055. for battler in $game_troop.members+$game_party.members
  3056. if battler.dead? && !@dead_battlers.include?(battler)
  3057. @dead_battlers.delete(battler)
  3058. if battler.die_sequence?
  3059. sequence = battler.get_die_sequence
  3060. BattleInterpreter.add_action(battler, [battler], sequence, nil, false)
  3061. else
  3062. battler.perform_collapse_effect
  3063. end
  3064. elsif battler.alive? && @dead_battlers.include?(battler)
  3065. sequence = battler.get_revive_sequence
  3066. BattleInterpreter.add_action(battler, [battler], sequence, nil, false)
  3067. end
  3068. end
  3069. wait_for_battle_interpreter
  3070. end
  3071.  
  3072. #--------------------------------------------------------------------------
  3073. # ? Gets the sequence for an item
  3074. #--------------------------------------------------------------------------
  3075. def get_sequence(subject, item)
  3076. sequence = item.get_attack_sequence
  3077. if item.is_a?(RPG::Skill) and item.id == subject.attack_skill_id
  3078. seq = subject.get_attack_sequence
  3079. if seq != ''
  3080. sequence = seq
  3081. end
  3082. elsif item.is_a?(RPG::Skill) and item.id == subject.guard_skill_id
  3083. seq = subject.get_guard_sequence
  3084. if seq != ''
  3085. sequence = seq
  3086. end
  3087. end
  3088. if sequence == ''
  3089. if item.is_a?(RPG::Skill)
  3090. seq = subject.get_skill_use_sequence
  3091. if seq != ''
  3092. sequence = seq
  3093. end
  3094. elsif item.is_a?(RPG::Item)
  3095. seq = subject.get_item_use_sequence
  3096. if seq != ''
  3097. sequence = seq
  3098. end
  3099. end
  3100. end
  3101. return sequence
  3102. end
  3103.  
  3104. #--------------------------------------------------------------------------
  3105. # ? Wait for battle interpreter
  3106. #--------------------------------------------------------------------------
  3107. def wait_for_battle_interpreter
  3108. update_for_wait while BattleInterpreter.running?
  3109. wait_for_animation
  3110. end
  3111.  
  3112. #--------------------------------------------------------------------------
  3113. # ? Basic update
  3114. #--------------------------------------------------------------------------
  3115. def update_basic
  3116. rbs_scene_battle_update_basic
  3117. BattleCamera.update
  3118. BattleInterpreter.update
  3119. end
  3120.  
  3121. #--------------------------------------------------------------------------
  3122. # ? Show animation ex
  3123. #--------------------------------------------------------------------------
  3124. def show_animation_ex(targets, animation_id, mirror = false)
  3125. return if !targets || targets.empty?
  3126. animation = $data_animations[animation_id]
  3127. if animation
  3128. if animation.to_screen?
  3129. target = targets[0]
  3130. target.start_animation(animation, mirror)
  3131. else
  3132. targets.each do |target|
  3133. target.start_animation(animation, mirror)
  3134. end
  3135. end
  3136. end
  3137. end
  3138.  
  3139. #--------------------------------------------------------------------------
  3140. # ? Apply item efects
  3141. #--------------------------------------------------------------------------
  3142. def apply_item_effects_ex(user, target, item)
  3143. if $imported["YEA-LunaticObjects"]
  3144. lunatic_object_effect(:prepare, item, user, target)
  3145. end
  3146. target.item_apply(user, item)
  3147. if $imported["YEA-LunaticObjects"]
  3148. lunatic_object_effect(:during, item, user, target)
  3149. end
  3150. refresh_status
  3151. @log_window.display_action_results(target, item)
  3152. end
  3153.  
  3154. #--------------------------------------------------------------------------
  3155. # ? Invoke counter attack
  3156. #--------------------------------------------------------------------------
  3157. def invoke_counter_attack_ex(user, target, item)
  3158. @log_window.display_counter(target, item)
  3159. attack_skill = $data_skills[target.counter_skill_id]
  3160. sequence = attack_skill.get_counter_sequence
  3161. sequence = target.get_counter_sequence if sequence == ''
  3162. BattleInterpreter.add_action(target, [user], sequence, attack_skill, false)
  3163. @log_window.display_action_results(target, attack_skill)
  3164. end
  3165.  
  3166. #--------------------------------------------------------------------------
  3167. # ? Invoke magic reflection
  3168. #--------------------------------------------------------------------------
  3169. def invoke_magic_reflection_ex(action, target)
  3170. item = action.item
  3171. user = action.user
  3172. @log_window.display_reflection(target, item)
  3173. action.targets.delete(target)
  3174. action.targets.push(user)
  3175. sequence = target.get_reflect_sequence
  3176. BattleInterpreter.add_action(target, [user], sequence, item, false)
  3177. end
  3178.  
  3179. #--------------------------------------------------------------------------
  3180. # ? Apply substitute
  3181. #--------------------------------------------------------------------------
  3182. def apply_substitute_ex(action, target, item)
  3183. if check_substitute(target, item)
  3184. substitute = target.friends_unit.substitute_battler
  3185. if substitute && target != substitute && !@substitutes.include?(substitute)
  3186. @log_window.display_substitute(substitute, target)
  3187. sequence = substitute.get_substitute_sequence
  3188. action.targets.delete(target)
  3189. action.targets.push(substitute)
  3190. @substitutes.push(substitute)
  3191. BattleInterpreter.add_action(substitute, [target], sequence, item)
  3192. end
  3193. end
  3194. end
  3195.  
  3196. #--------------------------------------------------------------------------
  3197. # ? Get battler sprites
  3198. #--------------------------------------------------------------------------
  3199. def get_sprites(battlers)
  3200. battlers.collect do |battler|
  3201. @spriteset.battler_sprite(battler)
  3202. end
  3203. end
  3204.  
  3205. end
  3206.  
  3207. #===============================================================================
  3208. # END SCENE SECTION
  3209. #===============================================================================
  3210.  
  3211. #===============================================================================
  3212. # START YEA COMPATIBILITY
  3213. #===============================================================================
  3214.  
  3215. if $imported["YEA-BattleEngine"]
  3216.  
  3217. #==============================================================================
  3218. # ¦ Sprite_Popup
  3219. #==============================================================================
  3220.  
  3221. class Scene_Battle < Scene_Base
  3222. attr_accessor :spriteset
  3223. end
  3224.  
  3225. class Sprite_Popup < Sprite_Base
  3226.  
  3227. attr_accessor :current_x
  3228. attr_accessor :current_y
  3229.  
  3230. alias rbs_yea_sprite_popup_create_popup_bitmap create_popup_bitmap
  3231.  
  3232. #--------------------------------------------------------------------------
  3233. # create_popup_bitmap
  3234. #--------------------------------------------------------------------------
  3235. def create_popup_bitmap
  3236. rbs_yea_sprite_popup_create_popup_bitmap
  3237. @current_x = @battler.sprite.current_x
  3238. @current_y = @battler.sprite.current_y
  3239. @current_x += rand(4) - rand(4) if @battler.sprite.popups.size >= 1
  3240. @current_x -= SceneManager.scene.spriteset.viewport1.ox
  3241. @current_y = @battler.sprite.current_y - @battler.sprite.oy/2
  3242. @current_y -= @battler.sprite.oy/2 if @battler.actor?
  3243. @current_y -= SceneManager.scene.spriteset.viewport1.oy
  3244. update
  3245. end
  3246.  
  3247. #--------------------------------------------------------------------------
  3248. # update
  3249. #--------------------------------------------------------------------------
  3250. def update
  3251. super
  3252. @current_zoom_x = 0 if !@current_zoom_x
  3253. @current_zoom_y = 0 if !@current_zoom_y
  3254. @current_x = self.x if !@current_x
  3255. @current_y = self.y if !@current_y
  3256. #---
  3257. if @flags.include?("critical") && YEA::BATTLE::FLASH_CRITICAL
  3258. @hue_duration = 2 if @hue_duration == nil || @hue_duration == 0
  3259. @hue_duration -= 1
  3260. self.bitmap.hue_change(15) if @hue_duration <= 0
  3261. end
  3262. #---
  3263. if @zoom_direction == "up"
  3264. @current_zoom_x = [@current_zoom_x + 0.075, @target_zoom].min
  3265. @current_zoom_y = [@current_zoom_y + 0.075, @target_zoom].min
  3266. else
  3267. @current_zoom_x = [@current_zoom_x - 0.075, @target_zoom].max
  3268. @current_zoom_y = [@current_zoom_y - 0.075, @target_zoom].max
  3269. end
  3270. self.zoom_x = BattleCamera.correct_zoom(@current_zoom_x)
  3271. self.zoom_y = BattleCamera.correct_zoom(@current_zoom_y)
  3272.  
  3273. self.x = BattleCamera.correct_x(@current_x)
  3274. self.y = BattleCamera.correct_y(@current_y)
  3275.  
  3276. #---
  3277. @full -= 1
  3278. return if @full > 0
  3279. @current_y -= 1
  3280. self.opacity -= @fade
  3281. self.y = BattleCamera.correct_y(@current_y)
  3282. end
  3283.  
  3284. end
  3285.  
  3286. class Sprite_Battler < Sprite_Base
  3287.  
  3288. alias rbs_yea_create_new_popup create_new_popup
  3289.  
  3290. #--------------------------------------------------------------------------
  3291. # new method: create_new_popup
  3292. #--------------------------------------------------------------------------
  3293. def create_new_popup(value, rules, flags)
  3294. return if @battler == nil
  3295. return if flags & @popup_flags != []
  3296. for popup in @popups
  3297. popup.current_y -= 24
  3298. end
  3299. rbs_yea_create_new_popup(value, rules, flags)
  3300. end
  3301.  
  3302. end
  3303.  
  3304. end
  3305.  
  3306. #===============================================================================
  3307. # END YEA COMPATIBILITY
  3308. #===============================================================================
  3309.  
  3310. #===============================================================================
  3311. # END OF FILE!!!
  3312. #===============================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement