Advertisement
MundoBezier

LevelCap en CaramelosX

May 27th, 2022
807
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ###############################################################
  2. #               LevelCap aplicado a Caramelos X               #
  3. #                   Adaptación : Bezier                       #
  4. #                     LevelCap : Clara                        #
  5. ###############################################################
  6. # Esta adaptación encapsula el LevelCap de Clara en un Módulo #
  7. # que sea cómodo de usar, llamando a la función:              #
  8. #   nivelLimite = LevelCap.GetLimitLevel                      #
  9. #                                                             #
  10. # Usa ese nivel para limitar la cantidad de experiencia que   #
  11. # recibe un Pokémon al usar caramelos de experiencia y        #
  12. # dependiendo de las medallas obtenidas                       #
  13. ###############################################################
  14.  
  15. # Encapsula el código del LevelCap para facilitar su uso desde varios puntos estratégicos
  16. # Como puede ser esta adaptación de caramelos de experiencia o el repartir experiencia
  17. module LevelCap
  18.   def self.GetLimitLevel
  19.     # Level cap de Clara. Devuelve un nivel máximo dependiendo de las medallas obtenidas
  20.     level=14
  21.     level=25  if $game_switches[4]
  22.     level=35  if $game_switches[5]
  23.     level=40  if $game_switches[6]
  24.     level=44  if $game_switches[7]
  25.     level=50  if $game_switches[8]
  26.     level=54  if $game_switches[9]
  27.     level=80  if $game_switches[10]
  28.     level=100 if $game_switches[11]
  29.     return level
  30.   end
  31. end
  32.  
  33. ItemHandlers::UseOnPokemon.add(:EXPCANDYXS,proc{|item,pokemon,scene|
  34.   if pokemon.level>=PBExperience::MAXLEVEL || (pokemon.isShadow? rescue false)
  35.     scene.pbDisplay(_INTL("No tendrá ningún efecto."))
  36.     next false
  37.   else
  38.  
  39.     # Level cap -> Obtiene el nivel máximo que se puede alcanzar con las medallas actuales
  40.     badgelevelcap=LevelCap.GetLimitLevel
  41.  
  42.     if pokemon.level>=badgelevelcap
  43.       scene.pbDisplay(_INTL("No tendrá ningún efecto."))
  44.       next false
  45.     end
  46.  
  47.     experience=100   if isConst?(item,PBItems,:EXPCANDYXS)
  48.     experience=800   if isConst?(item,PBItems,:EXPCANDYS)
  49.     experience=3000  if isConst?(item,PBItems,:EXPCANDYM)
  50.     experience=10000 if isConst?(item,PBItems,:EXPCANDYL)
  51.     experience=30000 if isConst?(item,PBItems,:EXPCANDYXL)
  52.     newexp=PBExperience.pbAddExperience(pokemon.exp,experience,pokemon.growthrate)
  53.     newlevel=PBExperience.pbGetLevelFromExperience(newexp,pokemon.growthrate)
  54.  
  55.     # Si el nuevo nivel tras la experiencia es igual o superior al límite
  56.     if newlevel>=badgelevelcap
  57.       # Actualiza la experiencia y el nuevo nivel en el límite
  58.       newexp=PBExperience.pbGetStartExperience(badgelevelcap, pokemon.growthrate)
  59.       newlevel=badgelevelcap
  60.       # Bloquea la experiencia si el nuevo nivel es el del Pokémon
  61.       if newlevel==pokemon.level
  62.         scene.pbDisplay(_INTL("No tendrá ningún efecto."))
  63.         next false
  64.       end
  65.     end
  66.  
  67.     curlevel=pokemon.level
  68.     scene.pbDisplay(_INTL("¡Tu Pokémon ganó Puntos de Experiencia!"))
  69.     if newlevel==curlevel
  70.       pokemon.exp=newexp
  71.       pokemon.calcStats
  72.       scene.pbRefresh
  73.     else
  74.       attackdiff=pokemon.attack
  75.       defensediff=pokemon.defense
  76.       speeddiff=pokemon.speed
  77.       spatkdiff=pokemon.spatk
  78.       spdefdiff=pokemon.spdef
  79.       totalhpdiff=pokemon.totalhp
  80.       oldlevel=pokemon.level
  81.       pokemon.level=newlevel
  82.       pokemon.calcStats
  83.       scene.pbRefresh
  84.       Kernel.pbMessage(_INTL("\\se[Pkmn level up]¡{1} subió al nivel {2}!",pokemon.name,pokemon.level))
  85.       attackdiff=pokemon.attack-attackdiff
  86.       defensediff=pokemon.defense-defensediff
  87.       speeddiff=pokemon.speed-speeddiff
  88.       spatkdiff=pokemon.spatk-spatkdiff
  89.       spdefdiff=pokemon.spdef-spdefdiff
  90.       totalhpdiff=pokemon.totalhp-totalhpdiff
  91.       pbTopRightWindow(_INTL("PS Máx.<r>+{1}\r\nAtaque<r>+{2}\r\nDefensa<r>+{3}\r\nAt. Esp.<r>+{4}\r\nDef. Esp.<r>+{5}\r\nVelocidad<r>+{6}",
  92.         totalhpdiff,attackdiff,defensediff,spatkdiff,spdefdiff,speeddiff))
  93.       pbTopRightWindow(_INTL("PS Máx.<r>{1}\r\nAtaque<r>{2}\r\nDefensa<r>{3}\r\nAt. Esp.<r>{4}\r\nDef. Esp.<r>{5}\r\nVelocidad<r>{6}",
  94.         pokemon.totalhp,pokemon.attack,pokemon.defense,pokemon.spatk,pokemon.spdef,pokemon.speed))
  95.       movelist=pokemon.getMoveList
  96.       for i in movelist
  97.         if i[0]>oldlevel && i[0]<=pokemon.level
  98.           pbLearnMove(pokemon,i[1],true)
  99.         end
  100.       end
  101.       newspecies=pbCheckEvolution(pokemon)
  102.       if newspecies>0
  103.         pbFadeOutInWithMusic(99999){
  104.           evo=PokemonEvolutionScene.new
  105.           evo.pbStartScreen(pokemon,newspecies)
  106.           evo.pbEvolution
  107.           evo.pbEndScreen
  108.         }
  109.       end
  110.       pokemon.exp=newexp
  111.       scene.pbRefresh
  112.     end
  113.     next true
  114.   end
  115. })
  116.  
  117. ItemHandlers::UseOnPokemon.copy(:EXPCANDYXS,:EXPCANDYS,:EXPCANDYM,:EXPCANDYL,:EXPCANDYXL)
Advertisement
RAW Paste Data Copied
Advertisement