Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 36.22 KB | None | 0 0
  1. class MoveSelectionSprite < SpriteWrapper
  2. attr_reader :preselected
  3. attr_reader :index
  4.  
  5. def initialize(viewport=nil,fifthmove=false)
  6. super(viewport)
  7. @movesel=AnimatedBitmap.new("Graphics/Pictures/summarymovesel")
  8. @frame=0
  9. @index=0
  10. @fifthmove=fifthmove
  11. @preselected=false
  12. @updating=false
  13. @spriteVisible=true
  14. refresh
  15. end
  16.  
  17. def dispose
  18. @movesel.dispose
  19. super
  20. end
  21.  
  22. def index=(value)
  23. @index=value
  24. refresh
  25. end
  26.  
  27. def preselected=(value)
  28. @preselected=value
  29. refresh
  30. end
  31.  
  32. def visible=(value)
  33. super
  34. @spriteVisible=value if !@updating
  35. end
  36.  
  37. def refresh
  38. w=@movesel.width
  39. h=@movesel.height/2
  40. self.x=240
  41. self.y=92+(self.index*64)
  42. self.y-=76 if @fifthmove
  43. self.y+=20 if @fifthmove && self.index==4
  44. self.bitmap=@movesel.bitmap
  45. if self.preselected
  46. self.src_rect.set(0,h,w,h)
  47. else
  48. self.src_rect.set(0,0,w,h)
  49. end
  50. end
  51.  
  52. def update
  53. @updating=true
  54. super
  55. @movesel.update
  56. @updating=false
  57. refresh
  58. end
  59. end
  60.  
  61.  
  62.  
  63. class PokemonSummaryScene
  64. def pbPokerus(pkmn)
  65. return pkmn.pokerusStage
  66. end
  67.  
  68. def pbUpdate
  69. pbUpdateSpriteHash(@sprites)
  70. end
  71.  
  72. def pbStartScene(party,partyindex)
  73. @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
  74. @viewport.z=99999
  75. @party=party
  76. @partyindex=partyindex
  77. @pokemon=@party[@partyindex]
  78. @sprites={}
  79. @typebitmap=AnimatedBitmap.new(_INTL("Graphics/Pictures/types"))
  80. @sprites["background"]=IconSprite.new(0,0,@viewport)
  81. @sprites["overlay"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
  82. @sprites["pokemon"]=PokemonSprite.new(@viewport)
  83. @sprites["pokemon"].setPokemonBitmap(@pokemon)
  84. @sprites["pokemon"].mirror=true
  85. @sprites["pokemon"].color=Color.new(0,0,0,0)
  86. pbPositionPokemonSprite(@sprites["pokemon"],22,90)
  87. @sprites["pokeicon"]=PokemonBoxIcon.new(@pokemon,@viewport)
  88. @sprites["pokeicon"].x=14
  89. @sprites["pokeicon"].y=52
  90. @sprites["pokeicon"].mirror=false
  91. @sprites["pokeicon"].visible=false
  92. @sprites["movepresel"]=MoveSelectionSprite.new(@viewport)
  93. @sprites["movepresel"].visible=false
  94. @sprites["movepresel"].preselected=true
  95. @sprites["movesel"]=MoveSelectionSprite.new(@viewport)
  96. @sprites["movesel"].visible=false
  97. @page=0
  98. drawPageOne(@pokemon)
  99. pbFadeInAndShow(@sprites) { pbUpdate }
  100. end
  101.  
  102. def pbStartForgetScene(party,partyindex,moveToLearn)
  103. @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
  104. @viewport.z=99999
  105. @party=party
  106. @partyindex=partyindex
  107. @pokemon=@party[@partyindex]
  108. @sprites={}
  109. @page=3
  110. @typebitmap=AnimatedBitmap.new(_INTL("Graphics/Pictures/types"))
  111. @sprites["background"]=IconSprite.new(0,0,@viewport)
  112. @sprites["overlay"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
  113. @sprites["pokeicon"]=PokemonBoxIcon.new(@pokemon,@viewport)
  114. @sprites["pokeicon"].x=14
  115. @sprites["pokeicon"].y=52
  116. @sprites["pokeicon"].mirror=false
  117. @sprites["movesel"]=MoveSelectionSprite.new(@viewport,moveToLearn>0)
  118. @sprites["movesel"].visible=false
  119. @sprites["movesel"].visible=true
  120. @sprites["movesel"].index=0
  121. drawSelectedMove(@pokemon,moveToLearn,@pokemon.moves[0].id)
  122. pbFadeInAndShow(@sprites)
  123. end
  124.  
  125. def pbEndScene
  126. pbFadeOutAndHide(@sprites) { pbUpdate }
  127. pbDisposeSpriteHash(@sprites)
  128. @typebitmap.dispose
  129. @viewport.dispose
  130. end
  131.  
  132. def drawMarkings(bitmap,x,y,width,height,markings)
  133. totaltext=""
  134. oldfontname=bitmap.font.name
  135. oldfontsize=bitmap.font.size
  136. oldfontcolor=bitmap.font.color
  137. bitmap.font.size=24
  138. bitmap.font.name="Arial"
  139. PokemonStorage::MARKINGCHARS.each{|item| totaltext+=item }
  140. totalsize=bitmap.text_size(totaltext)
  141. realX=x+(width/2)-(totalsize.width/2)
  142. realY=y+(height/2)-(totalsize.height/2)
  143. i=0
  144. PokemonStorage::MARKINGCHARS.each{|item|
  145. marked=(markings&(1<<i))!=0
  146. bitmap.font.color=(marked) ? Color.new(72,64,56) : Color.new(184,184,160)
  147. itemwidth=bitmap.text_size(item).width
  148. bitmap.draw_text(realX,realY,itemwidth+2,totalsize.height,item)
  149. realX+=itemwidth
  150. i+=1
  151. }
  152. bitmap.font.name=oldfontname
  153. bitmap.font.size=oldfontsize
  154. bitmap.font.color=oldfontcolor
  155. end
  156.  
  157. def drawPageOne(pokemon)
  158. if pokemon.isEgg?
  159. drawPageOneEgg(pokemon)
  160. return
  161. end
  162. overlay=@sprites["overlay"].bitmap
  163. overlay.clear
  164. @sprites["background"].setBitmap("Graphics/Pictures/BrassSummary1")
  165. imagepos=[]
  166. if pbPokerus(pokemon)==1 || pokemon.hp==0 || @pokemon.status>0
  167. status=6 if pbPokerus(pokemon)==1
  168. status=@pokemon.status-1 if @pokemon.status>0
  169. status=5 if pokemon.hp==0
  170. imagepos.push(["Graphics/Pictures/statuses",120,230,0,16*status,44,16])
  171. end
  172. if pokemon.isShiny?
  173. imagepos.push([sprintf("Graphics/Pictures/shiny"),6,230,0,0,-1,-1])
  174. end
  175. #if pbPokerus(pokemon)==2
  176. # imagepos.push([sprintf("Graphics/Pictures/summaryPokerus"),10,10,0,0,-1,-1])
  177. #end
  178. ballused=@pokemon.ballused ? @pokemon.ballused : 0
  179. ballimage=sprintf("Graphics/Pictures/summaryball%02d",@pokemon.ballused)
  180. imagepos.push([ballimage,48,286,0,0,-1,-1])
  181. if (pokemon.isShadow? rescue false)
  182. imagepos.push(["Graphics/Pictures/summaryShadow",224,240,0,0,-1,-1])
  183. shadowfract=pokemon.heartgauge*1.0/PokeBattle_Pokemon::HEARTGAUGESIZE
  184. imagepos.push(["Graphics/Pictures/summaryShadowBar",242,280,0,0,(shadowfract*248).floor,-1])
  185. end
  186. pbDrawImagePositions(overlay,imagepos)
  187. base=Color.new(0,0,0)
  188. shadow=Color.new(104,104,104)
  189. white=Color.new(248,248,248)
  190. green=Color.new(136,248,104)
  191. pbSetSystemFont(overlay)
  192. # TO BE CHANGED IN THE FUTURE:
  193. numberbase=(pokemon.isShiny?) ? Color.new(248,56,32) : Color.new(64,64,64)
  194. numbershadow=(pokemon.isShiny?) ? Color.new(224,152,144) : Color.new(176,176,176)
  195. #
  196. publicID=pokemon.publicID
  197. speciesname=PBSpecies.getName(pokemon.species)
  198. growthrate=pokemon.growthrate
  199. startexp=PBExperience.pbGetStartExperience(pokemon.level,growthrate)
  200. endexp=PBExperience.pbGetStartExperience(pokemon.level+1,growthrate)
  201. pokename=@pokemon.name
  202. # Left side of the Summary Screen
  203. # Colours are base, white
  204. # To center text on this side, make sure X is 84 and the third numb is 2
  205. textpos=[
  206. [_INTL("INFO"),84,2,2,base,white],
  207. [pokename,84,34,2,base,white],
  208. [_INTL("Lv"),84,288,0,base,white],
  209. [pokemon.level.to_s,106,288,0,base,white]
  210. ]
  211. if pokemon.hasItem?
  212. textpos.push([PBItems.getName(pokemon.item),84,254,2,base,white])
  213. else
  214. textpos.push([_INTL("NONE"),62,254,0,base,white])
  215. end
  216. if pokemon.isMale?
  217. textpos.push([_INTL("♂"),32,288,0,Color.new(120,96,240),Color.new(248,248,248)])
  218. elsif pokemon.isFemale?
  219. textpos.push([_INTL("♀"),32,288,0,Color.new(248,56,8),Color.new(248,248,248)])
  220. end
  221. pbDrawTextPositions(overlay,textpos)
  222. # Rest of page one
  223. # Colours are base, green
  224. textpos=[
  225. [_ISPRINTF("Dex No."),228,36,2,base,green],
  226. [sprintf("%03d",pokemon.species),400,36,2,base,green],
  227. [_INTL("Species"),228,70,2,base,green],
  228. [speciesname,400,70,2,base,green],
  229. [_INTL("Type"),228,104,2,base,green],
  230. [_INTL("OT"),228,138,2,base,green],
  231. [_INTL("ID No."),228,170,2,base,green],
  232. ]
  233. textpos.push([_INTL("EXP."),228,254,2,base,green])
  234. textpos.push([sprintf("%d",pokemon.exp),400,254,2,base,green])
  235. textpos.push([_INTL("TO NEXT"),228,288,2,base,green])
  236. textpos.push([sprintf("%d",endexp-pokemon.exp),400,288,2,base,green])
  237. idno=(pokemon.ot=="") ? "?????" : sprintf("%05d",publicID)
  238. textpos.push([idno,402,170,2,base,green])
  239. if pokemon.ot==""
  240. textpos.push([_INTL("RENTAL"),402,138,2,Color.new(64,64,64),Color.new(176,176,176)])
  241. else
  242. textpos.push([pokemon.ot,402,138,2,base,green])
  243. end
  244. pbDrawTextPositions(overlay,textpos)
  245. drawMarkings(overlay,440,4,72,20,pokemon.markings)
  246. type1rect=Rect.new(0,pokemon.type1*28,64,28)
  247. type2rect=Rect.new(0,pokemon.type2*28,64,28)
  248. if pokemon.type1==pokemon.type2
  249. overlay.blt(368,104,@typebitmap.bitmap,type1rect)
  250. else
  251. overlay.blt(370,104,@typebitmap.bitmap,type1rect)
  252. overlay.blt(436,104,@typebitmap.bitmap,type2rect)
  253. end
  254. if pokemon.level<PBExperience::MAXLEVEL
  255. overlay.fill_rect(312,230,(pokemon.exp-startexp)*174/(endexp-startexp),6,Color.new(32,136,248))
  256. end
  257. end
  258.  
  259. def drawPageOneEgg(pokemon)
  260. overlay=@sprites["overlay"].bitmap
  261. overlay.clear
  262. @sprites["background"].setBitmap("Graphics/Pictures/summaryEgg")
  263. imagepos=[]
  264. ballused=@pokemon.ballused ? @pokemon.ballused : 0
  265. ballimage=sprintf("Graphics/Pictures/summaryball%02d",@pokemon.ballused)
  266. imagepos.push([ballimage,14,60,0,0,-1,-1])
  267. pbDrawImagePositions(overlay,imagepos)
  268. base=Color.new(248,248,248)
  269. shadow=Color.new(104,104,104)
  270. pbSetSystemFont(overlay)
  271. textpos=[
  272. [_INTL("TRAINER MEMO"),26,16,0,base,shadow],
  273. [pokemon.name,46,62,0,base,shadow],
  274. [_INTL("Item"),16,320,0,base,shadow]
  275. ]
  276. if pokemon.hasItem?
  277. textpos.push([PBItems.getName(pokemon.item),16,352,0,Color.new(64,64,64),Color.new(176,176,176)])
  278. else
  279. textpos.push([_INTL("None"),16,352,0,Color.new(184,184,160),Color.new(208,208,200)])
  280. end
  281. pbDrawTextPositions(overlay,textpos)
  282. memo=""
  283. if pokemon.timeReceived
  284. month=pbGetAbbrevMonthName(pokemon.timeReceived.mon)
  285. date=pokemon.timeReceived.day
  286. year=pokemon.timeReceived.year
  287. memo+=_INTL("<c3=404040,B0B0B0>{1} {2}, {3}\n",month,date,year)
  288. end
  289. mapname=pbGetMapNameFromId(pokemon.obtainMap)
  290. if (pokemon.obtainText rescue false) && pokemon.obtainText!=""
  291. mapname=pokemon.obtainText
  292. end
  293. if mapname && mapname!=""
  294. memo+=_INTL("<c3=404040,B0B0B0>A mysterious Pokémon Egg received from <c3=F83820,E09890>{1}<c3=404040,B0B0B0>.\n",mapname)
  295. end
  296. memo+="<c3=404040,B0B0B0>\n"
  297. memo+=_INTL("<c3=404040,B0B0B0>\"The Egg Watch\"\n")
  298. eggstate=_INTL("It looks like this Egg will take a long time to hatch.")
  299. eggstate=_INTL("What will hatch from this? It doesn't seem close to hatching.") if pokemon.eggsteps<10200
  300. eggstate=_INTL("It appears to move occasionally. It may be close to hatching.") if pokemon.eggsteps<2550
  301. eggstate=_INTL("Sounds can be heard coming from inside! It will hatch soon!") if pokemon.eggsteps<1275
  302. memo+=sprintf("<c3=404040,B0B0B0>%s\n",eggstate)
  303. drawFormattedTextEx(overlay,232,78,276,memo)
  304. drawMarkings(overlay,15,291,72,20,pokemon.markings)
  305. end
  306.  
  307. def drawPageTwo(pokemon)
  308. overlay=@sprites["overlay"].bitmap
  309. overlay.clear
  310. @sprites["background"].setBitmap("Graphics/Pictures/summary2")
  311. imagepos=[]
  312. if pbPokerus(pokemon)==1 || pokemon.hp==0 || @pokemon.status>0
  313. status=6 if pbPokerus(pokemon)==1
  314. status=@pokemon.status-1 if @pokemon.status>0
  315. status=5 if pokemon.hp==0
  316. imagepos.push(["Graphics/Pictures/statuses",124,100,0,16*status,44,16])
  317. end
  318. if pokemon.isShiny?
  319. imagepos.push([sprintf("Graphics/Pictures/shiny"),2,134,0,0,-1,-1])
  320. end
  321. if pbPokerus(pokemon)==2
  322. imagepos.push([sprintf("Graphics/Pictures/summaryPokerus"),176,100,0,0,-1,-1])
  323. end
  324. ballused=@pokemon.ballused ? @pokemon.ballused : 0
  325. ballimage=sprintf("Graphics/Pictures/summaryball%02d",@pokemon.ballused)
  326. imagepos.push([ballimage,14,60,0,0,-1,-1])
  327. pbDrawImagePositions(overlay,imagepos)
  328. base=Color.new(248,248,248)
  329. shadow=Color.new(104,104,104)
  330. pbSetSystemFont(overlay)
  331. naturename=PBNatures.getName(pokemon.nature)
  332. pokename=@pokemon.name
  333. textpos=[
  334. [_INTL("TRAINER MEMO"),26,16,0,base,shadow],
  335. [pokename,46,62,0,base,shadow],
  336. [pokemon.level.to_s,46,92,0,Color.new(64,64,64),Color.new(176,176,176)],
  337. [_INTL("Item"),16,320,0,base,shadow]
  338. ]
  339. if pokemon.hasItem?
  340. textpos.push([PBItems.getName(pokemon.item),16,352,0,Color.new(64,64,64),Color.new(176,176,176)])
  341. else
  342. textpos.push([_INTL("None"),16,352,0,Color.new(184,184,160),Color.new(208,208,200)])
  343. end
  344. if pokemon.isMale?
  345. textpos.push([_INTL("♂"),178,62,0,Color.new(24,112,216),Color.new(136,168,208)])
  346. elsif pokemon.isFemale?
  347. textpos.push([_INTL("♀"),178,62,0,Color.new(248,56,32),Color.new(224,152,144)])
  348. end
  349. pbDrawTextPositions(overlay,textpos)
  350. memo=""
  351. shownature=(!(pokemon.isShadow? rescue false)) || pokemon.heartStage<=3
  352. if shownature
  353. memo+=_INTL("<c3=F83820,E09890>{1}<c3=404040,B0B0B0> nature.\n",naturename)
  354. end
  355. if pokemon.timeReceived
  356. month=pbGetAbbrevMonthName(pokemon.timeReceived.mon)
  357. date=pokemon.timeReceived.day
  358. year=pokemon.timeReceived.year
  359. memo+=_INTL("<c3=404040,B0B0B0>{1} {2}, {3}\n",month,date,year)
  360. end
  361. mapname=pbGetMapNameFromId(pokemon.obtainMap)
  362. if (pokemon.obtainText rescue false) && pokemon.obtainText!=""
  363. mapname=pokemon.obtainText
  364. end
  365. if mapname && mapname!=""
  366. memo+=sprintf("<c3=F83820,E09890>%s\n",mapname)
  367. else
  368. memo+=_INTL("<c3=F83820,E09890>Faraway place\n")
  369. end
  370. if pokemon.obtainMode
  371. mettext=[_INTL("Met at Lv. {1}.",pokemon.obtainLevel),
  372. _INTL("Egg received."),
  373. _INTL("Traded at Lv. {1}.",pokemon.obtainLevel),
  374. "",
  375. _INTL("Had a fateful encounter at Lv. {1}.",pokemon.obtainLevel)
  376. ][pokemon.obtainMode]
  377. memo+=sprintf("<c3=404040,B0B0B0>%s\n",mettext)
  378. if pokemon.obtainMode==1 # hatched
  379. if pokemon.timeEggHatched
  380. month=pbGetAbbrevMonthName(pokemon.timeEggHatched.mon)
  381. date=pokemon.timeEggHatched.day
  382. year=pokemon.timeEggHatched.year
  383. memo+=_INTL("<c3=404040,B0B0B0>{1} {2}, {3}\n",month,date,year)
  384. end
  385. mapname=pbGetMapNameFromId(pokemon.hatchedMap)
  386. if mapname && mapname!=""
  387. memo+=sprintf("<c3=F83820,E09890>%s\n",mapname)
  388. else
  389. memo+=_INTL("<c3=F83820,E09890>Faraway place\n")
  390. end
  391. memo+=_INTL("<c3=404040,B0B0B0>Egg hatched.\n")
  392. else
  393. memo+="<c3=404040,B0B0B0>\n"
  394. end
  395. end
  396. if shownature
  397. bestiv=0
  398. tiebreaker=pokemon.personalID%6
  399. for i in 0...6
  400. if pokemon.iv[i]==pokemon.iv[bestiv]
  401. bestiv=i if i>=tiebreaker && bestiv<tiebreaker
  402. elsif pokemon.iv[i]>pokemon.iv[bestiv]
  403. bestiv=i
  404. end
  405. end
  406. characteristic=[_INTL("Loves to eat."),
  407. _INTL("Often dozes off."),
  408. _INTL("Often scatters things."),
  409. _INTL("Scatters things often."),
  410. _INTL("Likes to relax."),
  411. _INTL("Proud of its power."),
  412. _INTL("Likes to thrash about."),
  413. _INTL("A little quick tempered."),
  414. _INTL("Likes to fight."),
  415. _INTL("Quick tempered."),
  416. _INTL("Sturdy body."),
  417. _INTL("Capable of taking hits."),
  418. _INTL("Highly persistent."),
  419. _INTL("Good endurance."),
  420. _INTL("Good perseverance."),
  421. _INTL("Likes to run."),
  422. _INTL("Alert to sounds."),
  423. _INTL("Impetuous and silly."),
  424. _INTL("Somewhat of a clown."),
  425. _INTL("Quick to flee."),
  426. _INTL("Highly curious."),
  427. _INTL("Mischievous."),
  428. _INTL("Thoroughly cunning."),
  429. _INTL("Often lost in thought."),
  430. _INTL("Very finicky."),
  431. _INTL("Strong willed."),
  432. _INTL("Somewhat vain."),
  433. _INTL("Strongly defiant."),
  434. _INTL("Hates to lose."),
  435. _INTL("Somewhat stubborn.")
  436. ][bestiv*5+pokemon.iv[bestiv]%5]
  437. memo+=sprintf("<c3=404040,B0B0B0>%s\n",characteristic)
  438. end
  439. drawFormattedTextEx(overlay,232,78,276,memo)
  440. drawMarkings(overlay,15,291,72,20,pokemon.markings)
  441. end
  442.  
  443. def drawPageThree(pokemon)
  444. overlay=@sprites["overlay"].bitmap
  445. overlay.clear
  446. @sprites["background"].setBitmap("Graphics/Pictures/summary3")
  447. imagepos=[]
  448. if pbPokerus(pokemon)==1 || pokemon.hp==0 || @pokemon.status>0
  449. status=6 if pbPokerus(pokemon)==1
  450. status=@pokemon.status-1 if @pokemon.status>0
  451. status=5 if pokemon.hp==0
  452. imagepos.push(["Graphics/Pictures/statuses",124,100,0,16*status,44,16])
  453. end
  454. if pokemon.isShiny?
  455. imagepos.push([sprintf("Graphics/Pictures/shiny"),2,134,0,0,-1,-1])
  456. end
  457. if pbPokerus(pokemon)==2
  458. imagepos.push([sprintf("Graphics/Pictures/summaryPokerus"),176,100,0,0,-1,-1])
  459. end
  460. ballused=@pokemon.ballused ? @pokemon.ballused : 0
  461. ballimage=sprintf("Graphics/Pictures/summaryball%02d",@pokemon.ballused)
  462. imagepos.push([ballimage,14,60,0,0,-1,-1])
  463. pbDrawImagePositions(overlay,imagepos)
  464. base=Color.new(248,248,248)
  465. shadow=Color.new(104,104,104)
  466. statshadows=[]
  467. for i in 0...5; statshadows[i]=shadow; end
  468. if !(pokemon.isShadow? rescue false) || pokemon.heartStage<=3
  469. natup=(pokemon.nature/5).floor
  470. natdn=(pokemon.nature%5).floor
  471. statshadows[natup]=Color.new(136,96,72) if natup!=natdn
  472. statshadows[natdn]=Color.new(64,120,152) if natup!=natdn
  473. end
  474. pbSetSystemFont(overlay)
  475. abilityname=PBAbilities.getName(pokemon.ability)
  476. abilitydesc=pbGetMessage(MessageTypes::AbilityDescs,pokemon.ability)
  477. pokename=@pokemon.name
  478. textpos=[
  479. [_INTL("SKILLS"),26,16,0,base,shadow],
  480. [pokename,46,62,0,base,shadow],
  481. [pokemon.level.to_s,46,92,0,Color.new(64,64,64),Color.new(176,176,176)],
  482. [_INTL("Item"),16,320,0,base,shadow],
  483. [_INTL("HP"),292,76,2,base,shadow],
  484. [sprintf("%3d/%3d",pokemon.hp,pokemon.totalhp),462,76,1,Color.new(64,64,64),Color.new(176,176,176)],
  485. [_INTL("Attack"),248,120,0,base,statshadows[0]],
  486. [sprintf("%d",pokemon.attack),456,120,1,Color.new(64,64,64),Color.new(176,176,176)],
  487. [_INTL("Defense"),248,152,0,base,statshadows[1]],
  488. [sprintf("%d",pokemon.defense),456,152,1,Color.new(64,64,64),Color.new(176,176,176)],
  489. [_INTL("Sp. Atk"),248,184,0,base,statshadows[3]],
  490. [sprintf("%d",pokemon.spatk),456,184,1,Color.new(64,64,64),Color.new(176,176,176)],
  491. [_INTL("Sp. Def"),248,216,0,base,statshadows[4]],
  492. [sprintf("%d",pokemon.spdef),456,216,1,Color.new(64,64,64),Color.new(176,176,176)],
  493. [_INTL("Speed"),248,248,0,base,statshadows[2]],
  494. [sprintf("%d",pokemon.speed),456,248,1,Color.new(64,64,64),Color.new(176,176,176)],
  495. [_INTL("Ability"),224,284,0,base,shadow],
  496. [abilityname,362,284,0,Color.new(64,64,64),Color.new(176,176,176)],
  497. ]
  498. if pokemon.hasItem?
  499. textpos.push([PBItems.getName(pokemon.item),16,352,0,Color.new(64,64,64),Color.new(176,176,176)])
  500. else
  501. textpos.push([_INTL("None"),16,352,0,Color.new(184,184,160),Color.new(208,208,200)])
  502. end
  503. if pokemon.isMale?
  504. textpos.push([_INTL("♂"),178,62,0,Color.new(24,112,216),Color.new(136,168,208)])
  505. elsif pokemon.isFemale?
  506. textpos.push([_INTL("♀"),178,62,0,Color.new(248,56,32),Color.new(224,152,144)])
  507. end
  508. pbDrawTextPositions(overlay,textpos)
  509. drawTextEx(overlay,224,316,282,2,abilitydesc,Color.new(64,64,64),Color.new(176,176,176))
  510. drawMarkings(overlay,15,291,72,20,pokemon.markings)
  511. if pokemon.hp>0
  512. hpcolors=[
  513. Color.new(24,192,32),Color.new(0,144,0), # Green
  514. Color.new(248,184,0),Color.new(184,112,0), # Orange
  515. Color.new(240,80,32),Color.new(168,48,56) # Red
  516. ]
  517. hpzone=0
  518. hpzone=1 if pokemon.hp<=(@pokemon.totalhp/2).floor
  519. hpzone=2 if pokemon.hp<=(@pokemon.totalhp/4).floor
  520. overlay.fill_rect(360,110,pokemon.hp*96/pokemon.totalhp,2,hpcolors[hpzone*2+1])
  521. overlay.fill_rect(360,112,pokemon.hp*96/pokemon.totalhp,4,hpcolors[hpzone*2])
  522. end
  523. end
  524.  
  525. def drawPageFour(pokemon)
  526. overlay=@sprites["overlay"].bitmap
  527. overlay.clear
  528. @sprites["background"].setBitmap("Graphics/Pictures/summary4")
  529. @sprites["pokemon"].visible=true
  530. @sprites["pokeicon"].visible=false
  531. imagepos=[]
  532. if pbPokerus(pokemon)==1 || pokemon.hp==0 || @pokemon.status>0
  533. status=6 if pbPokerus(pokemon)==1
  534. status=@pokemon.status-1 if @pokemon.status>0
  535. status=5 if pokemon.hp==0
  536. imagepos.push(["Graphics/Pictures/statuses",124,100,0,16*status,44,16])
  537. end
  538. if pokemon.isShiny?
  539. imagepos.push([sprintf("Graphics/Pictures/shiny"),2,134,0,0,-1,-1])
  540. end
  541. if pbPokerus(pokemon)==2
  542. imagepos.push([sprintf("Graphics/Pictures/summaryPokerus"),176,100,0,0,-1,-1])
  543. end
  544. ballused=@pokemon.ballused ? @pokemon.ballused : 0
  545. ballimage=sprintf("Graphics/Pictures/summaryball%02d",@pokemon.ballused)
  546. imagepos.push([ballimage,14,60,0,0,-1,-1])
  547. pbDrawImagePositions(overlay,imagepos)
  548. base=Color.new(248,248,248)
  549. shadow=Color.new(104,104,104)
  550. pbSetSystemFont(overlay)
  551. pokename=@pokemon.name
  552. textpos=[
  553. [_INTL("MOVES"),26,16,0,base,shadow],
  554. [pokename,46,62,0,base,shadow],
  555. [pokemon.level.to_s,46,92,0,Color.new(64,64,64),Color.new(176,176,176)],
  556. [_INTL("Item"),16,320,0,base,shadow]
  557. ]
  558. if pokemon.hasItem?
  559. textpos.push([PBItems.getName(pokemon.item),16,352,0,Color.new(64,64,64),Color.new(176,176,176)])
  560. else
  561. textpos.push([_INTL("None"),16,352,0,Color.new(184,184,160),Color.new(208,208,200)])
  562. end
  563. if pokemon.isMale?
  564. textpos.push([_INTL("♂"),178,62,0,Color.new(24,112,216),Color.new(136,168,208)])
  565. elsif pokemon.isFemale?
  566. textpos.push([_INTL("♀"),178,62,0,Color.new(248,56,32),Color.new(224,152,144)])
  567. end
  568. pbDrawTextPositions(overlay,textpos)
  569. imagepos=[]
  570. yPos=98
  571. for i in 0...pokemon.moves.length
  572. if pokemon.moves[i].id>0
  573. imagepos.push(["Graphics/Pictures/types",248,yPos+2,0,
  574. pokemon.moves[i].type*28,64,28])
  575. textpos.push([PBMoves.getName(pokemon.moves[i].id),316,yPos,0,
  576. Color.new(64,64,64),Color.new(176,176,176)])
  577. if pokemon.moves[i].totalpp>0
  578. textpos.push([_ISPRINTF("PP"),342,yPos+32,0,
  579. Color.new(64,64,64),Color.new(176,176,176)])
  580. textpos.push([sprintf("%d/%d",pokemon.moves[i].pp,pokemon.moves[i].totalpp),
  581. 460,yPos+32,1,Color.new(64,64,64),Color.new(176,176,176)])
  582. end
  583. else
  584. textpos.push(["-",316,yPos,0,Color.new(64,64,64),Color.new(176,176,176)])
  585. textpos.push(["--",442,yPos+32,1,Color.new(64,64,64),Color.new(176,176,176)])
  586. end
  587. yPos+=64
  588. end
  589. pbDrawTextPositions(overlay,textpos)
  590. pbDrawImagePositions(overlay,imagepos)
  591. drawMarkings(overlay,15,291,72,20,pokemon.markings)
  592. end
  593.  
  594. def drawSelectedMove(pokemon,moveToLearn,moveid)
  595. overlay=@sprites["overlay"].bitmap
  596. @sprites["pokemon"].visible=false if @sprites["pokemon"]
  597. @sprites["pokeicon"].setBitmap(pbPokemonIconFile(pokemon))
  598. @sprites["pokeicon"].src_rect=Rect.new(0,0,64,64)
  599. @sprites["pokeicon"].visible=true
  600. movedata=PBMoveData.new(moveid)
  601. basedamage=movedata.basedamage
  602. type=movedata.type
  603. category=movedata.category
  604. accuracy=movedata.accuracy
  605. drawMoveSelection(pokemon,moveToLearn)
  606. pbSetSystemFont(overlay)
  607. move=moveid
  608. textpos=[
  609. [basedamage<=1 ? basedamage==1 ? "???" : "---" : sprintf("%d",basedamage),
  610. 216,154,1,Color.new(64,64,64),Color.new(176,176,176)],
  611. [accuracy==0 ? "---" : sprintf("%d",accuracy),
  612. 216,186,1,Color.new(64,64,64),Color.new(176,176,176)]
  613. ]
  614. pbDrawTextPositions(overlay,textpos)
  615. imagepos=[["Graphics/Pictures/category",166,124,0,category*28,64,28]]
  616. pbDrawImagePositions(overlay,imagepos)
  617. drawTextEx(overlay,4,218,238,5,
  618. pbGetMessage(MessageTypes::MoveDescriptions,moveid),
  619. Color.new(64,64,64),Color.new(176,176,176))
  620. end
  621.  
  622. def drawMoveSelection(pokemon,moveToLearn)
  623. overlay=@sprites["overlay"].bitmap
  624. overlay.clear
  625. base=Color.new(248,248,248)
  626. shadow=Color.new(104,104,104)
  627. @sprites["background"].setBitmap("Graphics/Pictures/summary4details")
  628. if moveToLearn!=0
  629. @sprites["background"].setBitmap("Graphics/Pictures/summary4learning")
  630. end
  631. pbSetSystemFont(overlay)
  632. textpos=[
  633. [_INTL("MOVES"),26,16,0,base,shadow],
  634. [_INTL("CATEGORY"),20,122,0,base,shadow],
  635. [_INTL("POWER"),20,154,0,base,shadow],
  636. [_INTL("ACCURACY"),20,186,0,base,shadow]
  637. ]
  638. type1rect=Rect.new(0,pokemon.type1*28,64,28)
  639. type2rect=Rect.new(0,pokemon.type2*28,64,28)
  640. if pokemon.type1==pokemon.type2
  641. overlay.blt(130,78,@typebitmap.bitmap,type1rect)
  642. else
  643. overlay.blt(96,78,@typebitmap.bitmap,type1rect)
  644. overlay.blt(166,78,@typebitmap.bitmap,type2rect)
  645. end
  646. imagepos=[]
  647. yPos=98
  648. yPos-=76 if moveToLearn!=0
  649. for i in 0...5
  650. moveobject=nil
  651. if i==4
  652. moveobject=PBMove.new(moveToLearn) if moveToLearn!=0
  653. yPos+=20
  654. else
  655. moveobject=pokemon.moves[i]
  656. end
  657. if moveobject
  658. if moveobject.id!=0
  659. imagepos.push(["Graphics/Pictures/types",248,yPos+2,0,
  660. moveobject.type*28,64,28])
  661. textpos.push([PBMoves.getName(moveobject.id),316,yPos,0,
  662. Color.new(64,64,64),Color.new(176,176,176)])
  663. if moveobject.totalpp>0
  664. textpos.push([_ISPRINTF("PP"),342,yPos+32,0,
  665. Color.new(64,64,64),Color.new(176,176,176)])
  666. textpos.push([sprintf("%d/%d",moveobject.pp,moveobject.totalpp),
  667. 460,yPos+32,1,Color.new(64,64,64),Color.new(176,176,176)])
  668. end
  669. else
  670. textpos.push(["-",316,yPos,0,Color.new(64,64,64),Color.new(176,176,176)])
  671. textpos.push(["--",442,yPos+32,1,Color.new(64,64,64),Color.new(176,176,176)])
  672. end
  673. end
  674. yPos+=64
  675. end
  676. pbDrawTextPositions(overlay,textpos)
  677. pbDrawImagePositions(overlay,imagepos)
  678. end
  679.  
  680. def drawPageFive(pokemon)
  681. overlay=@sprites["overlay"].bitmap
  682. overlay.clear
  683. @sprites["background"].setBitmap("Graphics/Pictures/summary5")
  684. imagepos=[]
  685. if pbPokerus(pokemon)==1 || pokemon.hp==0 || @pokemon.status>0
  686. status=6 if pbPokerus(pokemon)==1
  687. status=@pokemon.status-1 if @pokemon.status>0
  688. status=5 if pokemon.hp==0
  689. imagepos.push(["Graphics/Pictures/statuses",124,100,0,16*status,44,16])
  690. end
  691. if pokemon.isShiny?
  692. imagepos.push([sprintf("Graphics/Pictures/shiny"),2,134,0,0,-1,-1])
  693. end
  694. if pbPokerus(pokemon)==2
  695. imagepos.push([sprintf("Graphics/Pictures/summaryPokerus"),176,100,0,0,-1,-1])
  696. end
  697. ballused=@pokemon.ballused ? @pokemon.ballused : 0
  698. ballimage=sprintf("Graphics/Pictures/summaryball%02d",@pokemon.ballused)
  699. imagepos.push([ballimage,14,60,0,0,-1,-1])
  700. pbDrawImagePositions(overlay,imagepos)
  701. base=Color.new(248,248,248)
  702. shadow=Color.new(104,104,104)
  703. pbSetSystemFont(overlay)
  704. pokename=@pokemon.name
  705. textpos=[
  706. [_INTL("RIBBONS"),26,16,0,base,shadow],
  707. [pokename,46,62,0,base,shadow],
  708. [pokemon.level.to_s,46,92,0,Color.new(64,64,64),Color.new(176,176,176)],
  709. [_INTL("Item"),16,320,0,base,shadow],
  710. [_INTL("No. of Ribbons:"),234,342,0,Color.new(64,64,64),Color.new(176,176,176)],
  711. [pokemon.ribbonCount.to_s,450,342,1,Color.new(64,64,64),Color.new(176,176,176)],
  712. ]
  713. if pokemon.hasItem?
  714. textpos.push([PBItems.getName(pokemon.item),16,352,0,Color.new(64,64,64),Color.new(176,176,176)])
  715. else
  716. textpos.push([_INTL("None"),16,352,0,Color.new(184,184,160),Color.new(208,208,200)])
  717. end
  718. if pokemon.isMale?
  719. textpos.push([_INTL("♂"),178,62,0,Color.new(24,112,216),Color.new(136,168,208)])
  720. elsif pokemon.isFemale?
  721. textpos.push([_INTL("♀"),178,62,0,Color.new(248,56,32),Color.new(224,152,144)])
  722. end
  723. pbDrawTextPositions(overlay,textpos)
  724. imagepos=[]
  725. coord=0
  726. if pokemon.ribbons
  727. for i in pokemon.ribbons
  728. ribn=i-1
  729. imagepos.push(["Graphics/Pictures/ribbons",236+64*(coord%4),86+80*(coord/4).floor,
  730. 64*(ribn%8),64*(ribn/8).floor,64,64])
  731. coord+=1
  732. break if coord>=12
  733. end
  734. end
  735. pbDrawImagePositions(overlay,imagepos)
  736. drawMarkings(overlay,15,291,72,20,pokemon.markings)
  737. end
  738.  
  739. def pbChooseMoveToForget(moveToLearn)
  740. selmove=0
  741. ret=0
  742. maxmove=(moveToLearn>0) ? 4 : 3
  743. loop do
  744. Graphics.update
  745. Input.update
  746. pbUpdate
  747. if Input.trigger?(Input::B)
  748. ret=4
  749. break
  750. end
  751. if Input.trigger?(Input::C)
  752. break
  753. end
  754. if Input.trigger?(Input::DOWN)
  755. selmove+=1
  756. if selmove<4 && selmove>=@pokemon.numMoves
  757. selmove=(moveToLearn>0) ? maxmove : 0
  758. end
  759. selmove=0 if selmove>maxmove
  760. @sprites["movesel"].index=selmove
  761. newmove=(selmove==4) ? moveToLearn : @pokemon.moves[selmove].id
  762. drawSelectedMove(@pokemon,moveToLearn,newmove)
  763. ret=selmove
  764. end
  765. if Input.trigger?(Input::UP)
  766. selmove-=1
  767. selmove=maxmove if selmove<0
  768. if selmove<4 && selmove>=@pokemon.numMoves
  769. selmove=@pokemon.numMoves-1
  770. end
  771. @sprites["movesel"].index=selmove
  772. newmove=(selmove==4) ? moveToLearn : @pokemon.moves[selmove].id
  773. drawSelectedMove(@pokemon,moveToLearn,newmove)
  774. ret=selmove
  775. end
  776. end
  777. return (ret==4) ? -1 : ret
  778. end
  779.  
  780. def pbMoveSelection
  781. @sprites["movesel"].visible=true
  782. @sprites["movesel"].index=0
  783. selmove=0
  784. oldselmove=0
  785. switching=false
  786. drawSelectedMove(@pokemon,0,@pokemon.moves[selmove].id)
  787. loop do
  788. Graphics.update
  789. Input.update
  790. pbUpdate
  791. if @sprites["movepresel"].index==@sprites["movesel"].index
  792. @sprites["movepresel"].z=@sprites["movesel"].z+1
  793. else
  794. @sprites["movepresel"].z=@sprites["movesel"].z
  795. end
  796. if Input.trigger?(Input::B)
  797. break if !switching
  798. @sprites["movepresel"].visible=false
  799. switching=false
  800. end
  801. if Input.trigger?(Input::C)
  802. if selmove==4
  803. break if !switching
  804. @sprites["movepresel"].visible=false
  805. switching=false
  806. else
  807. if !(@pokemon.isShadow? rescue false)
  808. if !switching
  809. @sprites["movepresel"].index=selmove
  810. oldselmove=selmove
  811. @sprites["movepresel"].visible=true
  812. switching=true
  813. else
  814. tmpmove=@pokemon.moves[oldselmove]
  815. @pokemon.moves[oldselmove]=@pokemon.moves[selmove]
  816. @pokemon.moves[selmove]=tmpmove
  817. @sprites["movepresel"].visible=false
  818. switching=false
  819. drawSelectedMove(@pokemon,0,@pokemon.moves[selmove].id)
  820. end
  821. end
  822. end
  823. end
  824. if Input.trigger?(Input::DOWN)
  825. selmove+=1
  826. selmove=0 if selmove<4 && selmove>=@pokemon.numMoves
  827. selmove=0 if selmove>=4
  828. selmove=4 if selmove<0
  829. @sprites["movesel"].index=selmove
  830. newmove=@pokemon.moves[selmove].id
  831. pbPlayCursorSE()
  832. drawSelectedMove(@pokemon,0,newmove)
  833. end
  834. if Input.trigger?(Input::UP)
  835. selmove-=1
  836. if selmove<4 && selmove>=@pokemon.numMoves
  837. selmove=@pokemon.numMoves-1
  838. end
  839. selmove=0 if selmove>=4
  840. selmove=@pokemon.numMoves-1 if selmove<0
  841. @sprites["movesel"].index=selmove
  842. newmove=@pokemon.moves[selmove].id
  843. pbPlayCursorSE()
  844. drawSelectedMove(@pokemon,0,newmove)
  845. end
  846. end
  847. @sprites["movesel"].visible=false
  848. end
  849.  
  850. def pbGoToPrevious
  851. if @page!=0
  852. newindex=@partyindex
  853. while newindex>0
  854. newindex-=1
  855. if @party[newindex] && !@party[newindex].isEgg?
  856. @partyindex=newindex
  857. break
  858. end
  859. end
  860. else
  861. newindex=@partyindex
  862. while newindex>0
  863. newindex-=1
  864. if @party[newindex]
  865. @partyindex=newindex
  866. break
  867. end
  868. end
  869. end
  870. end
  871.  
  872. def pbGoToNext
  873. if @page!=0
  874. newindex=@partyindex
  875. while newindex<@party.length-1
  876. newindex+=1
  877. if @party[newindex] && !@party[newindex].isEgg?
  878. @partyindex=newindex
  879. break
  880. end
  881. end
  882. else
  883. newindex=@partyindex
  884. while newindex<@party.length-1
  885. newindex+=1
  886. if @party[newindex]
  887. @partyindex=newindex
  888. break
  889. end
  890. end
  891. end
  892. end
  893.  
  894. def pbScene
  895. pbPlayCry(@pokemon)
  896. loop do
  897. Graphics.update
  898. Input.update
  899. pbUpdate
  900. if Input.trigger?(Input::B)
  901. break
  902. end
  903. dorefresh=false
  904. if Input.trigger?(Input::C)
  905. if @page==0
  906. break
  907. elsif @page==3
  908. pbMoveSelection
  909. dorefresh=true
  910. drawPageFour(@pokemon)
  911. end
  912. end
  913. if Input.trigger?(Input::UP) && @partyindex>0
  914. oldindex=@partyindex
  915. pbGoToPrevious
  916. if @partyindex!=oldindex
  917. @pokemon=@party[@partyindex]
  918. @sprites["pokemon"].setPokemonBitmap(@pokemon)
  919. @sprites["pokemon"].color=Color.new(0,0,0,0)
  920. pbPositionPokemonSprite(@sprites["pokemon"],40,144)
  921. dorefresh=true
  922. pbPlayCry(@pokemon)
  923. end
  924. end
  925. if Input.trigger?(Input::DOWN) && @partyindex<@party.length-1
  926. oldindex=@partyindex
  927. pbGoToNext
  928. if @partyindex!=oldindex
  929. @pokemon=@party[@partyindex]
  930. @sprites["pokemon"].setPokemonBitmap(@pokemon)
  931. @sprites["pokemon"].color=Color.new(0,0,0,0)
  932. pbPositionPokemonSprite(@sprites["pokemon"],40,144)
  933. dorefresh=true
  934. pbPlayCry(@pokemon)
  935. end
  936. end
  937. if Input.trigger?(Input::LEFT) && !@pokemon.isEgg?
  938. oldpage=@page
  939. @page-=1
  940. @page=0 if @page<0
  941. @page=4 if @page>4
  942. dorefresh=true
  943. if @page!=oldpage # Move to next page
  944. pbPlayCursorSE()
  945. dorefresh=true
  946. end
  947. end
  948. if Input.trigger?(Input::RIGHT) && !@pokemon.isEgg?
  949. oldpage=@page
  950. @page+=1
  951. @page=0 if @page<0
  952. @page=4 if @page>4
  953. if @page!=oldpage # Move to next page
  954. pbPlayCursorSE()
  955. dorefresh=true
  956. end
  957. end
  958. if dorefresh
  959. case @page
  960. when 0
  961. drawPageOne(@pokemon)
  962. when 1
  963. drawPageTwo(@pokemon)
  964. when 2
  965. drawPageThree(@pokemon)
  966. when 3
  967. drawPageFour(@pokemon)
  968. when 4
  969. drawPageFive(@pokemon)
  970. end
  971. end
  972. end
  973. return @partyindex
  974. end
  975. end
  976.  
  977.  
  978.  
  979. class PokemonSummary
  980. def initialize(scene)
  981. @scene=scene
  982. end
  983.  
  984. def pbStartScreen(party,partyindex)
  985. @scene.pbStartScene(party,partyindex)
  986. ret=@scene.pbScene
  987. @scene.pbEndScene
  988. return ret
  989. end
  990.  
  991. def pbStartForgetScreen(party,partyindex,moveToLearn)
  992. ret=-1
  993. @scene.pbStartForgetScene(party,partyindex,moveToLearn)
  994. loop do
  995. ret=@scene.pbChooseMoveToForget(moveToLearn)
  996. if ret>=0 && moveToLearn!=0 && pbIsHiddenMove?(party[partyindex].moves[ret].id) && !$DEBUG
  997. Kernel.pbMessage(_INTL("HM moves can't be forgotten now.")){ @scene.pbUpdate }
  998. else
  999. break
  1000. end
  1001. end
  1002. @scene.pbEndScene
  1003. return ret
  1004. end
  1005.  
  1006. def pbStartChooseMoveScreen(party,partyindex,message)
  1007. ret=-1
  1008. @scene.pbStartForgetScene(party,partyindex,0)
  1009. Kernel.pbMessage(message){ @scene.pbUpdate }
  1010. loop do
  1011. ret=@scene.pbChooseMoveToForget(0)
  1012. if ret<0
  1013. Kernel.pbMessage(_INTL("You must choose a move!")){ @scene.pbUpdate }
  1014. else
  1015. break
  1016. end
  1017. end
  1018. @scene.pbEndScene
  1019. return ret
  1020. end
  1021. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement