Files
infinitefusion-e18/Data/Scripts/052_InfiniteFusion/Gameplay/HiddenAbilityRoutes/HiddenAbilityMaps.rb
T
2026-07-10 15:42:06 -04:00

68 lines
2.6 KiB
Ruby

HIDDEN_MAPS_STEPS = 1500
HIDDEN_MAP_ALWAYS = [178, 655, 570, 356]
RANDOM_HIDDEN_MAP_LIST = [8, 109, 431, 446, 402, 403, 467, 468, 10, 23, 167, 16, 19, 78, 185, 86,
491, 90, 40, 342, 490, 102, 103, 104, 105, 106, 1, 12, 413, 445, 484, 485, 486, 140, 350, 146,
149, 304, 356, 307, 409, 351, 495, 154, 349, 322, 323, 544, 198, 144, 155, 444, 58, 59, 229, 52, 53, 54,
55, 98, 173, 174, 181, 187, 95, 159, 162, 437, 440, 438, 57, 171, 528, 265, 288, 364, 329,
335, 254, 261, 262, 266, 230, 145, 147, 258, 284, 283, 267, 586, 285, 286, 287, 300, 311, 47, 580, 529,
635, 638, 646, 560, 559, 526, 600, 564, 594, 566, 562, 619, 563, 603, 561, 597, 633, 640, 641, 621, 312,
670, 692, 643, 523, 698,
602, 642, 623, 569, 588, 573, 362, 645, 651, 376, 762
]
RANDOM_HIDDEN_MAP_LIST_HOENN = [
5, 10, 11, 12, 20, 50, 49, 31, 65, 37, 38, 39, 71, 74, 76, 77, # Routes
30, 28, 32, 34, 35, # dungeons
69, 62, 97, # secret areas
7, 47, 51, 6, # cities (only those that have encounterable pokemon)
999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, # Placeholders (so that it's still rare in the demo lol)
]
Events.onMapUpdate += proc { |sender, e|
# next if !$game_switches[HIDDENMAPSWITCH]
if $PokemonGlobal.stepcount % HIDDEN_MAPS_STEPS == 0
changeHiddenMap()
end
}
def changeHiddenMap()
maps_list = Settings::KANTO ? RANDOM_HIDDEN_MAP_LIST : RANDOM_HIDDEN_MAP_LIST_HOENN
i = rand(maps_list.length - 1)
pbSet(VAR_CURRENT_HIDDEN_MAP, maps_list[i])
setHiddenAbilityMapAnnouncement if Settings::HOENN
end
def setHiddenAbilityMapAnnouncement
visitedMap = $PokemonGlobal.visitedMaps[pbGet(VAR_CURRENT_HIDDEN_MAP)]
if visitedMap
addTVAnnouncement(:hidden_ability)
else
removeTVAnnouncement(:hidden_ability)
end
end
Events.onWildPokemonCreate += proc { |sender, e|
if player_on_hidden_ability_map || isAlwaysHiddenAbilityMap($game_map.map_id)
pokemon = e[0]
chosenAbility = pokemon.getAbilityList.sample # format: [[:ABILITY, index],...]
pokemon.ability = chosenAbility[0]
pokemon.ability_index = chosenAbility[1]
end
}
def isAlwaysHiddenAbilityMap(mapId)
return HIDDEN_MAP_ALWAYS.include? mapId
end
def player_on_hidden_ability_map
return $game_map.map_id == pbGet(VAR_CURRENT_HIDDEN_MAP)
end
def getCurrentHiddenAbilityMapName
return getMapName(pbGet(VAR_CURRENT_HIDDEN_MAP)).to_s
end
def getMapName(id)
mapinfos = pbLoadMapInfos
return _INTL("Unknown location") if !mapinfos[id]
return mapinfos[id].name
end