Pokémon Factory is being updated to version 2.0.0.
This update is skipping directly to 2.0.0 because I feel I've already implemented what I had planned. Only the HTML is missing, but with everything I've added, it will take even longer.
Let's move on to the new stuff:
- Small corrections were made that I had overlooked. I'm always grateful for any errors you might find.
- The code is reorganized.
- Two more options have been added to “custom moves:”. These are “target:” and “status_effect:”
- In turn, “status_effect:” contains the following configurable options:
stat_changes:
stat_changes_target:
apply_status_to_user:
apply_status_to_target:
change_weather:
change_terrain:
add_hazards_to_target_side:
add_side_effect_to_user:
heal_user:
heal_target:
fixed_damage_target:
recoil_user:I'm calling version 2.x the "InGame" update, as I'll be focusing more on adding my Factory to the game with options that you can enable or disable. Starting with these two options:
- The "paletteswap:" functionality has been added. This new feature allows you to selectively change a Pokémon's palette using an image as a color map. NOTE: This is not recommended if you have the DBK animation system, as the swap will take longer, depending on the spritesheet size, and may crash the game during the process due to the file size.
- The “add_stats:” is added. The difference between “add_stats:” and “base_stats:” is that the former will add or subtract the assigned value, while the latter overwrites the existing stats. Therefore, “add_stats:” will maintain the stats even if the Pokémon evolves or changes form, while “base_stats:” will not change regardless.
- The functionalities “type_chart_mods” and “type_chart_adds” have been added. The “type_chart_mods” function completely replaces the effectiveness or resistances of the Pokémon's original types with the configured ones without needing to change its types. The “type_chart_adds” function, on the other hand, adds these to the Pokémon's existing type resistances. NOTE: Be careful with “type_chart_adds”, because if you add a multiplier to a type that already has a multiplier, they will be multiplied together. So, if a Pokémon is already x4 weak to Ice, and you add “ICE: 2,” these will be multiplied, resulting in an x8 weakness to the Ice type.
That's all for now. As always, you can find examples in the new 003_Events folder with explanations of the options to use. I'm also open to any suggestions you might have. See you in the next update.
- Wild Pokémon now have a configurable HUE value within a certain range (-30 to 30 by default). This value will remain even if the Pokémon evolves or changes form.
- Wild Pokémon now have the ability to experience both positive and negative stat changes (from -15 to 15 by default). These values will remain even after evolution or form change.
This update brings two new features.
hue_change:
An option that allows you to change the sprite's hue to a value ranging from -360 to 360.
sprite_override:
An option that allows you to change the sprites your Pokémon loads. This doesn't require creating a variant in the PBS, and it still maintains the original species. Just make sure to add the corresponding sprites to the subfolders of your Pokémon folder.
Both options can be used together.
Ruby:def self.give_eevee_override eevee_impostor = { species: :EEVEE, level: 10, nickname: "Impostor", shiny: true, nature: :TIMID, poke_ball: :PREMIERBALL, ivs: { hp: 31, attack: 31, defense: 31, spatk: 31, spdef: 31, speed: 31 }, moves: [:SWIFT, :CHARM, :BITE], hue_change: 340, # The value to shift the tone can be any number between -360 and 360. sprite_override: "PIKACHU" # It is responsible for searching for sprites with this name. } pkmn = PokemonFactory.create(eevee_impostor) pbAddPokemonWithNickname(pkmn) end
Added support for the [DBK] Animated Pokémon System. If you have the plugins listed as "Optional" in the meta.txt, you should change them to "Requires" for maximum compatibility.
You'll find an example in 002_Events to test the functionality.
Pokémon Factory has been updated to 1.2.0.
This update brings "custom_moves:", which allows you to customize Pokémon moves without having to add a new one to the PBS. You can modify:
-Name
-Description
-Power
-Accuracy
-PP
-Priority
-Type
The effect and animation will not be added for modification, as the purpose of this is to create "stronger" or "special" move variants without the need for a new one.
Here's an example:
Ruby:pikachu_data = { species: :PIKACHU, level: 88, item: :LIGHTBALL, poke_ball: :POKEBALL, ivs: :perfect, evs: :sweeper_special, happiness: 255, owner_name: "Ash", # The moveset is defined without the custom move. moves: [:QUICKATTACK, :IRONTAIL, :ELECTROWEB], # --- Custom Move --- custom_moves: [ { move: :THUNDERSHOCK, # The base move being modified. name: "Gigathunder", description: "The most powerful Thundershock in the world.", power: 110, accuracy: 0, # 0 means it never misses. total_pp: 15, # priority: -1, # Would make the move attack almost last. # type: :FIRE, # Would turn the move into a Fire-type. } ] }
A new file (003_PluginsPatchs) has also been added to add support for Enhanced Battle UI, as without it, custom moves don't display correctly in Move Info. If the changes aren't displayed with this plugin installed, change the "Optional" in the meta.txt to "Requires".
As always, you can find the examples with explanations in 002_Events so you can try them out.
This update adds a new feature: variants:.
Its purpose is to provide an easy way to create variations when generating Pokémon, giving each its own weight to be delivered randomly. It can also accept switches and variables as activation conditions. As long as these conditions are not met, the variant will not be considered during creation.
Giving Various Pokémon:
Ruby:bird_data = { level: 15, variants: [ { weight: 40, config: { species: :PIDGEY, nature: :JOLLY } }, { weight: 50, condition: proc { $game_variables[40] >= 1 }, config: { species: :TAILLOW, ability_index: 1, moves: [:WINGATTACK, :QUICKATTACK, :FOCUSENERGY, :AERIALACE] } }, { weight: 50, condition: proc { $game_variables[40] == 2 }, config: { species: :STARLY, ability_index: 1, moves: [:WINGATTACK, :QUICKATTACK, :ENDEAVOR, :AERIALACE] } }, { weight: 20, condition: proc { $game_switches[12] }, config: { species: :FLETCHLING, shiny: true, ability_index: 1, moves: [:PECK, :QUICKATTACK, :FLAIL, :ACROBATICS] } } ] } pkmn = PokemonFactory.create(bird_data) pbAddPokemon(pkmn)
Giving the Same Pokémon with Different Sets:
Ruby:arcanine_data = { species: :ARCANINE, level: 50, shiny: true, poke_ball: :FASTBALL, ivs: :perfect, variants: [ { weight: 40, config: { nickname: "Blaze", nature: :ADAMANT, ability: :INTIMIDATE, item: :LIFEORB, evs: :sweeper_physical, moves: [:FLAREBLITZ, :EXTREMESPEED, :WILDCHARGE, :CLOSECOMBAT] } }, { weight: 40, config: { nickname: "Inferno", nature: :TIMID, ability: :FLASHFIRE, item: :CHOICESPECS, evs: :sweeper_special, moves: [:FLAMETHROWER, :DRAGONPULSE, :SCORCHINGSANDS, :EXTREMESPEED] } }, { weight: 20, config: { nickname: "Guardian", nature: :IMPISH, ability: :INTIMIDATE, item: :HEAVYDUTYBOOTS, evs: :tank_physical, moves: [:FLAREBLITZ, :WILLOWISP, :MORNINGSUN, :TELEPORT] } } ] } pkmn = PokemonFactory.create(arcanine_data) pbAddPokemonWithNickname(pkmn)
It is not necessary for the weight: values to sum up to 100. The script is responsible for assigning the probability based on the total sum of all weights.
It is worth mentioning that this also works for generating eggs, although due to this addition, the way they are created changes slightly:
Ruby:eevee_egg_config = { species: :EEVEE, # Now you must add the species: steps_to_hatch: 1, shiny: true, nature: :TIMID, ability_index: 2, ivs: :perfect, obtain_text: "Day-Care Couple" } # if EggFactory.create(:EEVEE, eevee_egg_config) # Before if EggFactory.create(eevee_egg_config) # Now pbMessage(_INTL("Take good care of it!")) else pbMessage(_INTL("Oh, you don't have any room in your party!")) end
You can also find the examples with explanations in the 002_Events file.