Advertisement
Guest User

Untitled

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