Diego-Mertens

para vazquinho

Jun 26th, 2019
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 63.14 KB | None | 0 0
  1. class PokeSelectionPlaceholderSprite < SpriteWrapper
  2. attr_accessor :text
  3.  
  4. def initialize(pokemon,index,viewport=nil)
  5. super(viewport)
  6. xvalues=[0,256,0,256,0,256]
  7. yvalues=[50,50,148,148,246,246]
  8. @pbitmap=AnimatedBitmap.new("Graphics/Pictures/partyPanelBlank")
  9. self.x=xvalues[index]
  10. self.y=yvalues[index]
  11. @text=nil
  12. end
  13.  
  14. def update
  15. super
  16. @pbitmap.update
  17. end
  18.  
  19. def selected
  20. return false
  21. end
  22.  
  23. def selected=(value)
  24. end
  25.  
  26. def preselected
  27. return false
  28. end
  29.  
  30. def preselected=(value)
  31. end
  32.  
  33. def switching
  34. return false
  35. end
  36.  
  37. def switching=(value)
  38. end
  39.  
  40. def refresh
  41. end
  42.  
  43. def dispose
  44. @pbitmap.dispose
  45. super
  46. end
  47. end
  48.  
  49.  
  50.  
  51. class PokeSelectionConfirmCancelSprite < SpriteWrapper
  52. attr_reader :selected
  53.  
  54. def initialize(text,x,y,narrowbox=false,viewport=nil)
  55. super(viewport)
  56. @refreshBitmap=true
  57. @bgsprite=ChangelingSprite.new(0,0,viewport)
  58. if narrowbox
  59. @bgsprite.addBitmap("deselbitmap","Graphics/Pictures/partyCancelNarrow")
  60. @bgsprite.addBitmap("selbitmap","Graphics/Pictures/partyCancelSelNarrow")
  61. else
  62. @bgsprite.addBitmap("deselbitmap","Graphics/Pictures/partyCancel")
  63. @bgsprite.addBitmap("selbitmap","Graphics/Pictures/partyCancelSel")
  64. end
  65. @bgsprite.changeBitmap("deselbitmap")
  66. @bgsprite.opacity = 0
  67. @overlaysprite=BitmapSprite.new(@bgsprite.bitmap.width,@bgsprite.bitmap.height,viewport)
  68. @yoffset=8
  69. ynarrow=narrowbox ? -6 : 0
  70. pbSetSystemFont(@overlaysprite.bitmap)
  71. textpos=[[text,56,8+ynarrow,2,Color.new(248,248,248),Color.new(40,40,40)]]
  72. pbDrawTextPositions(@overlaysprite.bitmap,textpos)
  73. @overlaysprite.z=self.z+1 # For compatibility with RGSS2
  74. self.x=x
  75. self.y=y
  76. end
  77.  
  78. def dispose
  79. @overlaysprite.bitmap.dispose
  80. @overlaysprite.dispose
  81. @bgsprite.dispose
  82. super
  83. end
  84.  
  85. def viewport=(value)
  86. super
  87. refresh
  88. end
  89.  
  90. def color=(value)
  91. super
  92. refresh
  93. end
  94.  
  95. def x=(value)
  96. super
  97. refresh
  98. end
  99.  
  100. def y=(value)
  101. super
  102. refresh
  103. end
  104.  
  105. def selected=(value)
  106. @selected=value
  107. refresh
  108. end
  109.  
  110. def refresh
  111. @bgsprite.changeBitmap((@selected) ? "selbitmap" : "deselbitmap")
  112. if @bgsprite && [email protected]?
  113. @bgsprite.x=self.x
  114. @bgsprite.y=self.y
  115. @overlaysprite.x=self.x
  116. @overlaysprite.y=self.y
  117. @bgsprite.color=self.color
  118. @overlaysprite.color=self.color
  119. end
  120. end
  121. end
  122.  
  123.  
  124.  
  125. class PokeSelectionCancelSprite < PokeSelectionConfirmCancelSprite
  126. def initialize(viewport=nil)
  127. super(_INTL(""),398,328,false,viewport)
  128. end
  129. end
  130.  
  131.  
  132.  
  133. class PokeSelectionConfirmSprite < PokeSelectionConfirmCancelSprite
  134. def initialize(viewport=nil)
  135. super(_INTL(""),398,308,true,viewport)
  136. end
  137. end
  138.  
  139.  
  140.  
  141. class PokeSelectionCancelSprite2 < PokeSelectionConfirmCancelSprite
  142. def initialize(viewport=nil)
  143. super(_INTL(""),398,346,true,viewport)
  144. end
  145. end
  146.  
  147.  
  148.  
  149. class ChangelingSprite < SpriteWrapper
  150. def initialize(x=0,y=0,viewport=nil)
  151. super(viewport)
  152. self.x=x
  153. self.y=y
  154. @bitmaps={}
  155. @currentBitmap=nil
  156. end
  157.  
  158. def addBitmap(key,path)
  159. if @bitmaps[key]
  160. @bitmaps[key].dispose
  161. end
  162. @bitmaps[key]=AnimatedBitmap.new(path)
  163. end
  164.  
  165. def changeBitmap(key)
  166. @currentBitmap=@bitmaps[key]
  167. self.bitmap=@currentBitmap ? @currentBitmap.bitmap : nil
  168. end
  169.  
  170. def dispose
  171. return if disposed?
  172. for bm in @bitmaps.values; bm.dispose; end
  173. @bitmaps.clear
  174. super
  175. end
  176.  
  177. def update
  178. return if disposed?
  179. for bm in @bitmaps.values; bm.update; end
  180. self.bitmap=@currentBitmap ? @currentBitmap.bitmap : nil
  181. end
  182. end
  183.  
  184.  
  185.  
  186. class PokeSelectionSprite < SpriteWrapper
  187. attr_reader :selected
  188. attr_reader :preselected
  189. attr_reader :switching
  190. attr_reader :pokemon
  191. attr_reader :active
  192. attr_accessor :text
  193.  
  194. def initialize(pokemon,index,viewport=nil)
  195. super(viewport)
  196. @pokemon=pokemon
  197. active=(index==0)
  198. @active=active
  199. if active # Rounded panel
  200. @deselbitmap=AnimatedBitmap.new("Graphics/Pictures/partyPanelRound")
  201. @selbitmap=AnimatedBitmap.new("Graphics/Pictures/partyPanelRoundSel")
  202. @deselfntbitmap=AnimatedBitmap.new("Graphics/Pictures/partyPanelRoundFnt")
  203. @selfntbitmap=AnimatedBitmap.new("Graphics/Pictures/partyPanelRoundSelFnt")
  204. @deselswapbitmap=AnimatedBitmap.new("Graphics/Pictures/partyPanelRoundSwap")
  205. @selswapbitmap=AnimatedBitmap.new("Graphics/Pictures/partyPanelRoundSelSwap")
  206. else # Rectangular panel
  207. @deselbitmap=AnimatedBitmap.new("Graphics/Pictures/partyPanelRect")
  208. @selbitmap=AnimatedBitmap.new("Graphics/Pictures/partyPanelRectSel")
  209. @deselfntbitmap=AnimatedBitmap.new("Graphics/Pictures/partyPanelRectFnt")
  210. @selfntbitmap=AnimatedBitmap.new("Graphics/Pictures/partyPanelRectSelFnt")
  211. @deselswapbitmap=AnimatedBitmap.new("Graphics/Pictures/partyPanelRectSwap")
  212. @selswapbitmap=AnimatedBitmap.new("Graphics/Pictures/partyPanelRectSelSwap")
  213. end
  214. @spriteXOffset=28
  215. @spriteYOffset=0
  216. @pokeballXOffset=10
  217. @pokeballYOffset=0
  218. @pokenameX=96
  219. @pokenameY=16
  220. @levelX=20
  221. @levelY=62
  222. @statusX=80
  223. @statusY=68
  224. @genderX=224
  225. @genderY=16
  226. @hpX=224
  227. @hpY=60
  228. @hpbarX=96
  229. @hpbarY=50
  230. @gaugeX=128
  231. @gaugeY=52
  232. @itemXOffset=62
  233. @itemYOffset=48
  234. @annotX=96
  235. @annotY=58
  236. xvalues=[0,256,0,256,0,256]
  237. yvalues=[50,50,148,148,246,246]
  238. @text=nil
  239. @statuses=AnimatedBitmap.new(_INTL("Graphics/Pictures/statuses"))
  240. @hpbar=AnimatedBitmap.new("Graphics/Pictures/partyHP")
  241. @hpbarfnt=AnimatedBitmap.new("Graphics/Pictures/partyHPfnt")
  242. @hpbarswap=AnimatedBitmap.new("Graphics/Pictures/partyHPswap")
  243. @pokeballsprite=ChangelingSprite.new(0,0,viewport)
  244. @pokeballsprite.addBitmap("pokeballdesel","Graphics/Pictures/partyBall")
  245. @pokeballsprite.addBitmap("pokeballsel","Graphics/Pictures/partyBallSel")
  246. @pkmnsprite=PokemonIconSprite.new(pokemon,viewport)
  247. @pkmnsprite.active=active
  248. @itemsprite=ChangelingSprite.new(0,0,viewport)
  249. @itemsprite.addBitmap("itembitmap","Graphics/Pictures/item")
  250. @itemsprite.addBitmap("mailbitmap","Graphics/Pictures/mail")
  251. @spriteX=xvalues[index]
  252. @spriteY=yvalues[index]
  253. @refreshBitmap=true
  254. @refreshing=false
  255. @preselected=false
  256. @switching=false
  257. @pkmnsprite.z=self.z+2 # For compatibility with RGSS2
  258. @itemsprite.z=self.z+3 # For compatibility with RGSS2
  259. @pokeballsprite.z=self.z+1 # For compatibility with RGSS2
  260. self.selected=false
  261. self.x=@spriteX
  262. self.y=@spriteY
  263. refresh
  264. end
  265.  
  266. def dispose
  267. @selbitmap.dispose
  268. @statuses.dispose
  269. @hpbar.dispose
  270. @deselbitmap.dispose
  271. @itemsprite.dispose
  272. @pkmnsprite.dispose
  273. @pokeballsprite.dispose
  274. self.bitmap.dispose
  275. super
  276. end
  277.  
  278. def selected=(value)
  279. @selected=value
  280. @refreshBitmap=true
  281. refresh
  282. end
  283.  
  284. def text=(value)
  285. @text=value
  286. @refreshBitmap=true
  287. refresh
  288. end
  289.  
  290. def pokemon=(value)
  291. @pokemon=value
  292. if @pkmnsprite && [email protected]?
  293. @pkmnsprite.pokemon=value
  294. end
  295. @refreshBitmap=true
  296. refresh
  297. end
  298.  
  299. def preselected=(value)
  300. if value!=@preselected
  301. @preselected=value
  302. refresh
  303. end
  304. end
  305.  
  306. def switching=(value)
  307. if value!=@switching
  308. @switching=value
  309. refresh
  310. end
  311. end
  312.  
  313. def color=(value)
  314. super
  315. refresh
  316. end
  317.  
  318. def x=(value)
  319. super
  320. refresh
  321. end
  322.  
  323. def y=(value)
  324. super
  325. refresh
  326. end
  327.  
  328. def hp
  329. return @pokemon.hp
  330. end
  331.  
  332. def refresh
  333. return if @refreshing
  334. return if disposed?
  335. @refreshing=true
  336. if !self.bitmap || self.bitmap.disposed?
  337. self.bitmap=BitmapWrapper.new(@selbitmap.width,@selbitmap.height)
  338. end
  339. if @pkmnsprite && [email protected]?
  340. @pkmnsprite.x=self.x+@spriteXOffset
  341. @pkmnsprite.y=self.y+@spriteYOffset
  342. @pkmnsprite.color=pbSrcOver(@pkmnsprite.color,self.color)
  343. @pkmnsprite.selected=self.selected
  344. end
  345. if @pokeballsprite && [email protected]?
  346. @pokeballsprite.x=self.x+@pokeballXOffset
  347. @pokeballsprite.y=self.y+@pokeballYOffset
  348. @pokeballsprite.color=self.color
  349. @pokeballsprite.changeBitmap(self.selected ? "pokeballsel" : "pokeballdesel")
  350. end
  351. if @itemsprite && [email protected]?
  352. @itemsprite.visible=(@pokemon.item>0)
  353. if @itemsprite.visible
  354. @itemsprite.changeBitmap(@pokemon.mail ? "mailbitmap" : "itembitmap")
  355. @itemsprite.x=self.x+@itemXOffset
  356. @itemsprite.y=self.y+@itemYOffset
  357. @itemsprite.color=self.color
  358. end
  359. end
  360. if @refreshBitmap
  361. @refreshBitmap=false
  362. self.bitmap.clear if self.bitmap
  363. if self.selected
  364. if self.preselected
  365. self.bitmap.blt(0,0,@selswapbitmap.bitmap,Rect.new(0,0,@selswapbitmap.width,@selswapbitmap.height))
  366. self.bitmap.blt(0,0,@deselswapbitmap.bitmap,Rect.new(0,0,@deselswapbitmap.width,@deselswapbitmap.height))
  367. elsif @switching
  368. self.bitmap.blt(0,0,@selswapbitmap.bitmap,Rect.new(0,0,@selswapbitmap.width,@selswapbitmap.height))
  369. elsif @pokemon.hp<=0 && [email protected]?
  370. self.bitmap.blt(0,0,@selfntbitmap.bitmap,Rect.new(0,0,@selfntbitmap.width,@selfntbitmap.height))
  371. else
  372. self.bitmap.blt(0,0,@selbitmap.bitmap,Rect.new(0,0,@selbitmap.width,@selbitmap.height))
  373. end
  374. else
  375. if self.preselected
  376. self.bitmap.blt(0,0,@deselswapbitmap.bitmap,Rect.new(0,0,@deselswapbitmap.width,@deselswapbitmap.height))
  377. elsif @pokemon.hp<=0 && [email protected]?
  378. self.bitmap.blt(0,0,@deselfntbitmap.bitmap,Rect.new(0,0,@deselfntbitmap.width,@deselfntbitmap.height))
  379. else
  380. self.bitmap.blt(0,0,@deselbitmap.bitmap,Rect.new(0,0,@deselbitmap.width,@deselbitmap.height))
  381. end
  382. end
  383. base=Color.new(248,248,248)
  384. shadow=Color.new(40,40,40)
  385. pbSetSystemFont(self.bitmap)
  386. textpos=[[pokename,@pokenameX,@pokenameY,0,base,shadow]]
  387. if !@text || @text.length==0
  388. textpos.push([_ISPRINTF("{1: 3d}/{2: 3d}",@pokemon.hp,tothp),
  389. @hpX,@hpY,1,base,shadow])
  390. barbg=(@pokemon.hp<=0) ? @hpbarfnt : @hpbar
  391. barbg=(self.preselected || (self.selected && @switching)) ? @hpbarswap : barbg
  392. self.bitmap.blt(@hpbarX,@hpbarY,barbg.bitmap,Rect.new(0,0,@hpbar.width,@hpbar.height))
  393. [email protected]==0 ? 0 : (self.hp*96/@pokemon.totalhp)
  394. hpgauge=1 if hpgauge==0 && self.hp>0
  395. hpzone=0
  396. hpzone=1 if self.hp<=(@pokemon.totalhp/2).floor
  397. hpzone=2 if self.hp<=(@pokemon.totalhp/4).floor
  398. hpcolors=[
  399. Color.new(24,192,32),Color.new(96,248,96), # Green
  400. Color.new(232,168,0),Color.new(248,216,0), # Orange
  401. Color.new(248,72,56),Color.new(248,152,152) # Red
  402. ]
  403. # fill with HP color
  404. self.bitmap.fill_rect(@gaugeX,@gaugeY,hpgauge,2,hpcolors[hpzone*2])
  405. self.bitmap.fill_rect(@gaugeX,@gaugeY+2,hpgauge,4,hpcolors[hpzone*2+1])
  406. self.bitmap.fill_rect(@gaugeX,@gaugeY+6,hpgauge,2,hpcolors[hpzone*2])
  407. if @pokemon.hp==0 || @pokemon.status>0
  408. status=(@pokemon.hp==0) ? 5 : @pokemon.status-1
  409. statusrect=Rect.new(0,16*status,44,16)
  410. self.bitmap.blt(@statusX,@statusY,@statuses.bitmap,statusrect)
  411. end
  412. end
  413. if @pokemon.isMale?
  414. textpos.push([_INTL("♂"),@genderX,@genderY,0,Color.new(0,112,248),Color.new(120,184,232)])
  415. elsif @pokemon.isFemale?
  416. textpos.push([_INTL("♀"),@genderX,@genderY,0,Color.new(232,32,16),Color.new(248,168,184)])
  417. end
  418. end
  419. pbDrawTextPositions(self.bitmap,textpos)
  420. pbSetSmallFont(self.bitmap)
  421. leveltext=[([_INTL("Nv.{1}",@pokemon.level),@levelX,@levelY,0,base,shadow])]
  422. pbDrawTextPositions(self.bitmap,leveltext)
  423. end
  424. if @text && @text.length>0
  425. pbSetSystemFont(self.bitmap)
  426. annotation=[[@text,@annotX,@annotY,0,base,shadow]]
  427. pbDrawTextPositions(self.bitmap,annotation)
  428. end
  429. end
  430. @refreshing=false
  431. end
  432.  
  433. def update
  434. super
  435. @pokeballsprite.update if @pokeballsprite && [email protected]?
  436. @itemsprite.update if @itemsprite && [email protected]?
  437. if @pkmnsprite && [email protected]?
  438. @pkmnsprite.update
  439. end
  440. end
  441. end
  442.  
  443.  
  444. ##############################
  445.  
  446.  
  447. class PokemonScreen_Scene
  448. def pbShowCommands(helptext,commands,index=0)
  449. ret=-1
  450. helpwindow=@sprites["helpwindow"]
  451. helpwindow.visible=false
  452. helpwindow.opacity=0
  453. using(cmdwindow=Window_CommandPokemon.new(commands)) {
  454. cmdwindow.index=index
  455. pbBottomRight(cmdwindow)
  456. helpwindow.text=""
  457. helpwindow.resizeHeightToFit(helptext,Graphics.width-cmdwindow.width)
  458. helpwindow.text=helptext
  459. pbBottomLeft(helpwindow)
  460. loop do
  461. Graphics.update
  462. Input.update
  463. cmdwindow.update
  464. self.update
  465. if Input.trigger?(Input::B)
  466. pbPlayCancelSE()
  467. ret=-1
  468. break
  469. end
  470. if Input.trigger?(Input::C)
  471. pbPlayDecisionSE()
  472. ret=cmdwindow.index
  473. break
  474. end
  475. end
  476. }
  477. return ret
  478. end
  479.  
  480. def update
  481. pbUpdateSpriteHash(@sprites)
  482. end
  483.  
  484. def pbSetHelpText(helptext)
  485. helpwindow=@sprites["helpwindow"]
  486. pbBottomLeftLines(helpwindow,1)
  487. helpwindow.text=helptext
  488. helpwindow.width=398
  489. helpwindow.visible=false
  490. end
  491.  
  492. def pbStartScene(party,starthelptext,annotations=nil,multiselect=false)
  493. @sprites={}
  494. @party=party
  495. @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
  496. @viewport.z=99999
  497. @multiselect=multiselect
  498. addBackgroundPlane(@sprites,"partybg","partybg",@viewport)
  499. @sprites["messagebox"]=Window_AdvancedTextPokemon.new("")
  500. @sprites["helpwindow"]=Window_UnformattedTextPokemon.new(starthelptext)
  501. @sprites["messagebox"].viewport=@viewport
  502. @sprites["messagebox"].visible=false
  503. @sprites["messagebox"].letterbyletter=true
  504. @sprites["helpwindow"].viewport=@viewport
  505. @sprites["helpwindow"].visible=true
  506. pbBottomLeftLines(@sprites["messagebox"],2)
  507. pbBottomLeftLines(@sprites["helpwindow"],1)
  508. pbSetHelpText(starthelptext)
  509. # Add party Pokémon sprites
  510. for i in 0...6
  511. if @party[i]
  512. @sprites["pokemon#{i}"]=PokeSelectionSprite.new(
  513. @party[i],i,@viewport)
  514. else
  515. @sprites["pokemon#{i}"]=PokeSelectionPlaceholderSprite.new(
  516. @party[i],i,@viewport)
  517. end
  518. if annotations
  519. @sprites["pokemon#{i}"].text=annotations[i]
  520. end
  521. end
  522. if @multiselect
  523. @sprites["pokemon6"]=PokeSelectionConfirmSprite.new(@viewport)
  524. @sprites["pokemon7"]=PokeSelectionCancelSprite2.new(@viewport)
  525. else
  526. @sprites["pokemon6"]=PokeSelectionCancelSprite.new(@viewport)
  527. end
  528. # Select first Pokémon
  529. @activecmd=0
  530. @sprites["pokemon0"].selected=true
  531. pbFadeInAndShow(@sprites) { update }
  532. end
  533.  
  534. def pbEndScene
  535. pbFadeOutAndHide(@sprites) { update }
  536. pbDisposeSpriteHash(@sprites)
  537. @viewport.dispose
  538. end
  539.  
  540. def pbChangeSelection(key,currentsel)
  541. numsprites=(@multiselect) ? 8 : 7
  542. case key
  543. when Input::LEFT
  544. begin
  545. currentsel-=1
  546. end while currentsel>0 && currentsel<@party.length && !@party[currentsel]
  547. if currentsel>[email protected] && currentsel<6
  548. end
  549. currentsel=numsprites-1 if currentsel<0
  550. when Input::RIGHT
  551. begin
  552. currentsel+=1
  553. end while currentsel<@party.length && !@party[currentsel]
  554. currentsel=6
  555. elsif currentsel==numsprites
  556. currentsel=0
  557. end
  558. when Input::UP
  559. if currentsel>=6
  560. begin
  561. currentsel-=1
  562. end while currentsel>0 && !@party[currentsel]
  563. else
  564. begin
  565. currentsel-=2
  566. end while currentsel>0 && !@party[currentsel]
  567. end
  568. if currentsel>[email protected] && currentsel<6
  569. end
  570. currentsel=numsprites-1 if currentsel<0
  571. when Input::DOWN
  572. if currentsel>=5
  573. currentsel+=1
  574. else
  575. currentsel+=2
  576. currentsel=6 if currentsel<6 && !@party[currentsel]
  577. end
  578. if currentsel>[email protected] && currentsel<6
  579. currentsel=6
  580. elsif currentsel>=numsprites
  581. currentsel=0
  582. end
  583. end
  584. return currentsel
  585. end
  586.  
  587. def pbRefresh
  588. for i in 0...6
  589. sprite=@sprites["pokemon#{i}"]
  590. if sprite
  591. if sprite.is_a?(PokeSelectionSprite)
  592. sprite.pokemon=sprite.pokemon
  593. else
  594. sprite.refresh
  595. end
  596. end
  597. end
  598. end
  599.  
  600. def pbRefreshSingle(i)
  601. sprite=@sprites["pokemon#{i}"]
  602. if sprite
  603. if sprite.is_a?(PokeSelectionSprite)
  604. sprite.pokemon=sprite.pokemon
  605. else
  606. sprite.refresh
  607. end
  608. end
  609. end
  610.  
  611. def pbHardRefresh
  612. oldtext=[]
  613. lastselected=-1
  614. for i in 0...6
  615. oldtext.push(@sprites["pokemon#{i}"].text)
  616. lastselected=i if @sprites["pokemon#{i}"].selected
  617. @sprites["pokemon#{i}"].dispose
  618. end
  619. lastselected=0 if lastselected<0
  620. for i in 0...6
  621. if @party[i]
  622. @sprites["pokemon#{i}"]=PokeSelectionSprite.new(
  623. @party[i],i,@viewport)
  624. else
  625. @sprites["pokemon#{i}"]=PokeSelectionPlaceholderSprite.new(
  626. @party[i],i,@viewport)
  627. end
  628. @sprites["pokemon#{i}"].text=oldtext[i]
  629. end
  630. pbSelect(lastselected)
  631. end
  632.  
  633. def pbPreSelect(pkmn)
  634. @activecmd=pkmn
  635. end
  636.  
  637. def pbChoosePokemon(switching=false,initialsel=-1)
  638. for i in 0...6
  639. @sprites["pokemon#{i}"].preselected=(switching && i==@activecmd)
  640. @sprites["pokemon#{i}"].switching=switching
  641. end
  642. @activecmd=initialsel if initialsel>=0
  643. pbRefresh
  644. loop do
  645. Graphics.update
  646. Input.update
  647. self.update
  648. oldsel=@activecmd
  649. key=-1
  650. key=Input::DOWN if Input.repeat?(Input::DOWN)
  651. key=Input::RIGHT if Input.repeat?(Input::RIGHT)
  652. key=Input::LEFT if Input.repeat?(Input::LEFT)
  653. key=Input::UP if Input.repeat?(Input::UP)
  654. if key>=0
  655. @activecmd=pbChangeSelection(key,@activecmd)
  656. end
  657. if @activecmd!=oldsel # Changing selection
  658. pbPlayCursorSE()
  659. numsprites=(@multiselect) ? 8 : 7
  660. for i in 0...numsprites
  661. @sprites["pokemon#{i}"].selected=(i==@activecmd)
  662. end
  663. end
  664. if Input.trigger?(Input::B)
  665. return -1
  666. end
  667. if Input.trigger?(Input::C)
  668. pbPlayDecisionSE()
  669. cancelsprite=(@multiselect) ? 7 : 6
  670. return (@activecmd==cancelsprite) ? -1 : @activecmd
  671. end
  672. end
  673. end
  674.  
  675. def pbSelect(item)
  676. @activecmd=item
  677. numsprites=(@multiselect) ? 8 : 7
  678. for i in 0...numsprites
  679. @sprites["pokemon#{i}"].selected=(i==@activecmd)
  680. end
  681. end
  682.  
  683. def pbDisplay(text)
  684. @sprites["messagebox"].text=text
  685. @sprites["messagebox"].visible=true
  686. @sprites["helpwindow"].visible=false
  687. pbPlayDecisionSE()
  688. loop do
  689. Graphics.update
  690. Input.update
  691. self.update
  692. if @sprites["messagebox"].busy? && Input.trigger?(Input::C)
  693. pbPlayDecisionSE() if @sprites["messagebox"].pausing?
  694. @sprites["messagebox"].resume
  695. end
  696. if !@sprites["messagebox"].busy? &&
  697. (Input.trigger?(Input::C) || Input.trigger?(Input::B))
  698. break
  699. end
  700. end
  701. @sprites["messagebox"].visible=false
  702. @sprites["helpwindow"].visible=true
  703. end
  704.  
  705. def pbSwitchBegin(oldid,newid)
  706. oldsprite=@sprites["pokemon#{oldid}"]
  707. newsprite=@sprites["pokemon#{newid}"]
  708. 22.times do
  709. oldsprite.x+=(oldid&1)==0 ? -12 : 12
  710. newsprite.x+=(newid&1)==0 ? -12 : 12
  711. Graphics.update
  712. Input.update
  713. self.update
  714. end
  715. end
  716.  
  717. def pbSwitchEnd(oldid,newid)
  718. oldsprite=@sprites["pokemon#{oldid}"]
  719. newsprite=@sprites["pokemon#{newid}"]
  720. oldsprite.pokemon=@party[oldid]
  721. newsprite.pokemon=@party[newid]
  722. 22.times do
  723. oldsprite.x-=(oldid&1)==0 ? -12 : 12
  724. newsprite.x-=(newid&1)==0 ? -12 : 12
  725. Graphics.update
  726. Input.update
  727. self.update
  728. end
  729. for i in 0...6
  730. @sprites["pokemon#{i}"].preselected=false
  731. @sprites["pokemon#{i}"].switching=false
  732. end
  733. pbRefresh
  734. end
  735.  
  736. def pbDisplayConfirm(text)
  737. ret=-1
  738. @sprites["messagebox"].text=text
  739. @sprites["messagebox"].visible=true
  740. @sprites["helpwindow"].visible=false
  741. using(cmdwindow=Window_CommandPokemon.new([_INTL("Si"),_INTL("No")])){
  742. cmdwindow.visible=false
  743. pbBottomRight(cmdwindow)
  744. cmdwindow.y-=@sprites["messagebox"].height
  745. loop do
  746. Graphics.update
  747. Input.update
  748. cmdwindow.visible=true if !@sprites["messagebox"].busy?
  749. cmdwindow.update
  750. self.update
  751. if Input.trigger?(Input::B) && !@sprites["messagebox"].busy?
  752. ret=false
  753. break
  754. end
  755. if Input.trigger?(Input::C) && @sprites["messagebox"].resume && !@sprites["messagebox"].busy?
  756. ret=(cmdwindow.index==0)
  757. break
  758. end
  759. end
  760. }
  761. @sprites["messagebox"].visible=false
  762. @sprites["helpwindow"].visible=true
  763. return ret
  764. end
  765.  
  766. def pbAnnotate(annot)
  767. for i in 0...6
  768. if annot
  769. @sprites["pokemon#{i}"].text=annot[i]
  770. else
  771. @sprites["pokemon#{i}"].text=nil
  772. end
  773. end
  774. end
  775.  
  776. def pbSummary(pkmnid)
  777. oldsprites=pbFadeOutAndHide(@sprites)
  778. scene=PokemonSummaryScene.new
  779. screen=PokemonSummary.new(scene)
  780. screen.pbStartScreen(@party,pkmnid)
  781. pbFadeInAndShow(@sprites,oldsprites)
  782. end
  783.  
  784. def pbChooseItem(bag)
  785. oldsprites=pbFadeOutAndHide(@sprites)
  786. @sprites["helpwindow"].visible=false
  787. @sprites["messagebox"].visible=false
  788. scene=PokemonBag_Scene.new
  789. screen=PokemonBagScreen.new(scene,bag)
  790. ret=screen.pbGiveItemScreen
  791. pbFadeInAndShow(@sprites,oldsprites)
  792. return ret
  793. end
  794.  
  795. def pbUseItem(bag,pokemon)
  796. oldsprites=pbFadeOutAndHide(@sprites)
  797. @sprites["helpwindow"].visible=false
  798. @sprites["messagebox"].visible=false
  799. scene=PokemonBag_Scene.new
  800. screen=PokemonBagScreen.new(scene,bag)
  801. ret=screen.pbUseItemScreen(pokemon)
  802. pbFadeInAndShow(@sprites,oldsprites)
  803. return ret
  804. end
  805.  
  806. def pbMessageFreeText(text,startMsg,maxlength)
  807. return Kernel.pbMessageFreeText(
  808. _INTL("Ingrese un mensaje (máx. {1} caracteres).",maxlength),
  809. _INTL("{1}",startMsg),false,maxlength,Graphics.width) { update }
  810. end
  811. end
  812.  
  813.  
  814. ######################################
  815.  
  816.  
  817. class PokemonScreen
  818. def initialize(scene,party)
  819. @party=party
  820. @scene=scene
  821. end
  822.  
  823. def pbHardRefresh
  824. @scene.pbHardRefresh
  825. end
  826.  
  827. def pbRefresh
  828. @scene.pbRefresh
  829. end
  830.  
  831. def pbRefreshSingle(i)
  832. @scene.pbRefreshSingle(i)
  833. end
  834.  
  835. def pbDisplay(text)
  836. @scene.pbDisplay(text)
  837. end
  838.  
  839. def pbConfirm(text)
  840. return @scene.pbDisplayConfirm(text)
  841. end
  842.  
  843. def pbSwitch(oldid,newid)
  844. if oldid!=newid
  845. @scene.pbSwitchBegin(oldid,newid)
  846. tmp=@party[oldid]
  847. @party[oldid]=@party[newid]
  848. @party[newid]=tmp
  849. @scene.pbSwitchEnd(oldid,newid)
  850. end
  851. end
  852.  
  853. def pbMailScreen(item,pkmn,pkmnid)
  854. message=""
  855. loop do
  856. _INTL("Ingresa un mensaje (máx. de 256 caracteres)."),"",256)
  857. if message!=""
  858. # Store mail if a message was written
  859. poke1=poke2=poke3=nil
  860. if $Trainer.party[pkmnid+2]
  861. p=$Trainer.party[pkmnid+2]
  862. poke1=[p.species,p.gender,p.isShiny?,(p.form rescue 0),(p.isShadow? rescue false)]
  863. poke1.push(true) if p.isEgg?
  864. end
  865. if $Trainer.party[pkmnid+1]
  866. p=$Trainer.party[pkmnid+1]
  867. poke2=[p.species,p.gender,p.isShiny?,(p.form rescue 0),(p.isShadow? rescue false)]
  868. poke2.push(true) if p.isEgg?
  869. end
  870. poke3=[pkmn.species,pkmn.gender,pkmn.isShiny?,(pkmn.form rescue 0),(pkmn.isShadow? rescue false)]
  871. poke3.push(true) if pkmn.isEgg?
  872. pbStoreMail(pkmn,item,message,poke1,poke2,poke3)
  873. return true
  874. else
  875. return false if pbConfirm(_INTL("¿Quieres dejar al Pokémon sin la carta?"))
  876. end
  877. end
  878. end
  879.  
  880. def pbTakeMail(pkmn)
  881. if !pkmn.hasItem?
  882. pbDisplay(_INTL("{1} no está llevando nada.",pkmn.name))
  883. elsif !$PokemonBag.pbCanStore?(pkmn.item)
  884. pbDisplay(_INTL("La mochila está llena. No se puede le puede quitar el objeto al Pokémon."))
  885. elsif pkmn.mail
  886. if pbConfirm(_INTL("¿Quieres enviar la carta a tu PC?"))
  887. if !pbMoveToMailbox(pkmn)
  888. pbDisplay(_INTL("El buzón de la PC está lleno."))
  889. else
  890. pbDisplay(_INTL("La carta fue enviada a tu PC."))
  891. pkmn.setItem(0)
  892. end
  893. elsif pbConfirm(_INTL("Si le quitas la carta, perderás el mensaje. ¿Estás de acuerdo?"))
  894. pbDisplay(_INTL("Se ha quitado la carta al Pokémon."))
  895. $PokemonBag.pbStoreItem(pkmn.item)
  896. pkmn.setItem(0)
  897. pkmn.mail=nil
  898. end
  899. else
  900. $PokemonBag.pbStoreItem(pkmn.item)
  901. itemname=PBItems.getName(pkmn.item)
  902. pbDisplay(_INTL("Recibiste {1} de {2}.",itemname,pkmn.name))
  903. pkmn.setItem(0)
  904. end
  905. end
  906.  
  907. def pbGiveMail(item,pkmn,pkmnid=0)
  908. thisitemname=PBItems.getName(item)
  909. if pkmn.isEgg?
  910. pbDisplay(_INTL("Los huevos no pueden llevar objetos."))
  911. return false
  912. elsif pkmn.mail
  913. pbDisplay(_INTL("Quitar la carta de {1} antes de darle otro objeto.",pkmn.name))
  914. return false
  915. end
  916. if pkmn.item!=0
  917. itemname=PBItems.getName(pkmn.item)
  918. pbDisplay(_INTL("¡{1} ya lleva una unidad de {2}.\1",pkmn.name,itemname))
  919. if pbConfirm(_INTL("¿Quieres cambiar un objeto por el otro?"))
  920. $PokemonBag.pbDeleteItem(item)
  921. if !$PokemonBag.pbStoreItem(pkmn.item)
  922. if !$PokemonBag.pbStoreItem(item) # Compensate
  923. raise _INTL("No se puede recuperar objeto descartado de la mochila")
  924. end
  925. pbDisplay(_INTL("La Mochila está llena. No se puede quitar el objeto del Pokémon."))
  926. else
  927. if pbIsMail?(item)
  928. if pbMailScreen(item,pkmn,pkmnid)
  929. pkmn.setItem(item)
  930. pbDisplay(_INTL("¡Se ha sustituido {1} por {2}!",itemname,thisitemname))
  931. return true
  932. else
  933. if !$PokemonBag.pbStoreItem(item) # Compensate
  934. raise _INTL("No se puede recuperar objeto descartado de la mochila.")
  935. end
  936. end
  937. else
  938. pkmn.setItem(item)
  939. pbDisplay(_INTL("¡Se ha sustituido {1} por {2}!",itemname,thisitemname))
  940. return true
  941. end
  942. end
  943. end
  944. else
  945. if !pbIsMail?(item) || pbMailScreen(item,pkmn,pkmnid) # Open the mail screen if necessary
  946. $PokemonBag.pbDeleteItem(item)
  947. pkmn.setItem(item)
  948. pbDisplay(_INTL("¡{1} lleva ahora {2}!",pkmn.name,thisitemname))
  949. return true
  950. end
  951. end
  952. return false
  953. end
  954.  
  955. def pbPokemonGiveScreen(item)
  956. @scene.pbStartScene(@party,_INTL("¿Dar a qué Pokémon?"))
  957. ret=false
  958. if pkmnid>=0
  959. ret=pbGiveMail(item,@party[pkmnid],pkmnid)
  960. end
  961. pbRefreshSingle(pkmnid)
  962. @scene.pbEndScene
  963. return ret
  964. end
  965.  
  966. def pbPokemonGiveMailScreen(mailIndex)
  967. @scene.pbStartScene(@party,_INTL("¿Dar a qué Pokémon?"))
  968. if pkmnid>=0
  969. pkmn=@party[pkmnid]
  970. if pkmn.item!=0 || pkmn.mail
  971. pbDisplay(_INTL("Este Pokémon ya lleva un objeto. No puede llevar una carta."))
  972. elsif pkmn.isEgg?
  973. pbDisplay(_INTL("Los Huevos no pueden llevar una carta."))
  974. else
  975. pbDisplay(_INTL("La carta ha sido transferida desde la casilla."))
  976. pkmn.mail=$PokemonGlobal.mailbox[mailIndex]
  977. pkmn.setItem(pkmn.mail.item)
  978. $PokemonGlobal.mailbox.delete_at(mailIndex)
  979. pbRefreshSingle(pkmnid)
  980. end
  981. end
  982. @scene.pbEndScene
  983. end
  984.  
  985. def pbStartScene(helptext,doublebattle,annotations=nil)
  986. @scene.pbStartScene(@party,helptext,annotations)
  987. end
  988.  
  989. def pbChoosePokemon(helptext=nil)
  990. @scene.pbSetHelpText(helptext) if helptext
  991. return @scene.pbChoosePokemon
  992. end
  993.  
  994. def pbChooseMove(pokemon,helptext)
  995. movenames=[]
  996. for i in pokemon.moves
  997. break if i.id==0
  998. if i.totalpp==0
  999. movenames.push(_INTL("{1} (PP: ---)",PBMoves.getName(i.id),i.pp,i.totalpp))
  1000. else
  1001. movenames.push(_INTL("{1} (PP: {2}/{3})",PBMoves.getName(i.id),i.pp,i.totalpp))
  1002. end
  1003. end
  1004. return @scene.pbShowCommands(helptext,movenames)
  1005. end
  1006.  
  1007. def pbEndScene
  1008. @scene.pbEndScene
  1009. end
  1010.  
  1011. # Checks for identical species
  1012. def pbCheckSpecies(array)
  1013. for i in 0...array.length
  1014. for j in i+1...array.length
  1015. return false if array[i].species==array[j].species
  1016. end
  1017. end
  1018. return true
  1019. end
  1020.  
  1021. # Checks for identical held items
  1022. def pbCheckItems(array)
  1023. for i in 0...array.length
  1024. next if !array[i].hasItem?
  1025. for j in i+1...array.length
  1026. return false if array[i].item==array[j].item
  1027. end
  1028. end
  1029. return true
  1030. end
  1031.  
  1032. def pbPokemonMultipleEntryScreenEx(ruleset)
  1033. annot=[]
  1034. statuses=[]
  1035. ordinals=[
  1036. _INTL("NO APTO"),
  1037. _INTL("NO REGISTRADO"),
  1038. _INTL("INHABILITADO"),
  1039. _INTL("PRIMERO"),
  1040. _INTL("SEGUNDO"),
  1041. _INTL("TERCERO"),
  1042. _INTL("CUARTO"),
  1043. _INTL("QUINTO"),
  1044. _INTL("SEXTO")
  1045. ]
  1046. if !ruleset.hasValidTeam?(@party)
  1047. return nil
  1048. end
  1049. ret=nil
  1050. addedEntry=false
  1051. if ruleset.isPokemonValid?(@party[i])
  1052. statuses[i]=1
  1053. else
  1054. statuses[i]=2
  1055. end
  1056. end
  1057. annot[i]=ordinals[statuses[i]]
  1058. end
  1059. @scene.pbStartScene(@party,_INTL(""),annot,true)
  1060. loop do
  1061. realorder=[]
  1062. if statuses[j]==i+3
  1063. realorder.push(j)
  1064. break
  1065. end
  1066. end
  1067. end
  1068. for i in 0...realorder.length
  1069. statuses[realorder[i]]=i+3
  1070. end
  1071. annot[i]=ordinals[statuses[i]]
  1072. end
  1073. @scene.pbAnnotate(annot)
  1074. if realorder.length==ruleset.number && addedEntry
  1075. @scene.pbSelect(6)
  1076. end
  1077. @scene.pbSetHelpText(_INTL(""))
  1078. addedEntry=false
  1079. if pkmnid==6 # Confirm was chosen
  1080. ret=[]
  1081. for i in realorder
  1082. ret.push(@party[i])
  1083. end
  1084. error=[]
  1085. if !ruleset.isValid?(ret,error)
  1086. pbDisplay(error[0])
  1087. ret=nil
  1088. else
  1089. break
  1090. end
  1091. end
  1092. if pkmnid<0 # Canceled
  1093. break
  1094. end
  1095. cmdEntry=-1
  1096. cmdNoEntry=-1
  1097. cmdSummary=-1
  1098. commands=[]
  1099. if (statuses[pkmnid] || 0) == 1
  1100. commands[cmdEntry=commands.length]=_INTL("Participa")
  1101. elsif (statuses[pkmnid] || 0) > 2
  1102. commands[cmdNoEntry=commands.length]=_INTL("No participa")
  1103. end
  1104. pkmn=@party[pkmnid]
  1105. commands[cmdSummary=commands.length]=_INTL("Datos")
  1106. commands[commands.length]=_INTL("Salir")
  1107. [email protected](_INTL("¿Qué hacer con {1}?",pkmn.name),commands) if pkmn
  1108. if cmdEntry>=0 && command==cmdEntry
  1109. if realorder.length>=ruleset.number && ruleset.number>0
  1110. pbDisplay(_INTL("No pueden participar más de {1} Pokémon.",ruleset.number))
  1111. else
  1112. statuses[pkmnid]=realorder.length+3
  1113. addedEntry=true
  1114. pbRefreshSingle(pkmnid)
  1115. end
  1116. elsif cmdNoEntry>=0 && command==cmdNoEntry
  1117. statuses[pkmnid]=1
  1118. pbRefreshSingle(pkmnid)
  1119. elsif cmdSummary>=0 && command==cmdSummary
  1120. @scene.pbSummary(pkmnid)
  1121. end
  1122. end
  1123. @scene.pbEndScene
  1124. return ret
  1125. end
  1126.  
  1127. def pbChooseAblePokemon(ableProc,allowIneligible=false)
  1128. annot=[]
  1129. eligibility=[]
  1130. for pkmn in @party
  1131. elig=ableProc.call(pkmn)
  1132. eligibility.push(elig)
  1133. annot.push(elig ? _INTL("PUEDE") : _INTL("NO PUEDE"))
  1134. end
  1135. ret=-1
  1136. @scene.pbStartScene(@party,
  1137. @party.length>1 ? _INTL("") : _INTL(""),annot)
  1138. loop do
  1139. @scene.pbSetHelpText(
  1140. @party.length>1 ? _INTL("") : _INTL(""))
  1141. if pkmnid<0
  1142. break
  1143. elsif !eligibility[pkmnid] && !allowIneligible
  1144. pbDisplay(_INTL("Este Pokémon no puede ser elegido."))
  1145. else
  1146. ret=pkmnid
  1147. break
  1148. end
  1149. end
  1150. @scene.pbEndScene
  1151. return ret
  1152. end
  1153.  
  1154. def pbRefreshAnnotations(ableProc) # For after using an evolution stone
  1155. annot=[]
  1156. for pkmn in @party
  1157. elig=ableProc.call(pkmn)
  1158. annot.push(elig ? _INTL("PUEDE") : _INTL("NO PUEDE"))
  1159. end
  1160. @scene.pbAnnotate(annot)
  1161. end
  1162.  
  1163. def pbClearAnnotations
  1164. @scene.pbAnnotate(nil)
  1165. end
  1166.  
  1167. def pbPokemonDebug(pkmn,pkmnid)
  1168. command=0
  1169. loop do
  1170. [email protected](_INTL("¿Qué hacer con {1}?",pkmn.name),[
  1171. _INTL("PS/Estado"),
  1172. _INTL("Nivel"),
  1173. _INTL("Especie"),
  1174. _INTL("Movimientos"),
  1175. _INTL("Género"),
  1176. _INTL("Habilidad"),
  1177. _INTL("Naturaleza"),
  1178. _INTL("Shininess"),
  1179. _INTL("Forma"),
  1180. _INTL("Felicidad"),
  1181. _INTL("EV/IV/pID"),
  1182. _INTL("Pokérus"),
  1183. _INTL("EO"),
  1184. _INTL("Apodo"),
  1185. _INTL("Poké Ball"),
  1186. _INTL("Cintas"),
  1187. _INTL("Huevo"),
  1188. _INTL("Pokémon Oscuro"),
  1189. _INTL("Hacer Reg. Mist."),
  1190. _INTL("Duplicar"),
  1191. _INTL("Borrar"),
  1192. _INTL("Salir")
  1193. ],command)
  1194. case command
  1195. ### Cancel ###
  1196. when -1, 21
  1197. break
  1198. ### HP/Status ###
  1199. when 0
  1200. cmd=0
  1201. loop do
  1202. [email protected](_INTL("¿Qué hacer con {1}?",pkmn.name),[
  1203. _INTL("Setear PS"),
  1204. _INTL("Estado: Dormido"),
  1205. _INTL("Estado: Envenenado"),
  1206. _INTL("Estado: Quemado"),
  1207. _INTL("Estado: Paralizado"),
  1208. _INTL("Estado: Congelado"),
  1209. _INTL("Debilitar"),
  1210. _INTL("Curar")
  1211. ],cmd)
  1212. # Break
  1213. if cmd==-1
  1214. break
  1215. # Set HP
  1216. elsif cmd==0
  1217. params=ChooseNumberParams.new
  1218. params.setRange(0,pkmn.totalhp)
  1219. params.setDefaultValue(pkmn.hp)
  1220. newhp=Kernel.pbMessageChooseNumber(
  1221. _INTL("Establecer los PS del Pokémon (máx. {1}).",pkmn.totalhp),params) { @scene.update }
  1222. if newhp!=pkmn.hp
  1223. pkmn.hp=newhp
  1224. pbDisplay(_INTL("Los PS de {1} se establecieron en {2}.",pkmn.name,pkmn.hp))
  1225. pbRefreshSingle(pkmnid)
  1226. end
  1227. # Set status
  1228. elsif cmd>=1 && cmd<=5
  1229. if pkmn.hp>0
  1230. pkmn.status=cmd
  1231. pkmn.statusCount=0
  1232. if pkmn.status==PBStatuses::SLEEP
  1233. params=ChooseNumberParams.new
  1234. params.setRange(0,9)
  1235. params.setDefaultValue(0)
  1236. sleep=Kernel.pbMessageChooseNumber(
  1237. _INTL("Establecer el contador de sueño del Pokémon."),params) { @scene.update }
  1238. pkmn.statusCount=sleep
  1239. end
  1240. pbDisplay(_INTL("El estado de {1} fue cambiado.",pkmn.name))
  1241. pbRefreshSingle(pkmnid)
  1242. else
  1243. pbDisplay(_INTL("El estado de {1} no pudo ser cambiado.",pkmn.name))
  1244. end
  1245. # Faint / Debilitado
  1246. elsif cmd==6
  1247. pkmn.hp=0
  1248. pbDisplay(_INTL("Los PS de {1} están en 0.",pkmn.name))
  1249. pbRefreshSingle(pkmnid)
  1250. # Heal / Curado
  1251. elsif cmd==7
  1252. pkmn.heal
  1253. pbDisplay(_INTL("{1} está completamente curado.",pkmn.name))
  1254. pbRefreshSingle(pkmnid)
  1255. end
  1256. end
  1257. ### Level ###
  1258. when 1
  1259. params=ChooseNumberParams.new
  1260. params.setRange(1,PBExperience::MAXLEVEL)
  1261. params.setDefaultValue(pkmn.level)
  1262. level=Kernel.pbMessageChooseNumber(
  1263. _INTL("Establecer el nivel del Pokémon (máx. {1}).",PBExperience::MAXLEVEL),params) { @scene.update }
  1264. if level!=pkmn.level
  1265. pkmn.level=level
  1266. pkmn.calcStats
  1267. pbDisplay(_INTL("El nivel del {1} se estableció en {2}.",pkmn.name,pkmn.level))
  1268. pbRefreshSingle(pkmnid)
  1269. end
  1270. ### Species ###
  1271. when 2
  1272. species=pbChooseSpecies(pkmn.species)
  1273. if species!=0
  1274. oldspeciesname=PBSpecies.getName(pkmn.species)
  1275. pkmn.species=species
  1276. pkmn.calcStats
  1277. oldname=pkmn.name
  1278. pkmn.name=PBSpecies.getName(pkmn.species) if pkmn.name==oldspeciesname
  1279. pbDisplay(_INTL("La especie de {1} fue cambiada a {2}.",oldname,PBSpecies.getName(pkmn.species)))
  1280. pbSeenForm(pkmn)
  1281. pbRefreshSingle(pkmnid)
  1282. end
  1283. ### Moves ###
  1284. when 3
  1285. cmd=0
  1286. loop do
  1287. [email protected](_INTL("¿Qué hacer con {1}?",pkmn.name),[
  1288. _INTL("Enseñar movimiento"),
  1289. _INTL("Olvidar movimiento"),
  1290. _INTL("Restaurar lista de mov."),
  1291. _INTL("Restaurar mov. iniciales")],cmd)
  1292. # Break
  1293. if cmd==-1
  1294. break
  1295. # Teach move
  1296. elsif cmd==0
  1297. move=pbChooseMoveList
  1298. if move!=0
  1299. pbLearnMove(pkmn,move)
  1300. pbRefreshSingle(pkmnid)
  1301. end
  1302. # Forget move
  1303. elsif cmd==1
  1304. move=pbChooseMove(pkmn,_INTL("Seleccione el movimiento a olvidar."))
  1305. if move>=0
  1306. movename=PBMoves.getName(pkmn.moves[move].id)
  1307. pkmn.pbDeleteMoveAtIndex(move)
  1308. pbDisplay(_INTL("{1} olvidó {2}.",pkmn.name,movename))
  1309. pbRefreshSingle(pkmnid)
  1310. end
  1311. # Reset movelist
  1312. elsif cmd==2
  1313. pkmn.resetMoves
  1314. pbDisplay(_INTL("Los movimientos de {1} fueron restablecidos.",pkmn.name))
  1315. pbRefreshSingle(pkmnid)
  1316. # Reset initial moves
  1317. elsif cmd==3
  1318. pkmn.pbRecordFirstMoves
  1319. pbDisplay(_INTL("{1} recuperó sus movimientos iniciales.",pkmn.name))
  1320. pbRefreshSingle(pkmnid)
  1321. end
  1322. end
  1323. ### Gender ###
  1324. when 4
  1325. if pkmn.gender==2
  1326. pbDisplay(_INTL("{1} no tiene género.",pkmn.name))
  1327. else
  1328. cmd=0
  1329. loop do
  1330. oldgender=(pkmn.isMale?) ? _INTL("macho") : _INTL("hembra")
  1331. msg=[_INTL("El género {1} es natural.",oldgender),
  1332. _INTL("El género {1} es forzado.",oldgender)][pkmn.genderflag ? 1 : 0]
  1333. _INTL("Hacer macho"),
  1334. _INTL("Hacer hembra"),
  1335. _INTL("Quitar cambio")],cmd)
  1336. # Break
  1337. if cmd==-1
  1338. break
  1339. # Make male
  1340. elsif cmd==0
  1341. pkmn.setGender(0)
  1342. if pkmn.isMale?
  1343. pbDisplay(_INTL("Ahora {1} es macho.",pkmn.name))
  1344. else
  1345. pbDisplay(_INTL("El género de {1} no se puedo cambiar.",pkmn.name))
  1346. end
  1347. # Make female
  1348. elsif cmd==1
  1349. pkmn.setGender(1)
  1350. if pkmn.isFemale?
  1351. pbDisplay(_INTL("Ahora {1} es hembra.",pkmn.name))
  1352. else
  1353. pbDisplay(_INTL("El género de {1} no se puede cambiar.",pkmn.name))
  1354. end
  1355. # Remove override
  1356. elsif cmd==2
  1357. pkmn.genderflag=nil
  1358. pbDisplay(_INTL("Se quitó el cambio de género."))
  1359. end
  1360. pbSeenForm(pkmn)
  1361. pbRefreshSingle(pkmnid)
  1362. end
  1363. end
  1364. ### Ability ###
  1365. when 5
  1366. cmd=0
  1367. loop do
  1368. abils=pkmn.getAbilityList
  1369. oldabil=PBAbilities.getName(pkmn.ability)
  1370. commands=[]
  1371. for i in abils
  1372. commands.push((i[1]<2 ? "" : "(H) ")+PBAbilities.getName(i[0]))
  1373. end
  1374. commands.push(_INTL("Quitar cambio"))
  1375. msg=[_INTL("La habilidad {1} es natural.",oldabil),
  1376. _INTL("La habilidad {1} es forzada.",oldabil)][pkmn.abilityflag!=nil ? 1 : 0]
  1377. [email protected](msg,commands,cmd)
  1378. # Break
  1379. if cmd==-1
  1380. break
  1381. # Set ability override
  1382. elsif cmd>=0 && cmd<abils.length
  1383. pkmn.setAbility(abils[cmd][1])
  1384. # Remove override
  1385. elsif cmd==abils.length
  1386. pkmn.abilityflag=nil
  1387. end
  1388. pbRefreshSingle(pkmnid)
  1389. end
  1390. ### Nature ###
  1391. when 6
  1392. cmd=0
  1393. loop do
  1394. oldnature=PBNatures.getName(pkmn.nature)
  1395. commands=[]
  1396. (PBNatures.getCount).times do |i|
  1397. commands.push(PBNatures.getName(i))
  1398. end
  1399. commands.push(_INTL("Quitar cambio"))
  1400. msg=[_INTL("La naturaleza {1} es natural.",oldnature),
  1401. _INTL("La naturaleza {1} es forzada.",oldnature)][pkmn.natureflag ? 1 : 0]
  1402. [email protected](msg,commands,cmd)
  1403. # Break
  1404. if cmd==-1
  1405. break
  1406. # Set nature override
  1407. elsif cmd>=0 && cmd<PBNatures.getCount
  1408. pkmn.setNature(cmd)
  1409. pkmn.calcStats
  1410. # Remove override
  1411. elsif cmd==PBNatures.getCount
  1412. pkmn.natureflag=nil
  1413. end
  1414. pbRefreshSingle(pkmnid)
  1415. end
  1416. ### Shininess ###
  1417. when 7
  1418. cmd=0
  1419. loop do
  1420. oldshiny=(pkmn.isShiny?) ? _INTL("shiny") : _INTL("normal")
  1421. msg=[_INTL("Shininess ({1}) es natural.",oldshiny),
  1422. _INTL("Shininess ({1}) es forzado.",oldshiny)][pkmn.shinyflag!=nil ? 1 : 0]
  1423. _INTL("Hacer shiny"),
  1424. _INTL("Hacer normal"),
  1425. _INTL("Quitar cambio")],cmd)
  1426. # Break
  1427. if cmd==-1
  1428. break
  1429. # Make shiny
  1430. elsif cmd==0
  1431. pkmn.makeShiny
  1432. # Make normal
  1433. elsif cmd==1
  1434. pkmn.makeNotShiny
  1435. # Remove override
  1436. elsif cmd==2
  1437. pkmn.shinyflag=nil
  1438. end
  1439. pbRefreshSingle(pkmnid)
  1440. end
  1441. ### Form ###
  1442. when 8
  1443. params=ChooseNumberParams.new
  1444. params.setRange(0,100)
  1445. params.setDefaultValue(pkmn.form)
  1446. f=Kernel.pbMessageChooseNumber(
  1447. _INTL("Establecer la forma del Pokémon."),params) { @scene.update }
  1448. if f!=pkmn.form
  1449. pkmn.form=f
  1450. pbDisplay(_INTL("La forma de {1} se cambió a {2}.",pkmn.name,pkmn.form))
  1451. pbSeenForm(pkmn)
  1452. pbRefreshSingle(pkmnid)
  1453. end
  1454. ### Happiness ###
  1455. when 9
  1456. params=ChooseNumberParams.new
  1457. params.setRange(0,255)
  1458. params.setDefaultValue(pkmn.happiness)
  1459. h=Kernel.pbMessageChooseNumber(
  1460. _INTL("Establecer la felicidad de Pokémon (máx. 255)."),params) { @scene.update }
  1461. if h!=pkmn.happiness
  1462. pkmn.happiness=h
  1463. pbDisplay(_INTL("La felicidad de {1} fue establecida en {2}.",pkmn.name,pkmn.happiness))
  1464. pbRefreshSingle(pkmnid)
  1465. end
  1466. ### EV/IV/pID ###
  1467. when 10
  1468. stats=[_INTL("PS"),_INTL("Ataque"),_INTL("Defensa"),
  1469. _INTL("Velocidad"),_INTL("At. Esp."),_INTL("Def. Esp.")]
  1470. cmd=0
  1471. loop do
  1472. persid=sprintf("0x%08X",pkmn.personalID)
  1473. [email protected](_INTL("ID personal es {1}.",persid),[
  1474. _INTL("Setear EVs"),
  1475. _INTL("Setear IVs"),
  1476. _INTL("Randomise pID")],cmd)
  1477. case cmd
  1478. # Break
  1479. when -1
  1480. break
  1481. # Set EVs
  1482. when 0
  1483. cmd2=0
  1484. loop do
  1485. evcommands=[]
  1486. for i in 0...stats.length
  1487. evcommands.push(stats[i]+" (#{pkmn.ev[i]})")
  1488. end
  1489. [email protected](_INTL("¿Cuál EV cambiar?"),evcommands,cmd2)
  1490. if cmd2==-1
  1491. break
  1492. elsif cmd2>=0 && cmd2<stats.length
  1493. params=ChooseNumberParams.new
  1494. params.setRange(0,PokeBattle_Pokemon::EVSTATLIMIT)
  1495. params.setDefaultValue(pkmn.ev[cmd2])
  1496. params.setCancelValue(pkmn.ev[cmd2])
  1497. f=Kernel.pbMessageChooseNumber(
  1498. _INTL("SEstablecer el EV para {1} (máx. {2}).",
  1499. stats[cmd2],PokeBattle_Pokemon::EVSTATLIMIT),params) { @scene.update }
  1500. pkmn.ev[cmd2]=f
  1501. pkmn.totalhp
  1502. pkmn.calcStats
  1503. pbRefreshSingle(pkmnid)
  1504. end
  1505. end
  1506. # Set IVs
  1507. when 1
  1508. cmd2=0
  1509. loop do
  1510. hiddenpower=pbHiddenPower(pkmn.iv)
  1511. msg=_INTL("Poder Oculto:\n{1}, potencia {2}.",PBTypes.getName(hiddenpower[0]),hiddenpower[1])
  1512. ivcommands=[]
  1513. for i in 0...stats.length
  1514. ivcommands.push(stats[i]+" (#{pkmn.iv[i]})")
  1515. end
  1516. ivcommands.push(_INTL("Hacer aleatorio"))
  1517. [email protected](msg,ivcommands,cmd2)
  1518. if cmd2==-1
  1519. break
  1520. elsif cmd2>=0 && cmd2<stats.length
  1521. params=ChooseNumberParams.new
  1522. params.setRange(0,31)
  1523. params.setDefaultValue(pkmn.iv[cmd2])
  1524. params.setCancelValue(pkmn.iv[cmd2])
  1525. f=Kernel.pbMessageChooseNumber(
  1526. _INTL("Establecer el IV para {1} (máx. 31).",stats[cmd2]),params) { @scene.update }
  1527. pkmn.iv[cmd2]=f
  1528. pkmn.calcStats
  1529. pbRefreshSingle(pkmnid)
  1530. elsif cmd2==ivcommands.length-1
  1531. pkmn.iv[0]=rand(32)
  1532. pkmn.iv[1]=rand(32)
  1533. pkmn.iv[2]=rand(32)
  1534. pkmn.iv[3]=rand(32)
  1535. pkmn.iv[4]=rand(32)
  1536. pkmn.iv[5]=rand(32)
  1537. pkmn.calcStats
  1538. pbRefreshSingle(pkmnid)
  1539. end
  1540. end
  1541. # Randomise pID
  1542. when 2
  1543. pkmn.personalID=rand(256)
  1544. pkmn.personalID|=rand(256)<<8
  1545. pkmn.personalID|=rand(256)<<16
  1546. pkmn.personalID|=rand(256)<<24
  1547. pkmn.calcStats
  1548. pbRefreshSingle(pkmnid)
  1549. end
  1550. end
  1551. ### Pokérus ###
  1552. when 11
  1553. cmd=0
  1554. loop do
  1555. pokerus=(pkmn.pokerus) ? pkmn.pokerus : 0
  1556. msg=[_INTL("{1} no tiene Pokérus.",pkmn.name),
  1557. _INTL("Tiene grado {1}, infectado por {2} días más.",pokerus/16,pokerus%16),
  1558. _INTL("Tiene grado {1}, no infectado.",pokerus/16)][pkmn.pokerusStage]
  1559. _INTL("Dar grado aleatorio"),
  1560. _INTL("Hacer no infectado"),
  1561. _INTL("Limpiar Pokérus")],cmd)
  1562. # Break
  1563. if cmd==-1
  1564. break
  1565. # Give random strain
  1566. elsif cmd==0
  1567. pkmn.givePokerus
  1568. # Make not infectious
  1569. elsif cmd==1
  1570. strain=pokerus/16
  1571. p=strain<<4
  1572. pkmn.pokerus=p
  1573. # Clear Pokérus
  1574. elsif cmd==2
  1575. pkmn.pokerus=0
  1576. end
  1577. end
  1578. ### Ownership ###
  1579. when 12
  1580. cmd=0
  1581. loop do
  1582. gender=[_INTL("Masculino"),_INTL("Femenino"),_INTL("Desconocido")][pkmn.otgender]
  1583. msg=[_INTL("Pokémon del jugador\n{1}\n{2}\n{3} ({4})",pkmn.ot,gender,pkmn.publicID,pkmn.trainerID),
  1584. _INTL("Pokémon extranjero\n{1}\n{2}\n{3} ({4})",pkmn.ot,gender,pkmn.publicID,pkmn.trainerID)
  1585. ][pkmn.isForeign?($Trainer) ? 1 : 0]
  1586. _INTL("Hacer del jugador"),
  1587. _INTL("Setear nombre del EO"),
  1588. _INTL("Setear género del EO"),
  1589. _INTL("ID extranjero aleatorio"),
  1590. _INTL("Setear ID extranjero")],cmd)
  1591. # Break
  1592. if cmd==-1
  1593. break
  1594. # Make player's
  1595. elsif cmd==0
  1596. pkmn.trainerID=$Trainer.id
  1597. pkmn.ot=$Trainer.name
  1598. pkmn.otgender=$Trainer.gender
  1599. # Set OT's name
  1600. elsif cmd==1
  1601. newot=pbEnterPlayerName(_INTL("Nombre del EO de {1}",pkmn.name),1,7)
  1602. pkmn.ot=newot
  1603. # Set OT's gender
  1604. elsif cmd==2
  1605. [email protected](_INTL("Establecer el género del EO."),
  1606. [_INTL("Masculino"),_INTL("Femenino"),_INTL("Desconocido")])
  1607. pkmn.otgender=cmd2 if cmd2>=0
  1608. # Random foreign ID
  1609. elsif cmd==3
  1610. pkmn.trainerID=$Trainer.getForeignID
  1611. # Set foreign ID
  1612. elsif cmd==4
  1613. params=ChooseNumberParams.new
  1614. params.setRange(0,65535)
  1615. params.setDefaultValue(pkmn.publicID)
  1616. val=Kernel.pbMessageChooseNumber(
  1617. _INTL("Setear el nuevo ID (máx. 65535)."),params) { @scene.update }
  1618. pkmn.trainerID=val
  1619. pkmn.trainerID|=val<<16
  1620. end
  1621. end
  1622. ### Nickname ###
  1623. when 13
  1624. cmd=0
  1625. loop do
  1626. speciesname=PBSpecies.getName(pkmn.species)
  1627. msg=[_INTL("{1} tiene el apodo {2}.",speciesname,pkmn.name),
  1628. _INTL("{1} no tiene apodo.",speciesname)][pkmn.name==speciesname ? 1 : 0]
  1629. _INTL("Renombrar"),
  1630. _INTL("Borrar nombre")],cmd)
  1631. # Break
  1632. if cmd==-1
  1633. break
  1634. # Rename
  1635. elsif cmd==0
  1636. newname=pbEnterPokemonName(_INTL("Apodo de {1}",speciesname),0,10,"",pkmn)
  1637. pkmn.name=(newname=="") ? speciesname : newname
  1638. pbRefreshSingle(pkmnid)
  1639. # Erase name
  1640. elsif cmd==1
  1641. pkmn.name=speciesname
  1642. end
  1643. end
  1644. ### Poké Ball ###
  1645. when 14
  1646. cmd=0
  1647. loop do
  1648. oldball=PBItems.getName(pbBallTypeToBall(pkmn.ballused))
  1649. commands=[]; balls=[]
  1650. for key in $BallTypes.keys
  1651. item=getID(PBItems,$BallTypes[key])
  1652. balls.push([key,PBItems.getName(item)]) if item && item>0
  1653. end
  1654. balls.sort! {|a,b| a[1]<=>b[1]}
  1655. for i in 0...commands.length
  1656. cmd=i if pkmn.ballused==balls[i][0]
  1657. end
  1658. for i in balls
  1659. commands.push(i[1])
  1660. end
  1661. [email protected](_INTL("Usada {1}.",oldball),commands,cmd)
  1662. if cmd==-1
  1663. break
  1664. else
  1665. pkmn.ballused=balls[cmd][0]
  1666. end
  1667. end
  1668. ### Ribbons ###
  1669. when 15
  1670. cmd=0
  1671. loop do
  1672. commands=[]
  1673. for i in 1..PBRibbons.maxValue
  1674. commands.push(_INTL("{1} {2}",
  1675. pkmn.hasRibbon?(i) ? "[X]" : "[ ]",PBRibbons.getName(i)))
  1676. end
  1677. [email protected](_INTL("{1} cintas.",pkmn.ribbonCount),commands,cmd)
  1678. if cmd==-1
  1679. break
  1680. elsif cmd>=0 && cmd<commands.length
  1681. if pkmn.hasRibbon?(cmd+1)
  1682. pkmn.takeRibbon(cmd+1)
  1683. else
  1684. pkmn.giveRibbon(cmd+1)
  1685. end
  1686. end
  1687. end
  1688. ### Egg ###
  1689. when 16
  1690. cmd=0
  1691. loop do
  1692. msg=[_INTL("No es un huevo"),
  1693. _INTL("Huevo con pasos: {1}.",pkmn.eggsteps)][pkmn.isEgg? ? 1 : 0]
  1694. _INTL("Hacer huevo"),
  1695. _INTL("Hacer Pokémon"),
  1696. _INTL("Setear pasos en 1")],cmd)
  1697. # Break
  1698. if cmd==-1
  1699. break
  1700. # Make egg
  1701. elsif cmd==0
  1702. if pbHasEgg?(pkmn.species) ||
  1703. pbConfirm(_INTL("{1} no puede ser un huevo. ¿Hacerlo huevo de todas formas?",PBSpecies.getName(pkmn.species)))
  1704. pkmn.level=EGGINITIALLEVEL
  1705. pkmn.calcStats
  1706. pkmn.name=_INTL("Huevo")
  1707. dexdata=pbOpenDexData
  1708. pbDexDataOffset(dexdata,pkmn.species,21)
  1709. pkmn.eggsteps=dexdata.fgetw
  1710. dexdata.close
  1711. pkmn.hatchedMap=0
  1712. pkmn.obtainMode=1
  1713. pbRefreshSingle(pkmnid)
  1714. end
  1715. # Make Pokémon
  1716. elsif cmd==1
  1717. pkmn.name=PBSpecies.getName(pkmn.species)
  1718. pkmn.eggsteps=0
  1719. pkmn.hatchedMap=0
  1720. pkmn.obtainMode=0
  1721. pbRefreshSingle(pkmnid)
  1722. # Set eggsteps to 1
  1723. elsif cmd==2
  1724. pkmn.eggsteps=1 if pkmn.eggsteps>0
  1725. end
  1726. end
  1727. ### Shadow Pokémon ###
  1728. when 17
  1729. cmd=0
  1730. loop do
  1731. msg=[_INTL("No es un Pokémon Oscuro."),
  1732. _INTL("Medidor del corazón en {1}.",pkmn.heartgauge)][(pkmn.isShadow? rescue false) ? 1 : 0]
  1733. _INTL("Hacer Oscuro"),
  1734. _INTL("Bajar medidor del corazón")],cmd)
  1735. # Break
  1736. if cmd==-1
  1737. break
  1738. # Make Shadow
  1739. elsif cmd==0
  1740. if !(pkmn.isShadow? rescue false) && pkmn.respond_to?("makeShadow")
  1741. pkmn.makeShadow
  1742. pbDisplay(_INTL("{1} ahora es un Pokémon Oscuro.",pkmn.name))
  1743. pbRefreshSingle(pkmnid)
  1744. else
  1745. pbDisplay(_INTL("{1} ya es un Pokémon Oscuro.",pkmn.name))
  1746. end
  1747. # Lower heart gauge
  1748. elsif cmd==1
  1749. if (pkmn.isShadow? rescue false)
  1750. prev=pkmn.heartgauge
  1751. pkmn.adjustHeart(-700)
  1752. Kernel.pbMessage(_INTL("El medidor del corazón de {1} bajo de {2} a {3} (ahora etapa {4}).",
  1753. pkmn.name,prev,pkmn.heartgauge,pkmn.heartStage))
  1754. pbReadyToPurify(pkmn)
  1755. else
  1756. Kernel.pbMessage(_INTL("{1} no es un Pokémon Oscuro.",pkmn.name))
  1757. end
  1758. end
  1759. end
  1760. ### Make Mystery Gift ###
  1761. when 18
  1762. pbCreateMysteryGift(0,pkmn)
  1763. ### Duplicate ###
  1764. when 19
  1765. if pbConfirm(_INTL("¿Estás seguro de que quieres copiar este Pokémon?"))
  1766. clonedpkmn=pkmn.clone
  1767. clonedpkmn.iv=pkmn.iv.clone
  1768. clonedpkmn.ev=pkmn.ev.clone
  1769. pbStorePokemon(clonedpkmn)
  1770. pbHardRefresh
  1771. pbDisplay(_INTL("El Pokémon fue duplicado."))
  1772. break
  1773. end
  1774. ### Delete ###
  1775. when 20
  1776. if pbConfirm(_INTL("¿Estás seguro de que quieres borrar este Pokémon?"))
  1777. @party[pkmnid]=nil
  1778. @party.compact!
  1779. pbHardRefresh
  1780. pbDisplay(_INTL("El Pokémon fue borrado."))
  1781. break
  1782. end
  1783. end
  1784. end
  1785. end
  1786.  
  1787. def pbPokemonScreen
  1788. @scene.pbStartScene(@party,@party.length>1 ? _INTL("") : _INTL(""),nil)
  1789. loop do
  1790. @scene.pbSetHelpText(@party.length>1 ? _INTL("") : _INTL(""))
  1791. break if pkmnid<0
  1792. pkmn=@party[pkmnid]
  1793. commands = []
  1794. cmdSummary = -1
  1795. cmdDebug = -1
  1796. cmdMoves = [-1,-1,-1,-1]
  1797. cmdSwitch = -1
  1798. cmdMail = -1
  1799. cmdItem = -1
  1800. # Build the commands
  1801. commands[cmdSummary=commands.length] = _INTL("Datos")
  1802. commands[cmdDebug=commands.length] = _INTL("Depurador") if $DEBUG
  1803. for i in 0...pkmn.moves.length
  1804. move=pkmn.moves[i]
  1805. # Check for hidden moves and add any that were found
  1806. if !pkmn.isEgg? && (isConst?(move.id,PBMoves,:MILKDRINK) ||
  1807. isConst?(move.id,PBMoves,:SOFTBOILED) ||
  1808. HiddenMoveHandlers.hasHandler(move.id))
  1809. commands[cmdMoves[i]=commands.length] = PBMoves.getName(move.id)
  1810. end
  1811. end
  1812. commands[cmdSwitch=commands.length] = _INTL("Mover") if @party.length>1
  1813. if !pkmn.isEgg?
  1814. if pkmn.mail
  1815. commands[cmdMail=commands.length] = _INTL("Carta")
  1816. else
  1817. commands[cmdItem=commands.length] = _INTL("Objeto")
  1818. end
  1819. end
  1820. commands[commands.length] = _INTL("Salir")
  1821. [email protected](_INTL("¿Qué hacer con {1}?",pkmn.name),commands)
  1822. havecommand=false
  1823. for i in 0...4
  1824. if cmdMoves[i]>=0 && command==cmdMoves[i]
  1825. havecommand=true
  1826. if isConst?(pkmn.moves[i].id,PBMoves,:SOFTBOILED) ||
  1827. isConst?(pkmn.moves[i].id,PBMoves,:MILKDRINK)
  1828. amt=[(pkmn.totalhp/5).floor,1].max
  1829. if pkmn.hp<=amt
  1830. pbDisplay(_INTL("No tiene PS suficientes..."))
  1831. break
  1832. end
  1833. @scene.pbSetHelpText(_INTL("¿En cuál Pokémon usarlo?"))
  1834. oldpkmnid=pkmnid
  1835. loop do
  1836. @scene.pbPreSelect(oldpkmnid)
  1837. [email protected](true,pkmnid)
  1838. break if pkmnid<0
  1839. newpkmn=@party[pkmnid]
  1840. if pkmnid==oldpkmnid
  1841. pbDisplay(_INTL("¡{1} no puede usar {2} en sí mismo!",pkmn.name,PBMoves.getName(pkmn.moves[i].id)))
  1842. elsif newpkmn.isEgg?
  1843. pbDisplay(_INTL("¡{1} no puede usarse en un Huevo!",PBMoves.getName(pkmn.moves[i].id)))
  1844. elsif newpkmn.hp==0 || newpkmn.hp==newpkmn.totalhp
  1845. pbDisplay(_INTL("{1} no puede usarse en ese Pokémon.",PBMoves.getName(pkmn.moves[i].id)))
  1846. else
  1847. pkmn.hp-=amt
  1848. hpgain=pbItemRestoreHP(newpkmn,amt)
  1849. @scene.pbDisplay(_INTL("{1} recuperó {2} puntos de salud.",newpkmn.name,hpgain))
  1850. pbRefresh
  1851. end
  1852. break if pkmn.hp<=amt
  1853. end
  1854. break
  1855. elsif Kernel.pbCanUseHiddenMove?(pkmn,pkmn.moves[i].id)
  1856. @scene.pbEndScene
  1857. if isConst?(pkmn.moves[i].id,PBMoves,:FLY)
  1858. scene=PokemonRegionMapScene.new(-1,false)
  1859. screen=PokemonRegionMap.new(scene)
  1860. ret=screen.pbStartFlyScreen
  1861. if ret
  1862. $PokemonTemp.flydata=ret
  1863. return [pkmn,pkmn.moves[i].id]
  1864. end
  1865. @scene.pbStartScene(@party,
  1866. @party.length>1 ? _INTL("") : _INTL(""))
  1867. break
  1868. end
  1869. return [pkmn,pkmn.moves[i].id]
  1870. else
  1871. break
  1872. end
  1873. end
  1874. end
  1875. next if havecommand
  1876. if cmdSummary>=0 && command==cmdSummary
  1877. @scene.pbSummary(pkmnid)
  1878. elsif cmdDebug>=0 && command==cmdDebug
  1879. pbPokemonDebug(pkmn,pkmnid)
  1880. elsif cmdSwitch>=0 && command==cmdSwitch
  1881. @scene.pbSetHelpText(_INTL("¿A qué posición mover?"))
  1882. oldpkmnid=pkmnid
  1883. if pkmnid>=0 && pkmnid!=oldpkmnid
  1884. pbSwitch(oldpkmnid,pkmnid)
  1885. end
  1886. elsif cmdMail>=0 && command==cmdMail
  1887. [email protected](_INTL("¿Qué quieres hacer con la carta?"),
  1888. [_INTL("Leer"),_INTL("Quitar"),_INTL("Salir")])
  1889. case command
  1890. when 0 # Read
  1891. pbFadeOutIn(99999){
  1892. pbDisplayMail(pkmn.mail,pkmn)
  1893. }
  1894. when 1 # Take
  1895. pbTakeMail(pkmn)
  1896. pbRefreshSingle(pkmnid)
  1897. end
  1898. elsif cmdItem>=0 && command==cmdItem
  1899. itemcommands = []
  1900. cmdUseItem = -1
  1901. cmdGiveItem = -1
  1902. cmdTakeItem = -1
  1903. cmdMoveItem = -1
  1904. # Build the commands
  1905. itemcommands[cmdUseItem=itemcommands.length] = _INTL("Usar")
  1906. itemcommands[cmdGiveItem=itemcommands.length] = _INTL("Dar")
  1907. itemcommands[cmdTakeItem=itemcommands.length] = _INTL("Quitar") if pkmn.hasItem?
  1908. itemcommands[cmdMoveItem=itemcommands.length] = _INTL("Mover") if pkmn.hasItem? && !pbIsMail?(pkmn.item)
  1909. itemcommands[itemcommands.length] = _INTL("Salir")
  1910. [email protected](_INTL("¿Qué quieres hacer con él?"),itemcommands)
  1911. if cmdUseItem>=0 && command==cmdUseItem # Use
  1912. [email protected]($PokemonBag,pkmn)
  1913. if item>0
  1914. pbUseItemOnPokemon(item,pkmn,self)
  1915. pbRefreshSingle(pkmnid)
  1916. end
  1917. elsif cmdGiveItem>=0 && command==cmdGiveItem # Give
  1918. [email protected]($PokemonBag)
  1919. if item>0
  1920. pbGiveMail(item,pkmn,pkmnid)
  1921. pbRefreshSingle(pkmnid)
  1922. end
  1923. elsif cmdTakeItem>=0 && command==cmdTakeItem # Take
  1924. pbTakeMail(pkmn)
  1925. pbRefreshSingle(pkmnid)
  1926. elsif cmdMoveItem>=0 && command==cmdMoveItem # Move
  1927. item=pkmn.item
  1928. itemname=PBItems.getName(item)
  1929. @scene.pbSetHelpText(_INTL("¿A qué Pokémon quieres darle {1}?",itemname))
  1930. oldpkmnid=pkmnid
  1931. loop do
  1932. @scene.pbPreSelect(oldpkmnid)
  1933. [email protected](true,pkmnid)
  1934. break if pkmnid<0
  1935. newpkmn=@party[pkmnid]
  1936. if pkmnid==oldpkmnid
  1937. break
  1938. elsif newpkmn.isEgg?
  1939. pbDisplay(_INTL("Un Huevo no puede llevar un objeto."))
  1940. elsif !newpkmn.hasItem?
  1941. newpkmn.setItem(item)
  1942. pkmn.setItem(0)
  1943. pbRefresh
  1944. pbDisplay(_INTL("Le has dado {2} a {1}.",newpkmn.name,itemname))
  1945. break
  1946. elsif pbIsMail?(newpkmn.item)
  1947. pbDisplay(_INTL("Debes tomar la carta de {1} antes de darle otro objeto.",newpkmn.name))
  1948. else
  1949. newitem=newpkmn.item
  1950. newitemname=PBItems.getName(newitem)
  1951. pbDisplay(_INTL("{1} ya está llevando {2}.\1",newpkmn.name,newitemname))
  1952. if pbConfirm(_INTL("¿Quieres intercambiar estos objetos?"))
  1953. newpkmn.setItem(item)
  1954. pkmn.setItem(newitem)
  1955. pbRefresh
  1956. pbDisplay(_INTL("Le has dado {2} a {1}.",newpkmn.name,itemname))
  1957. pbDisplay(_INTL("Le has dado {2} a {1}.",pkmn.name,newitemname))
  1958. break
  1959. end
  1960. end
  1961. end
  1962. end
  1963. end
  1964. end
  1965. @scene.pbEndScene
  1966. return nil
  1967. end
  1968. end
Advertisement
Add Comment
Please, Sign In to add comment