mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
473 lines
16 KiB
Ruby
473 lines
16 KiB
Ruby
#===============================================================================
|
|
# Phone data
|
|
#===============================================================================
|
|
class PhoneDatabase
|
|
attr_accessor :generics
|
|
attr_accessor :greetings
|
|
attr_accessor :greetingsMorning
|
|
attr_accessor :greetingsEvening
|
|
attr_accessor :bodies1
|
|
attr_accessor :bodies2
|
|
attr_accessor :battleRequests
|
|
attr_accessor :trainers
|
|
|
|
def initialize
|
|
@generics = []
|
|
@greetings = []
|
|
@greetingsMorning = []
|
|
@greetingsEvening = []
|
|
@bodies1 = []
|
|
@bodies2 = []
|
|
@battleRequests = []
|
|
@trainers = []
|
|
end
|
|
end
|
|
|
|
|
|
|
|
module PhoneMsgType
|
|
Generic = 0
|
|
Greeting = 1
|
|
Body = 2
|
|
BattleRequest = 3
|
|
end
|
|
|
|
|
|
|
|
#===============================================================================
|
|
# Global and map metadata
|
|
#===============================================================================
|
|
MetadataHome = 1
|
|
MetadataWildBattleBGM = 2
|
|
MetadataTrainerBattleBGM = 3
|
|
MetadataWildVictoryME = 4
|
|
MetadataTrainerVictoryME = 5
|
|
MetadataWildCaptureME = 6
|
|
MetadataSurfBGM = 7
|
|
MetadataBicycleBGM = 8
|
|
MetadataPlayerA = 9
|
|
MetadataPlayerB = 10
|
|
MetadataPlayerC = 11
|
|
MetadataPlayerD = 12
|
|
MetadataPlayerE = 13
|
|
MetadataPlayerF = 14
|
|
MetadataPlayerG = 15
|
|
MetadataPlayerH = 16
|
|
|
|
MetadataOutdoor = 1
|
|
MetadataShowArea = 2
|
|
MetadataBicycle = 3
|
|
MetadataBicycleAlways = 4
|
|
MetadataHealingSpot = 5
|
|
MetadataWeather = 6
|
|
MetadataMapPosition = 7
|
|
MetadataDiveMap = 8
|
|
MetadataDarkMap = 9
|
|
MetadataSafariMap = 10
|
|
MetadataSnapEdges = 11
|
|
MetadataDungeon = 12
|
|
MetadataBattleBack = 13
|
|
MetadataMapWildBattleBGM = 14
|
|
MetadataMapTrainerBattleBGM = 15
|
|
MetadataMapWildVictoryME = 16
|
|
MetadataMapTrainerVictoryME = 17
|
|
MetadataMapWildCaptureME = 18
|
|
MetadataMapSize = 19
|
|
MetadataEnvironment = 20
|
|
|
|
|
|
|
|
module PokemonMetadata
|
|
GlobalTypes = {
|
|
"Home" => [MetadataHome, "uuuu"],
|
|
"WildBattleBGM" => [MetadataWildBattleBGM, "s"],
|
|
"TrainerBattleBGM" => [MetadataTrainerBattleBGM, "s"],
|
|
"WildVictoryME" => [MetadataWildVictoryME, "s"],
|
|
"TrainerVictoryME" => [MetadataTrainerVictoryME, "s"],
|
|
"WildCaptureME" => [MetadataWildCaptureME, "s"],
|
|
"SurfBGM" => [MetadataSurfBGM, "s"],
|
|
"BicycleBGM" => [MetadataBicycleBGM, "s"],
|
|
"PlayerA" => [MetadataPlayerA, "esssssss",:PBTrainers],
|
|
"PlayerB" => [MetadataPlayerB, "esssssss",:PBTrainers],
|
|
"PlayerC" => [MetadataPlayerC, "esssssss",:PBTrainers],
|
|
"PlayerD" => [MetadataPlayerD, "esssssss",:PBTrainers],
|
|
"PlayerE" => [MetadataPlayerE, "esssssss",:PBTrainers],
|
|
"PlayerF" => [MetadataPlayerF, "esssssss",:PBTrainers],
|
|
"PlayerG" => [MetadataPlayerG, "esssssss",:PBTrainers],
|
|
"PlayerH" => [MetadataPlayerH, "esssssss",:PBTrainers]
|
|
}
|
|
NonGlobalTypes = {
|
|
"Outdoor" => [MetadataOutdoor, "b"],
|
|
"ShowArea" => [MetadataShowArea, "b"],
|
|
"Bicycle" => [MetadataBicycle, "b"],
|
|
"BicycleAlways" => [MetadataBicycleAlways, "b"],
|
|
"HealingSpot" => [MetadataHealingSpot, "uuu"],
|
|
"Weather" => [MetadataWeather, "eu",:PBFieldWeather],
|
|
"MapPosition" => [MetadataMapPosition, "uuu"],
|
|
"DiveMap" => [MetadataDiveMap, "u"],
|
|
"DarkMap" => [MetadataDarkMap, "b"],
|
|
"SafariMap" => [MetadataSafariMap, "b"],
|
|
"SnapEdges" => [MetadataSnapEdges, "b"],
|
|
"Dungeon" => [MetadataDungeon, "b"],
|
|
"BattleBack" => [MetadataBattleBack, "s"],
|
|
"WildBattleBGM" => [MetadataMapWildBattleBGM, "s"],
|
|
"TrainerBattleBGM" => [MetadataMapTrainerBattleBGM, "s"],
|
|
"WildVictoryME" => [MetadataMapWildVictoryME, "s"],
|
|
"TrainerVictoryME" => [MetadataMapTrainerVictoryME, "s"],
|
|
"WildCaptureME" => [MetadataMapWildCaptureME, "s"],
|
|
"MapSize" => [MetadataMapSize, "us"],
|
|
"Environment" => [MetadataEnvironment, "e",:PBEnvironment]
|
|
}
|
|
end
|
|
|
|
|
|
|
|
#===============================================================================
|
|
# Pokémon data
|
|
#===============================================================================
|
|
SpeciesType1 = 0
|
|
SpeciesType2 = 1
|
|
SpeciesBaseStats = 2
|
|
SpeciesGenderRate = 3
|
|
SpeciesGrowthRate = 4
|
|
SpeciesBaseExp = 5
|
|
SpeciesEffortPoints = 6
|
|
SpeciesRareness = 7
|
|
SpeciesHappiness = 8
|
|
SpeciesAbilities = 9
|
|
SpeciesHiddenAbility = 10
|
|
SpeciesCompatibility = 11
|
|
SpeciesStepsToHatch = 12
|
|
SpeciesHeight = 13
|
|
SpeciesWeight = 14
|
|
SpeciesColor = 15
|
|
SpeciesShape = 16
|
|
SpeciesHabitat = 17
|
|
SpeciesWildItemCommon = 18
|
|
SpeciesWildItemUncommon = 19
|
|
SpeciesWildItemRare = 20
|
|
SpeciesIncense = 21
|
|
SpeciesPokedexForm = 22 # For alternate forms
|
|
SpeciesMegaStone = 23 # For alternate forms
|
|
SpeciesMegaMove = 24 # For alternate forms
|
|
SpeciesUnmegaForm = 25 # For alternate forms
|
|
SpeciesMegaMessage = 26 # For alternate forms
|
|
|
|
MetricBattlerPlayerX = 0
|
|
MetricBattlerPlayerY = 1
|
|
MetricBattlerEnemyX = 2
|
|
MetricBattlerEnemyY = 3
|
|
MetricBattlerAltitude = 4
|
|
MetricBattlerShadowX = 5
|
|
MetricBattlerShadowSize = 6
|
|
|
|
|
|
|
|
module PokemonSpeciesData
|
|
def self.requiredValues(compilingForms=false)
|
|
ret = {
|
|
"Type1" => [SpeciesType1, "e",:PBTypes],
|
|
"BaseStats" => [SpeciesBaseStats, "vvvvvv"],
|
|
"BaseEXP" => [SpeciesBaseExp, "v"],
|
|
"EffortPoints" => [SpeciesEffortPoints, "uuuuuu"],
|
|
"Rareness" => [SpeciesRareness, "u"],
|
|
"Happiness" => [SpeciesHappiness, "u"],
|
|
"Compatibility" => [SpeciesCompatibility, "eE",:PBEggGroups,:PBEggGroups],
|
|
"StepsToHatch" => [SpeciesStepsToHatch, "v"],
|
|
"Height" => [SpeciesHeight, "f"],
|
|
"Weight" => [SpeciesWeight, "f"],
|
|
"Color" => [SpeciesColor, "e",:PBColors],
|
|
"Shape" => [SpeciesShape, "u"],
|
|
"Moves" => [0, "*ue",nil,:PBMoves],
|
|
"Kind" => [0, "s"],
|
|
"Pokedex" => [0, "q"]
|
|
}
|
|
if !compilingForms
|
|
ret["GenderRate"] = [SpeciesGenderRate, "e",:PBGenderRates]
|
|
ret["GrowthRate"] = [SpeciesGrowthRate, "e",:PBGrowthRates]
|
|
ret["Name"] = [0, "s"]
|
|
ret["InternalName"] = [0, "n"]
|
|
end
|
|
return ret
|
|
end
|
|
|
|
def self.optionalValues(compilingForms=false)
|
|
ret = {
|
|
"Type2" => [SpeciesType2, "e",:PBTypes],
|
|
"Abilities" => [SpeciesAbilities, "eE",:PBAbilities,:PBAbilities],
|
|
"HiddenAbility" => [SpeciesHiddenAbility, "eEEE",:PBAbilities,:PBAbilities,
|
|
:PBAbilities,:PBAbilities],
|
|
"Habitat" => [SpeciesHabitat, "e",:PBHabitats],
|
|
"WildItemCommon" => [SpeciesWildItemCommon, "e",:PBItems],
|
|
"WildItemUncommon" => [SpeciesWildItemUncommon, "e",:PBItems],
|
|
"WildItemRare" => [SpeciesWildItemRare, "e",:PBItems],
|
|
"BattlerPlayerX" => [MetricBattlerPlayerX, "i"],
|
|
"BattlerPlayerY" => [MetricBattlerPlayerY, "i"],
|
|
"BattlerEnemyX" => [MetricBattlerEnemyX, "i"],
|
|
"BattlerEnemyY" => [MetricBattlerEnemyY, "i"],
|
|
"BattlerAltitude" => [MetricBattlerAltitude, "i"],
|
|
"BattlerShadowX" => [MetricBattlerShadowX, "i"],
|
|
"BattlerShadowSize" => [MetricBattlerShadowSize, "u"],
|
|
"EggMoves" => [0, "*e",:PBMoves],
|
|
"FormName" => [0, "q"],
|
|
"Evolutions" => [0, "*ses",nil,:PBEvolution,nil]
|
|
}
|
|
if compilingForms
|
|
ret["PokedexForm"] = [SpeciesPokedexForm, "u"]
|
|
ret["MegaStone"] = [SpeciesMegaStone, "e",:PBItems]
|
|
ret["MegaMove"] = [SpeciesMegaMove, "e",:PBMoves]
|
|
ret["UnmegaForm"] = [SpeciesUnmegaForm, "u"]
|
|
ret["MegaMessage"] = [SpeciesMegaMessage, "u"]
|
|
else
|
|
ret["Incense"] = [SpeciesIncense, "e",:PBItems]
|
|
ret["RegionalNumbers"] = [0, "*u"]
|
|
end
|
|
return ret
|
|
end
|
|
end
|
|
|
|
|
|
|
|
#===============================================================================
|
|
# Manipulation methods for metadata, phone data and Pokémon species data
|
|
#===============================================================================
|
|
class PokemonTemp
|
|
attr_accessor :metadata
|
|
attr_accessor :townMapData
|
|
attr_accessor :encountersData
|
|
attr_accessor :phoneData
|
|
attr_accessor :regionalDexes
|
|
attr_accessor :speciesData
|
|
attr_accessor :speciesEggMoves
|
|
attr_accessor :speciesMetrics
|
|
attr_accessor :speciesMovesets
|
|
attr_accessor :speciesTMData
|
|
attr_accessor :speciesShadowMovesets
|
|
attr_accessor :pokemonFormToSpecies
|
|
attr_accessor :trainerTypesData
|
|
attr_accessor :trainersData
|
|
attr_accessor :moveToAnim
|
|
attr_accessor :battleAnims
|
|
end
|
|
|
|
|
|
|
|
def pbLoadMetadata
|
|
$PokemonTemp = PokemonTemp.new if !$PokemonTemp
|
|
if !$PokemonTemp.metadata
|
|
$PokemonTemp.metadata = load_data("Data/metadata.dat") || []
|
|
end
|
|
return $PokemonTemp.metadata
|
|
end
|
|
|
|
def pbGetMetadata(mapid,metadataType)
|
|
meta = pbLoadMetadata
|
|
return meta[mapid][metadataType] if meta[mapid]
|
|
return nil
|
|
end
|
|
|
|
def pbLoadTownMapData
|
|
$PokemonTemp = PokemonTemp.new if !$PokemonTemp
|
|
if !$PokemonTemp.townMapData
|
|
$PokemonTemp.townMapData = load_data("Data/town_map.dat")
|
|
end
|
|
return $PokemonTemp.townMapData
|
|
end
|
|
|
|
def pbLoadEncountersData
|
|
$PokemonTemp = PokemonTemp.new if !$PokemonTemp
|
|
if !$PokemonTemp.encountersData
|
|
if pbRgssExists?("Data/encounters.dat")
|
|
$PokemonTemp.encountersData = load_data("Data/encounters.dat")
|
|
end
|
|
end
|
|
return $PokemonTemp.encountersData
|
|
end
|
|
|
|
def pbLoadPhoneData
|
|
$PokemonTemp = PokemonTemp.new if !$PokemonTemp
|
|
if !$PokemonTemp.phoneData
|
|
if pbRgssExists?("Data/phone.dat")
|
|
$PokemonTemp.phoneData = load_data("Data/phone.dat")
|
|
end
|
|
end
|
|
return $PokemonTemp.phoneData
|
|
end
|
|
|
|
def pbLoadRegionalDexes
|
|
$PokemonTemp = PokemonTemp.new if !$PokemonTemp
|
|
if !$PokemonTemp.regionalDexes
|
|
$PokemonTemp.regionalDexes = load_data("Data/regional_dexes.dat")
|
|
end
|
|
return $PokemonTemp.regionalDexes
|
|
end
|
|
|
|
def pbLoadSpeciesData
|
|
$PokemonTemp = PokemonTemp.new if !$PokemonTemp
|
|
if !$PokemonTemp.speciesData
|
|
$PokemonTemp.speciesData = load_data("Data/species.dat") || []
|
|
end
|
|
return $PokemonTemp.speciesData
|
|
end
|
|
|
|
def pbGetSpeciesData(species,form=0,speciesDataType=-1)
|
|
species = getID(PBSpecies,species)
|
|
s = pbGetFSpeciesFromForm(species,form)
|
|
speciesData = pbLoadSpeciesData
|
|
if speciesDataType<0
|
|
return speciesData[s] || []
|
|
end
|
|
return speciesData[s][speciesDataType] if speciesData[s] && speciesData[s][speciesDataType]
|
|
case speciesDataType
|
|
when SpeciesType2; return nil
|
|
when SpeciesBaseStats; return [1,1,1,1,1,1]
|
|
when SpeciesEffortPoints; return [0,0,0,0,0,0]
|
|
when SpeciesStepsToHatch, SpeciesHeight, SpeciesWeight; return 1
|
|
end
|
|
return 0
|
|
end
|
|
|
|
def pbLoadEggMovesData
|
|
$PokemonTemp = PokemonTemp.new if !$PokemonTemp
|
|
if !$PokemonTemp.speciesEggMoves
|
|
$PokemonTemp.speciesEggMoves = load_data("Data/species_eggmoves.dat") || []
|
|
end
|
|
return $PokemonTemp.speciesEggMoves
|
|
end
|
|
|
|
def pbGetSpeciesEggMoves(species,form=0)
|
|
species = getID(PBSpecies,species)
|
|
s = pbGetFSpeciesFromForm(species,form)
|
|
eggMovesData = pbLoadEggMovesData
|
|
return eggMovesData[s] if eggMovesData[s]
|
|
return []
|
|
end
|
|
|
|
def pbLoadSpeciesMetrics
|
|
$PokemonTemp = PokemonTemp.new if !$PokemonTemp
|
|
if !$PokemonTemp.speciesMetrics
|
|
$PokemonTemp.speciesMetrics = load_data("Data/species_metrics.dat") || []
|
|
end
|
|
return $PokemonTemp.speciesMetrics
|
|
end
|
|
|
|
def pbLoadMovesetsData
|
|
$PokemonTemp = PokemonTemp.new if !$PokemonTemp
|
|
if !$PokemonTemp.speciesMovesets
|
|
$PokemonTemp.speciesMovesets = load_data("Data/species_movesets.dat") || []
|
|
end
|
|
return $PokemonTemp.speciesMovesets
|
|
end
|
|
|
|
def pbGetSpeciesMoveset(species,form=0)
|
|
species = getID(PBSpecies,species)
|
|
s = pbGetFSpeciesFromForm(species,form)
|
|
movesetsData = pbLoadMovesetsData
|
|
return movesetsData[s] if movesetsData[s]
|
|
return []
|
|
end
|
|
|
|
def pbLoadSpeciesTMData
|
|
$PokemonTemp = PokemonTemp.new if !$PokemonTemp
|
|
if !$PokemonTemp.speciesTMData
|
|
$PokemonTemp.speciesTMData = load_data("Data/tm.dat") || []
|
|
end
|
|
return $PokemonTemp.speciesTMData
|
|
end
|
|
|
|
def pbLoadShadowMovesets
|
|
$PokemonTemp = PokemonTemp.new if !$PokemonTemp
|
|
if !$PokemonTemp.speciesShadowMovesets
|
|
$PokemonTemp.speciesShadowMovesets = load_data("Data/shadow_movesets.dat") || []
|
|
end
|
|
return $PokemonTemp.speciesShadowMovesets
|
|
end
|
|
|
|
def pbLoadFormToSpecies
|
|
$PokemonTemp = PokemonTemp.new if !$PokemonTemp
|
|
if !$PokemonTemp.pokemonFormToSpecies
|
|
$PokemonTemp.pokemonFormToSpecies = load_data("Data/form2species.dat")
|
|
end
|
|
return $PokemonTemp.pokemonFormToSpecies
|
|
end
|
|
|
|
def pbLoadTrainerTypesData
|
|
$PokemonTemp = PokemonTemp.new if !$PokemonTemp
|
|
if !$PokemonTemp.trainerTypesData
|
|
$PokemonTemp.trainerTypesData = load_data("Data/trainer_types.dat") || []
|
|
end
|
|
return $PokemonTemp.trainerTypesData
|
|
end
|
|
|
|
def pbGetTrainerTypeData(type)
|
|
data = pbLoadTrainerTypesData
|
|
return data[type] if data
|
|
return nil
|
|
end
|
|
|
|
def pbLoadTrainersData
|
|
$PokemonTemp = PokemonTemp.new if !$PokemonTemp
|
|
if !$PokemonTemp.trainersData
|
|
$PokemonTemp.trainersData = load_data("Data/trainers.dat") || []
|
|
end
|
|
return $PokemonTemp.trainersData
|
|
end
|
|
|
|
def pbGetTrainerData(trainerID,trainerName,partyID=0)
|
|
trainersData = pbLoadTrainersData
|
|
ret = nil
|
|
for t in trainersData
|
|
next if t[0]!=trainerID || t[1]!=trainerName || t[4]!=partyID
|
|
ret = t
|
|
break
|
|
end
|
|
return ret
|
|
end
|
|
|
|
def pbLoadMoveToAnim
|
|
$PokemonTemp = PokemonTemp.new if !$PokemonTemp
|
|
if !$PokemonTemp.moveToAnim
|
|
$PokemonTemp.moveToAnim = load_data("Data/move2anim.dat") || []
|
|
end
|
|
return $PokemonTemp.moveToAnim
|
|
end
|
|
|
|
def pbLoadBattleAnimations
|
|
$PokemonTemp = PokemonTemp.new if !$PokemonTemp
|
|
if !$PokemonTemp.battleAnims
|
|
if pbRgssExists?("Data/PkmnAnimations.rxdata")
|
|
$PokemonTemp.battleAnims = load_data("Data/PkmnAnimations.rxdata")
|
|
end
|
|
end
|
|
return $PokemonTemp.battleAnims
|
|
end
|
|
|
|
def pbClearData
|
|
if $PokemonTemp
|
|
$PokemonTemp.metadata = nil
|
|
$PokemonTemp.townMapData = nil
|
|
$PokemonTemp.encountersData = nil
|
|
$PokemonTemp.phoneData = nil
|
|
$PokemonTemp.regionalDexes = nil
|
|
$PokemonTemp.speciesData = nil
|
|
$PokemonTemp.speciesEggMoves = nil
|
|
$PokemonTemp.speciesMetrics = nil
|
|
$PokemonTemp.speciesMovesets = nil
|
|
$PokemonTemp.speciesTMData = nil
|
|
$PokemonTemp.speciesShadowMovesets = nil
|
|
$PokemonTemp.pokemonFormToSpecies = nil
|
|
$PokemonTemp.trainerTypesData = nil
|
|
$PokemonTemp.trainersData = nil
|
|
$PokemonTemp.moveToAnim = nil
|
|
$PokemonTemp.battleAnims = nil
|
|
end
|
|
MapFactoryHelper.clear
|
|
$PokemonEncounters.setup($game_map.map_id) if $game_map && $PokemonEncounters
|
|
if pbRgssExists?("Data/Tilesets.rxdata")
|
|
$data_tilesets = load_data("Data/Tilesets.rxdata")
|
|
end
|
|
if pbRgssExists?("Data/Tilesets.rvdata")
|
|
$data_tilesets = load_data("Data/Tilesets.rvdata")
|
|
end
|
|
end
|