Advertisement
Raizen

Untitled

Mar 13th, 2015
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.40 KB | None | 0 0
  1. #=======================================================
  2. # Akea Battle Order
  3. # Author: Raizen
  4. # Community: http://www.centrorpg.com/
  5. # Compatibility: RMVXAce
  6. #
  7. #=======================================================
  8. # Scripts Function: Adds the order of battlers, shown in the screen of the battle
  9. # =========================Don't Modify==============================
  10. $included ||= Hash.new
  11. $included[:akea_battleorder] = true
  12. module Akea_BattleOrder
  13. Party_Images = []
  14. Monster_Images = []
  15. Enemy_Characters = []
  16. # =========================Don't Modify==============================
  17.  
  18. # Configuration starts here
  19.  
  20. #=======================================================
  21. # INSTRUCTIONS
  22. # Very simple, put the script above main and below the battle scripts
  23. # and configure the settings.
  24. #=======================================================
  25. # IMPORTANT: For non-face, non-character image, the image MUST BE on
  26. # Graphics/Akea folder in your project, you can just create the folder and put
  27. # the picures there.
  28. # Using Party faces?, set false if your going to use charsets instead
  29. Party_Face = true
  30.  
  31. # Using enemy faces?, set false if your going to use charsets instead
  32. # If false, you need to set on the end of script settings the charset of
  33. # the enemy.
  34. Enemy_Face = true
  35.  
  36. # Adicional Image that will stay on Battle screen
  37. Battle_Image = 'Battle_Order'
  38. Image_X = 500 #Position X
  39. Image_Y = 40 #Position Y
  40.  
  41. # Portrait Image, in case characters/faces need a portrait
  42. # Image, if none is desired
  43. # Mold = ''
  44. Mold = 'mold2'
  45.  
  46. # Portrait correction position
  47. Mold_X = -4
  48. Mold_Y = -4
  49.  
  50.  
  51. # Cutting faces and charsets, that is so it will
  52. # fit on the portrait.
  53. Size = {
  54. 'Sx' => 30, # in %, on X axis that will be cut
  55. 'Sy' => 30, # in %, on Y axis that will be cut
  56. 'X' => 60, # Size of cutted image in X
  57. 'Y' => 30, # Size of cutted image in Y
  58.  
  59. }
  60. # Time taken for the portraits to move in frames
  61. Movement_Time = 5
  62.  
  63. # Initial position of the portraits [x, y]
  64. Start_Position = [465, 250]
  65.  
  66. # End position of the portraits [x, y]
  67. End_Position = [465, 50]
  68.  
  69. # Opacity of the portraits in battle,
  70. # The opacity of the turn member will be 255(100%)
  71. # The other ones will be:
  72. Opacity = 150
  73.  
  74. # Images used for characters and enemies (OPTIONAL)
  75. # To use image instead of faces or characters, put
  76. # Party_Images[id] = 'Name_of_Image'
  77. # Id is the actor id on database
  78.  
  79. Party_Images[0] = 'Battle_Order'
  80.  
  81. # Monster_Images[id] = 'Name_of_Image'
  82. # Id is the monster id on database
  83. Monster_Images[0] = 'Battle_Order'
  84.  
  85. # Enemy_Characters, configure here ONLY if Enemy_face = false
  86. # In other cases the script setting ends here.
  87.  
  88. #==============================================================================
  89. # ** Enemy_Characters[0] => Default, in case the enemy has not a preconfigured charset
  90. #==============================================================================
  91. Enemy_Characters[0] = {
  92. 'CharName' => 'Monster1', #Name of image on the folder Characters
  93. 'Index' => 1, # Index of charset with 8 positions, starting at 0
  94. }
  95. #==============================================================================
  96. # ** Enemy_Characters[1] => Slime
  97. #==============================================================================
  98. Enemy_Characters[1] = {
  99. 'CharName' => 'Monster2', #Name of image on the folder Characters
  100. 'Index' => 2, # Index of charset with 8 positions, starting at 0
  101. }
  102. end
  103. # HERE STARTS THE SCRIPT
  104.  
  105. #==============================================================================
  106. # ** Scene_Battle
  107. #------------------------------------------------------------------------------
  108. # Esta classe executa o processamento da tela de batalha.
  109. #==============================================================================
  110.  
  111. class Scene_Battle < Scene_Base
  112. alias :akea_bo_start :start
  113. alias :akea_bo_turn_start :turn_start
  114. alias :akea_bo_update :update
  115. alias :akea_bo_process_action :process_action
  116. alias :akea_bo_terminate :terminate
  117. #--------------------------------------------------------------------------
  118. # * Inicialização do processo
  119. #--------------------------------------------------------------------------
  120. def start(*args, &block)
  121. @start_bo_anime = false
  122. @bo_turn_start = false
  123. create_battle_order_images
  124. @bo_action = []
  125. akea_bo_start(*args, &block)
  126. end
  127. #--------------------------------------------------------------------------
  128. # * Início do turno
  129. #--------------------------------------------------------------------------
  130. def turn_start
  131. update_new_portraits
  132. @start_bo_anime = true
  133. akea_bo_turn_start
  134. @battle_order = []
  135. for n in 0...all_battle_members.size
  136. @battle_order.push(all_battle_members.index(BattleManager.akea_battle_turn[n])) if BattleManager.akea_battle_turn[n].alive?
  137. end
  138. @bo_pos_x = (Akea_BattleOrder::End_Position[0] - Akea_BattleOrder::Start_Position[0])/ @battle_order.size
  139. @bo_pos_y = (Akea_BattleOrder::End_Position[1] - Akea_BattleOrder::Start_Position[1])/ @battle_order.size
  140. @battle_order.reverse!
  141. @bo_correction = 0
  142. for n in 0...@battle_order.size
  143. @bo_battlers[@battle_order[n]].x = Akea_BattleOrder::Start_Position[0] + @bo_pos_x*n
  144. @bo_battlers[@battle_order[n]].y = Akea_BattleOrder::Start_Position[1] + @bo_pos_y*n
  145. @mold_battlers[@battle_order[n]].x = Akea_BattleOrder::Start_Position[0] + @bo_pos_x*n + Akea_BattleOrder::Mold_X
  146. @mold_battlers[@battle_order[n]].y = Akea_BattleOrder::Start_Position[1] + @bo_pos_y*n + Akea_BattleOrder::Mold_Y
  147. @bo_battlers[@battle_order[n]].z = 100 + n*2
  148. @mold_battlers[@battle_order[n]].z = 100 + n*2 + 1
  149. @mold_battlers[@battle_order[n]].opacity = 0
  150. end
  151. @battle_order.reverse!
  152. @reserve_order = []
  153. @bo_timer_count = 0
  154. end
  155. def update_new_portraits
  156. @bo_Image.bitmap.dispose
  157. @bo_Image.dispose
  158. @bo_battlers.each{|battler|battler.bitmap.dispose; battler.dispose}
  159. @mold_battlers.each{|battler|battler.bitmap.dispose; battler.dispose}
  160. create_battle_order_images
  161. end
  162. #--------------------------------------------------------------------------
  163. # * Processamento de ações
  164. #--------------------------------------------------------------------------
  165. def process_action
  166. return if @start_bo_anime
  167. return if scene_changing?
  168. if (!@subject || !@subject.current_action)
  169. if @battle_order.include?(all_battle_members.index(BattleManager.akea_battle_turn[0])) && BattleManager.akea_battle_turn[0] && BattleManager.akea_battle_turn[0].dead?
  170. @check_condition = BattleManager.akea_battle_turn
  171. n = 0
  172. while @check_condition[n] && @check_condition[n].dead?
  173. n += 1
  174. @bo_action.push(@battle_order.first)
  175. @reserve_order.push(@battle_order.first)
  176. @battle_order.shift
  177. end
  178. return unless @reserve_order.empty?
  179. end
  180. @bo_action.push(@battle_order.first)
  181. @battle_order.shift
  182. end
  183. if @bo_action.first
  184. @bo_battlers[@bo_action.first].opacity = 255
  185. @mold_battlers[@bo_action.first].opacity = 255
  186. end
  187. akea_bo_process_action
  188. end
  189.  
  190. #--------------------------------------------------------------------------
  191. # * Atualização da tela
  192. #--------------------------------------------------------------------------
  193. def update(*args, &block)
  194. if @start_bo_anime
  195. start_bo_pics
  196. super
  197. return
  198. end
  199. unless moving_bo_order
  200. super
  201. return
  202. end
  203. akea_bo_update(*args, &block)
  204. end
  205. #--------------------------------------------------------------------------
  206. # * Animação de inicio
  207. #--------------------------------------------------------------------------
  208. def start_bo_pics
  209. for n in 0...@battle_order.size
  210. @bo_battlers[@battle_order[n]].opacity += 20 if @bo_battlers[@battle_order[n]].opacity < Akea_BattleOrder::Opacity
  211. @mold_battlers[@battle_order[n]].opacity += 20 if @mold_battlers[@battle_order[n]].opacity < Akea_BattleOrder::Opacity
  212. end
  213. @bo_Image.opacity += 20
  214. @start_bo_anime = false if @bo_Image.opacity == 255
  215. end
  216. #--------------------------------------------------------------------------
  217. # * Movimento das faces dos battlers
  218. #--------------------------------------------------------------------------
  219. def moving_bo_order
  220. return true if @bo_action.compact.empty?
  221. unless @bo_action.compact.empty?
  222. if @bo_action.first == nil
  223. @bo_action.shift
  224. return false
  225. end
  226. if @bo_battlers[@bo_action.first].opacity > 0
  227. @bo_battlers[@bo_action.first].opacity -= 30
  228. @mold_battlers[@bo_action.first].opacity -= 30
  229. @bo_Image.opacity -= 30 if @battle_order.size == 0
  230. else
  231. @bo_timer_count += 1
  232. for n in 0...@battle_order.size
  233. if @bo_timer_count != Akea_BattleOrder::Movement_Time + 1
  234. @bo_battlers[@battle_order[n]].y += @bo_pos_y / Akea_BattleOrder::Movement_Time
  235. @bo_battlers[@battle_order[n]].x += @bo_pos_x / Akea_BattleOrder::Movement_Time
  236. @mold_battlers[@battle_order[n]].y += @bo_pos_y / Akea_BattleOrder::Movement_Time
  237. @mold_battlers[@battle_order[n]].x += @bo_pos_x / Akea_BattleOrder::Movement_Time
  238. else
  239. @bo_battlers[@battle_order[n]].y += @bo_pos_y % Akea_BattleOrder::Movement_Time
  240. @bo_battlers[@battle_order[n]].x += @bo_pos_x % Akea_BattleOrder::Movement_Time
  241. @mold_battlers[@battle_order[n]].y += @bo_pos_y % Akea_BattleOrder::Movement_Time
  242. @mold_battlers[@battle_order[n]].x += @bo_pos_x % Akea_BattleOrder::Movement_Time
  243. end
  244. end
  245. @reserve_order.compact!
  246. for n in 0...@reserve_order.size
  247. if @bo_timer_count != Akea_BattleOrder::Movement_Time + 1
  248. @bo_battlers[@reserve_order[n]].y += @bo_pos_y / Akea_BattleOrder::Movement_Time
  249. @bo_battlers[@reserve_order[n]].x += @bo_pos_x / Akea_BattleOrder::Movement_Time
  250. @mold_battlers[@reserve_order[n]].y += @bo_pos_y / Akea_BattleOrder::Movement_Time
  251. @mold_battlers[@reserve_order[n]].x += @bo_pos_x / Akea_BattleOrder::Movement_Time
  252. else
  253. @bo_battlers[@reserve_order[n]].y += @bo_pos_y % Akea_BattleOrder::Movement_Time
  254. @bo_battlers[@reserve_order[n]].x += @bo_pos_x % Akea_BattleOrder::Movement_Time
  255. @mold_battlers[@reserve_order[n]].y += @bo_pos_y % Akea_BattleOrder::Movement_Time
  256. @mold_battlers[@reserve_order[n]].x += @bo_pos_x % Akea_BattleOrder::Movement_Time
  257. end
  258. end
  259. if @bo_timer_count == Akea_BattleOrder::Movement_Time
  260. @bo_action.shift
  261. @bo_timer_count = 0
  262. end
  263. end
  264. else
  265. @bo_action.shift
  266. @bo_timer_count = 0
  267. end
  268. false
  269. end
  270. #--------------------------------------------------------------------------
  271. # * Criação das imagens dos battlers
  272. #--------------------------------------------------------------------------
  273. def create_battle_order_images
  274. @bo_Image = Sprite.new
  275. @bo_Image.bitmap = Cache.akea(Akea_BattleOrder::Battle_Image)
  276. @bo_Image.x = Akea_BattleOrder::Image_X
  277. @bo_Image.y = Akea_BattleOrder::Image_Y
  278. @bo_Image.opacity = 0
  279. @bo_battlers = Array.new
  280. @mold_battlers = Array.new
  281. akea_size = Akea_BattleOrder::Size
  282. for n in 0...$game_party.battle_members.size
  283. act = $game_party.battle_members[n]
  284. @bo_battlers[n] = Sprite.new
  285. if Akea_BattleOrder::Party_Images[$game_party.battle_members[n].id]
  286. @bo_battlers[n].bitmap = Cache.akea(Akea_BattleOrder::Party_Images[$game_party.battle_members[n].id])
  287. @bo_battlers[n].opacity = 0
  288. @mold_battlers[n] = Sprite.new
  289. @mold_battlers[n].bitmap = Cache.akea('')
  290. next
  291. end
  292. if Akea_BattleOrder::Party_Face
  293. @bo_battlers[n].bitmap = Cache.face(act.face_name)
  294. face_index = act.face_index
  295. sx = @bo_battlers[n].bitmap.width/4 * akea_size['Sx'] / 100
  296. sy = @bo_battlers[n].bitmap.height/2 * akea_size['Sy'] / 100
  297. @bo_battlers[n].src_rect.set(sx + face_index % 4 * 96, sy + face_index / 4 * 96, akea_size['X'], akea_size['Y'])
  298. else
  299. @bo_battlers[n].bitmap = Cache.character(act.character_name)
  300. face_index = act.character_index
  301. sign = act.character_name[/^[\!\$]./]
  302. if sign && sign.include?('$')
  303. cw = @bo_battlers[n].bitmap.width
  304. ch = @bo_battlers[n].bitmap.height
  305. sx = @bo_battlers[n].bitmap.width * akea_size['Sx'] / 100
  306. sy = @bo_battlers[n].bitmap.height * akea_size['Sy'] / 100
  307. else
  308. cw = @bo_battlers[n].bitmap.width / 4
  309. ch = @bo_battlers[n].bitmap.height / 2
  310. sx = @bo_battlers[n].bitmap.width/4 * akea_size['Sx'] / 100
  311. sy = @bo_battlers[n].bitmap.height/2 * akea_size['Sy'] / 100
  312. end
  313. @bo_battlers[n].src_rect.set(sx + face_index % 4 * cw + cw/3, sy + face_index / 4 * ch, akea_size['X'], akea_size['Y'])
  314. end
  315. @bo_battlers[n].opacity = 0
  316. @mold_battlers[n] = Sprite.new
  317. @mold_battlers[n].bitmap = Cache.akea(Akea_BattleOrder::Mold)
  318. end
  319. for n in $game_party.battle_members.size...($game_troop.members.size + $game_party.battle_members.size)
  320. act = $game_troop.members[n-$game_party.battle_members.size]
  321. @bo_battlers[n] = Sprite.new
  322. if Akea_BattleOrder::Monster_Images[all_battle_members[n].enemy_id]
  323. @bo_battlers[n].bitmap = Cache.akea(Akea_BattleOrder::Monster_Images[all_battle_members[n].enemy_id])
  324. @bo_battlers[n].opacity = 0
  325. @mold_battlers[n] = Sprite.new
  326. @mold_battlers[n].bitmap = Cache.akea('')
  327. next
  328. end
  329. if Akea_BattleOrder::Enemy_Face
  330. @bo_battlers[n].bitmap = Cache.battler($data_enemies[act.enemy_id].battler_name, act.battler_hue)
  331. sx = @bo_battlers[n].bitmap.width * akea_size['Sx'] / 100
  332. sy = @bo_battlers[n].bitmap.height * akea_size['Sy'] / 100
  333. @bo_battlers[n].src_rect.set(sx, sy, akea_size['X'], akea_size['Y'])
  334. else
  335. if Akea_BattleOrder::Enemy_Characters[act.enemy_id]
  336. @bo_battlers[n].bitmap = Cache.character(Akea_BattleOrder::Enemy_Characters[act.enemy_id]['CharName'])
  337. face_index = Akea_BattleOrder::Enemy_Characters[act.enemy_id]['Index']
  338. sign = Akea_BattleOrder::Enemy_Characters[act.enemy_id]['CharName'][/^[\!\$]./]
  339. else
  340. @bo_battlers[n].bitmap = Cache.character(Akea_BattleOrder::Enemy_Characters[0]['CharName'])
  341. face_index = Akea_BattleOrder::Enemy_Characters[0]['Index']
  342. sign = Akea_BattleOrder::Enemy_Characters[0]['CharName'][/^[\!\$]./]
  343. end
  344. if sign && sign.include?('$')
  345. cw = @bo_battlers[n].bitmap.width
  346. ch = @bo_battlers[n].bitmap.height
  347. sx = @bo_battlers[n].bitmap.width * akea_size['Sx'] / 100
  348. sy = @bo_battlers[n].bitmap.height * akea_size['Sy'] / 100
  349. else
  350. cw = @bo_battlers[n].bitmap.width / 4
  351. ch = @bo_battlers[n].bitmap.height / 2
  352. sx = @bo_battlers[n].bitmap.width/4 * akea_size['Sx'] / 100
  353. sy = @bo_battlers[n].bitmap.height/2 * akea_size['Sy'] / 100
  354. end
  355. @bo_battlers[n].src_rect.set(sx + face_index % 4 * cw + cw/3, sy + face_index / 4 * ch, akea_size['X'], akea_size['Y'])
  356. end
  357. @bo_battlers[n].opacity = 0
  358. @mold_battlers[n] = Sprite.new
  359. @mold_battlers[n].bitmap = Cache.akea(Akea_BattleOrder::Mold)
  360. end
  361. end
  362. #--------------------------------------------------------------------------
  363. # * Finalização do processo
  364. #--------------------------------------------------------------------------
  365. def terminate
  366. @bo_Image.bitmap.dispose
  367. @bo_Image.dispose
  368. @bo_battlers.each{|battler|battler.bitmap.dispose; battler.dispose}
  369. @mold_battlers.each{|battler|battler.bitmap.dispose; battler.dispose}
  370. akea_bo_terminate
  371. end
  372. end
  373.  
  374.  
  375. #==============================================================================
  376. # ** Cache
  377. #------------------------------------------------------------------------------
  378. # Este modulo carrega cada gráfico, cria um objeto de Bitmap e retém ele.
  379. # Para acelerar o carregamento e preservar memória, este módulo matém o
  380. # objeto de Bitmap em uma Hash interna, permitindo que retorne objetos
  381. # pré-existentes quando mesmo Bitmap é requerido novamente.
  382. #==============================================================================
  383.  
  384.  
  385. module Cache
  386. #--------------------------------------------------------------------------
  387. # * Carregamento dos gráficos de animação
  388. # filename : nome do arquivo
  389. # hue : informações da alteração de tonalidade
  390. #--------------------------------------------------------------------------
  391. def self.akea(filename)
  392. load_bitmap("Graphics/Akea/", filename)
  393. end
  394. end
  395. #==============================================================================
  396. # ** BattleManager
  397. #------------------------------------------------------------------------------
  398. # Este módulo gerencia o andamento da batalha.
  399. #==============================================================================
  400.  
  401. module BattleManager
  402. #--------------------------------------------------------------------------
  403. # * Configuração inicial
  404. #--------------------------------------------------------------------------
  405. def self.akea_battle_turn
  406. @action_battlers
  407. end
  408. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement