Advertisement
Guest User

Untitled

a guest
Dec 12th, 2015
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 50.65 KB | None | 0 0
  1.  
  2. #===============================================================================
  3. # Elite Battle Interface
  4. # created by Luka S.J.
  5. #
  6. # a brand new interface for Pokemon Essentials, to be used with the dynamic
  7. # battle system. Command and Fight windows are not based upon the previous
  8. # versions. Keep that in mind if you did (or plan to do) any alterations to the
  9. # interfaces.
  10. #===============================================================================
  11. module PokeBattle_SceneConstants
  12. if USENEWUI
  13. MESSAGEBASECOLOR = Color.new(255,255,255)
  14. MESSAGESHADOWCOLOR = Color.new(32,32,32)
  15. MENUBASECOLOR = MESSAGEBASECOLOR
  16. MENUSHADOWCOLOR = MESSAGESHADOWCOLOR
  17. BOXTEXTBASECOLOR = MESSAGEBASECOLOR
  18. BOXTEXTSHADOWCOLOR = MESSAGESHADOWCOLOR
  19. HPGAUGESIZE = 168
  20. EXPGAUGESIZE = 260
  21. end
  22. end
  23. #===============================================================================
  24. # Pokemon data battle boxes
  25. # UI overhaul
  26. #===============================================================================
  27. class PokemonNewDataBox < SpriteWrapper
  28. attr_reader :battler
  29. attr_accessor :selected
  30. attr_accessor :appearing
  31. attr_reader :animatingHP
  32. attr_reader :animatingEXP
  33.  
  34. def initialize(battler,doublebattle,viewport=nil,player=nil)
  35. view = Viewport.new(viewport.rect.x,viewport.rect.y,viewport.rect.width,viewport.rect.height)
  36. view.z = viewport.z + 1
  37. viewport = view
  38. super(viewport)
  39. @explevel=0
  40. @player=player
  41. @battler=battler
  42. @doublebattle=doublebattle
  43. @selected=0
  44. @frame=0
  45. @showhp=false
  46. @showexp=false
  47. @appearing=false
  48. @animatingHP=false
  49. @starthp=0
  50. @currenthp=0
  51. @endhp=0
  52. @expflash=0
  53. if (@battler.index&1)==0 # if player's Pokémon
  54. @spritebaseX=34
  55. @playerpoke=true
  56. else
  57. @spritebaseX=16
  58. @playerpoke=false
  59. end
  60. if !doublebattle && @battler.index==0
  61. @showhp=true
  62. @showexp=true
  63. end
  64. @statuses=pbBitmap("Graphics/Pictures/newStatuses")
  65. @contents=BitmapWrapper.new(264,78)
  66. self.bitmap=@contents
  67. self.visible=false
  68. self.z=50
  69. refreshExpLevel
  70. refresh
  71. end
  72.  
  73. def dispose
  74. @statuses.dispose
  75. @contents.dispose
  76. super
  77. end
  78.  
  79. def refreshExpLevel
  80. if !@battler.pokemon
  81. @explevel=0
  82. else
  83. growthrate=@battler.pokemon.growthrate
  84. startexp=PBExperience.pbGetStartExperience(@battler.pokemon.level,growthrate)
  85. endexp=PBExperience.pbGetStartExperience(@battler.pokemon.level+1,growthrate)
  86. if startexp==endexp
  87. @explevel=0
  88. else
  89. @explevel=(@battler.pokemon.exp-startexp)*PokeBattle_SceneConstants::EXPGAUGESIZE/(endexp-startexp)
  90. end
  91. end
  92. end
  93.  
  94. def exp
  95. return @animatingEXP ? @currentexp : @explevel
  96. end
  97.  
  98. def hp
  99. return @animatingHP ? @currenthp : @battler.hp
  100. end
  101.  
  102. def animateHP(oldhp,newhp)
  103. @starthp=oldhp
  104. @currenthp=oldhp
  105. @endhp=newhp
  106. @animatingHP=true
  107. end
  108.  
  109. def animateEXP(oldexp,newexp)
  110. @currentexp=oldexp
  111. @endexp=newexp
  112. @animatingEXP=true
  113. end
  114.  
  115. def appear
  116. refreshExpLevel
  117. refresh
  118. self.visible=true
  119. self.opacity=255
  120. end
  121.  
  122. def getBattler(battler)
  123. return battler.effects[PBEffects::Illusion] if PBEffects.const_defined?(:Illusion) && battler.respond_to?('effects') && !battler.effects[PBEffects::Illusion].nil?
  124. return battler
  125. end
  126.  
  127. def refresh
  128. self.bitmap.clear
  129. return if !@battler.pokemon
  130. if @playerpoke # Player Pokemon box
  131. isOutsider=(@battler.pokemon.trainerID!=@player.id || (@battler.pokemon.language!=0 && @battler.pokemon.language!=@player.language))
  132. y=0; y=1 if isOutsider;
  133. self.bitmap.blt(22,0,pbBitmap("Graphics/Pictures/bbtrans"),Rect.new(0,0,242,54))
  134. y=0; y=32 if @doublebattle;
  135. self.bitmap.blt(0,36,pbBitmap("Graphics/Pictures/exparea"),Rect.new(0,y,262,32))
  136. self.bitmap.blt(2,32,pbBitmap("Graphics/Pictures/expbar"),Rect.new(0,y*34,self.exp,34)) if !@doublebattle
  137. self.bitmap.blt(54,40,pbBitmap("Graphics/Pictures/hparea"),Rect.new(0,0,180,16))
  138.  
  139. hpGaugeSize=PokeBattle_SceneConstants::HPGAUGESIZE
  140. hpgauge=@battler.totalhp==0 ? 0 : (self.hp*hpGaugeSize/@battler.totalhp)
  141. hpgauge=2 if hpgauge==0 && self.hp > 0
  142. hpzone=0
  143. hpzone=1 if self.hp <=(@battler.totalhp/2).floor
  144. hpzone=2 if self.hp <=(@battler.totalhp/3.5).floor
  145. self.bitmap.blt(54,40,pbBitmap("Graphics/Pictures/hpbars"),Rect.new(0,20*hpzone,6,20)) if self.hp > 0
  146. self.bitmap.blt(60,40,pbBitmap("Graphics/Pictures/hpbars"),Rect.new(6,20*hpzone,hpgauge,20))
  147. self.bitmap.blt(60+hpgauge,40,pbBitmap("Graphics/Pictures/hpbars"),Rect.new(174,20*hpzone,6,20)) if self.hp > 0
  148. y=58; y-=26 if @doublebattle;
  149. self.bitmap.blt(44,y,@statuses,Rect.new(0,17*(@battler.status-1),52,17)) if @battler.status > 0
  150. self.bitmap.blt(22,34,pbBitmap("Graphics/Pictures/mega_sym"),Rect.new(0,0,30,30)) if @battler.isMega?
  151. if INCLUDEGEN6 && @battler.isPrimal?
  152. path=nil
  153. path="Graphics/Pictures/battlePrimalAlphaBox.png" if @battler.species==PBSpecies::KYOGRE
  154. path="Graphics/Pictures/battlePrimalOmegaBox.png" if @battler.species==PBSpecies::GROUDON
  155. #define any custom Primal graphics here
  156. self.bitmap.blt(22,34,pbBitmap(path),Rect.new(0,0,30,30))
  157. end
  158. self.bitmap.blt(148,52,pbBitmap("Graphics/Pictures/hpind"),Rect.new(0,0,76,22)) if !@doublebattle
  159. pbSetSmallFont(self.bitmap)
  160. textpos=[
  161. ["#{self.hp}/#{@battler.totalhp}",152+34,50,2,Color.new(23,28,31),Color.new(185,185,185)]
  162. ]
  163. bitmap.font.name="Press Start"
  164. bitmap.font.size=16
  165. #pbDrawTextPositions(self.bitmap,textpos) if !@doublebattle
  166. pbDrawOutlineText(self.bitmap,102,58,140,16,"#{self.hp}/#{@battler.totalhp}",Color.new(255,255,255),Color.new(0,0,0),2)
  167.  
  168. bitmap.font.name="Power Green Small"
  169. bitmap.font.size=25
  170.  
  171. pokename=getBattler(@battler).name
  172. genderX=self.bitmap.text_size(pokename).width
  173. genderX+=14+44
  174. textpos.push([_INTL("Lv{1}",@battler.level),242,5,true,Color.new(255,255,255),Color.new(32,32,32)])
  175. pbDrawOutlineText(self.bitmap,8+44,10,self.bitmap.text_size(pokename).width,self.bitmap.text_size(pokename).height,pokename,Color.new(255,255,255),Color.new(0,0,0),0)
  176. if getBattler(@battler).gender==0 # Male
  177. pbDrawOutlineText(self.bitmap,self.bitmap.text_size(pokename).width+14+44,10,self.bitmap.text_size(pokename).width,self.bitmap.text_size(pokename).height,_INTL("♂"),Color.new(48+30,96+30,216),Color.new(0,0,0),0)
  178. elsif getBattler(@battler).gender==1 # Female
  179. pbDrawOutlineText(self.bitmap,self.bitmap.text_size(pokename).width+14+44,10,self.bitmap.text_size(pokename).width,self.bitmap.text_size(pokename).height,_INTL("♀"),Color.new(248,88+30,40+30),Color.new(0,0,0),0)
  180. end
  181. pbDrawOutlineText(self.bitmap,170,10,self.bitmap.text_size(pokename).width,self.bitmap.text_size(pokename).height,_INTL("Lv{1}",@battler.level),Color.new(255,255,255),Color.new(0,0,0),1)
  182.  
  183.  
  184. else # Enemy Pokemon box
  185.  
  186. self.bitmap.blt(0,0,pbBitmap("Graphics/Pictures/bbtrans_opp"),Rect.new(0,0,242,54))
  187. y=0; y=32 if @doublebattle;
  188. self.bitmap.blt(2,36,pbBitmap("Graphics/Pictures/exparea_opp"),Rect.new(0,y,262,32))
  189. self.bitmap.blt(30,40,pbBitmap("Graphics/Pictures/hparea"),Rect.new(0,0,180,16))
  190.  
  191. hpGaugeSize=PokeBattle_SceneConstants::HPGAUGESIZE
  192. hpgauge=@battler.totalhp==0 ? 0 : (self.hp*hpGaugeSize/@battler.totalhp)
  193. hpgauge=2 if hpgauge==0 && self.hp > 0
  194. hpzone=0
  195. hpzone=1 if self.hp <=(@battler.totalhp/2).floor
  196. hpzone=2 if self.hp <=(@battler.totalhp/3.5).floor
  197. self.bitmap.blt(30,40,pbBitmap("Graphics/Pictures/hpbars"),Rect.new(0,20*hpzone,6,20)) if self.hp > 0
  198. self.bitmap.blt(36,40,pbBitmap("Graphics/Pictures/hpbars"),Rect.new(6,20*hpzone,hpgauge,20))
  199. self.bitmap.blt(36+hpgauge,40,pbBitmap("Graphics/Pictures/hpbars"),Rect.new(174,20*hpzone,6,20)) if self.hp > 0
  200. self.bitmap.blt(214,34,pbBitmap("Graphics/Pictures/battleBoxOwned.png"),Rect.new(0,0,14,14)) if @battler.owned
  201. self.bitmap.blt(212,34,pbBitmap("Graphics/Pictures/mega_sym"),Rect.new(0,0,30,30)) if @battler.isMega?
  202. if INCLUDEGEN6 && @battler.isPrimal?
  203. path=nil
  204. path="Graphics/Pictures/battlePrimalAlphaBox.png" if @battler.species==PBSpecies::KYOGRE
  205. path="Graphics/Pictures/battlePrimalOmegaBox.png" if @battler.species==PBSpecies::GROUDON
  206. #define any custom Primal graphics here
  207. self.bitmap.blt(212,34,pbBitmap(path),Rect.new(0,0,30,30))
  208. end
  209. y=58; y-=26 if @doublebattle;
  210. self.bitmap.blt(20,y,@statuses,Rect.new(0,17*(@battler.status-1),52,17)) if @battler.status > 0
  211. pbSetSystemFont(self.bitmap)
  212. pokename=getBattler(@battler).name
  213. #textpos=[
  214. # [pokename,8+20,5,false,Color.new(255,255,255),Color.new(32,32,32)]
  215. #]
  216.  
  217. bitmap.font.name="Power Green Small"
  218. bitmap.font.size=25
  219.  
  220. genderX=self.bitmap.text_size(pokename).width
  221. genderX+=14+20
  222. if getBattler(@battler).gender==0 # Male
  223. #textpos=[[_INTL("♂"),genderX,5,false,Color.new(48+30,96+30,216),Color.new(32,32,32)]]
  224. pbDrawOutlineText(self.bitmap,self.bitmap.text_size(pokename).width+14+30,10,16,30,_INTL("♂"),Color.new(48+30,96+30,216),Color.new(0,0,0),2)
  225. elsif getBattler(@battler).gender==1 # Female
  226. #textpos.push([_INTL("♀"),genderX,5,false,Color.new(248,88+30,40+30),Color.new(32,32,32)])
  227. pbDrawOutlineText(self.bitmap,self.bitmap.text_size(pokename).width+14+30,10,16,30,_INTL("♂"),Color.new(248,88+30,40+30),Color.new(0,0,0),2)
  228. end
  229. #textpos.push([_INTL("Lv{1}",@battler.level),218,5,true,Color.new(255,255,255),Color.new(32,32,32)])
  230. #pbDrawTextPositions(self.bitmap,textpos)
  231. pbDrawOutlineText(self.bitmap,8+120,12,self.bitmap.text_size(pokename).width,self.bitmap.text_size(pokename).height,_INTL("Lv{1}",@battler.level),Color.new(255,255,255),Color.new(0,0,0),2)
  232. pbDrawOutlineText(self.bitmap,8+30,12,self.bitmap.text_size(pokename).width,self.bitmap.text_size(pokename).height,pokename,Color.new(255,255,255),Color.new(0,0,0),2)
  233.  
  234. end
  235. end
  236.  
  237.  
  238. def update
  239. super
  240. @frame+=1
  241. if @animatingHP
  242. if @currenthp < @endhp
  243. @currenthp+=[1,(@battler.totalhp/PokeBattle_SceneConstants::HPGAUGESIZE).floor*4].max
  244. @currenthp=@endhp if @currenthp > @endhp
  245. elsif @currenthp > @endhp
  246. @currenthp-=[1,(@battler.totalhp/PokeBattle_SceneConstants::HPGAUGESIZE).floor*4].max
  247. @currenthp=@endhp if @currenthp < @endhp
  248. end
  249. refresh
  250. @animatingHP=false if @currenthp==@endhp
  251. end
  252. if @animatingEXP
  253. if !@showexp
  254. @currentexp=@endexp
  255. elsif @currentexp < @endexp # Gaining Exp
  256. if @endexp >=PokeBattle_SceneConstants::EXPGAUGESIZE ||
  257. @endexp-@currentexp >=PokeBattle_SceneConstants::EXPGAUGESIZE/4
  258. @currentexp+=4
  259. else
  260. @currentexp+=2
  261. end
  262. @currentexp=@endexp if @currentexp > @endexp
  263. elsif @currentexp > @endexp # Losing Exp
  264. if @endexp==0 ||
  265. @currentexp-@endexp >=PokeBattle_SceneConstants::EXPGAUGESIZE/4
  266. @currentexp-=4
  267. elsif @currentexp > @endexp
  268. @currentexp-=2
  269. end
  270. @currentexp=@endexp if @currentexp < @endexp
  271. end
  272. refresh
  273. if @currentexp==@endexp
  274. if @currentexp==PokeBattle_SceneConstants::EXPGAUGESIZE
  275. if @expflash==0
  276. pbSEPlay("expfull")
  277. self.flash(Color.new(64,200,248),8)
  278. @expflash=8
  279. else
  280. @expflash-=1
  281. if @expflash==0
  282. @animatingEXP=false
  283. refreshExpLevel
  284. end
  285. end
  286. else
  287. @animatingEXP=false
  288. end
  289. end
  290. end
  291. end
  292. end
  293.  
  294. class NewSafariDataBox < SpriteWrapper
  295. attr_accessor :selected
  296. attr_reader :appearing
  297.  
  298. def initialize(battle,viewport=nil)
  299. view = Viewport.new(viewport.rect.x,viewport.rect.y,viewport.rect.width,viewport.rect.height)
  300. view.z = viewport.z + 1
  301. viewport = view
  302. super(viewport)
  303. @selected=0
  304. @battle=battle
  305. @spriteX=PokeBattle_SceneConstants::SAFARIBOX_X
  306. @spriteY=PokeBattle_SceneConstants::SAFARIBOX_Y
  307. @appearing=false
  308. @contents=BitmapWrapper.new(264,78)
  309. self.bitmap=@contents
  310. self.visible=false
  311. self.z=50
  312. refresh
  313. end
  314.  
  315. def appear
  316. refresh
  317. self.visible=true
  318. self.opacity=255
  319. end
  320.  
  321. def refresh
  322. self.bitmap.clear
  323. self.bitmap.blt(22,0,pbBitmap("Graphics/Pictures/bbtrans"),Rect.new(0,0,242,54))
  324. self.bitmap.blt(0,36,pbBitmap("Graphics/Pictures/exparea"),Rect.new(0,32,262,32))
  325. pbSetSystemFont(self.bitmap)
  326. textpos=[]
  327. base=PokeBattle_SceneConstants::BOXTEXTBASECOLOR
  328. shadow=PokeBattle_SceneConstants::BOXTEXTSHADOWCOLOR
  329. textpos.push([_INTL("Safari Balls: {1}",@battle.ballcount),54,8,false,base,shadow])
  330. pbDrawTextPositions(self.bitmap,textpos)
  331. end
  332.  
  333. def update
  334. end
  335. end
  336. #===============================================================================
  337. # Command Menu
  338. # UI ovarhaul
  339. #===============================================================================
  340. class NewCommandWindow
  341. attr_accessor :index
  342.  
  343. def initialize(viewport=nil,battle=nil,safari=false)
  344. if !viewport.nil?
  345. view = Viewport.new(viewport.rect.x,viewport.rect.y,viewport.rect.width,viewport.rect.height)
  346. view.z = viewport.z
  347. view2 = Viewport.new(viewport.rect.x,viewport.rect.y,viewport.rect.width,viewport.rect.height)
  348. view2.z = viewport.z + 2
  349. viewport = view
  350. end
  351. @battle=battle
  352. @safaribattle=safari
  353. @viewport=viewport
  354. @viewport2=(viewport.nil?) ? viewport : view2
  355. @index=0
  356.  
  357. @buttonBitmap=pbBitmap("Graphics/Pictures/commandMenuButtons")
  358.  
  359. @texts=[
  360. ["Fight","Bag","Pokemon","Run"],
  361. ["Ball","Bait","Rock","Call"]
  362. ]
  363.  
  364. @helpText=Sprite.new(@viewport)
  365. @helpText.bitmap=Bitmap.new(Graphics.width,36)
  366. @helpText.y=Graphics.height-104
  367. @helpText.x=Graphics.width+8
  368. @helpText.z=100
  369. pbSetSystemFont(@helpText.bitmap)
  370.  
  371. @background=Sprite.new(@viewport)
  372. @background.bitmap=pbBitmap("Graphics/Pictures/newCommandBox")
  373. @background.y=Graphics.height-68
  374. @background.z=100
  375.  
  376. @bgText=Sprite.new(@viewport)
  377. @bgText.bitmap=Bitmap.new(512,98)
  378. @bgText.y=Graphics.height-68
  379. @bgText.z=110
  380. pbSetSystemFont(@bgText.bitmap)
  381. text=[]
  382.  
  383. @selHand=Sprite.new(@viewport2)
  384. @selHand.bitmap=pbBitmap("Graphics/Pictures/selHand")
  385. @selHand.oy=@selHand.bitmap.height
  386. @selHand.ox=@selHand.bitmap.width/2
  387. @selHand.z=150
  388. @selHand.visible=false
  389. @animdata=[0.1,0]
  390.  
  391. @button={}
  392. for i in 0...4
  393. @button["#{i}"]=Sprite.new(@viewport)
  394. @button["#{i}"].bitmap=@buttonBitmap
  395. row=(@safaribattle) ? 1 : 0
  396. row=0 if i==3
  397. @button["#{i}"].src_rect.set(i*116,row*48,116,48)
  398. @button["#{i}"].z=120
  399. @button["#{i}"].x=16+(i*122)
  400. @button["#{i}"].y=@background.y+12
  401. text.push(["#{@texts[row][i]}",78+(i*122),40,2,PokeBattle_SceneConstants::MESSAGEBASECOLOR,Color.new(41,71,77)])
  402. end
  403. pbDrawTextPositions(@bgText.bitmap,text)
  404. @bgText.x=@button["#{@index}"].x
  405. @bgText.src_rect.set((@index*122)+16,0,116,98)
  406. end
  407.  
  408. def visible; end; def visible=(val); end
  409. def disposed?; end; def dispose; end
  410. def color; end; def color=(val); end
  411.  
  412. def showText
  413. @helpText.opacity=255
  414. @helpText.x-=52
  415. end
  416.  
  417. def text=(msg)
  418. bitmap=pbBitmap("Graphics/Pictures/newBattleMessageSmall")
  419. balls=pbBitmap("Graphics/Pictures/newPartyBalls")
  420. @helpText.bitmap.clear
  421. @helpText.bitmap.blt(0,0,bitmap,Rect.new(0,0,bitmap.width,bitmap.height))
  422. text=[["#{msg}",bitmap.width/2,2,2,PokeBattle_SceneConstants::MESSAGEBASECOLOR,PokeBattle_SceneConstants::MESSAGESHADOWCOLOR]]
  423. for i in 0...6
  424. next if @safaribattle
  425. o=3
  426. if i < @battle.party1.length && @battle.party1[i]
  427. if @battle.party1[i].hp <=0 || @battle.party1[i].isEgg?
  428. o=2
  429. elsif @battle.party1[i].status > 0
  430. o=1
  431. else
  432. o=0
  433. end
  434. end
  435. @helpText.bitmap.blt(404+(i*18),18,balls,Rect.new(o*18,0,18,18))
  436. next if !@battle.opponent
  437. enemyindex=i
  438. if @battle.doublebattle && i >=3
  439. enemyindex=(i%3)+@battle.pbSecondPartyBegin(1)
  440. end
  441. o=3
  442. if enemyindex < @battle.party2.length && @battle.party2[enemyindex]
  443. if @battle.party2[enemyindex].hp <=0 || @battle.party2[enemyindex].isEgg?
  444. o=2
  445. elsif @battle.party2[enemyindex].status > 0
  446. o=1
  447. else
  448. o=0
  449. end
  450. end
  451. @helpText.bitmap.blt(i*18,0,balls,Rect.new(o*18,0,18,18))
  452. end
  453. pbDrawTextPositions(@helpText.bitmap,text)
  454. end
  455.  
  456. def show
  457. @selHand.visible=false
  458. @background.y-=7
  459. @bgText.y-=7
  460. @helpText.y-=7
  461. for i in 0...4
  462. @button["#{i}"].y=@background.y+12
  463. end
  464. end
  465.  
  466. def hide
  467. @selHand.visible=false
  468. @background.y+=7
  469. @bgText.y+=7
  470. @helpText.y+=7
  471. @helpText.opacity-=25.5
  472. for i in 0...4
  473. @button["#{i}"].y=@background.y+12
  474. end
  475. @helpText.x=Graphics.width+8 if @helpText.opacity <=0
  476. end
  477.  
  478. def update
  479. @selHand.x=@button["#{@index}"].x+58
  480. @selHand.y=@button["#{@index}"].y
  481. @selHand.zoom_y-=@animdata[0]
  482. @selHand.visible=true
  483. @bgText.x=@button["#{@index}"].x
  484. @bgText.src_rect.set((@index*122)+16,0,116,98)
  485. @animdata[0]=-0.1 if @selHand.zoom_y <=0.5
  486. if @selHand.zoom_y >=1
  487. @animdata[0]=0
  488. @animdata[1]+=1
  489. if @animdata[1] > 14
  490. @animdata[0]=0.1
  491. @animdata[1]=0
  492. end
  493. end
  494. for i in 0...4
  495. if @index==i
  496. @button["#{i}"].y-=1 if @button["#{i}"].y > @background.y+2
  497. else
  498. @button["#{i}"].y+=1 if @button["#{i}"].y < @background.y+12
  499. end
  500. end
  501. end
  502.  
  503. end
  504.  
  505. class PokeBattle_Scene
  506.  
  507. alias pbCommandMenu_old pbCommandMenu
  508. def pbCommandMenu(index)
  509. @orgPos=[@vector.x,@vector.y,@vector.angle,@vector.scale,@vector.zoom1] if @orgPos.nil?
  510. @idleTimer=0 if @idleTimer < 0
  511. pbCommandMenu_old(index)
  512. end
  513.  
  514. alias pbCommandMenuEx_old pbCommandMenuEx
  515. def pbCommandMenuEx(index,texts,mode=0)
  516. if !USENEWUI
  517. return pbCommandMenuEx_old(index,texts,mode)
  518. end
  519. @ret=0
  520. clearMessageWindow
  521. cw=@commandWindow
  522. name=(@safaribattle) ? $Trainer.name : @battle.battlers[index].name
  523. cw.text=_INTL("What will {1} do?",name)
  524. pbSEPlay("SE_Zoom2",50)
  525. 10.times do
  526. cw.showText
  527. animateBattleSprites(true)
  528. pbGraphicsUpdate
  529. end
  530. pbSEPlay("SE_Zoom4",50)
  531. 10.times do
  532. cw.show
  533. animateBattleSprites(true)
  534. pbGraphicsUpdate
  535. end
  536. pbRefresh
  537. loop do
  538. pbGraphicsUpdate
  539. pbInputUpdate
  540. animateBattleSprites(true)
  541. cw.update
  542. # Update selected command
  543. if Input.trigger?(Input::LEFT)
  544. if cw.index > 0
  545. pbSEPlay("SE_Select1")
  546. cw.index-=1
  547. elsif cw.index <=0
  548. pbSEPlay("SE_Select1")
  549. cw.index=3
  550. end
  551. end
  552. if Input.trigger?(Input::RIGHT)
  553. if cw.index < 3
  554. pbSEPlay("SE_Select1")
  555. cw.index+=1
  556. elsif cw.index >=3
  557. pbSEPlay("SE_Select1")
  558. cw.index=0
  559. end
  560. end
  561. if Input.trigger?(Input::C) # Confirm choice
  562. pbSEPlay("SE_Select2")
  563. @ret=cw.index
  564. @lastcmd[index]=@ret
  565. break
  566. elsif Input.trigger?(Input::B) && index==2 && @lastcmd[0]!=2 # Cancel
  567. pbSEPlay("SE_Select2")
  568. @ret=-1
  569. break
  570. end
  571. end
  572. 10.times do
  573. cw.hide
  574. animateBattleSprites(true)
  575. pbGraphicsUpdate
  576. end
  577. if @ret > 0
  578. @vector.set(VECTOR[0],VECTOR[1],VECTOR[2],VECTOR[3],VECTOR[4],VECTOR[5])
  579. @vector.inc=0.2
  580. end
  581. return @ret
  582. end
  583.  
  584. end
  585. #===============================================================================
  586. # Fight Menu
  587. # UI ovarhaul
  588. #===============================================================================
  589. class NewFightWindow
  590. attr_accessor :index
  591. attr_accessor :battler
  592. attr_reader :nummoves
  593.  
  594. def initialize(viewport=nil)
  595. if !viewport.nil?
  596. view = Viewport.new(viewport.rect.x,viewport.rect.y,viewport.rect.width,viewport.rect.height)
  597. view.z = viewport.z
  598. view2 = Viewport.new(viewport.rect.x,viewport.rect.y,viewport.rect.width,viewport.rect.height)
  599. view2.z = viewport.z + 2
  600. viewport = view
  601. end
  602. @viewport=viewport
  603. @viewport2=(viewport.nil?) ? viewport : view2
  604. @index=0
  605. @battler=nil
  606. @nummoves=0
  607.  
  608. @buttonBitmap=pbBitmap("Graphics/Pictures/moveSelButtons")
  609. @categoryBitmap=pbBitmap("Graphics/Pictures/category")
  610.  
  611. @background=Sprite.new(@viewport)
  612. @background.bitmap=pbBitmap("Graphics/Pictures/newCommandBox")
  613. @background.y=Graphics.height-98
  614. @background.z=100
  615.  
  616.  
  617. @selHand=Sprite.new(@viewport2)
  618. @selHand.bitmap=pbBitmap("Graphics/Pictures/selHand")
  619. @selHand.oy=@selHand.bitmap.height
  620. @selHand.ox=@selHand.bitmap.width/2
  621. @selHand.z=150
  622. @selHand.visible=false
  623. @animdata=[0.1,0]
  624.  
  625. @arrow1=Sprite.new(@viewport)
  626. @arrow1.bitmap=pbBitmap("Graphics/Pictures/dirArrow")
  627. @arrow1.y=@background.y+2
  628. @arrow1.z=140
  629. @arrow1.mirror=true
  630. @arrow1.opacity=0
  631.  
  632. @arrow2=Sprite.new(@viewport)
  633. @arrow2.bitmap=pbBitmap("Graphics/Pictures/dirArrow")
  634. @arrow2.y=@background.y+2
  635. @arrow2.z=140
  636. @arrow2.x=Graphics.width-20
  637. @arrow2.opacity=0
  638.  
  639. @megaButton=Sprite.new(@viewport)
  640. @megaButton.bitmap=pbBitmap("Graphics/Pictures/megaEvoButton")
  641. @megaButton.y=252
  642. @megaButton.x=-16
  643. @megaButton.z=145
  644. @megaButton.src_rect.set(0,0,116,48)
  645.  
  646. @button={}
  647. @moved=false
  648. @showMega=false
  649. @position=[]
  650. @alternate=[0,0]
  651.  
  652. end
  653.  
  654. def generateButtons
  655. @moves=@battler.moves
  656. @nummoves=0
  657. @position.clear
  658. for i in 0...4
  659. @button["#{i}"].dispose if @button["#{i}"]
  660. @button["#{i}_2"].dispose if @button["#{i}_2"]
  661. @nummoves+=1 if @moves[i] && @moves[i].id > 0
  662. end
  663. for i in 0...@moves.length
  664. @position.push(20+(i*236)-(@index*236))
  665. end
  666. if @index==3
  667. for j in 0...@position.length
  668. @position[j]+=236
  669. end
  670. end
  671. for i in 0...@nummoves
  672. movedata=PBMoveData.new(@moves[i].id)
  673. @button["#{i}"]=Sprite.new(@viewport)
  674. @button["#{i}"].bitmap=Bitmap.new(214,88)
  675. pbSetSystemFont(@button["#{i}"].bitmap)
  676. @button["#{i}"].z=120
  677. @button["#{i}"].x=@position[i]
  678. @button["#{i}"].y=@background.y+10
  679. baseColor=@buttonBitmap.get_pixel(4,32+(@moves[i].type*88))
  680. shadowColor=@buttonBitmap.get_pixel(20,4+(@moves[i].type*88))
  681. @button["#{i}"].bitmap.blt(0,0,@buttonBitmap,Rect.new(0,@moves[i].type*88,214,88))
  682. text=[
  683. ["#{@moves[i].name}",103,10,2,baseColor,shadowColor],
  684. ["PP: #{@moves[i].pp}/#{@moves[i].totalpp}",103-18,38,2,baseColor,shadowColor]
  685. ]
  686. pbDrawTextPositions(@button["#{i}"].bitmap,text)
  687.  
  688. @button["#{i}_2"]=Sprite.new(@viewport)
  689. @button["#{i}_2"].bitmap=Bitmap.new(214,88)
  690. @button["#{i}_2"].z=120
  691. @button["#{i}_2"].x=@position[i]
  692. @button["#{i}_2"].y=@background.y+10
  693. @button["#{i}_2"].visible=false
  694. @button["#{i}_2"].visible=true if @index==i
  695. @button["#{i}_2"].bitmap.blt(148,58,@categoryBitmap,Rect.new(0,movedata.category*28,64,28))
  696. end
  697. end
  698.  
  699. def show
  700. @selHand.visible=false
  701. @background.y-=10
  702. @arrow1.y-=10
  703. @arrow2.y-=10
  704. for i in 0...@nummoves
  705. @button["#{i}"].y=@background.y+10 if @button["#{i}"] && !@button["#{i}"].disposed?
  706. @button["#{i}_2"].y=@background.y+10 if @button["#{i}_2"] && !@button["#{i}_2"].disposed?
  707. end
  708. end
  709.  
  710. def hide
  711. @selHand.visible=false
  712. @background.y+=10
  713. @megaButton.x-=10
  714. @arrow1.y+=10
  715. @arrow2.y+=10
  716. for i in 0...@nummoves
  717. @button["#{i}"].y=@background.y+10 if @button["#{i}"] && !@button["#{i}"].disposed?
  718. @button["#{i}_2"].y=@background.y+10 if @button["#{i}_2"] && !@button["#{i}_2"].disposed?
  719. end
  720. @showMega=false
  721. end
  722.  
  723. def megaButton
  724. @showMega=true
  725. end
  726.  
  727. def megaButtonTrigger
  728. @megaButton.src_rect.y+=48
  729. @megaButton.src_rect.y=0 if @megaButton.src_rect.y >=96
  730. end
  731.  
  732. def update
  733. if @index==0 or @index==1
  734. @arrow2.opacity+=25.5 if @arrow2.opacity < 255
  735. elsif @index==2 or @index==3
  736. @arrow2.opacity-=25.5 if @arrow2.opacity > 0
  737. end
  738. if @index==1 or @index==2 or @index==3
  739. @arrow1.opacity+=25.5 if @arrow1.opacity < 255
  740. elsif @index==0
  741. @arrow1.opacity-=25.5 if @arrow1.opacity > 0
  742. end
  743. for i in 0...@position.length
  744. @position[i]=20+(i*236)-(@index*236) if @index < 3
  745. end
  746. for i in 0...@nummoves
  747. @button["#{i}_2"].visible=false
  748. @button["#{i}_2"].visible=true if @index==i
  749. if @index==i
  750. @button["#{i}"].y-=1 if @button["#{i}"].y > @background.y+2
  751. else
  752. @button["#{i}"].y+=1 if @button["#{i}"].y < @background.y+10
  753. end
  754. distance=@button["#{i}"].x-@position[i]
  755. @button["#{i}"].x-=distance/2
  756. @button["#{i}_2"].x=@button["#{i}"].x
  757. @button["#{i}_2"].y=@button["#{i}"].y
  758. end
  759. if @showMega
  760. @megaButton.x+=10 if @megaButton.x < -16
  761. end
  762. @selHand.x=@button["#{@index}"].x+103
  763. @selHand.y=@button["#{@index}"].y
  764. @selHand.zoom_y-=@animdata[0]
  765. @selHand.visible=true
  766. @animdata[0]=-0.1 if @selHand.zoom_y <=0.5
  767. if @selHand.zoom_y >=1
  768. @animdata[0]=0
  769. @animdata[1]+=1
  770. if @animdata[1] > 14
  771. @animdata[0]=0.1
  772. @animdata[1]=0
  773. end
  774. end
  775. end
  776.  
  777. end
  778.  
  779. class PokeBattle_Scene
  780.  
  781. alias pbFightMenu_old pbFightMenu
  782. def pbFightMenu(index)
  783. if !USENEWUI
  784. return pbFightMenu_old(index)
  785. end
  786. clearMessageWindow
  787. cw = @fightWindow
  788. battler=@battle.battlers[index]
  789. cw.megaButton if @battle.pbCanMegaEvolve?(index)
  790. cw.battler=battler
  791. lastIndex=@lastmove[index]
  792. if battler.moves[lastIndex].id!=0
  793. cw.index=lastIndex
  794. else
  795. cw.index=0
  796. end
  797. cw.generateButtons
  798. pbSelectBattler(index)
  799. pbSEPlay("SE_Zoom4",50)
  800. #10.times do
  801. # cw.show
  802. # moveEntireScene(8,-6)
  803. # animateBattleSprites(true)
  804. # pbGraphicsUpdate
  805. #end
  806. moveUpperRight(cw)
  807. pbRefresh
  808. loop do
  809. pbGraphicsUpdate
  810. pbInputUpdate
  811. animateBattleSprites(true)
  812. cw.update
  813. # Update selected command
  814. if Input.trigger?(Input::LEFT) && cw.index > 0
  815. pbSEPlay("SE_Select1")
  816. cw.index-=1
  817. elsif Input.trigger?(Input::RIGHT) && cw.index < (cw.nummoves-1)
  818. pbSEPlay("SE_Select1")
  819. cw.index+=1
  820. end
  821. if Input.trigger?(Input::C) # Confirm choice
  822. @ret=cw.index
  823. pbSEPlay("SE_Select2")
  824. @lastmove[index]=@ret
  825. @idleTimer=-1
  826. break
  827. elsif Input.trigger?(Input::A) # Use Mega Evolution
  828. if @battle.pbCanMegaEvolve?(index)
  829. @battle.pbRegisterMegaEvolution(index)
  830. cw.megaButtonTrigger
  831. pbSEPlay("SE_Select3")
  832. end
  833. elsif Input.trigger?(Input::B) # Cancel fight menu
  834. @lastmove[index]=cw.index
  835. pbPlayCancelSE()
  836. @ret=-1
  837. break
  838. end
  839. end
  840. if @ret > -1
  841. @vector.set(VECTOR[0],VECTOR[1],VECTOR[2],VECTOR[3],VECTOR[4],VECTOR[5])
  842. @orgPos=nil
  843. @vector.inc=0.2
  844. @vector.lock
  845. 10.times do
  846. cw.hide
  847. wait(1,true)
  848. end
  849. else
  850. moveLowerLeft(cw)
  851. end
  852. return @ret
  853. end
  854.  
  855. alias pbChooseTarget_old pbChooseTarget
  856. def pbChooseTarget(index)
  857. if !USENEWUI
  858. return pbChooseTarget_old(index)
  859. end
  860. curwindow=pbFirstTarget(index)
  861. if curwindow==-1
  862. raise RuntimeError.new(_INTL("No targets somehow..."))
  863. end
  864. loop do
  865. pbGraphicsUpdate
  866. pbInputUpdate
  867. pbUpdateSelected(curwindow)
  868. if Input.trigger?(Input::C)
  869. pbUpdateSelected(-1)
  870. @ret=curwindow
  871. break
  872. end
  873. if Input.trigger?(Input::B)
  874. pbUpdateSelected(-1)
  875. @ret=-1
  876. break
  877. end
  878. if Input.trigger?(Input::RIGHT) && !(curwindow==3 or curwindow==2)
  879. pbPlayCursorSE()
  880. newcurwindow=3 if curwindow==1
  881. newcurwindow=2 if curwindow==0
  882. curwindow=newcurwindow if !(newcurwindow==index) && !@battle.battlers[newcurwindow].isFainted?
  883. elsif Input.trigger?(Input::DOWN) && !(curwindow==0 or curwindow==2)
  884. pbPlayCursorSE()
  885. newcurwindow=0 if curwindow==1
  886. newcurwindow=2 if curwindow==3
  887. curwindow=newcurwindow if !(newcurwindow==index) && !@battle.battlers[newcurwindow].isFainted?
  888. elsif Input.trigger?(Input::LEFT) && !(curwindow==1 or curwindow==0)
  889. pbPlayCursorSE()
  890. newcurwindow=1 if curwindow==3
  891. newcurwindow=0 if curwindow==2
  892. curwindow=newcurwindow if !(newcurwindow==index) && !@battle.battlers[newcurwindow].isFainted?
  893. elsif Input.trigger?(Input::UP) && !(curwindow==3 or curwindow==1)
  894. pbPlayCursorSE()
  895. newcurwindow=3 if curwindow==2
  896. newcurwindow=1 if curwindow==0
  897. curwindow=newcurwindow if !(newcurwindow==index) && !@battle.battlers[newcurwindow].isFainted?
  898. end
  899. #
  900. @sprites["shades"].opacity+=15 if @sprites["shades"].opacity < 150
  901. for i in 0...4
  902. if @sprites["pokemon#{i}"]
  903. if index==i or curwindow==i
  904. increaseTone(@sprites["pokemon#{i}"],-10) if @sprites["pokemon#{i}"].tone.red > 0
  905. else
  906. increaseTone(@sprites["pokemon#{i}"],10) if @sprites["pokemon#{i}"].tone.red < 80
  907. end
  908. end
  909. end
  910. #
  911. end
  912. 10.times do
  913. @sprites["shades"].opacity-=15 if @sprites["shades"].opacity > 0
  914. for i in 0...4
  915. increaseTone(@sprites["pokemon#{i}"],-10) if @sprites["pokemon#{i}"] && @sprites["pokemon#{i}"].tone.red > 0
  916. end
  917. animateBattleSprites(true)
  918. pbGraphicsUpdate
  919. end
  920. return @ret
  921. end
  922.  
  923. end
  924.  
  925. def increaseTone(sprite,amount)
  926. sprite.tone.red+=amount
  927. sprite.tone.green+=amount
  928. sprite.tone.blue+=amount
  929. end
  930. #===============================================================================
  931. # Command Choices
  932. # UI ovarhaul
  933. #===============================================================================
  934. class NewChoiceSel
  935. attr_accessor :index
  936.  
  937. def initialize(viewport,commands)
  938. @commands=commands
  939. @index=0
  940. @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
  941. @viewport.z=viewport.z+5
  942. @sprites={}
  943. @sprites["back"]=Sprite.new(@viewport)
  944. @sprites["back"].bitmap=pbBitmap("Graphics/Pictures/shadeRest")
  945. @sprites["back"].opacity=0
  946. bitmap=pbBitmap("Graphics/Pictures/choiceSel")
  947. baseColor=PokeBattle_SceneConstants::MESSAGEBASECOLOR
  948. shadowColor=PokeBattle_SceneConstants::MESSAGESHADOWCOLOR
  949. @sprites["sel"]=Sprite.new(@viewport)
  950. @sprites["sel"].bitmap=bitmap
  951. @sprites["sel"].src_rect.set(160,0,160,62)
  952. @sprites["sel"].y=220
  953. @sprites["sel"].x=-150
  954. for i in 0...@commands.length
  955. @sprites["choice#{i}"]=Sprite.new(@viewport)
  956. @sprites["choice#{i}"].x=80+(i*192)
  957. @sprites["choice#{i}"].y=Graphics.height
  958. @sprites["choice#{i}"].bitmap=Bitmap.new(160,62)
  959. choice=@sprites["choice#{i}"].bitmap
  960. pbSetSystemFont(choice)
  961. choice.blt(0,0,bitmap,Rect.new(0,0,160,62))
  962. pbDrawOutlineText(choice,0,0,160,62,@commands[i],baseColor,shadowColor,1)
  963. end
  964. end
  965.  
  966. def dispose(scene)
  967. 5.times do
  968. @sprites["back"].opacity-=51
  969. @sprites["sel"].opacity-=51
  970. for i in 0...@commands.length
  971. @sprites["choice#{i}"].opacity-=51
  972. end
  973. @sprites["choice#{@index}"].y+=2
  974. scene.animateBattleSprites(true)
  975. scene.pbGraphicsUpdate
  976. end
  977. pbDisposeSpriteHash(@sprites)
  978. @viewport.dispose
  979. end
  980.  
  981. def update
  982. @sprites["sel"].x=@sprites["choice#{@index}"].x
  983. @sprites["back"].opacity+=25.5 if @sprites["back"].opacity < 255
  984. if Input.trigger?(Input::LEFT)
  985. pbSEPlay("SE_Select1")
  986. @index-=1
  987. @index=@commands.length-1 if @index < 0
  988. @sprites["choice#{@index}"].src_rect.y+=6
  989. end
  990. if Input.trigger?(Input::RIGHT)
  991. pbSEPlay("SE_Select1")
  992. @index+=1
  993. @index=0 if @index >=@commands.length
  994. @sprites["choice#{@index}"].src_rect.y+=6
  995. end
  996. for i in 0...@commands.length
  997. @sprites["choice#{i}"].src_rect.y-=1 if @sprites["choice#{i}"].src_rect.y > 0
  998. @sprites["choice#{i}"].y-=(@sprites["choice#{i}"].y-220)*0.4
  999. end
  1000. end
  1001.  
  1002. end
  1003. #===============================================================================
  1004. # Battle Bag interface
  1005. # UI ovarhaul
  1006. #===============================================================================
  1007. class NewBattleBag
  1008. attr_reader :index
  1009. attr_reader :ret
  1010.  
  1011. def pbDisplayMessage(msg)
  1012. @scene.changeMessageViewport(@viewport)
  1013. @scene.pbDisplayMessage(msg)
  1014. @scene.clearMessageWindow
  1015. @scene.changeMessageViewport
  1016. end
  1017.  
  1018. def initialize(scene,viewport)
  1019. @scene=scene
  1020. $lastUsed=0 if $lastUsed.nil?
  1021. @background=Viewport.new(0,0,Graphics.width,Graphics.height)
  1022. @background.z=viewport.z+5
  1023. @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
  1024. @viewport.z=viewport.z+5
  1025. @lastUsed=$lastUsed
  1026. @index=0
  1027. @item=0
  1028. @page=-1
  1029. @selPocket=0
  1030. @ret=nil
  1031. @baseColor=PokeBattle_SceneConstants::MESSAGEBASECOLOR
  1032. @shadowColor=PokeBattle_SceneConstants::MESSAGESHADOWCOLOR
  1033.  
  1034.  
  1035. @sprites={}
  1036. @items={}
  1037. @bitmaps=[pbBitmap("Graphics/Pictures/battleBagChoices"),pbBitmap("Graphics/Pictures/battleBagLast"),pbBitmap("Graphics/Pictures/battleBackButtons")]
  1038. @sprites["back"]=Sprite.new(@background)
  1039. @sprites["back"].bitmap=pbBitmap("Graphics/Pictures/shadeFull")
  1040. @sprites["back"].opacity=0
  1041. @sprites["sel"]=Sprite.new(@viewport)
  1042. @sprites["sel"].x=-216
  1043. @sprites["sel"].y=34
  1044. @sprites["name"]=Sprite.new(@viewport)
  1045. @sprites["name"].bitmap=Bitmap.new(380,44)
  1046. pbSetSystemFont(@sprites["name"].bitmap)
  1047. @sprites["name"].x=-380
  1048. @sprites["name"].y=328
  1049. for i in 0...4
  1050. @sprites["pocket#{i}"]=Sprite.new(@viewport)
  1051. @sprites["pocket#{i}"].bitmap=@bitmaps[0]
  1052. @sprites["pocket#{i}"].src_rect.set(216*i,0,216,92)
  1053. @sprites["pocket#{i}"].x=24+(i%2)*244+((i%2==0) ? -260 : 260)
  1054. @sprites["pocket#{i}"].y=34+(i/2)*118+(i%2)*42
  1055. end
  1056. @sprites["pocket4"]=Sprite.new(@viewport)
  1057. @sprites["pocket4"].bitmap=Bitmap.new(356,60)
  1058. pbSetSystemFont(@sprites["pocket4"].bitmap)
  1059. @sprites["pocket4"].x=24
  1060. @sprites["pocket4"].y=316+80
  1061. self.refresh
  1062. @sprites["pocket5"]=Sprite.new(@viewport)
  1063. @sprites["pocket5"].bitmap=@bitmaps[2]
  1064. @sprites["pocket5"].src_rect.set(0,0,120,52)
  1065. @sprites["pocket5"].x=384
  1066. @sprites["pocket5"].y=320+80
  1067. @sprites["pocket5"].z=5
  1068.  
  1069. @sprites["confirm"]=Sprite.new(@viewport)
  1070. @sprites["confirm"].bitmap=Bitmap.new(466,156)
  1071. pbSetSmallFont(@sprites["confirm"].bitmap)
  1072. @sprites["confirm"].x=26-520
  1073. @sprites["confirm"].y=80
  1074. @sprites["cancel"]=Sprite.new(@viewport)
  1075. @sprites["cancel"].bitmap=pbBitmap("Graphics/Pictures/battleItemConfirm")
  1076. @sprites["cancel"].src_rect.set(466,0,466,72)
  1077. @sprites["cancel"].x=26-520
  1078. @sprites["cancel"].y=234
  1079.  
  1080. end
  1081.  
  1082. def drawPocket(pocket)
  1083. @pocket=[]
  1084. tp=$PokemonBag.pockets[pocket]
  1085. tp=tp+$PokemonBag.pockets[1] if pocket==7
  1086. for i in 0...tp.length
  1087. item=tp[i]
  1088. @pocket.push([item[0],item[1]]) if ItemHandlers.hasUseInBattle(item[0]) || ItemHandlers.hasBattleUseOnPokemon(item[0]) || ItemHandlers.hasBattleUseOnBattler(item[0])
  1089. end
  1090. if @pocket.length < 1
  1091. pbDisplayMessage("You have no usable items in this pocket.")
  1092. return
  1093. end
  1094. @xpos=[]
  1095. @pages=@pocket.length/6
  1096. @pages+=1 if @pocket.length%6 > 0
  1097. @page=0
  1098. @item=0
  1099. @back=false
  1100. @selPocket=pocket
  1101. pbDisposeSpriteHash(@items)
  1102. @pname=pbPocketNames[pocket]
  1103. x=0
  1104. y=0
  1105. for j in 0...@pocket.length
  1106. i=j
  1107. @items["#{j}"]=Sprite.new(@viewport)
  1108. @items["#{j}"].bitmap=Bitmap.new(216,92)
  1109. pbSetSystemFont(@items["#{j}"].bitmap)
  1110. @items["#{j}"].bitmap.blt(0,0,@bitmaps[0],Rect.new(216*5,0,216,92))
  1111. @items["#{j}"].bitmap.blt(156,32,pbBitmap(sprintf("Graphics/Icons/item%03d",@pocket[i][0])),Rect.new(0,0,48,48))
  1112. pbDrawOutlineText(@items["#{j}"].bitmap,8,8,200,38,"#{PBItems.getName(@pocket[i][0])}",@baseColor,@shadowColor,1)
  1113. pbDrawOutlineText(@items["#{j}"].bitmap,8,46,200,38,"x#{@pocket[i][1]}",@baseColor,@shadowColor,1)
  1114.  
  1115. @items["#{j}"].x=28+x*246+(i/6)*512+512
  1116. @xpos.push(@items["#{j}"].x-512)
  1117. @items["#{j}"].y=28+y*90
  1118. @items["#{j}"].opacity=255
  1119. x+=1
  1120. y+=1 if x > 1
  1121. x=0 if x > 1
  1122. y=0 if y > 2
  1123. end
  1124. end
  1125.  
  1126. def name
  1127. bitmap=@sprites["name"].bitmap
  1128. bitmap.clear
  1129. bitmap.blt(0,0,pbBitmap("Graphics/Pictures/battleLastItem"),Rect.new(0,0,320,44))
  1130. pbDrawOutlineText(bitmap,0,0,320,36,@pname,@baseColor,@shadowColor,1)
  1131. pbDrawOutlineText(bitmap,300,0,80,36,"#{@page+1}/#{@pages}",@baseColor,@shadowColor,1)
  1132. @sprites["name"].x+=38 if @sprites["name"].x < 0
  1133. end
  1134.  
  1135. def updatePocket
  1136. @page=@item/6
  1137. self.name
  1138. for i in 0...@pocket.length
  1139. @items["#{i}"].x-=(@items["#{i}"].x-(@xpos[i]-@page*512))*0.2
  1140. @items["#{i}"].src_rect.y-=1 if @items["#{i}"].src_rect.y > 0
  1141. end
  1142. if @back
  1143. @sprites["sel"].bitmap=@bitmaps[2]
  1144. @sprites["sel"].src_rect.set(120*2,0,120,52)
  1145. @sprites["sel"].x=@sprites["pocket5"].x
  1146. @sprites["sel"].y=@sprites["pocket5"].y
  1147. else
  1148. @sprites["sel"].bitmap=@bitmaps[0]
  1149. @sprites["sel"].src_rect.set(216*4,0,216,92)
  1150. @sprites["sel"].x=@items["#{@item}"].x
  1151. @sprites["sel"].y=@items["#{@item}"].y
  1152. end
  1153. @sprites["pocket5"].src_rect.y-=1 if @sprites["pocket5"].src_rect.y > 0
  1154. if Input.trigger?(Input::LEFT) && !@back
  1155. pbSEPlay("SE_Select1")
  1156. if ![0,2,4].include?(@item)
  1157. if @item%2==0
  1158. @item-=5
  1159. else
  1160. @item-=1
  1161. end
  1162. else
  1163. @item-=1 if @item < 0
  1164. end
  1165. @item=0 if @item < 0
  1166. @items["#{@item}"].src_rect.y+=6
  1167. end
  1168. if Input.trigger?(Input::RIGHT) && !@back
  1169. pbSEPlay("SE_Select1")
  1170. if @page < (@pocket.length)/6
  1171. if @item%2==1
  1172. @item+=5
  1173. else
  1174. @item+=1
  1175. end
  1176. else
  1177. @item+=1 if @item < @pocket.length-1
  1178. end
  1179. @item=@pocket.length-1 if @item > @pocket.length-1
  1180. @items["#{@item}"].src_rect.y+=6
  1181. end
  1182. if Input.trigger?(Input::UP)
  1183. pbSEPlay("SE_Select1")
  1184. if @back
  1185. @item+=4 if (@item%6) < 2
  1186. @back=false
  1187. else
  1188. @item-=2
  1189. if (@item%6) > 3
  1190. @item+=6
  1191. @back=true
  1192. end
  1193. end
  1194. @item=0 if @item < 0
  1195. @item=@pocket.length-1 if @item > @pocket.length-1
  1196. @items["#{@item}"].src_rect.y+=6 if !@back
  1197. @sprites["pocket5"].src_rect.y+=6 if @back
  1198. end
  1199. if Input.trigger?(Input::DOWN)
  1200. pbSEPlay("SE_Select1")
  1201. if @back
  1202. @item-=4 if (@item%6) > 3
  1203. @back=false
  1204. else
  1205. @item+=2
  1206. if (@item%6) < 2
  1207. @item-=6
  1208. @back=true
  1209. end
  1210. @back=true if @item > @pocket.length-1
  1211. end
  1212. @item=@pocket.length-1 if @item > @pocket.length-1
  1213. @item=0 if @item < 0
  1214. @items["#{@item}"].src_rect.y+=6 if !@back
  1215. @sprites["pocket5"].src_rect.y+=6 if @back
  1216. end
  1217. if (@back && Input.trigger?(Input::C)) || Input.trigger?(Input::B)
  1218. pbSEPlay("SE_Select3")
  1219. @selPocket=0
  1220. @page=-1
  1221. @back=false
  1222. @doubleback=true
  1223. end
  1224. end
  1225.  
  1226. def closeCurrent
  1227. @selPocket=0
  1228. @page=-1
  1229. @back=false
  1230. @ret=nil
  1231. self.refresh
  1232. end
  1233.  
  1234. def show
  1235. @ret=nil
  1236. self.refresh
  1237. for i in 0...6
  1238. @sprites["pocket#{i}"].opacity=255
  1239. end
  1240. @sprites["pocket4"].y=316+80
  1241. @sprites["pocket5"].y=320+80
  1242. pbSEPlay("SE_Zoom4")
  1243. 10.times do
  1244. for i in 0...4
  1245. @sprites["pocket#{i}"].x+=((i%2==0) ? 26 : -26)
  1246. end
  1247. for i in 4...6
  1248. @sprites["pocket#{i}"].y-=8
  1249. end
  1250. @sprites["back"].opacity+=25.5
  1251. @scene.animateBattleSprites(true)
  1252. @scene.pbGraphicsUpdate
  1253. end
  1254. end
  1255.  
  1256. def hide
  1257. @sprites["sel"].x=Graphics.width
  1258. 10.times do
  1259. for i in 0...4
  1260. @sprites["pocket#{i}"].x-=((i%2==0) ? 26 : -26)
  1261. end
  1262. for i in 4...6
  1263. @sprites["pocket#{i}"].y+=8
  1264. end
  1265. if @pocket
  1266. for i in 0...@pocket.length
  1267. @items["#{i}"].opacity-=25.5
  1268. end
  1269. end
  1270. @sprites["name"].x-=38
  1271. @sprites["back"].opacity-=25.5
  1272. @scene.animateBattleSprites(true)
  1273. @scene.pbGraphicsUpdate
  1274. end
  1275. end
  1276.  
  1277. def useItem?
  1278. Input.update
  1279. bitmap=@sprites["confirm"].bitmap
  1280. bitmap.clear
  1281. bitmap.blt(0,0,pbBitmap("Graphics/Pictures/battleItemConfirm"),Rect.new(0,0,466,156))
  1282. bitmap.blt(20,30,pbBitmap(sprintf("Graphics/Icons/item%03d",@ret)),Rect.new(0,0,48,48))
  1283. drawTextEx(bitmap,80,12,364,3,pbGetMessage(MessageTypes::ItemDescriptions,@ret),@shadowColor,Color.new(200,200,200))
  1284. @sprites["sel"].bitmap=pbBitmap("Graphics/Pictures/battleItemConfirm")
  1285. @sprites["sel"].x=Graphics.width
  1286. @sprites["sel"].src_rect.width=466
  1287. 10.times do
  1288. @sprites["confirm"].x+=52
  1289. @sprites["cancel"].x+=52
  1290. if @pocket
  1291. for i in 0...@pocket.length
  1292. @items["#{i}"].opacity-=25.5
  1293. end
  1294. end
  1295. for i in 0...4
  1296. @sprites["pocket#{i}"].opacity-=51 if @sprites["pocket#{i}"].opacity > 0
  1297. end
  1298. @sprites["pocket4"].y+=8 if @sprites["pocket4"].y < 316+80
  1299. @sprites["pocket5"].y+=8 if @sprites["pocket5"].y < 400
  1300. @sprites["name"].x-=38
  1301. @scene.animateBattleSprites
  1302. @scene.pbGraphicsUpdate
  1303. end
  1304. @sprites["name"].x=-380
  1305. index=0
  1306. choice=(index==0) ? "confirm" : "cancel"
  1307. loop do
  1308. @sprites["sel"].x=@sprites["#{choice}"].x
  1309. @sprites["sel"].y=@sprites["#{choice}"].y
  1310. @sprites["sel"].src_rect.x=(466*(index+2))
  1311. @sprites["#{choice}"].src_rect.y-=1 if @sprites["#{choice}"].src_rect.y > 0
  1312. if Input.trigger?(Input::UP)
  1313. pbSEPlay("SE_Select1")
  1314. index-=1
  1315. index=1 if index < 0
  1316. choice=(index==0) ? "confirm" : "cancel"
  1317. @sprites["#{choice}"].src_rect.y+=6
  1318. end
  1319. if Input.trigger?(Input::DOWN)
  1320. pbSEPlay("SE_Select1")
  1321. index+=1
  1322. index=0 if index > 1
  1323. choice=(index==0) ? "confirm" : "cancel"
  1324. @sprites["#{choice}"].src_rect.y+=6
  1325. end
  1326. if Input.trigger?(Input::C)
  1327. pbSEPlay("SE_Select2")
  1328. break
  1329. end
  1330. Input.update
  1331. @scene.animateBattleSprites
  1332. @scene.pbGraphicsUpdate
  1333. end
  1334. @sprites["sel"].x=Graphics.width
  1335. self.refresh
  1336. 10.times do
  1337. @sprites["confirm"].x-=52
  1338. @sprites["cancel"].x-=52
  1339. @sprites["pocket5"].y-=8 if index > 0
  1340. @scene.animateBattleSprites
  1341. @scene.pbGraphicsUpdate
  1342. end
  1343. if index > 0
  1344. @ret=nil
  1345. return false
  1346. else
  1347. @index=0 if @index==4 && @lastUsed==0
  1348. return true
  1349. end
  1350. end
  1351.  
  1352. def finish
  1353. if (Input.trigger?(Input::B) || (Input.trigger?(Input::C) && @index==5)) && @selPocket==0 && !@doubleback
  1354. pbSEPlay("SE_Select3")
  1355. return true
  1356. end
  1357. @doubleback=false
  1358. return false
  1359. end
  1360.  
  1361. def refresh
  1362. bitmap=@sprites["pocket4"].bitmap
  1363. bitmap.clear
  1364. i=(@lastUsed > 0 ? 1 : 0)
  1365. text=["","#{PBItems.getName(@lastUsed)}"]
  1366. bitmap.blt(0,0,@bitmaps[1],Rect.new(i*356,0,356,60))
  1367. bitmap.blt(28,6,pbBitmap(sprintf("Graphics/Icons/item%03d",@lastUsed)),Rect.new(0,0,48,48)) if @lastUsed>0
  1368. pbDrawOutlineText(bitmap,0,0,356,60,text[i],@baseColor,@shadowColor,1)
  1369. end
  1370.  
  1371. def update
  1372. if @selPocket==0
  1373. updateMain
  1374. for i in 0...4
  1375. @sprites["pocket#{i}"].opacity+=51 if @sprites["pocket#{i}"].opacity < 255
  1376. end
  1377. @sprites["pocket4"].y-=8 if @sprites["pocket4"].y > 316
  1378. if @pocket
  1379. for i in 0...@pocket.length
  1380. @items["#{i}"].opacity-=51 if @items["#{i}"] && @items["#{i}"].opacity > 0
  1381. end
  1382. end
  1383. @sprites["name"].x-=38 if @sprites["name"].x > -380
  1384. else
  1385. if Input.trigger?(Input::C) && !@back
  1386. pbSEPlay("SE_Select2")
  1387. @selPocket=0
  1388. @page=-1
  1389. @lastUsed=0
  1390. @lastUsed=@pocket[@item][0] if @pocket[@item][1] > 1
  1391. $lastUsed=@lastUsed
  1392. @ret=@pocket[@item][0]
  1393. end
  1394. updatePocket
  1395. for i in 0...4
  1396. @sprites["pocket#{i}"].opacity-=51 if @sprites["pocket#{i}"].opacity > 0
  1397. end
  1398. @sprites["pocket4"].y+=8 if @sprites["pocket4"].y < 316+80
  1399. for i in 0...@pocket.length
  1400. @items["#{i}"].opacity+=51 if @items["#{i}"] && @items["#{i}"].opacity < 255
  1401. end
  1402. end
  1403. end
  1404.  
  1405. def updateMain
  1406. if @index < 4
  1407. @sprites["sel"].bitmap=@bitmaps[0]
  1408. @sprites["sel"].src_rect.set(216*4,0,216,92)
  1409. elsif @index==4
  1410. @sprites["sel"].bitmap=@bitmaps[1]
  1411. @sprites["sel"].src_rect.set(356*2,0,356,60)
  1412. else
  1413. @sprites["sel"].bitmap=@bitmaps[2]
  1414. @sprites["sel"].src_rect.set(120*2,0,120,52)
  1415. end
  1416. @sprites["sel"].x=@sprites["pocket#{@index}"].x
  1417. @sprites["sel"].y=@sprites["pocket#{@index}"].y
  1418. if Input.trigger?(Input::LEFT)
  1419. pbSEPlay("SE_Select1")
  1420. @index-=1
  1421. @index+=2 if @index%2==1
  1422. @index=3 if @index==4 && !(@lastUsed > 0)
  1423. @sprites["pocket#{@index}"].src_rect.y+=6
  1424. end
  1425. if Input.trigger?(Input::RIGHT)
  1426. pbSEPlay("SE_Select1")
  1427. @index+=1
  1428. @index-=2 if @index%2==0
  1429. @index=2 if @index==4 && !(@lastUsed > 0)
  1430. @sprites["pocket#{@index}"].src_rect.y+=6
  1431. end
  1432. if Input.trigger?(Input::UP)
  1433. pbSEPlay("SE_Select1")
  1434. @index-=2
  1435. @index+=6 if @index < 0
  1436. @index=5 if @index==4 && !(@lastUsed > 0)
  1437. @sprites["pocket#{@index}"].src_rect.y+=6
  1438. end
  1439. if Input.trigger?(Input::DOWN)
  1440. pbSEPlay("SE_Select1")
  1441. @index+=2
  1442. @index-=6 if @index > 5
  1443. @index=5 if @index==4 && !(@lastUsed > 0)
  1444. @sprites["pocket#{@index}"].src_rect.y+=6
  1445. end
  1446. for i in 0...6
  1447. @sprites["pocket#{i}"].src_rect.y-=1 if @sprites["pocket#{i}"].src_rect.y > 0
  1448. end
  1449. if Input.trigger?(Input::C) && !@doubleback && @index < 5
  1450. pbSEPlay("SE_Select2")
  1451. if @index < 4
  1452. cmd=[2,3,5,7]
  1453. self.drawPocket(cmd[@index])
  1454. else
  1455. @selPocket=0
  1456. @page=-1
  1457. @ret=@lastUsed
  1458. @lastUsed=0 if !($PokemonBag.pbQuantity(@lastUsed) > 1)
  1459. end
  1460. end
  1461. end
  1462.  
  1463. end
  1464.  
  1465. class PokeBattle_Scene
  1466. alias pbItemMenu_old pbItemMenu
  1467. def pbItemMenu(index)
  1468. @idleTimer=-1
  1469. @vector.set(VECTOR[0],VECTOR[1],VECTOR[2],VECTOR[3],VECTOR[4],VECTOR[5])
  1470. @vector.inc=0.2
  1471. Input.update
  1472. return pbItemMenu_old(index) if !USENEWUI
  1473. ret=0
  1474. retindex=-1
  1475. pkmnid=-1
  1476. @bagWindow.show
  1477. loop do
  1478. break if @bagWindow.finish
  1479. Input.update
  1480. @bagWindow.update
  1481. if !@bagWindow.ret.nil? && @bagWindow.useItem?
  1482. item=@bagWindow.ret
  1483. usetype=$ItemData[item][ITEMBATTLEUSE]
  1484. if usetype==1 || usetype==3
  1485. modparty=[]
  1486. for i in 0...6
  1487. modparty.push(@battle.party1[@battle.partyorder[i]])
  1488. end
  1489. pkmnlist=PokemonScreen_Scene.new
  1490. pkmnlist.addPriority=true
  1491. pkmnscreen=PokemonScreen.new(pkmnlist,modparty)
  1492. pkmnscreen.pbStartScene(_INTL("Use on which Pokémon?"),@battle.doublebattle)
  1493. activecmd=pkmnscreen.pbChoosePokemon
  1494. pkmnid=@battle.partyorder[activecmd]
  1495. if activecmd>=0 && pkmnid>=0 && ItemHandlers.hasBattleUseOnPokemon(item)
  1496. pkmnlist.pbEndScene
  1497. ret=item
  1498. retindex=pkmnid
  1499. break
  1500. end
  1501. pkmnlist.pbEndScene
  1502. @bagWindow.closeCurrent
  1503. #itemscene.pbStartScene($PokemonBag)
  1504. elsif usetype==2 || usetype==4
  1505. if ItemHandlers.hasBattleUseOnBattler(item)
  1506. ret=item
  1507. retindex=index
  1508. break
  1509. end
  1510. end
  1511. end
  1512. animateBattleSprites
  1513. pbGraphicsUpdate
  1514. end
  1515. @bagWindow.hide
  1516. pbConsumeItemInBattle($PokemonBag,ret) if ret > 0
  1517. return [ret,retindex]
  1518. end
  1519. end
  1520.  
  1521. class PokemonScreen_Scene
  1522. attr_accessor :addPriority
  1523. def pbStartScene(party,starthelptext,annotations=nil,multiselect=false)
  1524. @sprites={}
  1525. @party=party
  1526. @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
  1527. @viewport.z=99999
  1528. @viewport.z+=6 if @addPriority
  1529. @multiselect=multiselect
  1530. addBackgroundPlane(@sprites,"partybg","partybg",@viewport)
  1531. @sprites["messagebox"]=Window_AdvancedTextPokemon.new("")
  1532. @sprites["helpwindow"]=Window_UnformattedTextPokemon.new(starthelptext)
  1533. @sprites["messagebox"].viewport=@viewport
  1534. @sprites["messagebox"].visible=false
  1535. @sprites["messagebox"].letterbyletter=true
  1536. @sprites["helpwindow"].viewport=@viewport
  1537. @sprites["helpwindow"].visible=true
  1538. pbBottomLeftLines(@sprites["messagebox"],2)
  1539. pbBottomLeftLines(@sprites["helpwindow"],1)
  1540. pbSetHelpText(starthelptext)
  1541. # Add party Pokémon sprites
  1542. for i in 0...6
  1543. if @party[i]
  1544. @sprites["pokemon#{i}"]=PokeSelectionSprite.new(
  1545. @party[i],i,@viewport)
  1546. else
  1547. @sprites["pokemon#{i}"]=PokeSelectionPlaceholderSprite.new(
  1548. @party[i],i,@viewport)
  1549. end
  1550. if annotations
  1551. @sprites["pokemon#{i}"].text=annotations[i]
  1552. end
  1553. end
  1554. if @multiselect
  1555. @sprites["pokemon6"]=PokeSelectionConfirmSprite.new(@viewport)
  1556. @sprites["pokemon7"]=PokeSelectionCancelSprite2.new(@viewport)
  1557. else
  1558. @sprites["pokemon6"]=PokeSelectionCancelSprite.new(@viewport)
  1559. end
  1560. # Select first Pokémon
  1561. @activecmd=0
  1562. @sprites["pokemon0"].selected=true
  1563. pbFadeInAndShow(@sprites) { update }
  1564. end
  1565. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement