Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Pokemon Restrictions Script v1.2 by venom12
- #v 1.2 update add support for not able to evolve pokemon or trade.
- class PokeBattle_Pokemon
- attr_accessor(:restrictions)
- def restrictions
- @restrictions=false if !@restrictions
- return @restrictions
- end
- end
- class PokemonStorageScreen
- alias pbStore_old pbStore
- def pbStore(selected,heldpoke,cantsend=false)
- box=selected[0]
- index=selected[1]
- cantsend=true if $Trainer.party[index].restrictions
- if box!=-1
- raise _INTL("Can't deposit from box...")
- end
- if cantsend
- pbDisplay(_INTL("Can't send that pokemon."))
- cantsend=false
- return false
- end
- if pbAbleCount<=1 && pbAble?(@storage[box,index]) && !heldpoke
- pbDisplay(_INTL("That's your last Pokémon!"))
- elsif @storage[box,index].mail
- pbDisplay(_INTL("Please remove the Mail."))
- else
- cantsend=true if $Trainer.party[index].restrictions
- loop do
- destbox=@scene.pbChooseBox(_INTL("Deposit in which Box?"))
- if destbox>=0
- success=false
- firstfree=@storage.pbFirstFreePos(destbox)
- if firstfree<0
- pbDisplay(_INTL("The Box is full."))
- next
- end
- @scene.pbStore(selected,heldpoke,destbox,firstfree)
- if heldpoke
- @storage.pbMoveCaughtToBox(heldpoke,destbox)
- @heldpkmn=nil
- else
- @storage.pbMove(destbox,-1,-1,index)
- end
- end
- break
- end
- @scene.pbRefresh
- end
- end
- alias pbHold_old pbHold
- def pbHold(selected,cantsend=false)
- box=selected[0]
- index=selected[1]
- if box==-1 && pbAble?(@storage[box,index]) && pbAbleCount<=1
- pbDisplay(_INTL("That's your last Pokémon!"))
- return
- end
- cantsend=true if $Trainer.party[index].restrictions
- if cantsend
- pbDisplay(_INTL("Can't move that pokemon."))
- cantsend=false
- return false
- end
- @scene.pbHold(selected)
- @heldpkmn=@storage[box,index]
- @storage.pbDelete(box,index)
- @scene.pbRefresh
- end
- alias pbSwap_old pbSwap
- def pbSwap(selected,cantsend=false)
- box=selected[0]
- index=selected[1]
- if !@storage[box,index]
- raise _INTL("Position {1},{2} is empty...",box,index)
- end
- if box==-1 && pbAble?(@storage[box,index]) && pbAbleCount<=1 && !pbAble?(@heldpkmn)
- pbDisplay(_INTL("That's your last Pokémon!"))
- return false
- end
- if box!=-1 && @heldpkmn.mail
- pbDisplay("Please remove the mail.")
- return false
- end
- cantsend=true if $Trainer.party[index].restrictions
- if cantsend
- pbDisplay(_INTL("Can't move that pokemon."))
- cantsend=false
- return false
- end
- @scene.pbSwap(selected,@heldpkmn)
- if box>=0
- @heldpkmn.heal
- @heldpkmn.formTime=nil if @heldpkmn.respond_to?("formTime") && @heldpkmn.formTime
- end
- tmp=@storage[box,index]
- @storage[box,index]=@heldpkmn
- @heldpkmn=tmp
- @scene.pbRefresh
- return true
- end
- end
- ItemHandlers::UseOnPokemon.add(:FIRESTONE,proc{|item,pokemon,scene|
- if (pokemon.restrictions rescue false)
- scene.pbDisplay(_INTL("You can't evolve that pokemon."))
- next false
- end
- if (pokemon.isShadow? rescue false)
- scene.pbDisplay(_INTL("It won't have any effect."))
- next false
- end
- newspecies=pbCheckEvolution(pokemon,item)
- if newspecies<=0
- scene.pbDisplay(_INTL("It won't have any effect."))
- next false
- else
- pbFadeOutInWithMusic(99999){
- evo=PokemonEvolutionScene.new
- evo.pbStartScreen(pokemon,newspecies)
- evo.pbEvolution(false)
- evo.pbEndScreen
- if scene.is_a?(PokemonBag_Scene)
- scene.pbRefreshAnnotations(proc{|p| pbCheckEvolution(p,item)>0 })
- scene.pbRefresh
- end
- }
- next true
- end
- })
- ItemHandlers::UseOnPokemon.copy(:FIRESTONE,
- :THUNDERSTONE,:WATERSTONE,:LEAFSTONE,:MOONSTONE,
- :SUNSTONE,:DUSKSTONE,:DAWNSTONE,:SHINYSTONE)
- def pbChoosePokemonForTrade(variableNumber,nameVarNumber,wanted)
- pbChoosePokemon(variableNumber,nameVarNumber,proc {|poke|
- if wanted.is_a?(String) || wanted.is_a?(Symbol)
- wanted=getID(PBSpecies,wanted)
- end
- return !poke.isEgg? && !(poke.isShadow? rescue false) && poke.species==wanted || (poke.restrictions rescue false)
- })
- end
- class PokemonEvolutionScene
- alias pbEvolution_old pbEvolution
- def pbEvolution(cancancel=true)
- metaplayer1=SpriteMetafilePlayer.new(@metafile1,@sprites["rsprite1"])
- metaplayer2=SpriteMetafilePlayer.new(@metafile2,@sprites["rsprite2"])
- metaplayer1.play
- metaplayer2.play
- pbBGMStop()
- pbPlayCry(@pokemon)
- Kernel.pbMessageDisplay(@sprites["msgwindow"],
- _INTL("\\se[]What?\r\n{1} is evolving!\\^",@pokemon.name)) { pbUpdate }
- Kernel.pbMessageWaitForInput(@sprites["msgwindow"],100,true) { pbUpdate }
- pbPlayDecisionSE()
- oldstate=pbSaveSpriteState(@sprites["rsprite1"])
- oldstate2=pbSaveSpriteState(@sprites["rsprite2"])
- pbBGMPlay("evolv")
- canceled=false
- begin
- pbUpdateNarrowScreen
- metaplayer1.update
- metaplayer2.update
- Graphics.update
- Input.update
- pbUpdate(true)
- if Input.trigger?(Input::B) && cancancel || @pokemon.restrictions
- pbBGMStop()
- pbPlayCancelSE()
- canceled=true
- break
- end
- end while metaplayer1.playing? && metaplayer2.playing?
- pbFlashInOut(canceled,oldstate,oldstate2)
- if canceled
- Kernel.pbMessageDisplay(@sprites["msgwindow"],
- _INTL("Huh?\r\n{1} stopped evolving!",@pokemon.name)) { pbUpdate }
- else
- frames=pbCryFrameLength(@newspecies)
- pbBGMStop()
- pbPlayCry(@newspecies)
- frames.times do
- Graphics.update
- pbUpdate
- end
- pbMEPlay("EvolutionSuccess")
- newspeciesname=PBSpecies.getName(@newspecies)
- oldspeciesname=PBSpecies.getName(@pokemon.species)
- Kernel.pbMessageDisplay(@sprites["msgwindow"],
- _INTL("\\se[]Congratulations! Your {1} evolved into {2}!\\wt[80]",
- @pokemon.name,newspeciesname)) { pbUpdate }
- @sprites["msgwindow"].text=""
- removeItem=false
- createSpecies=pbCheckEvolutionEx(@pokemon){|pokemon,evonib,level,poke|
- if evonib==PBEvolution::Shedinja
- next poke if $PokemonBag.pbQuantity(getConst(PBItems,:POKEBALL))>0
- elsif evonib==PBEvolution::TradeItem ||
- evonib==PBEvolution::DayHoldItem ||
- evonib==PBEvolution::NightHoldItem
- removeItem=true if poke==@newspecies # Item is now consumed
- end
- next -1
- }
- @pokemon.setItem(0) if removeItem
- @pokemon.species=@newspecies
- $Trainer.seen[@newspecies]=true
- $Trainer.owned[@newspecies]=true
- pbSeenForm(@pokemon)
- @pokemon.name=newspeciesname if @pokemon.name==oldspeciesname
- @pokemon.calcStats
- # Check moves for new species
- movelist=@pokemon.getMoveList
- for i in movelist
- if i[0]==@pokemon.level # Learned a new move
- pbLearnMove(@pokemon,i[1],true) { pbUpdate }
- end
- end
- if createSpecies>0 && $Trainer.party.length<6
- newpokemon=@pokemon.clone
- newpokemon.iv=@pokemon.iv.clone
- newpokemon.ev=@pokemon.ev.clone
- newpokemon.species=createSpecies
- newpokemon.name=PBSpecies.getName(createSpecies)
- newpokemon.setItem(0)
- newpokemon.clearAllRibbons
- newpokemon.markings=0
- newpokemon.ballused=0
- newpokemon.calcStats
- newpokemon.heal
- $Trainer.party.push(newpokemon)
- $Trainer.seen[createSpecies]=true
- $Trainer.owned[createSpecies]=true
- pbSeenForm(newpokemon)
- $PokemonBag.pbDeleteItem(getConst(PBItems,:POKEBALL))
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment