Advertisement
Guest User

Untitled

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