Guest User

Untitled

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