Diego-Mertens

para vasquinho

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