Advertisement
Guest User

Untitled

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