Advertisement
Raizen

Untitled

Jan 13th, 2014
358
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 73.91 KB | None | 0 0
  1.  
  2. #=======================================================
  3. # Triple Triad Script - Main Script
  4. # Author: Raizen
  5. # Comunity: www.centrorpg.com
  6. #
  7. # NÃO CONFIGURE AQUI
  8. #=======================================================
  9.  
  10.  
  11.  
  12.  
  13. #=======================================================
  14.  
  15. #=======================================================
  16.  
  17.  
  18.  
  19. module Config_Triple_Triad
  20. def self.total_cards
  21. a = 0
  22. $game_timer.total_cards.dup.each{|card| a += card}
  23. a += $game_timer.hand_deck.size
  24. return a
  25. end
  26. end
  27.  
  28.  
  29.  
  30.  
  31. class Triple_Triad < Scene_Base
  32. include Config_Triple_Triad
  33. #--------------------------------------------------------------------------
  34. # * Inicio do Processo
  35. #--------------------------------------------------------------------------
  36. def initialize
  37. @map_bgm = RPG::BGM.last
  38. @map_bgs = RPG::BGS.last
  39. RPG::BGM.stop
  40. RPG::BGS.stop
  41. @battle_info = $game_timer.game_triple_triad.dup
  42. load_variables
  43. load_score
  44. load_text_images
  45. load_images
  46. load_back_images
  47. load_hands
  48. load_cards
  49. load_rules
  50. choose_npc_play
  51. super
  52. end
  53. #--------------------------------------------------------------------------
  54. # * carrega a janela de regras
  55. #--------------------------------------------------------------------------
  56. def load_rules
  57. @rules = Triple_Triad_Rules.new
  58. @rules.x = Graphics.width/2 - @rules.width/2
  59. @rules.y = Graphics.height/2 - @rules.height/2
  60. @rules.opacity = 0
  61. @rules.contents_opacity = 0
  62. end
  63. #--------------------------------------------------------------------------
  64. # * carrega as variáveis do jogo
  65. #--------------------------------------------------------------------------
  66. def load_variables
  67. @flip_npc_commands = true
  68. @phase = 0
  69. @count = 0
  70. @goto_x = 0
  71. @goto_y = 0
  72. @player_turn = 0
  73. @turn_move = 0
  74. @index = 0
  75. @speed_x = 0
  76. @speed_y = 0
  77. @card_speed_x = 0
  78. @card_speed_y = 0
  79. @npc_time = 0
  80. @npc_time = Normal_time + Random_time
  81. @player_cards_hand = Array.new(5){|n| n}
  82. @npc_cards_hand = Array.new(5){|n| n}
  83. @move_commands = Array.new
  84. @flip_commands = Array.new
  85. @board = Array.new(3)
  86. @board[-1] = Array.new(3, false)
  87. @board[0] = Array.new(3, false)
  88. @board[1] = Array.new(3, false)
  89. @board[2] = Array.new(3, false)
  90. @board[3] = Array.new(3, false)
  91. @npc_board_x = 0
  92. @npc_board_y = 0
  93. @board_x = 0
  94. @board_y = 0
  95. @combo = false
  96. end
  97. #--------------------------------------------------------------------------
  98. # * carrega as imagens do placar do jogo
  99. #--------------------------------------------------------------------------
  100. def load_score
  101. @score_player1 = []
  102. @score_player2 = []
  103. @score = [5, 5]
  104. for n in 0...9
  105. @score_player1[n] = Sprite.new
  106. @score_player2[n] = Sprite.new
  107. @score_player1[n].bitmap = Cache.triple_triad(Numbers[n])
  108. @score_player2[n].bitmap = Cache.triple_triad(Numbers[n])
  109. @score_player1[n].x = Num_player1[0]
  110. @score_player1[n].y = Num_player1[1]
  111. @score_player2[n].x = Num_player2[0]
  112. @score_player2[n].y = Num_player2[1]
  113. @score_player1[n].z = 10
  114. @score_player2[n].z = 10
  115. @score_player1[n].opacity = 0
  116. @score_player2[n].opacity = 0
  117. end
  118. end
  119. #--------------------------------------------------------------------------
  120. # * carrega as imagens de text(triple triad, same, plus...)
  121. #--------------------------------------------------------------------------
  122. def load_text_images
  123. @text_array = Array.new
  124. @text_pics = Array.new
  125. @text_moves = 0
  126. for n in 0...7
  127. @text_pics[n] = Sprite.new
  128. @text_pics[n].bitmap = Cache.triple_triad(Texts[n])
  129. @text_pics[n].ox = @text_pics[n].bitmap.width/2
  130. @text_pics[n].oy = @text_pics[n].bitmap.height/2
  131. @text_pics[n].x = Graphics.width/2
  132. @text_pics[n].y = Graphics.height/2
  133. @text_pics[n].opacity = 0
  134. @text_pics[n].z = 100
  135. end
  136. end
  137. #--------------------------------------------------------------------------
  138. # * carrega as imagens auxiliares(tabuleiro, cursor...)
  139. #--------------------------------------------------------------------------
  140. def load_images
  141. @background = Sprite.new
  142. @background.bitmap = Cache.triple_triad(Table)
  143. @cursor = Sprite.new
  144. @cursor.bitmap = Cache.triple_triad(Cursor)
  145. @cursor.opacity = 0
  146. @cursor.z = 100
  147. @arrow = Sprite.new
  148. @arrow.bitmap = Cache.triple_triad(Arrow)
  149. @arrow.ox = @arrow.bitmap.width/2
  150. @arrow.oy = @arrow.bitmap.height/2
  151. @arrow.x = Graphics.width/2
  152. @arrow.y = Graphics.height/2
  153. @arrow.opacity = 0
  154. @background.opacity = 0
  155. @player_turn_pic = []
  156. for n in 0...2
  157. @player_turn_pic[n] = Sprite.new
  158. if n == 0
  159. @player_turn_pic[n].bitmap = Cache.triple_triad(Player_turn1)
  160. @player_turn_pic[n].x = (Pos1x + Pos2x)/2
  161. else
  162. @player_turn_pic[n].bitmap = Cache.triple_triad(Player_turn2)
  163. @player_turn_pic[n].x = (Pos1x + Pos2x)/2
  164. end
  165. @player_turn_pic[n].opacity = 0
  166. @player_turn_pic[n].ox = @player_turn_pic[n].bitmap.width/2
  167. @player_turn_pic[n].y = Tri_y
  168. @player_turn_pic[n].z = 80
  169. end
  170. end
  171. #--------------------------------------------------------------------------
  172. # * carrega as imagens do fundo das cartas
  173. #--------------------------------------------------------------------------
  174. def load_back_images
  175. @back_card = [[0, 0, 0],[0, 0, 0],[0, 0, 0]]
  176. for n in 0...3
  177. for i in 0...3
  178. @back_card[n][i] = Sprite.new
  179. @back_card[n][i].bitmap = Cache.triple_triad(Back_Card)
  180. @back_card[n][i].x = Board_Map[n][i][0]
  181. @back_card[n][i].y = Board_Map[n][i][1]
  182. @back_card[n][i].opacity = 0
  183. @back_card[n][i].ox = @back_card[n][i].bitmap.width/2
  184. @back_card[n][i].oy = @back_card[n][i].bitmap.height/2
  185. end
  186. end
  187. end
  188. #--------------------------------------------------------------------------
  189. # * carrega a mão do jogador e do adversário
  190. #--------------------------------------------------------------------------
  191. def load_hands
  192. @player_pics = Array.new(5)
  193. @player_pics2 = Array.new(5)
  194. @npc_pics = Array.new(5)
  195. @npc_pics2 = Array.new(5)
  196. @back_npc_cards = Array.new(5)
  197. @player_hand = $game_timer.hand_deck
  198. @npc_hand = $game_timer.npc_hand
  199. end
  200. #--------------------------------------------------------------------------
  201. # * Carrega as imagens das cartas
  202. #--------------------------------------------------------------------------
  203. def load_cards
  204. for n in 0...5
  205. @player_pics[n] = Sprite.new
  206. @player_pics2[n] = Sprite.new
  207. @npc_pics[n] = Sprite.new
  208. @npc_pics2[n] = Sprite.new
  209. @player_pics[n].bitmap = Cache.triple_triad(Card[@player_hand[n]]['Image1'])
  210. @player_pics2[n].bitmap = Cache.triple_triad(Card[@player_hand[n]]['Image2'])
  211. @npc_pics[n].bitmap = Cache.triple_triad(Card[@npc_hand[n]]['Image2'])
  212. @npc_pics2[n].bitmap = Cache.triple_triad(Card[@npc_hand[n]]['Image1'])
  213. @npc_pics[n].x = Pos2x
  214. @npc_pics2[n].x = Pos2x
  215. @player_pics[n].x = Pos1x
  216. @player_pics2[n].x = Pos1x
  217. @npc_pics[n].y = Pos2y
  218. @npc_pics2[n].y = Pos2y
  219. @player_pics[n].y = Pos1y
  220. @player_pics2[n].y = Pos1y
  221. @npc_pics[n].opacity = 0
  222. @npc_pics2[n].opacity = 0
  223. @player_pics[n].opacity = 0
  224. @player_pics2[n].opacity = 0
  225. @npc_pics[n].ox = @npc_pics[n].bitmap.width/2
  226. @npc_pics2[n].ox = @npc_pics2[n].bitmap.width/2
  227. @player_pics[n].ox = @player_pics[n].bitmap.width/2
  228. @player_pics2[n].ox = @player_pics2[n].bitmap.width/2
  229. @npc_pics[n].oy = @npc_pics[n].bitmap.height/2
  230. @npc_pics2[n].oy = @npc_pics2[n].bitmap.height/2
  231. @player_pics[n].oy = @player_pics[n].bitmap.height/2
  232. @player_pics2[n].oy = @player_pics[n].bitmap.height/2
  233. unless @battle_info[8]
  234. @npc_pics[n].zoom_x = 0
  235. @back_npc_cards[n] = Sprite.new
  236. @back_npc_cards[n].bitmap = Cache.triple_triad(Back_Card)
  237. @back_npc_cards[n].x = Pos2x
  238. @back_npc_cards[n].y = Pos2y
  239. @back_npc_cards[n].opacity = 0
  240. @back_npc_cards[n].ox = @npc_pics[n].bitmap.width/2
  241. @back_npc_cards[n].oy = @npc_pics[n].bitmap.height/2
  242. end
  243. end
  244. end
  245. #--------------------------------------------------------------------------
  246. # * Atualização geral
  247. #--------------------------------------------------------------------------
  248. def update
  249. super
  250. update_window
  251. return if @phase == 2 && @rules.opacity == 255
  252. flip_npc_cards unless @flip_npc_commands
  253. update_texts unless @text_array.empty?
  254. update_turn_pics
  255. case @phase
  256. when 0
  257. update_opacity
  258. when 1
  259. update_draw
  260. when 2
  261. update_choose_player
  262. when 3
  263. update_cursor_hand
  264. when 4
  265. update_cursor_board
  266. when 5
  267. update_play
  268. when 6
  269. update_flip_play
  270. when 7
  271. update_results
  272. when 8
  273. dispose_all_cards
  274. end
  275. end
  276. #--------------------------------------------------------------------------
  277. # * Atualização da janela de regras
  278. #--------------------------------------------------------------------------
  279. def update_window
  280. if @phase == 2
  281. RPG::BGM.new(@battle_info[0]).play unless @battle_info[0].nil?
  282. end
  283. end
  284. #--------------------------------------------------------------------------
  285. # * Atualização de imagens de turn
  286. #--------------------------------------------------------------------------
  287. def update_turn_pics
  288. return if @phase < 3
  289. if @player_turn == 1
  290. if @player_turn_pic[0].x > Pos1x
  291. @move_turn = 0
  292. @player_turn_pic[0].x -= 20
  293. @player_turn_pic[1].x -= 20
  294. @player_turn_pic[0].opacity += 20
  295. @player_turn_pic[1].opacity -= 20
  296. elsif @player_turn_pic[0].x <= Pos1x && @move_turn == 0
  297. @player_turn_pic[0].x = Pos1x if @player_turn_pic[0].x != Pos1x
  298. @player_turn_pic[1].x = Pos1x if @player_turn_pic[0].x != Pos1x
  299. @player_turn_pic[0].opacity = 255 if @player_turn_pic[0].opacity < 255
  300. @player_turn_pic[1].opacity = 0 if @player_turn_pic[0].opacity > 0
  301. @move_turn = 1
  302. elsif @move_turn == 1
  303. @player_turn_pic[0].y -= 1
  304. @player_turn_pic[1].y -= 1
  305. @move_turn = 2 if @player_turn_pic[0].y <= Tri_y - 10
  306. elsif @move_turn == 2
  307. @player_turn_pic[0].y += 1
  308. @player_turn_pic[1].y += 1
  309. @move_turn = 1 if @player_turn_pic[0].y >= Tri_y
  310. end
  311. else
  312. if @player_turn_pic[0].x < Pos2x
  313. @move_turn = 0
  314. @player_turn_pic[0].x += 20
  315. @player_turn_pic[1].x += 20
  316. @player_turn_pic[0].opacity -= 20
  317. @player_turn_pic[1].opacity += 20
  318. elsif @player_turn_pic[0].x >= Pos2x && @move_turn == 0
  319. @player_turn_pic[0].x = Pos2x if @player_turn_pic[0].x != Pos1x
  320. @player_turn_pic[1].x = Pos2x if @player_turn_pic[0].x != Pos1x
  321. @player_turn_pic[1].opacity = 255 if @player_turn_pic[0].opacity < 255
  322. @player_turn_pic[2].opacity = 0 if @player_turn_pic[0].opacity > 0
  323. @move_turn = 1
  324. elsif @move_turn == 1
  325. @player_turn_pic[0].y -= 1
  326. @player_turn_pic[1].y -= 1
  327. @move_turn = 2 if @player_turn_pic[0].y <= Tri_y - 10
  328. elsif @move_turn == 2
  329. @player_turn_pic[0].y += 1
  330. @player_turn_pic[1].y += 1
  331. @move_turn = 1 if @player_turn_pic[0].y >= Tri_y
  332. end
  333. end
  334. end
  335. #--------------------------------------------------------------------------
  336. # * Atualização de textos da tela
  337. #--------------------------------------------------------------------------
  338. def update_score
  339. @score_player1[@score[0]-1].opacity = 0
  340. @score_player2[@score[1]-1].opacity = 0
  341. if @player_turn == 1
  342. @score[0] += 1
  343. @score[1] -= 1
  344. else
  345. @score[0] -= 1
  346. @score[1] += 1
  347. end
  348. @score[0] = 1 if @score[0] < 1
  349. @score[0] = 9 if @score[0] > 9
  350. @score[1] = 1 if @score[0] < 1
  351. @score[1] = 9 if @score[0] > 9
  352. @score_player1[@score[0]-1].opacity = 255
  353. @score_player2[@score[1]-1].opacity = 255
  354. end
  355. #--------------------------------------------------------------------------
  356. # * Atualização de textos da tela
  357. #--------------------------------------------------------------------------
  358. def update_texts
  359. if @text_array.first == 0
  360. if @text_moves == 0
  361. @text_pics[@text_array.first].zoom_y = 0
  362. @text_pics[@text_array.first].opacity = 255
  363. @text_moves += 1
  364. elsif @text_moves == 1
  365. @text_pics[@text_array.first].zoom_y += 0.05
  366. if @text_pics[@text_array.first].zoom_y >= 1.0
  367. @text_pics[@text_array.first].zoom_y = 1.0
  368. @text_moves += 1
  369. end
  370. elsif @text_moves == 2
  371. @text_pics[@text_array.first].opacity -= 20
  372. if @text_pics[@text_array.first].opacity <= 0
  373. @text_moves = 0
  374. @text_array.shift
  375. RPG::SE.new(Card_sound).play
  376. @phase = 1
  377. end
  378. end
  379. elsif @text_array.first > 0 && @text_array.first < 4
  380. if @text_moves == 0
  381. @text_pics[@text_array.first].x = Graphics.width + @text_pics[@text_array.first].bitmap.width/2
  382. @text_moves = 1
  383. elsif @text_moves == 1
  384. @text_pics[@text_array.first].opacity += 10
  385. @text_pics[@text_array.first].x -= 20
  386. if @text_pics[@text_array.first].x <= Graphics.width/2
  387. RPG::SE.new(Combo_sound).play
  388. @text_moves = 2
  389. end
  390. elsif @text_moves == 2
  391. @text_pics[@text_array.first].opacity += 10
  392. @text_moves = 3 if @text_pics[@text_array.first].opacity >= 255
  393. elsif @text_moves == 3
  394. @text_pics[@text_array.first].opacity -= 10
  395. if @text_pics[@text_array.first].opacity <= 0
  396. @text_moves = 0
  397. @text_array.shift
  398. end
  399. end
  400. elsif @text_array.first > 3 && @text_array.first < 7
  401. if @text_moves == 0
  402. @text_pics[@text_array.first].zoom_y = 0
  403. @text_pics[@text_array.first].opacity = 255
  404. @text_moves += 1
  405. elsif @text_moves == 1
  406. @text_pics[@text_array.first].zoom_y += 0.05
  407. if @text_pics[@text_array.first].zoom_y >= 1.0
  408. @text_pics[@text_array.first].zoom_y = 1.0
  409. @text_moves += 1
  410. end
  411. elsif @text_moves >= 2
  412. @text_moves += 1
  413. if @text_moves <= 120
  414. @text_moves = 0
  415. @text_array.shift
  416. end
  417. end
  418. end
  419. end
  420. #--------------------------------------------------------------------------
  421. # * Atualização dos gráficos iniciais de batalha
  422. #--------------------------------------------------------------------------
  423. def update_opacity
  424. if @background.opacity < 255
  425. @background.opacity += 10
  426. elsif @npc_pics[0].opacity < 255
  427. @score_player1[4].opacity += 5
  428. @score_player2[4].opacity += 5
  429. for n in 0...5
  430. @npc_pics[n].opacity += 5
  431. @back_npc_cards[n].opacity += 5 unless @battle_info[8]
  432. @player_pics[n].opacity += 5
  433. end
  434. else
  435. @text_array.push(0)
  436. @phase = -1
  437. end
  438. end
  439. #--------------------------------------------------------------------------
  440. # * Atualização fase 1 (fase de distribuir as cartas)
  441. #--------------------------------------------------------------------------
  442. def update_draw
  443. if @count < Disty
  444. @count += 1
  445. for n in 0...5
  446. @npc_pics[n].y += n
  447. @player_pics[n].y += n
  448. @back_npc_cards[n].y += n unless @battle_info[8]
  449. end
  450. else
  451. @count = 0
  452. @phase = 2
  453. end
  454. end
  455. #--------------------------------------------------------------------------
  456. # * Atualização fase 2 (fase de escolha do jogador inicial)
  457. #--------------------------------------------------------------------------
  458. def update_choose_player
  459. if @battle_info[1] != 1 && @battle_info[1] != 2
  460. @battle_info[1] = 1 + rand(2)
  461. end
  462. @player_turn = @battle_info[1]
  463. @arrow.opacity += 10 unless @count > 60
  464. if @arrow.angle % 180 == 0 && @count > 151
  465. @arrow.opacity -= 10
  466. @cursor.opacity += 10
  467. end
  468. if @arrow.opacity <= 0
  469. $game_timer.game_triple_triad[1] = 0
  470. Sound.play_cursor
  471. if @player_turn == 1
  472. @index = 4
  473. move_to_cursor(@player_pics[4].x + Cursor_x, @player_pics[4].y + Cursor_y)
  474. else
  475. @index = 4
  476. move_to_cursor(@npc_pics[4].x + Cursor_x, @npc_pics[4].y + Cursor_y)
  477. end
  478. @phase = 3
  479. end
  480. return if @arrow.opacity < 255
  481. @count += 1
  482. if @battle_info[1] == 2
  483. if @count <= 145
  484. @arrow.angle += (18 - @count/10)
  485. elsif @count > 145 && @arrow.angle % 180 != 0
  486. @arrow.angle += 1
  487. end
  488. else
  489. if @count <= 151
  490. @arrow.angle += (19 - @count/10)
  491. elsif @count > 151 && @arrow.angle % 180 != 0
  492. @arrow.angle += 1
  493. end
  494. end
  495. end
  496. #--------------------------------------------------------------------------
  497. # * Atualização fase 3 (Atualização do cursor de jogo)
  498. #--------------------------------------------------------------------------
  499. def update_cursor_hand
  500. @player_turn == 1 ? update_player_hand : update_npc_hand
  501. end
  502. #--------------------------------------------------------------------------
  503. # * Continuação Atualização fase 3 (Atualização do cursor de jogador)
  504. #--------------------------------------------------------------------------
  505. def update_player_hand
  506. cursor_move
  507. for n in 0...5
  508. if @player_cards_hand.include?(n)
  509. if n == @index
  510. @player_pics[n].x += 2 if @player_pics[n].x < Pos1x + 14
  511. else
  512. @player_pics[n].x -= 2 if @player_pics[n].x > Pos1x
  513. end
  514. end
  515. end
  516. return if cursor_moving?
  517. if Input.repeat?(:UP)
  518. if @index == @player_cards_hand.first
  519. @index = @player_cards_hand.last
  520. else
  521. unless @player_cards_hand.size == 1
  522. @index -= 1
  523. @index -= 1 until @player_cards_hand.include?(@index)
  524. end
  525. end
  526. move_to_cursor(@player_pics[@index].x + Cursor_x, @player_pics[@index].y + Cursor_y)
  527. end
  528. if Input.repeat?(:DOWN)
  529. if @index == @player_cards_hand.last
  530. @index = @player_cards_hand.first
  531. else
  532. unless @player_cards_hand.size == 1
  533. @index += 1
  534. @index += 1 until @player_cards_hand.include?(@index)
  535. end
  536. end
  537. move_to_cursor(@player_pics[@index].x + Cursor_x, @player_pics[@index].y + Cursor_y)
  538. end
  539. if Input.trigger?(:C)
  540. Sound.play_ok
  541. @board_x = 1
  542. @board_y = 1
  543. move_to_cursor(Board_Map[1][1][0]+Cursor_x, Board_Map[1][1][1]+Cursor_y)
  544. @phase = 4
  545. end
  546. end
  547. #--------------------------------------------------------------------------
  548. # * Continuação Atualização fase 3 (Atualização do cursor de npc)
  549. #--------------------------------------------------------------------------
  550. def update_npc_hand
  551. cursor_move
  552. @count += 1
  553. for n in 0...5
  554. if @npc_cards_hand.include?(n)
  555. if n == @index
  556. if !@battle_info[8]
  557. @back_npc_cards[n].x -= 2 if @back_npc_cards[n].x > Pos2x - 14
  558. end
  559. @npc_pics[n].x -= 2 if @npc_pics[n].x > Pos2x - 14
  560. else
  561. if !@battle_info[8]
  562. @back_npc_cards[n].x += 2 if @back_npc_cards[n].x < Pos2x
  563. end
  564. @npc_pics[n].x += 2 if @npc_pics[n].x < Pos2x
  565. end
  566. end
  567. end
  568. return if cursor_moving?
  569. if @count < @npc_time
  570. return
  571. elsif @count == @npc_time
  572. choose_npc_play
  573. return
  574. end
  575. if @npc_index == @index
  576. Sound.play_ok
  577. @board_x = 1
  578. @board_y = 1
  579. move_to_cursor(Board_Map[1][1][0]+Cursor_x, Board_Map[1][1][1]+Cursor_y)
  580. @phase = 4
  581. elsif @npc_index > @index
  582. @index += 1
  583. @index += 1 until @npc_cards_hand.include?(@index)
  584. else
  585. @index -= 1
  586. @index -= 1 until @npc_cards_hand.include?(@index)
  587. end
  588. move_to_cursor(@npc_pics[@index].x + Cursor_x, @npc_pics[@index].y + Cursor_y)
  589. end
  590. #--------------------------------------------------------------------------
  591. # * Inteligência Artificial
  592. #--------------------------------------------------------------------------
  593. def choose_npc_play
  594. @npc_index = -1
  595. @npc_best_card = Array.new
  596. @npc_board_map = Array.new
  597. @npc_one_play = Array.new
  598. @npc_corner_play = Array.new
  599. @npc_corner_values = 0
  600. @npc_board = []
  601. @combo_count = []
  602. if @battle_info[7] == 0
  603. until @npc_cards_hand.include?(@npc_index)
  604. @npc_index = rand(5)
  605. end
  606. @npc_board_y = rand(3)
  607. @npc_board_x = rand(3)
  608. while @board[@npc_board_y][@npc_board_x] != false
  609. @npc_board_x = rand(3)
  610. @npc_board_y = rand(3)
  611. end
  612. elsif @battle_info[7] >= 1
  613. for n in 0...3
  614. for i in 0...3
  615. @npc_board_map.push([i, n]) unless @board[n][i]
  616. end
  617. end
  618. @npc_best_card = @npc_cards_hand.shuffle
  619. @npc_board_map.shuffle!
  620. for n in 0...@npc_best_card.size
  621. for i in 0...@npc_board_map.size
  622. @npc_board = [Card[@npc_hand[@npc_best_card[n]]]['UP'], Card[@npc_hand[@npc_best_card[n]]]['LEFT'], Card[@npc_hand[@npc_best_card[n]]]['RIGHT'], Card[@npc_hand[@npc_best_card[n]]]['DOWN'], @npc_best_card[n]]
  623. push_npc_flips(@npc_board_map[i][0], @npc_board_map[i][1])
  624. play_best_corner(@npc_board_map[i][0], @npc_board_map[i][1])
  625. end
  626. end
  627. if @npc_one_play.empty? && !@npc_corner_play.empty? && @battle_info[7] != 1
  628. @npc_one_play = [@npc_corner_play]
  629. @npc_index = @npc_one_play.first[0]
  630. @npc_board_x = @npc_one_play.first[1]
  631. @npc_board_y = @npc_one_play.first[2]
  632. end
  633. if @npc_one_play.empty?
  634. until @npc_cards_hand.include?(@npc_index)
  635. @npc_index = rand(5)
  636. end
  637. @npc_board_y = rand(3)
  638. @npc_board_x = rand(3)
  639. while @board[@npc_board_y][@npc_board_x] != false
  640. @npc_board_x = rand(3)
  641. @npc_board_y = rand(3)
  642. end
  643. else
  644. @npc_one_play.shuffle! if @battle_info[7] == 1
  645. @npc_index = @npc_one_play.first[0]
  646. @npc_board_x = @npc_one_play.first[1]
  647. @npc_board_y = @npc_one_play.first[2]
  648. end
  649. end
  650. end
  651. #--------------------------------------------------------------------------
  652. # * AI do NPC, ele buscará cantos livres, e a melhor carta para jogar.
  653. #--------------------------------------------------------------------------
  654. def play_best_corner(x, y)
  655. if x == 0 && y == 0
  656. if @npc_corner_values <= @npc_board[2] + @npc_board[3]
  657. @npc_corner_values = @npc_board[2] + @npc_board[3]
  658. @npc_corner_play = [@npc_board[4], 0, 0]
  659. end
  660. elsif x == 2 && y == 0
  661. if @npc_corner_values <= @npc_board[1] + @npc_board[3]
  662. @npc_corner_values = @npc_board[1] + @npc_board[3]
  663. @npc_corner_play = [@npc_board[4], 2, 0]
  664. end
  665. elsif x == 0 && y == 2
  666. if @npc_corner_values <= @npc_board[2] + @npc_board[0]
  667. @npc_corner_values = @npc_board[2] + @npc_board[0]
  668. @npc_corner_play = [@npc_board[4], 0, 2]
  669. end
  670. elsif x == 2 && y == 2
  671. if @npc_corner_values <= @npc_board[1] + @npc_board[0]
  672. @npc_corner_values = @npc_board[1] + @npc_board[0]
  673. @npc_corner_play = [@npc_board[4], 2, 2]
  674. end
  675. end
  676. end
  677. #--------------------------------------------------------------------------
  678. # * Decisão se ocorre plus, same ou normal
  679. #--------------------------------------------------------------------------
  680. def push_npc_flips(x, y)
  681. up = 0
  682. left = 0
  683. down = 0
  684. right = 0
  685. if @board[y - 1][x] && y - 1 >= 0
  686. up = @board[y - 1][x][3]
  687. end
  688. if @board[y + 1][x] && y + 1 <= 2
  689. down = @board[y + 1][x][0]
  690. end
  691. if @board[y][x - 1] && x - 1 >= 0
  692. left = @board[y][x - 1][2]
  693. end
  694. if @board[y][x + 1] && x + 1 <= 2
  695. right = @board[y][x + 1][1]
  696. end
  697. check_same_npc_condition(up, left, right, down, x, y) if @battle_info[2]
  698. check_plus_npc_condition(up, left, right, down, x, y) if @battle_info[3]
  699. check_normal_npc_condition(up, left, right, down, x, y)
  700. end
  701. #--------------------------------------------------------------------------
  702. # * Inteligência Artificial : Condição Same
  703. #--------------------------------------------------------------------------
  704. def check_same_npc_condition(up, left, right, down, x, y)
  705. count_cards = 0
  706. if up == @npc_board[0] && y - 1 >= 0
  707. count_cards += 1
  708. end
  709. if left == @npc_board[1] && x - 1 >= 0
  710. count_cards += 1
  711. end
  712. if right == @npc_board[2] && x + 1 <= 2
  713. count_cards += 1
  714. end
  715. if down == @npc_board[3] && y + 1 <= 2
  716. count_cards += 1
  717. end
  718. if @battle_info[5]
  719. if y == 0
  720. up = 10
  721. count_cards += 1 if up == @npc_board[0]
  722. elsif y == 2
  723. down = 10
  724. count_cards += 1 if down == @npc_board[3]
  725. end
  726. if x == 0
  727. left = 10
  728. count_cards += 1 if left == @npc_board[1]
  729. elsif x == 2
  730. right = 10
  731. count_cards += 1 if right == @npc_board[2]
  732. end
  733. end
  734. if count_cards >= 2
  735. if up == @npc_board[0] && y - 1 >= 0
  736. if @board[y - 1][x][4] != @player_turn
  737. @npc_one_play.unshift([@npc_board[4], x, y])
  738. end
  739. end
  740. if left == @npc_board[1] && x - 1 >= 0
  741. if @board[y][x - 1][4] != @player_turn
  742. @npc_one_play.unshift([@npc_board[4], x, y])
  743. end
  744. end
  745. if right == @npc_board[2] && x + 1 <= 2
  746. if @board[y][x + 1][4] != @player_turn
  747. @npc_one_play.unshift([@npc_board[4], x, y])
  748. end
  749. end
  750. if down == @npc_board[3] && y + 1 <= 2
  751. if @board[y + 1][x][4] != @player_turn
  752. @npc_one_play.unshift([@npc_board[4], x, y])
  753. end
  754. end
  755. end
  756. end
  757. #--------------------------------------------------------------------------
  758. # * Inteligência Artificial : Condição plus
  759. #--------------------------------------------------------------------------
  760. def check_plus_npc_condition(up, left, right, down, x, y)
  761. count_cards = 0
  762. opposite_card = false
  763. if @battle_info[6]
  764. up = 10 if up == 0 && y == 0
  765. left = 10 if left == 0 && x == 0
  766. right = 10 if right == 0 && x == 2
  767. down = 10 if down == 0 && y == 2
  768. end
  769. if up != 0
  770. up += @npc_board[0]
  771. end
  772. if left != 0
  773. left += @npc_board[1]
  774. end
  775. if right != 0
  776. right += @npc_board[2]
  777. end
  778. if down != 0
  779. down += @npc_board[3]
  780. end
  781. if up == left && up != 0
  782. if y - 1 >= 0
  783. if @board[y - 1][x][4] != @player_turn
  784. @npc_one_play.unshift([@npc_board[4], x, y])
  785. end
  786. end
  787. if x - 1 >= 0
  788. if @board[y][x - 1][4] != @player_turn
  789. @npc_one_play.unshift([@npc_board[4], x, y])
  790. end
  791. end
  792. end
  793. if up == right && up != 0
  794. if y - 1 >= 0
  795. if @board[y - 1][x][4] != @player_turn
  796. @npc_one_play.unshift([@npc_board[4], x, y])
  797. end
  798. end
  799. if x + 1 <= 2
  800. if @board[y][x + 1][4] != @player_turn
  801. @npc_one_play.unshift([@npc_board[4], x, y])
  802. end
  803. end
  804. end
  805. if up == down && up != 0
  806. if y - 1 >= 0
  807. if @board[y - 1][x][4] != @player_turn
  808. @npc_one_play.unshift([@npc_board[4], x, y])
  809. end
  810. end
  811. if y + 1 <= 2
  812. if @board[y + 1][x][4] != @player_turn
  813. @npc_one_play.unshift([@npc_board[4], x, y])
  814. end
  815. end
  816. end
  817. if left == down && left != 0
  818. if x - 1 >= 0
  819. if @board[y][x - 1][4] != @player_turn
  820. @npc_one_play.unshift([@npc_board[4], x, y])
  821. end
  822. end
  823. if y + 1 <= 2
  824. if @board[y + 1][x][4] != @player_turn
  825. @npc_one_play.unshift([@npc_board[4], x, y])
  826. end
  827. end
  828. end
  829. if left == right && left != 0
  830. if x + 1 <= 2
  831. if @board[y][x + 1][4] != @player_turn
  832. @npc_one_play.unshift([@npc_board[4], x, y])
  833. end
  834. end
  835. if x - 1 >= 0
  836. if @board[y][x - 1][4] != @player_turn
  837. @npc_one_play.unshift([@npc_board[4], x, y])
  838. end
  839. end
  840. end
  841. if right == down && right != 0
  842. if y + 1 <= 2
  843. if @board[y + 1][x][4] != @player_turn
  844. @npc_one_play.unshift([@npc_board[4], x, y])
  845. end
  846. end
  847. if x + 1 <= 2
  848. if @board[y][x + 1][4] != @player_turn
  849. @npc_one_play.unshift([@npc_board[4], x, y])
  850. end
  851. end
  852. end
  853. end
  854. #--------------------------------------------------------------------------
  855. # * Inteligência Artificial : Condição Normal
  856. #--------------------------------------------------------------------------
  857. def check_normal_npc_condition(up, left, right, down, x, y)
  858. if up != 0
  859. if up < @npc_board[0] && y - 1 >= 0
  860. if @board[y - 1][x][4] != @player_turn
  861. @npc_one_play.push([@npc_board[4], x, y])
  862. end
  863. end
  864. end
  865. if left != 0
  866. if left < @npc_board[1] && x - 1 >= 0
  867. if @board[y][x - 1][4] != @player_turn
  868. @npc_one_play.push([@npc_board[4], x, y])
  869. end
  870. end
  871. end
  872. if right != 0
  873. if right < @npc_board[2] && x + 1 <= 2
  874. if @board[y][x + 1][4] != @player_turn
  875. @npc_one_play.push([@npc_board[4], x, y])
  876. end
  877. end
  878. end
  879. if down != 0
  880. if down < @npc_board[3] && y + 1 <= 2
  881. if @board[y + 1][x][4] != @player_turn
  882. @npc_one_play.push([@npc_board[4], x, y])
  883. end
  884. end
  885. end
  886. end
  887. #--------------------------------------------------------------------------
  888. # * Atualização fase 4 (Atualização do cursor no tabuleiro)
  889. #--------------------------------------------------------------------------
  890. def update_cursor_board
  891. @player_turn == 1 ? update_player_board : update_npc_board
  892. end
  893. #--------------------------------------------------------------------------
  894. # * Continuação Atualização fase 4 (Atualização do cursor de jogador)
  895. #--------------------------------------------------------------------------
  896. def update_player_board
  897. cursor_move
  898. return if cursor_moving?
  899. case Input.dir4
  900. when 2
  901. if @board_y < 2
  902. @board_y += 1
  903. move_to_cursor(Board_Map[@board_y][@board_x][0]+Cursor_x, Board_Map[@board_y][@board_x][1]+Cursor_y)
  904. end
  905. when 4
  906. if @board_x > 0
  907. @board_x -= 1
  908. move_to_cursor(Board_Map[@board_y][@board_x][0]+Cursor_x, Board_Map[@board_y][@board_x][1]+Cursor_y)
  909. end
  910. when 6
  911. if @board_x < 2
  912. @board_x += 1
  913. move_to_cursor(Board_Map[@board_y][@board_x][0]+Cursor_x, Board_Map[@board_y][@board_x][1]+Cursor_y)
  914. end
  915. when 8
  916. if @board_y > 0
  917. @board_y -= 1
  918. move_to_cursor(Board_Map[@board_y][@board_x][0]+Cursor_x, Board_Map[@board_y][@board_x][1]+Cursor_y)
  919. end
  920. end
  921. if Input.trigger?(:B)
  922. Sound.play_cancel
  923. move_to_cursor(@player_pics[@index].x + Cursor_x, @player_pics[@index].y + Cursor_y)
  924. @phase = 3
  925. end
  926. if Input.trigger?(:C)
  927. unless @board[@board_y][@board_x]
  928. Sound.play_ok
  929. move_to_cursor(@player_pics[@index].x + Cursor_x, @player_pics[@index].y + Cursor_y)
  930. @phase = 5
  931. move_to_board(Board_Map[@board_y][@board_x][0], Board_Map[@board_y][@board_x][1], @index, true)
  932. @board[@board_y][@board_x] = [Card[@player_hand[@index]]['UP'], Card[@player_hand[@index]]['LEFT'], Card[@player_hand[@index]]['RIGHT'], Card[@player_hand[@index]]['DOWN'], 1, @index, 1]
  933. else
  934. Sound.play_buzzer
  935. end
  936. end
  937. end
  938. #--------------------------------------------------------------------------
  939. # * Continuação Atualização fase 4 (Atualização do cursor de npc)
  940. #--------------------------------------------------------------------------
  941. def update_npc_board
  942. cursor_move
  943. return if cursor_moving?
  944. if @npc_board_y > @board_y
  945. @board_y += 1
  946. move_to_cursor(Board_Map[@board_y][@board_x][0]+Cursor_x, Board_Map[@board_y][@board_x][1]+Cursor_y)
  947. elsif @npc_board_y < @board_y
  948. @board_y -= 1
  949. move_to_cursor(Board_Map[@board_y][@board_x][0]+Cursor_x, Board_Map[@board_y][@board_x][1]+Cursor_y)
  950. elsif @npc_board_x < @board_x
  951. @board_x -= 1
  952. move_to_cursor(Board_Map[@board_y][@board_x][0]+Cursor_x, Board_Map[@board_y][@board_x][1]+Cursor_y)
  953. elsif @npc_board_x > @board_x
  954. @board_x += 1
  955. move_to_cursor(Board_Map[@board_y][@board_x][0]+Cursor_x, Board_Map[@board_y][@board_x][1]+Cursor_y)
  956. else
  957. Sound.play_ok
  958. move_to_cursor(@player_pics[@index].x + Cursor_x, @player_pics[@index].y + Cursor_y)
  959. @phase = 5
  960. move_to_board(Board_Map[@board_y][@board_x][0], Board_Map[@board_y][@board_x][1], @index, false)
  961. @board[@board_y][@board_x] = [Card[@npc_hand[@index]]['UP'], Card[@npc_hand[@index]]['LEFT'], Card[@npc_hand[@index]]['RIGHT'], Card[@npc_hand[@index]]['DOWN'],2 , @index, 2]
  962. end
  963. end
  964. #--------------------------------------------------------------------------
  965. # * Continuação Atualização fase 5 (Atualização da movimentação de cartas)
  966. #--------------------------------------------------------------------------
  967. def update_play
  968. cursor_move
  969. card_move unless @move_commands.empty?
  970. return if cursor_moving? || card_moving?
  971. end
  972. #--------------------------------------------------------------------------
  973. # * Atualização fase 6 (Atualização do flip das cartas)
  974. #--------------------------------------------------------------------------
  975. def update_flip_play
  976. flip_cards
  977. return unless @flip_commands.empty?
  978. @player_turn == 1 ? @player_turn = 2 : @player_turn = 1
  979. if @player_cards_hand.empty? || @npc_cards_hand.empty?
  980. @phase = 7
  981. RPG::BGM.stop
  982. if @score[0] > @score[1]
  983. RPG::ME.new(Victory).play
  984. @text_array.push(4)
  985. $game_variables[Variable] = 1
  986. elsif @score[0] < @score[1]
  987. RPG::ME.new(Defeat).play
  988. @text_array.push(6)
  989. $game_variables[Variable] = 3
  990. else
  991. @text_array.push(5)
  992. $game_variables[Variable] = 2
  993. end
  994. else
  995. @combo = false
  996. @phase = 3
  997. end
  998. end
  999. #--------------------------------------------------------------------------
  1000. # * Atualização fase 7 (fase final)
  1001. #--------------------------------------------------------------------------
  1002. def update_results
  1003. return unless @text_array.empty?
  1004. if Input.trigger?(:B) || Input.trigger?(:C)
  1005. Sound.play_ok
  1006. $game_triple_results = []
  1007. for n in 0...5
  1008. if @npc_pics2[n].opacity == 255
  1009. $game_triple_results.push(0)
  1010. else
  1011. $game_triple_results.push(1)
  1012. end
  1013. end
  1014. for n in 0...5
  1015. if @player_pics[n].opacity == 255
  1016. $game_triple_results.push(0)
  1017. else
  1018. $game_triple_results.push(1)
  1019. end
  1020. end
  1021. @phase = 8
  1022. end
  1023. end
  1024. #--------------------------------------------------------------------------
  1025. # * Atualização fase 8 (fase de dispose)
  1026. #--------------------------------------------------------------------------
  1027. def dispose_all_cards
  1028. @score_player1.each{|n| n.opacity -= 10}
  1029. @score_player2.each{|n| n.opacity -= 10}
  1030. @text_pics.each{|n| n.opacity -= 10}
  1031. @background.opacity -= 10
  1032. @cursor.opacity -= 10
  1033. @arrow.opacity -= 10
  1034. @player_pics.each{|n| n.opacity -= 10}
  1035. @player_pics2.each{|n| n.opacity -= 10}
  1036. @npc_pics.each{|n| n.opacity -= 10}
  1037. @npc_pics2.each{|n| n.opacity -= 10}
  1038. @player_turn_pic.each{|n| n.opacity -= 10}
  1039. @back_npc_cards.each{|n| n.opacity -= 10} unless @battle_info[8]
  1040. close_game if @cursor.opacity <= 0
  1041. end
  1042.  
  1043. def flip_npc_cards
  1044. return if @flip_npc_commands
  1045. if @back_npc_cards[@the_flip].zoom_x > 0
  1046. @do_the_flip = false
  1047. @back_npc_cards[@the_flip].zoom_x -= 0.1
  1048. elsif @back_npc_cards[@the_flip].zoom_x <= 0 && @do_the_flip == false
  1049. @do_the_flip = true
  1050. elsif @npc_pics[@the_flip].zoom_x < 1 && @do_the_flip
  1051. @npc_pics[@the_flip].zoom_x += 0.1
  1052. elsif @npc_pics[@the_flip].zoom_x >= 1
  1053. @npc_pics[@the_flip].zoom_x = 1
  1054. @flip_npc_commands = true
  1055. end
  1056. end
  1057. #--------------------------------------------------------------------------
  1058. # * Realizar flip das cartas
  1059. #--------------------------------------------------------------------------
  1060. def flip_cards
  1061. return if @flip_commands.empty?
  1062. if @flip_commands.first[0]
  1063. if @player_turn == 1
  1064. if @flip_commands.first[2] == 1
  1065. if @player_pics2[@flip_commands.first[1]].zoom_x > 0
  1066. @first_flip = false
  1067. RPG::SE.new(Sound_flip).play if @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity != 255
  1068. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x = 0
  1069. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity = 255
  1070. @player_pics2[@flip_commands.first[1]].zoom_x -= 0.1
  1071. @player_pics[@flip_commands.first[1]].zoom_x = 0
  1072. @player_pics[@flip_commands.first[1]].opacity = 255
  1073. elsif @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x < 1 && @first_flip == false
  1074. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x += 0.2
  1075. @first_flip = true if @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x >= 1
  1076. elsif @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x > 0
  1077. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x -= 0.2
  1078. elsif @player_pics[@flip_commands.first[1]].zoom_x < 1
  1079. @player_pics[@flip_commands.first[1]].zoom_x += 0.1
  1080. else
  1081. @player_pics[@flip_commands.first[1]].zoom_x = 1
  1082. @player_pics2[@flip_commands.first[1]].opacity = 0
  1083. @player_pics2[@flip_commands.first[1]].zoom_x = 1
  1084. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity = 0
  1085. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x = 1
  1086. update_score
  1087. push_combo_flips(@flip_commands.first[3], @flip_commands.first[4]) if @combo && @battle_info[4]
  1088. @flip_commands.shift
  1089. end
  1090. else
  1091. if @npc_pics[@flip_commands.first[1]].zoom_x > 0
  1092. @first_flip = false
  1093. RPG::SE.new(Sound_flip).play if @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity != 255
  1094. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x = 0
  1095. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity = 255
  1096. @npc_pics[@flip_commands.first[1]].zoom_x -= 0.1
  1097. @npc_pics2[@flip_commands.first[1]].zoom_x = 0
  1098. @npc_pics2[@flip_commands.first[1]].opacity = 255
  1099. elsif @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x < 1 && @first_flip == false
  1100. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x += 0.1
  1101. @first_flip = true if @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x >= 1
  1102. elsif @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x > 0
  1103. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x -= 0.2
  1104. elsif @npc_pics2[@flip_commands.first[1]].zoom_x < 1
  1105. @npc_pics2[@flip_commands.first[1]].zoom_x += 0.1
  1106. else
  1107. @npc_pics2[@flip_commands.first[1]].zoom_x = 1
  1108. @npc_pics[@flip_commands.first[1]].opacity = 0
  1109. @npc_pics[@flip_commands.first[1]].zoom_x = 1
  1110. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity = 0
  1111. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x = 1
  1112. update_score
  1113. push_combo_flips(@flip_commands.first[3], @flip_commands.first[4]) if @combo && @battle_info[4]
  1114. @flip_commands.shift
  1115. end
  1116. end
  1117. else
  1118. if @flip_commands.first[2] == 1
  1119. if @player_pics[@flip_commands.first[1]].zoom_x > 0
  1120. @first_flip = false
  1121. RPG::SE.new(Sound_flip).play if @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity != 255
  1122. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x = 0
  1123. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity = 255
  1124. @player_pics[@flip_commands.first[1]].zoom_x -= 0.1
  1125. @player_pics2[@flip_commands.first[1]].zoom_x = 0
  1126. @player_pics2[@flip_commands.first[1]].opacity = 255
  1127. elsif @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x < 1 && @first_flip == false
  1128. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x += 0.2
  1129. @first_flip = true if @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x >= 1
  1130. elsif @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x > 0
  1131. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x -= 0.2
  1132. elsif @player_pics2[@flip_commands.first[1]].zoom_x < 1
  1133. @player_pics2[@flip_commands.first[1]].zoom_x += 0.1
  1134. else
  1135. @player_pics2[@flip_commands.first[1]].zoom_x = 1
  1136. @player_pics[@flip_commands.first[1]].opacity = 0
  1137. @player_pics[@flip_commands.first[1]].zoom_x = 1
  1138. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity = 0
  1139. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x = 1
  1140. update_score
  1141. push_combo_flips(@flip_commands.first[3], @flip_commands.first[4]) if @combo && @battle_info[4]
  1142. @flip_commands.shift
  1143. end
  1144. else
  1145. if @npc_pics2[@flip_commands.first[1]].zoom_x > 0
  1146. @first_flip = false
  1147. RPG::SE.new(Sound_flip).play if @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity != 255
  1148. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x = 0
  1149. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity = 255
  1150. @npc_pics2[@flip_commands.first[1]].zoom_x -= 0.1
  1151. @npc_pics[@flip_commands.first[1]].zoom_x = 0
  1152. @npc_pics[@flip_commands.first[1]].opacity = 255
  1153. elsif @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x < 1 && @first_flip == false
  1154. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x += 0.1
  1155. @first_flip = true if @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x >= 1
  1156. elsif @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x > 0
  1157. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x -= 0.2
  1158. elsif @npc_pics[@flip_commands.first[1]].zoom_x < 1
  1159. @npc_pics[@flip_commands.first[1]].zoom_x += 0.1
  1160. else
  1161. @npc_pics[@flip_commands.first[1]].zoom_x = 1
  1162. @npc_pics2[@flip_commands.first[1]].opacity = 0
  1163. @npc_pics2[@flip_commands.first[1]].zoom_x = 1
  1164. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity = 0
  1165. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_x = 1
  1166. update_score
  1167. push_combo_flips(@flip_commands.first[3], @flip_commands.first[4]) if @combo && @battle_info[4]
  1168. @flip_commands.shift
  1169. end
  1170. end
  1171. end
  1172. else
  1173. if @player_turn == 1
  1174. if @flip_commands.first[2] == 1
  1175. if @player_pics2[@flip_commands.first[1]].zoom_y > 0
  1176. @first_flip = false
  1177. RPG::SE.new(Sound_flip).play if @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity != 255
  1178. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y = 0
  1179. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity = 255
  1180. @player_pics2[@flip_commands.first[1]].zoom_y -= 0.1
  1181. @player_pics[@flip_commands.first[1]].zoom_y = 0
  1182. @player_pics[@flip_commands.first[1]].opacity = 255
  1183. elsif @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y < 1 && @first_flip == false
  1184. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y += 0.1
  1185. @first_flip = true if @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y >= 1
  1186. elsif @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y > 0
  1187. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y -= 0.2
  1188. elsif @player_pics[@flip_commands.first[1]].zoom_y < 1
  1189. @player_pics[@flip_commands.first[1]].zoom_y += 0.1
  1190. else
  1191. @player_pics[@flip_commands.first[1]].zoom_y = 1
  1192. @player_pics2[@flip_commands.first[1]].opacity = 0
  1193. @player_pics2[@flip_commands.first[1]].zoom_y = 1
  1194. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity = 0
  1195. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y = 1
  1196. update_score
  1197. push_combo_flips(@flip_commands.first[3], @flip_commands.first[4]) if @combo && @battle_info[4]
  1198. @flip_commands.shift
  1199. end
  1200. else
  1201. if @npc_pics[@flip_commands.first[1]].zoom_y > 0
  1202. @first_flip = false
  1203. RPG::SE.new(Sound_flip).play if @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity != 255
  1204. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y = 0
  1205. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity = 255
  1206. @npc_pics[@flip_commands.first[1]].zoom_y -= 0.1
  1207. @npc_pics2[@flip_commands.first[1]].zoom_y = 0
  1208. @npc_pics2[@flip_commands.first[1]].opacity = 255
  1209. elsif @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y < 1 && @first_flip == false
  1210. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y += 0.1
  1211. @first_flip = true if @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y >= 1
  1212. elsif @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y > 0
  1213. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y -= 0.2
  1214. elsif @npc_pics2[@flip_commands.first[1]].zoom_y < 1
  1215. @npc_pics2[@flip_commands.first[1]].zoom_y += 0.1
  1216. else
  1217. @npc_pics2[@flip_commands.first[1]].zoom_y = 1
  1218. @npc_pics[@flip_commands.first[1]].opacity = 0
  1219. @npc_pics[@flip_commands.first[1]].zoom_y = 1
  1220. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity = 0
  1221. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y = 1
  1222. update_score
  1223. push_combo_flips(@flip_commands.first[3], @flip_commands.first[4]) if @combo && @battle_info[4]
  1224. @flip_commands.shift
  1225. end
  1226. end
  1227. else
  1228. if @flip_commands.first[2] == 1
  1229. if @player_pics[@flip_commands.first[1]].zoom_y > 0
  1230. @first_flip = false
  1231. RPG::SE.new(Sound_flip).play if @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity != 255
  1232. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y = 0
  1233. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity = 255
  1234. @player_pics[@flip_commands.first[1]].zoom_y -= 0.1
  1235. @player_pics2[@flip_commands.first[1]].zoom_y = 0
  1236. @player_pics2[@flip_commands.first[1]].opacity = 255
  1237. elsif @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y < 1 && @first_flip == false
  1238. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y += 0.2
  1239. @first_flip = true if @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y >= 1
  1240. elsif @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y > 0
  1241. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y -= 0.2
  1242. elsif @player_pics2[@flip_commands.first[1]].zoom_y < 1
  1243. @player_pics2[@flip_commands.first[1]].zoom_y += 0.1
  1244. else
  1245. @player_pics2[@flip_commands.first[1]].zoom_y = 1
  1246. @player_pics[@flip_commands.first[1]].opacity = 0
  1247. @player_pics[@flip_commands.first[1]].zoom_y = 1
  1248. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity = 0
  1249. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y = 1
  1250. update_score
  1251. push_combo_flips(@flip_commands.first[3], @flip_commands.first[4]) if @combo && @battle_info[4]
  1252. @flip_commands.shift
  1253. end
  1254. else
  1255. if @npc_pics2[@flip_commands.first[1]].zoom_y > 0
  1256. @first_flip = false
  1257. RPG::SE.new(Sound_flip).play if @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity != 255
  1258. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y = 0
  1259. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity = 255
  1260. @npc_pics2[@flip_commands.first[1]].zoom_y -= 0.1
  1261. @npc_pics[@flip_commands.first[1]].zoom_y = 0
  1262. @npc_pics[@flip_commands.first[1]].opacity = 255
  1263. elsif @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y < 1 && @first_flip == false
  1264. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y += 0.1
  1265. @first_flip = true if @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y >= 1
  1266. elsif @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y > 0
  1267. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y -= 0.2
  1268. elsif @npc_pics[@flip_commands.first[1]].zoom_y < 1
  1269. @npc_pics[@flip_commands.first[1]].zoom_y += 0.1
  1270. else
  1271. @npc_pics[@flip_commands.first[1]].zoom_y = 1
  1272. @npc_pics2[@flip_commands.first[1]].opacity = 0
  1273. @npc_pics2[@flip_commands.first[1]].zoom_y = 1
  1274. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].opacity = 0
  1275. @back_card[@flip_commands.first[4]][@flip_commands.first[3]].zoom_y = 1
  1276. update_score
  1277. push_combo_flips(@flip_commands.first[3], @flip_commands.first[4]) if @combo && @battle_info[4]
  1278. @flip_commands.shift
  1279. end
  1280. end
  1281. end
  1282. end
  1283. end
  1284. #--------------------------------------------------------------------------
  1285. # * Atualização da posição do cursor
  1286. #--------------------------------------------------------------------------
  1287. def cursor_move
  1288. if (@cursor.x - @goto_x).abs >= 10
  1289. @cursor.x += @speed_x
  1290. elsif (@cursor.x - @goto_x).abs != 0
  1291. @cursor.x -= (@cursor.x - @goto_x)
  1292. end
  1293. if (@cursor.y - @goto_y).abs >= 10
  1294. @cursor.y += @speed_y
  1295. elsif (@cursor.y - @goto_y).abs != 0
  1296. @cursor.y -= (@cursor.y - @goto_y)
  1297. end
  1298. end
  1299. #--------------------------------------------------------------------------
  1300. # * Cálculo da posição do cursor
  1301. #--------------------------------------------------------------------------
  1302. def move_to_cursor(x, y)
  1303. Sound.play_cursor
  1304. @goto_x = x
  1305. @goto_y = y
  1306. @speed_x = (x - @cursor.x)/ 10
  1307. @speed_y = (y - @cursor.y)/ 10
  1308. end
  1309. #--------------------------------------------------------------------------
  1310. # * Atualização da posição da carta
  1311. #--------------------------------------------------------------------------
  1312. def card_move
  1313. @player_turn == 1 ? move_player_card : move_npc_card
  1314. end
  1315. #--------------------------------------------------------------------------
  1316. # * Decisão se ocorre combos
  1317. #--------------------------------------------------------------------------
  1318. def push_combo_flips(x, y)
  1319. up = 0
  1320. left = 0
  1321. down = 0
  1322. right = 0
  1323. if @board[y - 1][x] && y - 1 >= 0
  1324. up = @board[y - 1][x][3]
  1325. end
  1326. if @board[y + 1][x] && y + 1 <= 2
  1327. down = @board[y + 1][x][0]
  1328. end
  1329. if @board[y][x - 1] && x - 1 >= 0
  1330. left = @board[y][x - 1][2]
  1331. end
  1332. if @board[y][x + 1] && x + 1 <= 2
  1333. right = @board[y][x + 1][1]
  1334. end
  1335. check_normal_condition(up, left, right, down, x, y)
  1336. end
  1337. #--------------------------------------------------------------------------
  1338. # * Decisão se ocorre plus, same ou normal
  1339. #--------------------------------------------------------------------------
  1340. def push_flips(x, y)
  1341. up = 0
  1342. left = 0
  1343. down = 0
  1344. right = 0
  1345. if @board[y - 1][x] && y - 1 >= 0
  1346. up = @board[y - 1][x][3]
  1347. end
  1348. if @board[y + 1][x] && y + 1 <= 2
  1349. down = @board[y + 1][x][0]
  1350. end
  1351. if @board[y][x - 1] && x - 1 >= 0
  1352. left = @board[y][x - 1][2]
  1353. end
  1354. if @board[y][x + 1] && x + 1 <= 2
  1355. right = @board[y][x + 1][1]
  1356. end
  1357. check_same_condition(up, left, right, down, x, y) if @battle_info[2]
  1358. check_plus_condition(up, left, right, down, x, y) if @battle_info[3]
  1359. check_normal_condition(up, left, right, down, x, y)
  1360. end
  1361. #--------------------------------------------------------------------------
  1362. # * Condição Same
  1363. #--------------------------------------------------------------------------
  1364. def check_same_condition(up, left, right, down, x, y)
  1365. count_cards = 0
  1366. if up == @board[y][x][0] && y - 1 >= 0
  1367. count_cards += 1
  1368. end
  1369. if left == @board[y][x][1] && x - 1 >= 0
  1370. count_cards += 1
  1371. end
  1372. if right == @board[y][x][2] && x + 1 <= 2
  1373. count_cards += 1
  1374. end
  1375. if down == @board[y][x][3] && y + 1 <= 2
  1376. count_cards += 1
  1377. end
  1378. if @battle_info[5]
  1379. if y == 0
  1380. up = 10
  1381. count_cards += 1 if up == @board[y][x][0]
  1382. elsif y == 2
  1383. down = 10
  1384. count_cards += 1 if down == @board[y][x][3]
  1385. end
  1386. if x == 0
  1387. left = 10
  1388. count_cards += 1 if left == @board[y][x][1]
  1389. elsif x == 2
  1390. right = 10
  1391. count_cards += 1 if right == @board[y][x][2]
  1392. end
  1393. end
  1394. if count_cards >= 2
  1395. if up == @board[y][x][0] && y - 1 >= 0
  1396. if @board[y - 1][x][4] != @player_turn
  1397. @text_array.push(1) unless @text_array.first == 1
  1398. @combo = true
  1399. @flip_commands.push([false, @board[y - 1][x][5], @board[y - 1][x][6], x, y - 1])
  1400. end
  1401. @board[y - 1][x][4] = @player_turn
  1402. end
  1403. if left == @board[y][x][1] && x - 1 >= 0
  1404. if @board[y][x - 1][4] != @player_turn
  1405. @text_array.push(1) unless @text_array.first == 1
  1406. @combo = true
  1407. @flip_commands.push([true, @board[y][x - 1][5], @board[y][x - 1][6], x - 1, y])
  1408. end
  1409. @board[y][x - 1][4] = @player_turn
  1410. end
  1411. if right == @board[y][x][2] && x + 1 <= 2
  1412. if @board[y][x + 1][4] != @player_turn
  1413. @text_array.push(1) unless @text_array.first == 1
  1414. @combo = true
  1415. @flip_commands.push([true, @board[y][x + 1][5], @board[y][x + 1][6], x + 1, y])
  1416. end
  1417. @board[y][x + 1][4] = @player_turn
  1418. end
  1419. if down == @board[y][x][3] && y + 1 <= 2
  1420. if @board[y + 1][x][4] != @player_turn
  1421. @text_array.push(1) unless @text_array.first == 1
  1422. @combo = true
  1423. @flip_commands.push([false, @board[y + 1][x][5], @board[y + 1][x][6], x, y + 1])
  1424. end
  1425. @board[y + 1][x][4] = @player_turn
  1426. end
  1427. end
  1428. end
  1429. #--------------------------------------------------------------------------
  1430. # * Condição plus
  1431. #--------------------------------------------------------------------------
  1432. def check_plus_condition(up, left, right, down, x, y)
  1433. count_cards = 0
  1434. opposite_card = false
  1435. if @battle_info[6]
  1436. up = 10 if up == 0 && y == 0
  1437. left = 10 if left == 0 && x == 0
  1438. right = 10 if right == 0 && x == 2
  1439. down = 10 if down == 0 && y == 2
  1440. end
  1441. if up != 0
  1442. up += @board[y][x][0]
  1443. end
  1444. if left != 0
  1445. left += @board[y][x][1]
  1446. end
  1447. if right != 0
  1448. right += @board[y][x][2]
  1449. end
  1450. if down != 0
  1451. down += @board[y][x][3]
  1452. end
  1453. if up == left && up != 0
  1454. if y - 1 >= 0
  1455. if @board[y - 1][x][4] != @player_turn
  1456. @board[y - 1][x][4] = @player_turn
  1457. @text_array.push(2) unless @text_array.first == 2
  1458. @combo = true
  1459. @flip_commands.push([false, @board[y - 1][x][5], @board[y - 1][x][6], x, y - 1])
  1460. end
  1461. end
  1462. if x - 1 >= 0
  1463. if @board[y][x - 1][4] != @player_turn
  1464. @board[y][x - 1][4] = @player_turn
  1465. @text_array.push(2) unless @text_array.first == 2
  1466. @combo = true
  1467. @flip_commands.push([true, @board[y][x - 1][5], @board[y][x - 1][6], x - 1, y])
  1468. end
  1469. end
  1470. end
  1471. if up == right && up != 0
  1472. if y - 1 >= 0
  1473. if @board[y - 1][x][4] != @player_turn
  1474. @board[y - 1][x][4] = @player_turn
  1475. @text_array.push(2) unless @text_array.first == 2
  1476. @combo = true
  1477. @flip_commands.push([false, @board[y - 1][x][5], @board[y - 1][x][6], x, y - 1])
  1478. end
  1479. end
  1480. if x + 1 <= 2
  1481. if @board[y][x + 1][4] != @player_turn
  1482. @board[y][x + 1][4] = @player_turn
  1483. @text_array.push(2) unless @text_array.first == 2
  1484. @combo = true
  1485. @flip_commands.push([true, @board[y][x + 1][5], @board[y][x + 1][6], x + 1, y])
  1486. end
  1487. end
  1488. end
  1489. if up == down && up != 0
  1490. if y - 1 >= 0
  1491. if @board[y - 1][x][4] != @player_turn
  1492. @board[y - 1][x][4] = @player_turn
  1493. @text_array.push(2) unless @text_array.first == 2
  1494. @combo = true
  1495. @flip_commands.push([false, @board[y - 1][x][5], @board[y - 1][x][6], x, y - 1])
  1496. end
  1497. end
  1498. if y + 1 <= 2
  1499. if @board[y + 1][x][4] != @player_turn
  1500. @board[y + 1][x][4] = @player_turn
  1501. @text_array.push(2) unless @text_array.first == 2
  1502. @combo = true
  1503. @flip_commands.push([false, @board[y + 1][x][5], @board[y + 1][x][6], x, y + 1])
  1504. end
  1505. end
  1506. end
  1507. if left == down && left != 0
  1508. if x - 1 >= 0
  1509. if @board[y][x - 1][4] != @player_turn
  1510. @board[y][x - 1][4] = @player_turn
  1511. @text_array.push(2) unless @text_array.first == 2
  1512. @combo = true
  1513. @flip_commands.push([true, @board[y][x - 1][5], @board[y][x - 1][6], x - 1, y])
  1514. end
  1515. end
  1516. if y + 1 <= 2
  1517. if @board[y + 1][x][4] != @player_turn
  1518. @board[y + 1][x][4] = @player_turn
  1519. @text_array.push(2) unless @text_array.first == 2
  1520. @combo = true
  1521. @flip_commands.push([false, @board[y + 1][x][5], @board[y + 1][x][6], x, y + 1])
  1522. end
  1523. end
  1524. end
  1525. if left == right && left != 0
  1526. if x + 1 <= 2
  1527. if @board[y][x + 1][4] != @player_turn
  1528. @board[y][x + 1][4] = @player_turn
  1529. @text_array.push(2) unless @text_array.first == 2
  1530. @combo = true
  1531. @flip_commands.push([true, @board[y][x + 1][5], @board[y][x + 1][6], x + 1, y])
  1532. end
  1533. end
  1534. if x - 1 >= 0
  1535. if @board[y][x - 1][4] != @player_turn
  1536. @board[y][x - 1][4] = @player_turn
  1537. @text_array.push(2) unless @text_array.first == 2
  1538. @combo = true
  1539. @flip_commands.push([true, @board[y][x - 1][5], @board[y][x - 1][6], x - 1, y])
  1540. end
  1541. end
  1542. end
  1543. if right == down && right != 0
  1544. if y + 1 <= 2
  1545. if @board[y + 1][x][4] != @player_turn
  1546. @board[y + 1][x][4] = @player_turn
  1547. @text_array.push(2) unless @text_array.first == 2
  1548. @combo = true
  1549. @flip_commands.push([false, @board[y + 1][x][5], @board[y + 1][x][6], x, y + 1])
  1550. end
  1551. end
  1552. if x + 1 <= 2
  1553. if @board[y][x + 1][4] != @player_turn
  1554. @board[y][x + 1][4] = @player_turn
  1555. @text_array.push(2) unless @text_array.first == 2
  1556. @combo = true
  1557. @flip_commands.push([true, @board[y][x + 1][5], @board[y][x + 1][6], x + 1, y])
  1558. end
  1559. end
  1560. end
  1561. end
  1562. #--------------------------------------------------------------------------
  1563. # * Condição Normal
  1564. #--------------------------------------------------------------------------
  1565. def check_normal_condition(up, left, right, down, x, y)
  1566. if up != 0
  1567. if up < @board[y][x][0] && y - 1 >= 0
  1568. if @board[y - 1][x][4] != @player_turn
  1569. @text_array.push(3) if @combo
  1570. @flip_commands.push([false, @board[y - 1][x][5], @board[y - 1][x][6], x, y - 1])
  1571. end
  1572. @board[y - 1][x][4] = @player_turn
  1573. end
  1574. end
  1575. if left != 0
  1576. if left < @board[y][x][1] && x - 1 >= 0
  1577. if @board[y][x - 1][4] != @player_turn
  1578. @text_array.push(3) if @combo
  1579. @flip_commands.push([true, @board[y][x - 1][5], @board[y][x - 1][6], x - 1, y])
  1580. end
  1581. @board[y][x - 1][4] = @player_turn
  1582. end
  1583. end
  1584. if right != 0
  1585. if right < @board[y][x][2] && x + 1 <= 2
  1586. if @board[y][x + 1][4] != @player_turn
  1587. @text_array.push(3) if @combo
  1588. @flip_commands.push([true, @board[y][x + 1][5], @board[y][x + 1][6], x + 1, y])
  1589. end
  1590. @board[y][x + 1][4] = @player_turn
  1591. end
  1592. end
  1593. if down != 0
  1594. if down < @board[y][x][3] && y + 1 <= 2
  1595. if @board[y + 1][x][4] != @player_turn
  1596. @text_array.push(3) if @combo
  1597. @flip_commands.push([false, @board[y + 1][x][5], @board[y + 1][x][6], x, y + 1])
  1598. end
  1599. @board[y + 1][x][4] = @player_turn
  1600. end
  1601. end
  1602. end
  1603. #--------------------------------------------------------------------------
  1604. # * Movimento da carta do jogador
  1605. #--------------------------------------------------------------------------
  1606. def move_player_card
  1607. if (@player_pics[@move_commands.first[4]].x - @move_commands.first[0]).abs >= 10
  1608. @player_pics[@move_commands.first[4]].x += @move_commands.first[2]
  1609. elsif (@player_pics[@move_commands.first[4]].x - @move_commands.first[0]).abs != 0
  1610. @player_pics[@move_commands.first[4]].x = @move_commands.first[0]
  1611. end
  1612. if (@player_pics[@move_commands.first[4]].y - @move_commands.first[1]).abs >= 10
  1613. @player_pics[@move_commands.first[4]].y += @move_commands.first[3]
  1614. elsif (@player_pics[@move_commands.first[4]].y - @move_commands.first[1]).abs != 0
  1615. @player_pics[@move_commands.first[4]].y = @move_commands.first[1]
  1616. end
  1617. if @player_pics[@move_commands.first[4]].y == @move_commands.first[1] && @player_pics[@move_commands.first[4]].x == @move_commands.first[0]
  1618. @player_pics2[@move_commands.first[4]].y = @move_commands.first[1]
  1619. @player_pics2[@move_commands.first[4]].x = @move_commands.first[0]
  1620. @player_cards_hand.delete(@move_commands.first[4])
  1621. @index = @npc_cards_hand.first
  1622. move_to_cursor(@npc_pics[@index].x + Cursor_x, @npc_pics[@index].y + Cursor_y)
  1623. @move_commands.shift
  1624. @count = 0
  1625. @npc_time = Normal_time + Random_time
  1626. push_flips(@board_x, @board_y)
  1627. @phase = 6
  1628. end
  1629. end
  1630. #--------------------------------------------------------------------------
  1631. # * Movimento da carta do NPC
  1632. #--------------------------------------------------------------------------
  1633. def move_npc_card
  1634. if (@npc_pics[@move_commands.first[4]].x - @move_commands.first[0]).abs >= 10
  1635. @npc_pics[@move_commands.first[4]].x += @move_commands.first[2]
  1636. @back_npc_cards[@move_commands.first[4]].x += @move_commands.first[2] unless @battle_info[8]
  1637. elsif (@npc_pics[@move_commands.first[4]].x - @move_commands.first[0]).abs != 0
  1638. @npc_pics[@move_commands.first[4]].x = @move_commands.first[0]
  1639. @back_npc_cards[@move_commands.first[4]].x = @move_commands.first[0] unless @battle_info[8]
  1640. end
  1641. if (@npc_pics[@move_commands.first[4]].y - @move_commands.first[1]).abs >= 10
  1642. @back_npc_cards[@move_commands.first[4]].y += @move_commands.first[3] unless @battle_info[8]
  1643. @npc_pics[@move_commands.first[4]].y += @move_commands.first[3]
  1644. elsif (@npc_pics[@move_commands.first[4]].y - @move_commands.first[1]).abs != 0
  1645. @npc_pics[@move_commands.first[4]].y = @move_commands.first[1]
  1646. @back_npc_cards[@move_commands.first[4]].y = @move_commands.first[1] unless @battle_info[8]
  1647. end
  1648. if @npc_pics[@move_commands.first[4]].y == @move_commands.first[1] && @npc_pics[@move_commands.first[4]].x == @move_commands.first[0]
  1649. @npc_pics2[@move_commands.first[4]].y = @move_commands.first[1]
  1650. @npc_pics2[@move_commands.first[4]].x = @move_commands.first[0]
  1651. @npc_cards_hand.delete(@move_commands.first[4])
  1652. @index = @player_cards_hand.first
  1653. unless @battle_info[8]
  1654. @flip_npc_commands = false
  1655. @the_flip = @move_commands.first[4]
  1656. flip_npc_cards
  1657. end
  1658. move_to_cursor(@player_pics[@index].x + Cursor_x, @player_pics[@index].y + Cursor_y)
  1659. @move_commands.shift
  1660. @count = 0
  1661. @npc_time = 0
  1662. push_flips(@board_x, @board_y)
  1663. @phase = 6
  1664. end
  1665. end
  1666. #--------------------------------------------------------------------------
  1667. # * Cálculo da posição do cursor
  1668. #--------------------------------------------------------------------------
  1669. def move_to_board(x, y, index, p)
  1670. if p == true
  1671. @move_commands.push([x, y, (x - @player_pics[index].x)/ 10, (y - @player_pics[index].y)/ 10, index, p])
  1672. else
  1673. @move_commands.push([x, y, (x - @npc_pics[index].x)/ 10, (y - @npc_pics[index].y)/ 10, index, p])
  1674. end
  1675. end
  1676. #--------------------------------------------------------------------------
  1677. # * Condição se há movimento de cartas no tabuleiro
  1678. #--------------------------------------------------------------------------
  1679. def card_moving?
  1680. !@move_commands.empty? && !@flip_commands.empty? && @flip_npc_commands == false
  1681. end
  1682. #--------------------------------------------------------------------------
  1683. # * Condição se há movimento de cursor
  1684. #--------------------------------------------------------------------------
  1685. def cursor_moving?
  1686. @cursor.x != @goto_x || @goto_y != @cursor.y
  1687. end
  1688. #--------------------------------------------------------------------------
  1689. # * Dispose de todos os gráficos
  1690. #--------------------------------------------------------------------------
  1691. def close_game
  1692. @map_bgm.replay
  1693. @map_bgs.replay
  1694. @score_player1.each{|n| n.bitmap.dispose ; n.dispose}
  1695. @score_player2.each{|n| n.bitmap.dispose ; n.dispose}
  1696. @text_pics.each{|n| n.bitmap.dispose ; n.dispose}
  1697. @background.bitmap.dispose
  1698. @background.dispose
  1699. @cursor.bitmap.dispose
  1700. @cursor.dispose
  1701. @arrow.bitmap.dispose
  1702. @arrow.dispose
  1703. for n in 0...3
  1704. for i in 0...3
  1705. @back_card[n][i].bitmap.dispose
  1706. @back_card[n][i].dispose
  1707. end
  1708. end
  1709. @player_pics.each{|n| n.bitmap.dispose ; n.dispose}
  1710. @player_pics2.each{|n| n.bitmap.dispose ; n.dispose}
  1711. @npc_pics.each{|n| n.bitmap.dispose ; n.dispose}
  1712. @npc_pics2.each{|n| n.bitmap.dispose ; n.dispose}
  1713. @player_turn_pic.each{|n| n.bitmap.dispose ; n.dispose}
  1714. @back_npc_cards.each{|n| n.bitmap.dispose ; n.dispose} unless @battle_info[8]
  1715. if @battle_info[8] == 0 || $game_variables[Variable] == 2 && @battle_info[8] != 2
  1716. SceneManager.goto(Scene_Map)
  1717. else
  1718. SceneManager.call(Decision_Triple_Triad)
  1719. end
  1720. end
  1721. end
  1722.  
  1723.  
  1724. #==============================================================================
  1725. # ** Game_Timer
  1726. #------------------------------------------------------------------------------
  1727. # Esta classe gerencia o cronômetro.
  1728. # A instância desta classe é referenciada por $game_timer.
  1729. #==============================================================================
  1730.  
  1731. class Game_Timer
  1732. alias :triple_triad_initialize :initialize
  1733. #--------------------------------------------------------------------------
  1734. # * Variáveis públicas
  1735. #--------------------------------------------------------------------------
  1736. attr_accessor :hand_deck # Cartas escolhidas pelo personagem
  1737. attr_accessor :total_cards # Cartas adquiridas
  1738. attr_accessor :game_triple_triad # Detalhes do duelo
  1739. attr_accessor :npc_triple_triad # Database de todas as cartas dos adversários
  1740. attr_accessor :npc_hand # Mão do npc no duelo
  1741. #--------------------------------------------------------------------------
  1742. # * Inicialização do objeto
  1743. #--------------------------------------------------------------------------
  1744. def initialize(*args, &block)
  1745. @hand_deck = Array.new
  1746. @total_cards = Array.new(Config_Triple_Triad::Card.size, 0)
  1747. @game_triple_triad = Array.new(12, 0)
  1748. @game_triple_triad[2] = true # same
  1749. @game_triple_triad[3] = true # plus
  1750. @game_triple_triad[4] = true # combo
  1751. @game_triple_triad[5] = true # same wall
  1752. @game_triple_triad[6] = true # plus wall
  1753. @game_triple_triad[7] = 1 # dificuldade do npc
  1754. @game_triple_triad[8] = false #se as cartas vem fechadas
  1755. @game_triple_triad[8] = 1 # condição de vitória
  1756. @npc_triple_triad = Array.new
  1757. for n in 0...Config_Triple_Triad::Enemy.size
  1758. @npc_triple_triad[n] = Config_Triple_Triad::Enemy[n]['Cards']
  1759. end
  1760. @npc_hand = Array.new
  1761. triple_triad_initialize(*args, &block)
  1762. end
  1763. end
  1764.  
  1765.  
  1766. #==============================================================================
  1767. # ** Cache
  1768. #------------------------------------------------------------------------------
  1769. # Este modulo carrega cada gráfico, cria um objeto de Bitmap e retém ele.
  1770. # Para acelerar o carregamento e preservar memória, este módulo matém o
  1771. # objeto de Bitmap em uma Hash interna, permitindo que retorne objetos
  1772. # pré-existentes quando mesmo Bitmap é requerido novamente.
  1773. #==============================================================================
  1774.  
  1775.  
  1776. module Cache
  1777. #--------------------------------------------------------------------------
  1778. # * Carregamento dos gráficos de animação
  1779. # filename : nome do arquivo
  1780. # hue : informações da alteração de tonalidade
  1781. #--------------------------------------------------------------------------
  1782. def self.triple_triad(filename)
  1783. load_bitmap("Graphics/Triple_Triad/", filename)
  1784. end
  1785. end
  1786. $triple_force_5_cards = false
  1787. #==============================================================================
  1788. # ** Game_Interpreter
  1789. #------------------------------------------------------------------------------
  1790. # Um interpretador para executar os comandos de evento. Esta classe é usada
  1791. # internamente pelas classes Game_Map, Game_Troop e Game_Event.
  1792. #==============================================================================
  1793. class Game_Interpreter
  1794. #--------------------------------------------------------------------------
  1795. # * retorna número de cartas
  1796. #--------------------------------------------------------------------------
  1797. def total_triad_cards
  1798. a = $game_temp.hand_deck
  1799. a += $game_temp.total_cards.dup.sum
  1800. return a
  1801. end
  1802. #--------------------------------------------------------------------------
  1803. # * retorna número de cartas únicas
  1804. #--------------------------------------------------------------------------
  1805. def total_unique_cards
  1806. a = $game_temp.total_cards.dup
  1807. a.delete(0)
  1808. return a.size
  1809. end
  1810. #--------------------------------------------------------------------------
  1811. # * método principal que ativa o duelo
  1812. #--------------------------------------------------------------------------
  1813. def triple_triad(id)
  1814. load_triad_enemy(id)
  1815. $triple_force_5_cards = true
  1816. SceneManager.call(Scene_Triad_Album)
  1817. end
  1818. #--------------------------------------------------------------------------
  1819. # * força um jogador a iniciar a partida
  1820. #--------------------------------------------------------------------------
  1821. def force_player(play)
  1822. $game_timer.game_triple_triad[1] = play
  1823. end
  1824. #--------------------------------------------------------------------------
  1825. # * carregamento das info do adversário
  1826. #--------------------------------------------------------------------------
  1827. def load_triad_enemy(id)
  1828. while $game_timer.npc_triple_triad[id].size < 5
  1829. $game_timer.npc_triple_triad[id].push(Config_Triple_Triad::Enemy[id]['Reservecards'].shuffle.first)
  1830. end
  1831. $game_timer.npc_hand = $game_timer.npc_triple_triad[id].shuffle.take(5)
  1832. $game_timer.game_triple_triad[0] = Config_Triple_Triad::Enemy[id]['Music']
  1833. $game_timer.game_triple_triad[2] = Config_Triple_Triad::Enemy[id]['Same']
  1834. $game_timer.game_triple_triad[3] = Config_Triple_Triad::Enemy[id]['Plus']
  1835. $game_timer.game_triple_triad[4] = Config_Triple_Triad::Enemy[id]['Combo']
  1836. $game_timer.game_triple_triad[5] = Config_Triple_Triad::Enemy[id]['Samewall']
  1837. $game_timer.game_triple_triad[6] = Config_Triple_Triad::Enemy[id]['Pluswall']
  1838. $game_timer.game_triple_triad[7] = Config_Triple_Triad::Enemy[id]['AI']
  1839. $game_timer.game_triple_triad[8] = Config_Triple_Triad::Enemy[id]['Open']
  1840. $game_timer.game_triple_triad[9] = Config_Triple_Triad::Enemy[id]['Win']
  1841. $game_timer.game_triple_triad[10] = id
  1842. end
  1843. end
  1844.  
  1845. #==============================================================================
  1846. # ** Triple_Triad_Rules
  1847. #------------------------------------------------------------------------------
  1848. # Esta classe gerencia a tela de regras do duelo
  1849. #==============================================================================
  1850. class Triple_Triad_Rules < Window_Base
  1851. include Config_Triple_Triad
  1852. #--------------------------------------------------------------------------
  1853. # * Inicialização
  1854. #--------------------------------------------------------------------------
  1855. def initialize
  1856. super(0, 0, 272, 300)
  1857. @battle_info = $game_timer.game_triple_triad.dup
  1858. refresh
  1859. end
  1860. #--------------------------------------------------------------------------
  1861. # * largura da janela
  1862. #--------------------------------------------------------------------------
  1863. def window_width
  1864. 272
  1865. end
  1866. #--------------------------------------------------------------------------
  1867. # * atualização
  1868. #--------------------------------------------------------------------------
  1869. def refresh
  1870. contents.clear
  1871. contents.font.size = Text_size
  1872. contents.font.name = Text_font
  1873. contents.font.size += 8
  1874. draw_text(0, 0, window_width, fitting_height(1), Title_Rule, 1)
  1875. contents.font.size -= 8
  1876. for n in 0..5
  1877. draw_text(0, fitting_height(n+1), window_width - 50, fitting_height(1), Rule_Texts[n], 0)
  1878. end
  1879. for n in 0..4
  1880. @battle_info[n + 2] == true ? a = 0 : a = 1
  1881. draw_text(0, fitting_height(n+1), window_width - 50, fitting_height(1), Rule_Answ[a], 2)
  1882. end
  1883. case @battle_info[9]
  1884. when 1
  1885. draw_text(0, fitting_height(6), window_width - 50, fitting_height(1), Win_Tex[0], 2)
  1886. when 2
  1887. draw_text(0, fitting_height(6), window_width - 50, fitting_height(1), Win_Tex[1], 2)
  1888. when 3
  1889. draw_text(0, fitting_height(6), window_width - 50, fitting_height(1), Win_Tex[2], 2)
  1890. end
  1891. reset_font_settings
  1892. end
  1893. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement