Advertisement
Guest User

Untitled

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