Advertisement
Guest User

Untitled

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