mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
area randomizer + static encounters randomizer
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -3,6 +3,7 @@ module GameData
|
||||
attr_accessor :id
|
||||
attr_accessor :map
|
||||
attr_accessor :version
|
||||
|
||||
attr_reader :step_chances
|
||||
attr_reader :types
|
||||
|
||||
|
||||
@@ -332,6 +332,12 @@ end
|
||||
# Used when walking in tall grass, hence the additional code.
|
||||
def pbWildBattle(species, level, outcomeVar=1, canRun=true, canLose=false)
|
||||
species = GameData::Species.get(species).id
|
||||
dexnum = getDexNumberForSpecies(species)
|
||||
if $game_switches[SWITCH_RANDOM_STATIC_ENCOUNTERS] && dexnum <= NB_POKEMON
|
||||
newSpecies = $PokemonGlobal.psuedoBSTHash[dexnum]
|
||||
species = getSpecies(newSpecies)
|
||||
end
|
||||
|
||||
# Potentially call a different pbWildBattle-type method instead (for roaming
|
||||
# Pokémon, Safari battles, Bug Contest battles)
|
||||
handled = [nil]
|
||||
|
||||
@@ -984,6 +984,7 @@ module Compiler
|
||||
slots.compact!
|
||||
slots.sort! { |a, b| (a[0] == b[0]) ? a[1].to_s <=> b[1].to_s : b[0] <=> a[0] }
|
||||
end
|
||||
p encounter_hash
|
||||
GameData::Encounter.register(encounter_hash)
|
||||
end
|
||||
# Raise an error if a map/version combo is used twice
|
||||
@@ -1055,6 +1056,7 @@ module Compiler
|
||||
slots.compact!
|
||||
slots.sort! { |a, b| (a[0] == b[0]) ? a[1].to_s <=> b[1].to_s : b[0] <=> a[0] }
|
||||
end
|
||||
p encounter_hash
|
||||
GameData::Encounter.register(encounter_hash)
|
||||
end
|
||||
# Save all data
|
||||
|
||||
@@ -113,10 +113,8 @@ class RandomizerOptionsScene < PokemonOption_Scene
|
||||
@openWildOptions = false
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
class RandomizerTrainerOptionsScene < PokemonOption_Scene
|
||||
RANDOM_TEAMS_CUSTOM_SPRITES = 600
|
||||
RANDOM_HELD_ITEMS = 843
|
||||
@@ -138,7 +136,6 @@ class RandomizerTrainerOptionsScene < PokemonOption_Scene
|
||||
_INTL("Randomizer settings: Trainers"), 0, 0, Graphics.width, 64, @viewport)
|
||||
@sprites["textbox"].text = _INTL("Set the randomizer settings for trainers")
|
||||
|
||||
|
||||
pbFadeInAndShow(@sprites) { pbUpdate }
|
||||
end
|
||||
|
||||
@@ -167,7 +164,6 @@ class RandomizerTrainerOptionsScene < PokemonOption_Scene
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class RandomizerWildPokemonOptionsScene < PokemonOption_Scene
|
||||
RANDOM_WILD_AREA = 777
|
||||
RANDOM_WILD_GLOBAL = 956
|
||||
@@ -200,7 +196,7 @@ class RandomizerWildPokemonOptionsScene < PokemonOption_Scene
|
||||
|
||||
def pbGetOptions(inloadscreen = false)
|
||||
options = [
|
||||
EnumOption.new(_INTL("Type"), [_INTL("Global")],#, _INTL("Area")],
|
||||
EnumOption.new(_INTL("Type"), [_INTL("Global"), _INTL("Area")],
|
||||
proc {
|
||||
if $game_switches[RANDOM_WILD_AREA]
|
||||
1
|
||||
@@ -217,14 +213,19 @@ class RandomizerWildPokemonOptionsScene < PokemonOption_Scene
|
||||
$game_switches[RANDOM_WILD_GLOBAL] = false
|
||||
$game_switches[RANDOM_WILD_AREA] = true
|
||||
end
|
||||
}
|
||||
},
|
||||
[
|
||||
"Randomizes Pokémon using a one-to-one mapping of the Pokedex",
|
||||
"Randomizes the encounters in each route individually"
|
||||
]
|
||||
),
|
||||
EnumOption.new(_INTL("Static encounters"), [_INTL("On"), _INTL("Off")],
|
||||
proc { $game_switches[RANDOM_STATIC] ? 0 : 1 },
|
||||
proc { |value|
|
||||
$game_switches[RANDOM_STATIC] = value == 0
|
||||
},
|
||||
"Randomize Pokémon that appear in the overworld (including legendaries)"
|
||||
),
|
||||
# EnumOption.new(_INTL("Static encounters"), [_INTL("On"), _INTL("Off")],
|
||||
# proc { $game_switches[RANDOM_STATIC] ? 0 : 1 },
|
||||
# proc { |value|
|
||||
# $game_switches[RANDOM_STATIC] = value == 0
|
||||
# }
|
||||
# ),
|
||||
|
||||
EnumOption.new(_INTL("Gift Pokémon"), [_INTL("On"), _INTL("Off")],
|
||||
proc { $game_switches[GIFT_POKEMON] ? 0 : 1 },
|
||||
@@ -243,14 +244,13 @@ class RandomizerWildPokemonOptionsScene < PokemonOption_Scene
|
||||
proc { $game_switches[SWITCH_RANDOM_WILD_ONLY_CUSTOMS] ? 0 : 1 },
|
||||
proc { |value|
|
||||
$game_switches[SWITCH_RANDOM_WILD_ONLY_CUSTOMS] = value == 0
|
||||
}, "(When fuse everything option is on) Randomize only to Pokémon that have a custom sprite."
|
||||
}, "(With fuse everything option) Randomize only to Pokémon that have a custom sprite."
|
||||
)
|
||||
]
|
||||
return options
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class RandomizerGymOptionsScene < PokemonOption_Scene
|
||||
RANDOM_GYM_TYPES = 921
|
||||
|
||||
@@ -270,7 +270,6 @@ class RandomizerGymOptionsScene < PokemonOption_Scene
|
||||
_INTL("Randomizer settings: Gyms"), 0, 0, Graphics.width, 64, @viewport)
|
||||
@sprites["textbox"].text = _INTL("Set the randomizer settings for gyms")
|
||||
|
||||
|
||||
pbFadeInAndShow(@sprites) { pbUpdate }
|
||||
end
|
||||
|
||||
|
||||
@@ -3,61 +3,113 @@
|
||||
# Randomize encounter by routes
|
||||
# Script by Frogman
|
||||
#
|
||||
|
||||
def Kernel.randomizeWildPokemonByRoute()
|
||||
bstRange = $game_variables[197]
|
||||
randomizeToFusions = $game_switches[953]
|
||||
$game_switches[829] = randomizeToFusions #unused mais probab. utile pour débugger les inévitables bugs quand les gens vont se partager leurs fichiers
|
||||
bstRange = $game_variables[VAR_RANDOMIZER_WILD_POKE_BST]
|
||||
randomizeToFusions = $game_switches[SWITCH_RANDOM_WILD_TO_FUSION]
|
||||
onlyCustoms = $game_switches[SWITCH_RANDOM_WILD_ONLY_CUSTOMS] && randomizeToFusions
|
||||
customsList = onlyCustoms ? getCustomSpeciesList() : []
|
||||
maxSpecies = randomizeToFusions ? PBSpecies.maxValue : NB_POKEMON
|
||||
data=load_data("Data/encounters.dat")
|
||||
map_index = 0
|
||||
nb_maps= data.size
|
||||
if data.is_a?(Hash)
|
||||
for map in data
|
||||
map_index += 1
|
||||
displayProgress(map_index,nb_maps,bstRange)
|
||||
map_id = map[0]
|
||||
encountersList = map[1][1]
|
||||
next if encountersList== nil
|
||||
type_index =-1
|
||||
for encounterType in encountersList
|
||||
type_index +=1
|
||||
next if encounterType == nil
|
||||
previousSpecies = -1
|
||||
previousNewSpecies = -1
|
||||
encounter_index = 0
|
||||
for encounter in encounterType
|
||||
species = encounter[0]
|
||||
if species != previousSpecies
|
||||
newSpecies= getNewSpecies(species,bstRange,true,maxSpecies)
|
||||
previousSpecies = species
|
||||
previousNewSpecies = newSpecies
|
||||
GameData::EncounterRandom::DATA.clear
|
||||
GameData::Encounter.each do |enc_data|
|
||||
encounters_hash = {}
|
||||
encounters_hash[:id] = enc_data.id
|
||||
encounters_hash[:map] = enc_data.map
|
||||
encounters_hash[:version] = enc_data.version
|
||||
encounters_hash[:step_chances] = enc_data.step_chances
|
||||
types_hash = {}
|
||||
enc_data.types.each do |key, value|
|
||||
pokemonList = value
|
||||
newType = randomizePokemonList(pokemonList,bstRange,maxSpecies,randomizeToFusions,customsList)
|
||||
types_hash[key]= newType
|
||||
end
|
||||
encounters_hash[:types] = types_hash
|
||||
GameData::EncounterRandom.register(encounters_hash)
|
||||
end
|
||||
|
||||
# Save all data
|
||||
GameData::EncounterRandom.save
|
||||
Graphics.update
|
||||
GameData::EncounterRandom.load
|
||||
end
|
||||
|
||||
#input: [[60, :TENTACOOL,5,40, [30, :GOLDEEN, 5, 35], etc.]]
|
||||
def randomizePokemonList(encountersList,bstRange=50,maxSpecies=420,customOnly=false,customsList=[])
|
||||
newList=[]
|
||||
for encounter in encountersList
|
||||
oldPokemon = encounter[1]
|
||||
if customOnly
|
||||
newPokemon = getNewCustomSpecies(oldPokemon,customsList,bstRange,false)
|
||||
else
|
||||
newSpecies = previousNewSpecies
|
||||
newPokemon = getNewSpecies(oldPokemon,bstRange,false,maxSpecies)
|
||||
end
|
||||
if data[map_id][1][type_index][encounter_index] != nil
|
||||
data[map_id][1][type_index][encounter_index][0] = newSpecies
|
||||
newEntry =[]
|
||||
newEntry << encounter[0]
|
||||
newEntry << getSpecies(newPokemon).species
|
||||
newEntry << encounter[2]
|
||||
newEntry << encounter[3]
|
||||
newList << newEntry
|
||||
end
|
||||
encounter_index +=1
|
||||
end #for -encounter
|
||||
end #for encountertype
|
||||
end #for - map
|
||||
end #if
|
||||
filename = "Data/encounters_randomized.dat"
|
||||
save_data(Marshal.load(Marshal.dump(data)),filename)
|
||||
$PokemonEncounters.setup($game_map.map_id)
|
||||
return newList
|
||||
end
|
||||
|
||||
|
||||
#
|
||||
# def Kernel.randomizeWildPokemonByRouteOld()
|
||||
# bstRange = $game_variables[VAR_RANDOMIZER_WILD_POKE_BST]
|
||||
# randomizeToFusions = $game_switches[SWITCH_RANDOM_WILD_TO_FUSION]
|
||||
# $game_switches[SWITCH_RANDOMIZED_WILD_POKEMON_TO_FUSIONS] = randomizeToFusions #unused mais probab. utile pour débugger les inévitables bugs quand les gens vont se partager leurs fichiers
|
||||
# maxSpecies = randomizeToFusions ? PBSpecies.maxValue : NB_POKEMON
|
||||
# data=load_data("Data/encounters.dat")
|
||||
# map_index = 0
|
||||
# nb_maps= data.size
|
||||
# if data.is_a?(Hash)
|
||||
# for map in data
|
||||
# map_index += 1
|
||||
# displayProgress(map_index,nb_maps,bstRange)
|
||||
# map_id = map[0]
|
||||
#
|
||||
# encountersList = GameData::Encounter.get(map_id)
|
||||
# p encountersList
|
||||
# next if encountersList== nil
|
||||
# type_index =-1
|
||||
# for encounterType in encountersList
|
||||
# type_index +=1
|
||||
# next if encounterType == nil
|
||||
# previousSpecies = -1
|
||||
# previousNewSpecies = -1
|
||||
# encounter_index = 0
|
||||
# for encounter in encounterType
|
||||
# species = encounter[0]
|
||||
# if species != previousSpecies
|
||||
# newSpecies= getNewSpecies(species,bstRange,true,maxSpecies)
|
||||
# previousSpecies = species
|
||||
# previousNewSpecies = newSpecies
|
||||
# else
|
||||
# newSpecies = previousNewSpecies
|
||||
# end
|
||||
# if data[map_id][1][type_index][encounter_index] != nil
|
||||
# data[map_id][1][type_index][encounter_index][0] = newSpecies
|
||||
# end
|
||||
# encounter_index +=1
|
||||
# end #for -encounter
|
||||
# end #for encountertype
|
||||
# end #for - map
|
||||
# end #if
|
||||
# filename = "Data/encounters_randomized.dat"
|
||||
# save_data(Marshal.load(Marshal.dump(data)),filename)
|
||||
# $PokemonEncounters.setup($game_map.map_id)
|
||||
# end
|
||||
|
||||
|
||||
#file = File.new('Data/test.txt', 'w')
|
||||
#file.puts data.inspect
|
||||
|
||||
|
||||
def displayProgress(current,total,bst)
|
||||
return if bst >= 100
|
||||
return if bst >= 20 && current % 10 != 0
|
||||
Kernel.pbMessageNoSound(_INTL("\\ts[]Generating encounters file...\\n Map {1}/{2}\\^",current,total))
|
||||
end
|
||||
# def displayProgress(current,total,bst)
|
||||
# return if bst >= 100
|
||||
# return if bst >= 20 && current % 10 != 0
|
||||
# Kernel.pbMessageNoSound(_INTL("\\ts[]Generating encounters file...\\n Map {1}/{2}\\^",current,total))
|
||||
# end
|
||||
|
||||
#
|
||||
# class PokemonEncounters
|
||||
@@ -121,37 +173,37 @@ end
|
||||
# end
|
||||
|
||||
|
||||
|
||||
def getRandomPokemon(originalPokemon,bstRange,maxDexNumber)
|
||||
originalBst = getBaseStatsTotal(originalPokemon)
|
||||
bstMin = originalBst-bstRange
|
||||
bstMax = originalBst+bstRange
|
||||
|
||||
foundAPokemon = false
|
||||
int i=0
|
||||
while ! foundAPokemon
|
||||
newPoke = rand(maxDexNumber-1)+1
|
||||
newPokeBST = getBaseStatsTotal(newPoke)
|
||||
if newPokeBST >= bstMin && newPokeBST <= bstMax
|
||||
foundAPokemon = true
|
||||
end
|
||||
i+=1
|
||||
if i %10 ==0
|
||||
bstMin-=5
|
||||
bstMax+=5
|
||||
end
|
||||
end
|
||||
return newPoke
|
||||
end
|
||||
|
||||
def getBaseStatsTotal(species)
|
||||
baseStats=$pkmn_dex[species][5]
|
||||
baseStat_temp = 0
|
||||
for i in 0...baseStats.length
|
||||
baseStat_temp+=baseStats[i]
|
||||
end
|
||||
return (baseStat_temp/range).floor
|
||||
end
|
||||
#
|
||||
# def getRandomPokemon(originalPokemon,bstRange,maxDexNumber)
|
||||
# originalBst = getBaseStatsTotal(originalPokemon)
|
||||
# bstMin = originalBst-bstRange
|
||||
# bstMax = originalBst+bstRange
|
||||
#
|
||||
# foundAPokemon = false
|
||||
# int i=0
|
||||
# while ! foundAPokemon
|
||||
# newPoke = rand(maxDexNumber-1)+1
|
||||
# newPokeBST = getBaseStatsTotal(newPoke)
|
||||
# if newPokeBST >= bstMin && newPokeBST <= bstMax
|
||||
# foundAPokemon = true
|
||||
# end
|
||||
# i+=1
|
||||
# if i %10 ==0
|
||||
# bstMin-=5
|
||||
# bstMax+=5
|
||||
# end
|
||||
# end
|
||||
# return newPoke
|
||||
# end
|
||||
#
|
||||
# def getBaseStatsTotal(species)
|
||||
# baseStats=$pkmn_dex[species][5]
|
||||
# baseStat_temp = 0
|
||||
# for i in 0...baseStats.length
|
||||
# baseStat_temp+=baseStats[i]
|
||||
# end
|
||||
# return (baseStat_temp/range).floor
|
||||
# end
|
||||
|
||||
|
||||
######################################################
|
||||
|
||||
@@ -315,6 +315,14 @@ def playShuffleSE(i)
|
||||
end
|
||||
end
|
||||
|
||||
def getTrainersDataMode
|
||||
mode = GameData::Trainer
|
||||
if $game_switches && $game_switches[SWITCH_MODERN_MODE]
|
||||
mode = GameData::TrainerModern
|
||||
end
|
||||
return mode
|
||||
end
|
||||
|
||||
|
||||
def Kernel.pbShuffleTrainers(bst_range = 50,customsOnly=false,customsList=nil)
|
||||
bst_range = pbGet(VAR_RANDOMIZER_TRAINER_BST)
|
||||
@@ -323,7 +331,7 @@ def Kernel.pbShuffleTrainers(bst_range = 50,customsOnly=false,customsList=nil)
|
||||
customsOnly = false
|
||||
end
|
||||
randomTrainersHash = Hash.new
|
||||
trainers_data = getTrainersDataMode.list_all
|
||||
trainers_data = GameData::Trainer.list_all
|
||||
trainers_data.each do |key, value|
|
||||
trainer = trainers_data[key]
|
||||
i=0
|
||||
|
||||
@@ -63,6 +63,7 @@ SWITCH_RANDOMIZED_GYM_TYPES=921
|
||||
SWITCH_RANDOM_GIFT_POKEMON = 780
|
||||
SWITCH_RANDOM_HELD_ITEMS = 843
|
||||
SWITCH_DEFINED_RIVAL_STARTER=840
|
||||
SWITCH_RANDOMIZED_WILD_POKEMON_TO_FUSIONS=829
|
||||
#Other switches
|
||||
SWITCH_RACE_BIKE = 984
|
||||
SWITCH_IS_REMATCH=200
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Data/encounters_randomized2.dat
Normal file
BIN
Data/encounters_randomized2.dat
Normal file
Binary file not shown.
Reference in New Issue
Block a user