## Sistema de Combos de Captura ## by Diego Mertens class PokemonTemp #Aquí se definen las variables que usaremos attr_accessor :catchcombo attr_accessor :buscando attr_accessor :actual attr_accessor :newchances end CADENAMAXIMA=31 #el nivel máximo en el que la cadena buscará por shinies Y por los IV's de un Pokémon INTERRUPTOR=118 #pongan aquí un interruptor que no uses Events.onStartBattle+=proc {|sender,e| #al iniciar la batalla, ocurre lo siguiente species=e[0] chances = EncounterTypes::EnctypeChances[EncounterTypes::Land] if !$PokemonGlobal && !$PokemonGlobal.surfing #aquí se definen las probabilidades en el pasto, sólo si no surfeas chances = EncounterTypes::EnctypeChances[EncounterTypes::Water] if $PokemonGlobal && $PokemonGlobal.surfing #y aquí, en el agua, sólo si surfeas $PokemonTemp.newchances= chances if $PokemonTemp.newchances= $PokemonTemp.newchances==nil# se definen las chances si no se había hecho ya $PokemonTemp.catchcombo=0 if !$game_switches[INTERRUPTOR] #interruptor con el cual diremos que todo comenzó if $PokemonTemp.catchcombo==6 && PBTerrain.isGrass?($game_map.terrain_tag($game_player.x,$game_player.y)) #si la cadena es igual a 6 y se está en la hierba, se cambian las chances de encuentro chances = [15,15,10,10,10,10,5,5,4,4,6,6] elsif $PokemonTemp.catchcombo==6 && $PokemonGlobal && $PokemonGlobal.surfing chances = [50,30,5,9,6] elsif $PokemonTemp.catchcombo==12 && PBTerrain.isGrass?($game_map.terrain_tag($game_player.x,$game_player.y)) chances = [10,10,10,10,10,10,5,5,4,4,11,11] elsif $PokemonTemp.catchcombo>=12 && $PokemonGlobal && $PokemonGlobal.surfing chances = [40,30,10,9,11] elsif $PokemonTemp.catchcombo==24 && PBTerrain.isGrass?($game_map.terrain_tag($game_player.x,$game_player.y)) chances = [10,10,10,10,5,5,5,5,9,9,11,11] elsif $PokemonTemp.catchcombo==24 && $PokemonGlobal && $PokemonGlobal.surfing chances = [40,20,15,14,11] elsif $PokemonTemp.catchcombo==30 && PBTerrain.isGrass?($game_map.terrain_tag($game_player.x,$game_player.y)) chances = [15,15,10,10,10,10,5,5,4,4,6,6] elsif $PokemonTemp.catchcombo==30 && $PokemonGlobal && $PokemonGlobal.surfing chances = [10,10,10,30,40] elsif $PokemonTemp.catchcombo==0 && PBTerrain.isGrass?($game_map.terrain_tag($game_player.x,$game_player.y))# se restaura a sus valores originales cuando la cadena se rompe chances = [20,20,10,10,10,10,5,5,4,4,1,1] elsif $PokemonTemp.catchcombo==0 && $PokemonGlobal && $PokemonGlobal.surfing chances = [60,30,5,4,1] end $PokemonTemp.newchances= chances } Events.onWildBattleEnd+=proc {|sender,e| #al terminar la batalla, pasará lo siguiente species=e[0] result=e[2] $PokemonTemp.buscando = species if $PokemonTemp.catchcombo==0 #se define la especie que buscamos si la cadena es igual a 0, por lo que al iniciar, se quedará igual $PokemonTemp.actual = species #se define la especie actual, es decir, la ultima especie que vimos salvaje if $PokemonTemp.catchcombo>=1 #si la cadena es mayor o igual a uno, pasa eso if result==4 && $PokemonTemp.actual==$PokemonTemp.buscando #si se capturó al pokemon, y es igual al que buscabamos, sigue $PokemonTemp.catchcombo+=1 if $PokemonTemp.catchcombo<=CADENAMAXIMA # se le suma +1 a la cadena si no alcanzó ya su valor máximo $game_switches[INTERRUPTOR]=true #se enciende el interruptor que dice que iniciamos la cadena elsif result==4 && $PokemonTemp.buscando != $PokemonTemp.actual || result != 4 && $PokemonTemp.buscando == $PokemonTemp.actual #si no atrapamos al pokemon que buscabamos o si atrapamos al que no era, se rompe la cadena # Kernel.pbMessage(_INTL("¡Tu cadena de {1} fue rota por un {2}!",$PokemonTemp.catchcombo,PBSpecies.getName($PokemonTemp.actual))) if result==4 # Kernel.pbMessage(_INTL("¡Rompiste tu cadena de {1}!",$PokemonTemp.catchcombo,PBSpecies.getName($PokemonTemp.actual))) if result !=4 $game_switches[INTERRUPTOR]=false #se apaga el interruptor que decía que la cadena estaba activa $PokemonTemp.catchcombo=0 #el nivel de cadena se va a 0 end else #si la cadena es menor a 1, pasa lo siguiente if result==4 #si se atrapa al Pokémon, sigue $PokemonTemp.catchcombo+=1 #se le suma uno a la cadena $game_switches[INTERRUPTOR]=true #se indica que la cadena inició else $game_switches[INTERRUPTOR]=false $PokemonTemp.catchcombo=0 end end Kernel.pbMessage(_INTL("Combo de captura actual: {1}, de {2}.",$PokemonTemp.catchcombo,PBSpecies.getName($PokemonTemp.buscando))) if $PokemonTemp.catchcombo>=2 && result==4 # aqui, luego de la batalla, salta un texto que te dice tu nivel de cadena si es mayor a 2 y si atrapaste al pokémon } Events.onWildPokemonCreate+=proc{|sender,e| #al momento de crear al pokemon salvaje pokemon =e[0] $PokemonTemp.catchcombo=0 if $PokemonTemp.catchcombo==nil if $PokemonTemp.catchcombo>=2 if rand(128)<$PokemonTemp.catchcombo #si un numero al azar entre 0 y 128 es menor a la cadena, pueden modificar el 128 por el numero que quieran... pokemon.makeShiny #se fuerza a que sea shiny, mientras mas chico el numero rand(x), mas chances habra de que sea shiny, pero no puede ser mas chiquito que 32 else #si no, pokemon.makeNotShiny #se fuerza a que NO sea shiny end for i in 0..$PokemonTemp.catchcombo #no se como explicar esto xd, pero digamos que busca valores entre el 0 y el valor de la cadena pokemon.iv[0]=i #setea los ivs para que sean iguales al numero de cadena pokemon.iv[1]=i pokemon.iv[2]=i pokemon.iv[3]=i pokemon.iv[4]=i pokemon.iv[5]=i end if rand(50)<$PokemonTemp.catchcombo pokemon.species=$PokemonTemp.buscando # el pokemon que encontramos será de la misma especie que el que buscamos pokemon.name=PBSpecies.getName($PokemonTemp.buscando) end end }